53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
import { BrowserRouter, Routes, Route } from "react-router-dom";
|
|
import { AuthProvider } from "./context/AuthContext";
|
|
import RequireAuth from "./components/RequireAuth";
|
|
import CampaignList from "./pages/CampaignList";
|
|
import CampaignView from "./pages/CampaignView";
|
|
import LoginPage from "./pages/LoginPage";
|
|
import RegisterPage from "./pages/RegisterPage";
|
|
import JoinPage from "./pages/JoinPage";
|
|
import ThemeToggle from "./components/ThemeToggle";
|
|
import styles from "./App.module.css";
|
|
|
|
export default function App() {
|
|
return (
|
|
<BrowserRouter>
|
|
<AuthProvider>
|
|
<div className={styles.app}>
|
|
<header className={styles.header}>
|
|
<h1>Darkwatch</h1>
|
|
<ThemeToggle />
|
|
</header>
|
|
<Routes>
|
|
<Route path="/login" element={<LoginPage />} />
|
|
<Route path="/register" element={<RegisterPage />} />
|
|
<Route
|
|
path="/join/:token"
|
|
element={
|
|
<RequireAuth>
|
|
<JoinPage />
|
|
</RequireAuth>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/"
|
|
element={
|
|
<RequireAuth>
|
|
<CampaignList />
|
|
</RequireAuth>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/campaign/:id"
|
|
element={
|
|
<RequireAuth>
|
|
<CampaignView />
|
|
</RequireAuth>
|
|
}
|
|
/>
|
|
</Routes>
|
|
</div>
|
|
</AuthProvider>
|
|
</BrowserRouter>
|
|
);
|
|
}
|