import { createBrowserRouter } from "react-router"; import MainPage from "Pages/MainPage/MainPage"; import { baseUrl } from "../GlobalVars"; import App from "../App"; import ErrorPage from "./ErrorPage"; import DocumentationPage from "Pages/DocumentationPage/DocumentationPage"; import { IconHome } from "@tabler/icons-react"; import type { ReactElement } from "react"; import MoleculeEditorPage from "Pages/ExperimentsPage/MoleculePage"; import TeamsPage from "Pages/TeamsPage/TeamsPage"; import UserPage from "Pages/UserPage/UserPage"; import ExperimentPage from "Pages/ExperimentsPage/ExperimentPage"; import ExperimentsPage from "Pages/ExperimentsPage/ExperimentsPage"; import AuthGuard from "./RouterAuhGuard"; export const routes: { [id: string]: { path: string; breadcrumbs: (path: string) => ReactElement[] }; } = { MainPage: { path: "/", breadcrumbs: () => [] }, DocumentationPage: { path: "/documentation", breadcrumbs: () => [<>Документация], }, ExperimentsPage: { path: "/experiments", breadcrumbs: () => [<>Эксперименты], }, ExperimentPage: { path: "/experiments/:experiment_id", breadcrumbs: (path: string) => [ <>Эксперимент #{path.split("/")[path.split("/").length - 1]}, ], }, MoleculePage: { path: "/experiments/:experiment_id/:molecule_id", breadcrumbs: (path: string) => [ <>Молекула #{path.split("/")[path.split("/").length - 1]}, ], }, MachinesPage: { path: "/machines", breadcrumbs: () => [<>Вычислительные системы], }, TeamsPage: { path: "/teams", breadcrumbs: () => [<>Команды] }, ErrorPage: { path: "/*", breadcrumbs: () => [<>Ошибка] }, SettingsPage: { path: "/settings", breadcrumbs: () => [<>Настройки] }, }; const router = createBrowserRouter( [ { path: "/", element: , children: [ { path: routes.MainPage.path, Component: MainPage, }, { path: routes.DocumentationPage.path, Component: DocumentationPage, }, { path: routes.SettingsPage.path, Component: UserPage, }, { element: , // 🔒 everything below requires auth children: [ { path: routes.ExperimentsPage.path, Component: ExperimentsPage, }, { path: routes.ExperimentPage.path, Component: ExperimentPage, }, { path: routes.MoleculePage.path, Component: MoleculeEditorPage, }, { path: routes.TeamsPage.path, Component: TeamsPage, }, ], }, { path: routes.ErrorPage.path, Component: ErrorPage, }, ], }, ], { basename: baseUrl }, ); export default router;