routes.tsx 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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. import { VodUploadPage } from './pages_vod_upload.tsx';
  22. export const router = createBrowserRouter([
  23. {
  24. path: '/',
  25. element: <Navigate to="/admin" replace />
  26. },
  27. {
  28. path: '/admin/login',
  29. element: <LoginPage />
  30. },
  31. {
  32. path: '/admin',
  33. element: (
  34. <ProtectedRoute>
  35. <MainLayout />
  36. </ProtectedRoute>
  37. ),
  38. children: [
  39. {
  40. index: true,
  41. element: <Navigate to="/admin/dashboard" />
  42. },
  43. {
  44. path: 'dashboard',
  45. element: <DashboardPage />,
  46. errorElement: <ErrorPage />
  47. },
  48. {
  49. path: 'users',
  50. element: <UsersPage />,
  51. errorElement: <ErrorPage />
  52. },
  53. {
  54. path: 'settings',
  55. element: <SettingsPage />,
  56. errorElement: <ErrorPage />
  57. },
  58. {
  59. path: 'theme-settings',
  60. element: <ThemeSettingsPage />,
  61. errorElement: <ErrorPage />
  62. },
  63. {
  64. path: 'chart-dashboard',
  65. element: <ChartDashboardPage />,
  66. errorElement: <ErrorPage />
  67. },
  68. {
  69. path: 'map-dashboard',
  70. element: <LoginMapPage />,
  71. errorElement: <ErrorPage />
  72. },
  73. {
  74. path: 'know-info',
  75. element: <KnowInfoPage />,
  76. errorElement: <ErrorPage />
  77. },
  78. {
  79. path: 'file-library',
  80. element: <FileLibraryPage />,
  81. errorElement: <ErrorPage />
  82. },
  83. {
  84. path: 'messages',
  85. element: <MessagesPage />,
  86. errorElement: <ErrorPage />
  87. },
  88. {
  89. path: 'classroom-data',
  90. element: <ClassroomDataPage />,
  91. errorElement: <ErrorPage />
  92. },
  93. {
  94. path: 'date-notes',
  95. element: <DateNotesPage />,
  96. errorElement: <ErrorPage />
  97. },
  98. {
  99. path: 'submission-records',
  100. element: <SubmissionRecordsPage />,
  101. errorElement: <ErrorPage />
  102. },
  103. {
  104. path: 'xunlian-codes',
  105. element: <XunlianCodePage />,
  106. errorElement: <ErrorPage />
  107. },
  108. {
  109. path: 'vod-upload',
  110. element: <VodUploadPage />,
  111. errorElement: <ErrorPage />
  112. },
  113. {
  114. path: '*',
  115. element: <NotFoundPage />,
  116. errorElement: <ErrorPage />
  117. },
  118. ],
  119. },
  120. ]);