You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.9 KiB
85 lines
2.9 KiB
import { BrowserRouter, Outlet, Route, Routes } from "react-router-dom"
|
|
|
|
import { Header } from "./pages/template/Header.tsx"
|
|
import "./style/app.css"
|
|
import { lazy, ReactNode, Suspense } from "react"
|
|
import { BASE } from "./Constants.ts"
|
|
|
|
const HomePage = lazy(() => import("./pages/HomePage.tsx"))
|
|
const LoginPage = lazy(() => import("./pages/LoginPage.tsx"))
|
|
const RegisterPage = lazy(() => import("./pages/RegisterPage.tsx"))
|
|
const NotFoundPage = lazy(() => import("./pages/404.tsx"))
|
|
const CreateTeamPage = lazy(() => import("./pages/CreateTeamPage.tsx"))
|
|
const TeamPanelPage = lazy(() => import("./pages/TeamPanel.tsx"))
|
|
const NewTacticPage = lazy(() => import("./pages/NewTacticPage.tsx"))
|
|
const Editor = lazy(() => import("./pages/Editor.tsx"))
|
|
|
|
export default function App() {
|
|
function suspense(node: ReactNode) {
|
|
return (
|
|
<Suspense fallback={<p>Loading, please wait...</p>}>
|
|
{node}
|
|
</Suspense>
|
|
)
|
|
}
|
|
|
|
return (
|
|
<div id="app">
|
|
<BrowserRouter basename={BASE}>
|
|
<Outlet />
|
|
|
|
<Routes>
|
|
<Route path={"/login"} element={suspense(<LoginPage />)} />
|
|
<Route
|
|
path={"/register"}
|
|
element={suspense(<RegisterPage />)}
|
|
/>
|
|
|
|
<Route path={"/"} element={suspense(<AppLayout />)}>
|
|
<Route path={"/"} element={suspense(<HomePage />)} />
|
|
<Route
|
|
path={"/home"}
|
|
element={suspense(<HomePage />)}
|
|
/>
|
|
|
|
<Route
|
|
path={"/team/new"}
|
|
element={suspense(<CreateTeamPage />)}
|
|
/>
|
|
<Route
|
|
path={"/team/:teamId"}
|
|
element={suspense(<TeamPanelPage />)}
|
|
/>
|
|
<Route
|
|
path={"/tactic/new"}
|
|
element={suspense(<NewTacticPage />)}
|
|
/>
|
|
<Route
|
|
path={"/tactic/:tacticId/edit"}
|
|
element={suspense(<Editor guestMode={false} />)}
|
|
/>
|
|
<Route
|
|
path={"/tactic/edit-guest"}
|
|
element={suspense(<Editor guestMode={true} />)}
|
|
/>
|
|
|
|
<Route
|
|
path={"*"}
|
|
element={suspense(<NotFoundPage />)}
|
|
/>
|
|
</Route>
|
|
</Routes>
|
|
</BrowserRouter>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
function AppLayout() {
|
|
return (
|
|
<>
|
|
<Header />
|
|
<Outlet />
|
|
</>
|
|
)
|
|
}
|