Router.tsx 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. // src/Router.tsx
  2. import { lazy } from "react";
  3. import { createBrowserRouter } from "react-router";
  4. import { RouterProvider } from "react-router/dom";
  5. import { testRoutes } from "./routes/testRoutes";
  6. import { buildRouteConfig } from "./routes/buildRoutes";
  7. import taskRoutes from "./routes/taskRouters";
  8. import settingsRoutes from "./routes/settingsRoutes";
  9. import anthologyRoutes from "./routes/anthologyRoutes";
  10. import articleRoutes from "./routes/articleRoutes";
  11. import tipitakaRoutes from "./routes/tipitakaRoutes";
  12. import channelRoutes from "./routes/channelRoutes";
  13. import termRoutes from "./routes/termRoutes";
  14. import teamRoutes from "./routes/teamRoutes";
  15. import inviteRoutes from "./routes/inviteRoutes";
  16. import transferRoutes from "./routes/transferRoutes";
  17. import tagRoutes from "./routes/tagRoutes";
  18. import driverRoutes from "./routes/driverRoutes";
  19. import dictRoutes from "./routes/dictRoutes";
  20. import courseRoutes from "./routes/courseRoutes";
  21. const RootLayout = lazy(() => import("./layouts/Root"));
  22. const AnonymousLayout = lazy(() => import("./layouts/anonymous"));
  23. const DashboardLayout = lazy(() => import("./layouts/dashboard"));
  24. const WorkspaceLayout = lazy(() => import("./layouts/workspace"));
  25. const TestLayout = lazy(() => import("./layouts/test"));
  26. const UsersSignIn = lazy(() => import("./pages/users/sign-in"));
  27. const UsersSignUp = lazy(() => import("./pages/users/sign-up"));
  28. const UsersForgotPassword = lazy(() => import("./pages/users/forgot-password"));
  29. const UsersResetPassword = lazy(() => import("./pages/users/reset-password"));
  30. const DashboardIndex = lazy(() => import("./pages/dashboard/index"));
  31. const Home = lazy(() => import("./pages/home"));
  32. const WorkspaceHome = lazy(() => import("./pages/workspace/home"));
  33. const WorkspaceChat = lazy(() => import("./pages/workspace/chat"));
  34. const router = createBrowserRouter(
  35. [
  36. {
  37. path: "/",
  38. Component: RootLayout,
  39. children: [
  40. { index: true, Component: Home },
  41. {
  42. path: "anonymous",
  43. Component: AnonymousLayout,
  44. handle: { crumb: "anonymous" },
  45. children: [
  46. {
  47. path: "sign-in",
  48. Component: UsersSignIn,
  49. handle: { crumb: "sign-in" },
  50. },
  51. {
  52. path: "sign-up",
  53. Component: UsersSignUp,
  54. handle: { crumb: "sign-up" },
  55. },
  56. { path: "forgot-password", Component: UsersForgotPassword },
  57. ],
  58. },
  59. {
  60. path: "dashboard",
  61. Component: DashboardLayout,
  62. children: [
  63. { index: true, Component: DashboardIndex },
  64. {
  65. path: "users",
  66. children: [
  67. { path: "reset-password", Component: UsersResetPassword },
  68. ],
  69. },
  70. ],
  71. },
  72. {
  73. path: "workspace",
  74. Component: WorkspaceLayout,
  75. handle: { id: "workspace.home", crumb: "workspace" },
  76. children: [
  77. { index: true, Component: WorkspaceHome },
  78. {
  79. path: "ai",
  80. Component: WorkspaceChat,
  81. handle: { id: "workspace.ai", crumb: "ai" },
  82. },
  83. ...taskRoutes,
  84. ...settingsRoutes,
  85. ...anthologyRoutes,
  86. ...articleRoutes,
  87. ...tipitakaRoutes,
  88. ...channelRoutes,
  89. ...termRoutes,
  90. ...teamRoutes,
  91. ...inviteRoutes,
  92. ...transferRoutes,
  93. ...tagRoutes,
  94. ...driverRoutes,
  95. ...dictRoutes,
  96. ...courseRoutes,
  97. ],
  98. },
  99. // ─── Test 路由:使用 TestLayout + 自动注册 testRoutes ───────────────
  100. {
  101. path: "test",
  102. Component: TestLayout,
  103. children: [{ index: true }, ...buildRouteConfig(testRoutes)],
  104. },
  105. ],
  106. },
  107. ],
  108. { basename: import.meta.env.BASE_URL }
  109. );
  110. const Widget = () => {
  111. return <RouterProvider router={router} />;
  112. };
  113. export default Widget;