Partypack/src/App.tsx

57 lines
2.1 KiB
TypeScript
Raw Normal View History

2024-01-20 23:32:53 +01:00
import { ToastContainer } from "react-toastify";
import { BaseStyles, ThemeProvider, theme } from "@primer/react";
import { SiteHeader } from "./components/SiteHeader";
2024-01-22 00:41:59 +01:00
import { VerifyAdmin } from "./components/VerifyAdmin";
2024-01-20 23:32:53 +01:00
import { BrowserRouter, Route, Routes } from "react-router-dom";
import { CookiesProvider } from "react-cookie";
import { Home } from "./routes/Home";
import { AdminTrackList } from "./routes/AdminTrackList";
import { AdminHome } from "./routes/AdminHome";
import { AdminLogin } from "./routes/AdminLogin";
2024-01-22 00:41:59 +01:00
import { Download } from "./routes/Download";
import { Tracks } from "./routes/Tracks";
2024-01-22 00:41:59 +01:00
import { Profile } from "./routes/Profile";
import { SiteContext, SiteState } from "./utils/State";
2024-01-20 23:32:53 +01:00
import merge from "deepmerge";
import "react-toastify/dist/ReactToastify.css";
import "./css/index.css";
2024-01-22 00:41:59 +01:00
import { useState } from "react";
2024-01-20 23:32:53 +01:00
const DefaultTheme = merge(theme, {}); // we'll use this!! eventually!!!
function App() {
2024-01-22 00:41:59 +01:00
const [reactState, setReactState] = useState<SiteState>({} as SiteState);
2024-01-20 23:32:53 +01:00
return (
<ThemeProvider colorMode="dark" theme={DefaultTheme}>
<BaseStyles>
<div>
<CookiesProvider />
<ToastContainer theme="dark" position="bottom-right" draggable={false} pauseOnHover={false} pauseOnFocusLoss={false} />
<BrowserRouter>
2024-01-22 00:41:59 +01:00
<SiteContext.Provider value={{ state: reactState, setState: setReactState }}>
<SiteHeader />
<div className="content">
<Routes>
{/* User-accessible routes */}
<Route path="/" element={<Home />} />
<Route path="/download" element={<Download />} />
<Route path="/tracks" element={<Tracks />} />
2024-01-22 00:41:59 +01:00
<Route path="/profile" element={<Profile />} />
2024-01-20 23:32:53 +01:00
2024-01-22 00:41:59 +01:00
{/* Admin routes */}
<Route path="/admin" element={<VerifyAdmin><AdminHome /></VerifyAdmin>} />
<Route path="/admin/login" element={<AdminLogin />} /> {/* this is the only publically available admin endpoint */}
<Route path="/admin/tracks" element={<VerifyAdmin><AdminTrackList /></VerifyAdmin>} />
</Routes>
</div>
</SiteContext.Provider>
2024-01-20 23:32:53 +01:00
</BrowserRouter>
</div>
</BaseStyles>
</ThemeProvider>
);
}
export default App;