Router.tsx 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428
  1. import { Route, Routes } from "react-router-dom";
  2. import Anonymous from "./layouts/anonymous";
  3. import Dashboard from "./layouts/dashboard";
  4. import Users from "./pages/users";
  5. import UsersSignUp from "./pages/users/sign-up";
  6. import NutUsersSignIn from "./pages/nut/users/sign-in";
  7. import NutUsersSignUp from "./pages/nut/users/sign-up";
  8. import NutUsersUnlockNew from "./pages/nut/users/unlock/new";
  9. import NutUsersUnlockVerify from "./pages/nut/users/unlock/verify";
  10. import NutUsersResetPassword from "./pages/nut/users/reset-password";
  11. import NutUsersForgotPassword from "./pages/nut/users/forgot-password";
  12. import NutUsersChangePassword from "./pages/nut/users/change-password";
  13. import NutUsersAccountInfo from "./pages/nut/users/account-info";
  14. import NutUsersLogs from "./pages/nut/users/logs";
  15. import NutForbidden from "./pages/nut/forbidden";
  16. import NutNotFound from "./pages/nut/not-found";
  17. import NutSwitchLanguage from "./pages/nut/switch-languages";
  18. import NutHome from "./pages/nut";
  19. import AdminHome from "./pages/admin";
  20. import AdminRelation from "./pages/admin/relation";
  21. import AdminRelationList from "./pages/admin/relation/list";
  22. import AdminNissayaEnding from "./pages/admin/nissaya-ending";
  23. import AdminNissayaEndingList from "./pages/admin/nissaya-ending/list";
  24. import AdminDictionary from "./pages/admin/dictionary";
  25. import AdminDictionaryList from "./pages/admin/dictionary/list";
  26. import AdminDictionaryPreference from "./pages/admin/dictionary/preference";
  27. import AdminApi from "./pages/admin/api";
  28. import AdminApiDashboard from "./pages/admin/api/dashboard";
  29. import AdminUsers from "./pages/admin/users";
  30. import AdminUsersList from "./pages/admin/users/list";
  31. import AdminUsersShow from "./pages/admin/users/show";
  32. import AdminInvite from "./pages/admin/invite";
  33. import AdminInviteList from "./pages/admin/invite/list";
  34. import AdminAI from "./pages/admin/ai";
  35. import AdminAIList from "./pages/admin/ai/list";
  36. import LibraryHome from "./pages/library";
  37. import LibraryCommunity from "./pages/library/community";
  38. import LibraryCommunityList from "./pages/library/community/list";
  39. import LibraryPalicanon from "./pages/library/palicanon";
  40. import LibraryPalicanonByPath from "./pages/library/palicanon/bypath";
  41. import LibraryPalicanonChapter from "./pages/library/palicanon/chapter";
  42. import LibraryCourse from "./pages/library/course";
  43. import LibraryCourseList from "./pages/library/course/list";
  44. import LibraryCourseShow from "./pages/library/course/course";
  45. import LibraryTerm from "./pages/library/term";
  46. import LibraryTermShow from "./pages/library/term/show";
  47. import LibraryTermList from "./pages/library/term/list";
  48. import LibraryDict from "./pages/library/dict";
  49. import LibraryDictShow from "./pages/library/dict/show";
  50. import LibraryAnthology from "./pages/library/anthology";
  51. import LibraryAnthologyShow from "./pages/library/anthology/show";
  52. import LibraryAnthologyList from "./pages/library/anthology/list";
  53. import LibraryArticle from "./pages/library/article";
  54. import LibraryArticleShow from "./pages/library/article/show";
  55. import LibraryNissaya from "./pages/library/nissaya";
  56. import LibraryNissayaShow from "./pages/library/nissaya/show";
  57. import LibraryBlog from "./pages/library/blog";
  58. import LibraryBlogOverview from "./pages/library/blog/overview";
  59. import LibraryBlogTranslation from "./pages/library/blog/translation";
  60. import LibraryBlogCourse from "./pages/library/blog/course";
  61. import LibraryBlogAnthology from "./pages/library/blog/anthology";
  62. import LibraryBlogTerm from "./pages/library/blog/term";
  63. import LibraryDiscussion from "./pages/library/discussion";
  64. import LibraryDiscussionList from "./pages/library/discussion/list";
  65. import LibraryDiscussionTopic from "./pages/library/discussion/topic";
  66. import LibraryDiscussionShow from "./pages/library/discussion/show";
  67. import LibrarySearch from "./pages/library/search";
  68. import LibrarySearchKey from "./pages/library/search/search";
  69. import LibraryDownload from "./pages/library/download";
  70. import LibraryDownloadPage from "./pages/library/download/Download";
  71. import LibraryNotifications from "./pages/library/notifications";
  72. import LibraryNotificationsList from "./pages/library/notifications/list";
  73. import LibraryChat from "./pages/library/chat";
  74. import LibraryChatAI from "./pages/library/chat/ai";
  75. import LibraryChatNew from "./pages/library/chat/new";
  76. import Studio from "./pages/studio";
  77. import StudioHome from "./pages/studio/home";
  78. import StudioPalicanon from "./pages/studio/palicanon";
  79. import StudioRecent from "./pages/studio/recent";
  80. import StudioRecentList from "./pages/studio/recent/list";
  81. import StudioTransfer from "./pages/studio/transfer";
  82. import StudioTransferList from "./pages/studio/transfer/list";
  83. import StudioChannel from "./pages/studio/channel";
  84. import StudioChannelList from "./pages/studio/channel/list";
  85. import StudioChannelSetting from "./pages/studio/channel/setting";
  86. import StudioChannelShow from "./pages/studio/channel/show";
  87. import StudioGroup from "./pages/studio/group";
  88. import StudioGroupList from "./pages/studio/group/list";
  89. import StudioGroupEdit from "./pages/studio/group/edit";
  90. import StudioGroupShow from "./pages/studio/group/show";
  91. import StudioCourse from "./pages/studio/course";
  92. import StudioCourseList from "./pages/studio/course/list";
  93. import StudioCourseEdit from "./pages/studio/course/edit";
  94. import StudioDict from "./pages/studio/dict";
  95. import StudioDictList from "./pages/studio/dict/list";
  96. import StudioTerm from "./pages/studio/term";
  97. import StudioTermList from "./pages/studio/term/list";
  98. import StudioArticle from "./pages/studio/article";
  99. import StudioArticleList from "./pages/studio/article/list";
  100. import StudioArticleEdit from "./pages/studio/article/edit";
  101. import StudioArticleCreate from "./pages/studio/article/create";
  102. import StudioAnthology from "./pages/studio/anthology";
  103. import StudioAnthologyList from "./pages/studio/anthology/list";
  104. import StudioAnthologyEdit from "./pages/studio/anthology/edit";
  105. import StudioAttachment from "./pages/studio/attachment";
  106. import StudioAttachmentList from "./pages/studio/attachment/list";
  107. import StudioSetting from "./pages/studio/setting";
  108. import StudioAnalysis from "./pages/studio/analysis";
  109. import StudioAnalysisList from "./pages/studio/analysis/list";
  110. import StudioInvite from "./pages/studio/invite";
  111. import StudioInviteList from "./pages/studio/invite/list";
  112. import StudioTag from "./pages/studio/tags";
  113. import StudioTagList from "./pages/studio/tags/list";
  114. import StudioTagShow from "./pages/studio/tags/show";
  115. import StudioTagEdit from "./pages/studio/tags/edit";
  116. import StudioTask from "./pages/studio/task";
  117. import StudioTaskHall from "./pages/studio/task/hall";
  118. import StudioTaskList from "./pages/studio/task/tasks";
  119. import StudioTaskProjects from "./pages/studio/task/projects";
  120. import StudioTaskProject from "./pages/studio/task/project";
  121. import StudioTaskProjectEdit from "./pages/studio/task/project-edit";
  122. import StudioTaskWorkflow from "./pages/studio/task/workflow";
  123. import StudioAi from "./pages/studio/ai";
  124. import StudioAiModes from "./pages/studio/ai/models";
  125. import StudioAiModeEdit from "./pages/studio/ai/model_edit";
  126. import StudioAiModeLog from "./pages/studio/ai/model_logs";
  127. import { ConfigProvider } from "antd";
  128. import { useAppSelector } from "./hooks";
  129. import { currTheme } from "./reducers/theme";
  130. const Widget = () => {
  131. const theme = useAppSelector(currTheme);
  132. return (
  133. <ConfigProvider prefixCls={theme}>
  134. <Routes>
  135. <Route path="admin" element={<AdminHome />}>
  136. <Route path="api" element={<AdminApi />}>
  137. <Route path="dashboard" element={<AdminApiDashboard />} />
  138. </Route>
  139. <Route path="relation" element={<AdminRelation />}>
  140. <Route path="list" element={<AdminRelationList />} />
  141. </Route>
  142. <Route path="nissaya-ending" element={<AdminNissayaEnding />}>
  143. <Route path="list" element={<AdminNissayaEndingList />} />
  144. <Route path="list/:relation" element={<AdminNissayaEndingList />} />
  145. </Route>
  146. <Route path="dictionary" element={<AdminDictionary />}>
  147. <Route path="list" element={<AdminDictionaryList />} />
  148. <Route path="preference" element={<AdminDictionaryPreference />} />
  149. </Route>
  150. <Route path="users" element={<AdminUsers />}>
  151. <Route path="list" element={<AdminUsersList />} />
  152. <Route path="show/:id" element={<AdminUsersShow />} />
  153. </Route>
  154. <Route path="invite" element={<AdminInvite />}>
  155. <Route path="list" element={<AdminInviteList />} />
  156. </Route>
  157. <Route path="ai" element={<AdminAI />}>
  158. <Route path="list" element={<AdminAIList />} />
  159. </Route>
  160. </Route>
  161. <Route path="users" element={<Users />}>
  162. <Route path="sign-up" element={<UsersSignUp />} />
  163. </Route>
  164. <Route path="anonymous" element={<Anonymous />}>
  165. <Route path="users">
  166. <Route path="sign-in" element={<NutUsersSignIn />} />
  167. <Route path="sign-up" element={<UsersSignUp />} />
  168. <Route path="sign-up/:token" element={<NutUsersSignUp />} />
  169. <Route path="unlock">
  170. <Route path="new" element={<NutUsersUnlockNew />} />
  171. <Route path="verify/:token" element={<NutUsersUnlockVerify />} />
  172. </Route>
  173. <Route
  174. path="reset-password/:token"
  175. element={<NutUsersResetPassword />}
  176. />
  177. <Route
  178. path="forgot-password"
  179. element={<NutUsersForgotPassword />}
  180. />
  181. </Route>
  182. </Route>
  183. <Route path="dashboard" element={<Dashboard />}>
  184. <Route path="users">
  185. <Route
  186. path="change-password"
  187. element={<NutUsersChangePassword />}
  188. />
  189. <Route path="logs" element={<NutUsersLogs />} />
  190. <Route path="account-info" element={<NutUsersAccountInfo />} />
  191. </Route>
  192. </Route>
  193. <Route path="switch-language" element={<NutSwitchLanguage />} />
  194. <Route path="forbidden" element={<NutForbidden />} />
  195. <Route path="nut" element={<NutHome />} />
  196. <Route path="" element={<LibraryHome />} />
  197. <Route path="*" element={<NutNotFound />} />
  198. <Route path="community" element={<LibraryCommunity />}>
  199. <Route path="list" element={<LibraryCommunityList />} />
  200. </Route>
  201. <Route path="notifications" element={<LibraryNotifications />}>
  202. <Route path="list" element={<LibraryNotificationsList />} />
  203. </Route>
  204. <Route path="palicanon" element={<LibraryPalicanon />}>
  205. <Route path="list" element={<LibraryPalicanonByPath />} />
  206. <Route path="list/:root" element={<LibraryPalicanonByPath />} />
  207. <Route path="list/:root/:path" element={<LibraryPalicanonByPath />} />
  208. <Route
  209. path="list/:root/:path/:tag"
  210. element={<LibraryPalicanonByPath />}
  211. />
  212. <Route path="chapter/:id" element={<LibraryPalicanonChapter />} />
  213. </Route>
  214. <Route path="course" element={<LibraryCourse />}>
  215. <Route path="list" element={<LibraryCourseList />}></Route>
  216. <Route path="show/:id" element={<LibraryCourseShow />}></Route>
  217. </Route>
  218. <Route path="term" element={<LibraryTerm />}>
  219. <Route path="list/:word" element={<LibraryTermList />}></Route>
  220. <Route path="show/:id" element={<LibraryTermShow />}></Route>
  221. </Route>
  222. <Route path="dict" element={<LibraryDict />}>
  223. <Route path=":word" element={<LibraryDictShow />} />
  224. <Route path="recent" element={<LibraryDictShow />} />
  225. </Route>
  226. <Route path="anthology" element={<LibraryAnthology />}>
  227. <Route path="list" element={<LibraryAnthologyList />} />
  228. <Route path=":id" element={<LibraryAnthologyShow />} />
  229. <Route
  230. path=":id/by_channel/:tags"
  231. element={<LibraryAnthologyShow />}
  232. />
  233. </Route>
  234. <Route path="article" element={<LibraryArticle />}>
  235. <Route path=":type" element={<LibraryArticleShow />} />
  236. <Route path=":type/:id" element={<LibraryArticleShow />} />
  237. <Route path=":type/:id/:mode" element={<LibraryArticleShow />} />
  238. <Route
  239. path=":type/:id/:mode/:param"
  240. element={<LibraryArticleShow />}
  241. />
  242. </Route>
  243. <Route path="nissaya" element={<LibraryNissaya />}>
  244. <Route path="ending/:ending" element={<LibraryNissayaShow />} />
  245. </Route>
  246. <Route path="discussion" element={<LibraryDiscussion />}>
  247. <Route path="list" element={<LibraryDiscussionList />} />
  248. <Route path="topic/:id" element={<LibraryDiscussionTopic />} />
  249. <Route path="show/:type/:id" element={<LibraryDiscussionShow />} />
  250. </Route>
  251. <Route path="blog/:studio" element={<LibraryBlog />}>
  252. <Route path="overview" element={<LibraryBlogOverview />} />
  253. <Route path="palicanon" element={<LibraryBlogTranslation />} />
  254. <Route path="course" element={<LibraryBlogCourse />} />
  255. <Route path="anthology" element={<LibraryBlogAnthology />} />
  256. <Route path="term" element={<LibraryBlogTerm />} />
  257. </Route>
  258. <Route path="search" element={<LibrarySearch />}>
  259. <Route path="home" element={<LibrarySearchKey />} />
  260. <Route path="key/:key" element={<LibrarySearchKey />} />
  261. </Route>
  262. <Route path="chat" element={<LibraryChat />}>
  263. <Route path="new" element={<LibraryChatNew />} />
  264. <Route path="c/:id" element={<LibraryChatAI />} />
  265. </Route>
  266. <Route path="download" element={<LibraryDownload />}>
  267. <Route path="download" element={<LibraryDownloadPage />} />
  268. </Route>
  269. <Route path="studio/:studioname" element={<Studio />}>
  270. <Route path="home" element={<StudioHome />} />
  271. <Route path="palicanon" element={<StudioPalicanon />}></Route>
  272. <Route path="recent" element={<StudioRecent />}>
  273. <Route path="list" element={<StudioRecentList />} />
  274. </Route>
  275. <Route path="channel" element={<StudioChannel />}>
  276. <Route path="list" element={<StudioChannelList />} />
  277. <Route
  278. path=":channelId/setting"
  279. element={<StudioChannelSetting />}
  280. />
  281. <Route
  282. path=":channelId/setting/:type"
  283. element={<StudioChannelSetting />}
  284. />
  285. <Route
  286. path=":channelId/setting/:type/:id"
  287. element={<StudioChannelSetting />}
  288. />
  289. <Route path=":channelId" element={<StudioChannelShow />} />
  290. </Route>
  291. <Route path="group" element={<StudioGroup />}>
  292. <Route path="list" element={<StudioGroupList />} />
  293. <Route path=":groupId" element={<StudioGroupShow />} />
  294. <Route path=":groupId/edit" element={<StudioGroupEdit />} />
  295. <Route path=":groupId/show" element={<StudioGroupShow />} />
  296. </Route>
  297. <Route path="course" element={<StudioCourse />}>
  298. <Route path="list" element={<StudioCourseList />} />
  299. <Route path=":courseId/edit" element={<StudioCourseEdit />} />
  300. </Route>
  301. <Route path="task" element={<StudioTask />}>
  302. <Route path="hall" element={<StudioTaskHall />} />
  303. <Route path="list" element={<StudioTaskList />} />
  304. <Route path="projects" element={<StudioTaskProjects />} />
  305. <Route path="project/:projectId" element={<StudioTaskProject />} />
  306. <Route
  307. path="project/:projectId/edit"
  308. element={<StudioTaskProjectEdit />}
  309. />
  310. <Route path="workflows" element={<StudioTaskWorkflow />} />
  311. </Route>
  312. <Route path="dict" element={<StudioDict />}>
  313. <Route path="list" element={<StudioDictList />} />
  314. </Route>
  315. <Route path="term" element={<StudioTerm />}>
  316. <Route path="list" element={<StudioTermList />} />
  317. </Route>
  318. <Route path="attachment" element={<StudioAttachment />}>
  319. <Route path="list" element={<StudioAttachmentList />} />
  320. </Route>
  321. <Route path="article" element={<StudioArticle />}>
  322. <Route path="list" element={<StudioArticleList />} />
  323. <Route path="edit/:articleId" element={<StudioArticleEdit />} />
  324. <Route path="create" element={<StudioArticleCreate />} />
  325. </Route>
  326. <Route path="anthology" element={<StudioAnthology />}>
  327. <Route path="list" element={<StudioAnthologyList />}></Route>
  328. <Route
  329. path=":anthology_id/edit"
  330. element={<StudioAnthologyEdit />}
  331. />
  332. </Route>
  333. <Route path="ai" element={<StudioAi />}>
  334. <Route path="models">
  335. <Route path="list" element={<StudioAiModes />} />
  336. <Route path=":modelId/edit" element={<StudioAiModeEdit />} />
  337. <Route path=":modelId/logs" element={<StudioAiModeLog />} />
  338. </Route>
  339. </Route>
  340. <Route path="setting" element={<StudioSetting />} />
  341. <Route path="exp" element={<StudioAnalysis />}>
  342. <Route path="list" element={<StudioAnalysisList />} />
  343. </Route>
  344. <Route path="invite" element={<StudioInvite />}>
  345. <Route path="list" element={<StudioInviteList />} />
  346. </Route>
  347. <Route path="tags" element={<StudioTag />}>
  348. <Route path="list" element={<StudioTagList />} />
  349. <Route path=":id/list" element={<StudioTagShow />} />
  350. <Route path=":tagId/edit" element={<StudioTagEdit />} />
  351. </Route>
  352. <Route path="transfer" element={<StudioTransfer />}>
  353. <Route path="list" element={<StudioTransferList />} />
  354. </Route>
  355. </Route>
  356. </Routes>
  357. </ConfigProvider>
  358. );
  359. };
  360. export default Widget;