routes.tsx 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import React from 'react';
  2. import { createBrowserRouter, Navigate } from 'react-router';
  3. import { ProtectedRoute } from './components_protected_route.tsx';
  4. import { MainLayout } from './layouts/MainLayout.tsx';
  5. import { ErrorPage } from './components/ErrorPage.tsx';
  6. import { NotFoundPage } from './components/NotFoundPage.tsx';
  7. import { DashboardPage } from './pages_dashboard.tsx';
  8. import { UsersPage } from './pages_users.tsx';
  9. import { FileLibraryPage } from './pages_file_library.tsx';
  10. import { KnowInfoPage } from './pages_know_info.tsx';
  11. import { MessagesPage } from './pages_messages.tsx';
  12. import { SettingsPage } from './pages_settings.tsx';
  13. import { ThemeSettingsPage } from './pages_theme_settings.tsx';
  14. import { ChartDashboardPage } from './pages_chart.tsx';
  15. import { LoginMapPage } from './pages_map.tsx';
  16. import { LoginPage } from './pages_login_reg.tsx';
  17. import { ClassroomDataPage } from './pages_classroom_data.tsx';
  18. import { DateNotesPage } from './pages_date_notes.tsx';
  19. import { SubmissionRecordsPage } from './pages_submission_records.tsx';
  20. import { XunlianCodePage } from './pages_xunlian_codes.tsx';
  21. export const router = createBrowserRouter([
  22. {
  23. path: '/',
  24. element: <Navigate to="/admin" replace />
  25. },
  26. {
  27. path: '/admin/login',
  28. element: <LoginPage />
  29. },
  30. {
  31. path: '/admin',
  32. element: (
  33. <ProtectedRoute>
  34. <MainLayout />
  35. </ProtectedRoute>
  36. ),
  37. children: [
  38. {
  39. index: true,
  40. element: <Navigate to="/admin/dashboard" />
  41. },
  42. {
  43. path: 'dashboard',
  44. element: <DashboardPage />,
  45. errorElement: <ErrorPage />
  46. },
  47. {
  48. path: 'users',
  49. element: <UsersPage />,
  50. errorElement: <ErrorPage />
  51. },
  52. {
  53. path: 'settings',
  54. element: <SettingsPage />,
  55. errorElement: <ErrorPage />
  56. },
  57. {
  58. path: 'theme-settings',
  59. element: <ThemeSettingsPage />,
  60. errorElement: <ErrorPage />
  61. },
  62. {
  63. path: 'chart-dashboard',
  64. element: <ChartDashboardPage />,
  65. errorElement: <ErrorPage />
  66. },
  67. {
  68. path: 'map-dashboard',
  69. element: <LoginMapPage />,
  70. errorElement: <ErrorPage />
  71. },
  72. {
  73. path: 'know-info',
  74. element: <KnowInfoPage />,
  75. errorElement: <ErrorPage />
  76. },
  77. {
  78. path: 'file-library',
  79. element: <FileLibraryPage />,
  80. errorElement: <ErrorPage />
  81. },
  82. {
  83. path: 'messages',
  84. element: <MessagesPage />,
  85. errorElement: <ErrorPage />
  86. },
  87. {
  88. path: 'classroom-data',
  89. element: <ClassroomDataPage />,
  90. errorElement: <ErrorPage />
  91. },
  92. {
  93. path: 'date-notes',
  94. element: <DateNotesPage />,
  95. errorElement: <ErrorPage />
  96. },
  97. {
  98. path: 'submission-records',
  99. element: <SubmissionRecordsPage />,
  100. errorElement: <ErrorPage />
  101. },
  102. {
  103. path: 'xunlian-codes',
  104. element: <XunlianCodePage />,
  105. errorElement: <ErrorPage />
  106. },
  107. {
  108. path: '*',
  109. element: <NotFoundPage />,
  110. errorElement: <ErrorPage />
  111. },
  112. ],
  113. },
  114. ]);