routes.tsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import React from 'react';
  2. import { createBrowserRouter, Navigate } from 'react-router';
  3. import { ProtectedRoute } from './components/ProtectedRoute';
  4. import { MainLayout } from './layouts/MainLayout';
  5. import { ErrorPage } from './components/ErrorPage';
  6. import { NotFoundPage } from './components/NotFoundPage';
  7. import { DashboardPage } from './pages/Dashboard';
  8. import { UsersPage } from './pages/Users';
  9. import { LoginPage } from './pages/Login';
  10. import { FilesPage } from './pages/Files';
  11. import { AdvertisementsPage } from './pages/Advertisements';
  12. import { AdvertisementTypesPage } from './pages/AdvertisementTypes';
  13. export const router = createBrowserRouter([
  14. {
  15. path: '/',
  16. element: <Navigate to="/admin" replace />
  17. },
  18. {
  19. path: '/admin/login',
  20. element: <LoginPage />
  21. },
  22. {
  23. path: '/admin',
  24. element: (
  25. <ProtectedRoute>
  26. <MainLayout />
  27. </ProtectedRoute>
  28. ),
  29. children: [
  30. {
  31. index: true,
  32. element: <Navigate to="/admin/dashboard" />
  33. },
  34. {
  35. path: 'dashboard',
  36. element: <DashboardPage />,
  37. errorElement: <ErrorPage />
  38. },
  39. {
  40. path: 'users',
  41. element: <UsersPage />,
  42. errorElement: <ErrorPage />
  43. },
  44. {
  45. path: 'files',
  46. element: <FilesPage />,
  47. errorElement: <ErrorPage />
  48. },
  49. {
  50. path: 'advertisements',
  51. element: <AdvertisementsPage />,
  52. errorElement: <ErrorPage />
  53. },
  54. {
  55. path: 'advertisement-types',
  56. element: <AdvertisementTypesPage />,
  57. errorElement: <ErrorPage />
  58. },
  59. {
  60. path: '*',
  61. element: <NotFoundPage />,
  62. errorElement: <ErrorPage />
  63. },
  64. ],
  65. },
  66. {
  67. path: '*',
  68. element: <NotFoundPage />,
  69. errorElement: <ErrorPage />
  70. },
  71. ]);