Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

61 рядки
2.3KB

  1. import React from 'react';
  2. import ReactDOM from 'react-dom/client';
  3. import './index.css';
  4. import {
  5. createBrowserRouter,
  6. createRoutesFromElements, Link,
  7. Navigate, Outlet,
  8. Route,
  9. RouterProvider,
  10. } from "react-router-dom";
  11. import '@fontsource/roboto/300.css';
  12. import '@fontsource/roboto/400.css';
  13. import '@fontsource/roboto/500.css';
  14. import '@fontsource/roboto/700.css';
  15. import Keycloak from "./services/authentication/keycloak";
  16. import PortfolioManager from "./pages/portfolio-manager";
  17. import AlbumManager from "./pages/album-manager";
  18. import {InstancesPage} from "./pages/instances-page";
  19. import {NoAccessPage} from "./pages/no-access";
  20. import {InstancesProvider} from "./services/instances/instances-context";
  21. import {AdminLayout} from "./layout";
  22. import {Home} from "@mui/icons-material";
  23. const router = createBrowserRouter(
  24. createRoutesFromElements(
  25. <Route path="/" element={<AdminLayout/>} handle={{
  26. crumb: () => <Link to="/"><Home /></Link>
  27. }}>
  28. <Route index element={<InstancesPage/>}/>
  29. <Route path="/no-access" element={<NoAccessPage/>}/>
  30. <Route path="/:instanceId" handle={{
  31. crumb: (routeData) => <span>{routeData?.params?.instanceId}</span>
  32. }}>
  33. <Route index path="" element={<Navigate to="albums"/>} />
  34. <Route path="albums/*" element={<Outlet />} handle={{
  35. crumb: (routeData) => <Link to={`/${routeData?.params?.instanceId}/albums`}>albums</Link>
  36. }}>
  37. <Route index element={<PortfolioManager/>} />
  38. <Route path=":albumId" element={<AlbumManager/>} handle={{
  39. crumb: (routeData) => <Link to={`/${routeData?.params?.instanceId}/albums/${routeData.params.albumId}`}>{routeData.params.albumId}</Link>
  40. }}/>
  41. </Route>
  42. <Route path="signin-keycloak" element={<Navigate to="/"/>}/>
  43. </Route>
  44. <Route path="*" element={<Navigate to={"/no-access"}/>}/>
  45. </Route>
  46. )
  47. );
  48. const root = ReactDOM.createRoot(document.getElementById('root'));
  49. root.render(
  50. <React.StrictMode>
  51. <Keycloak>
  52. <InstancesProvider>
  53. <RouterProvider router={router} />
  54. </InstancesProvider>
  55. </Keycloak>
  56. </React.StrictMode>
  57. );