@qlover/create-app 0.7.14 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/configs/_common/.gitignore.template +6 -0
  3. package/dist/configs/_common/.prettierignore +17 -5
  4. package/dist/configs/_common/.vscode/settings.json +6 -1
  5. package/dist/index.cjs +1 -1
  6. package/dist/index.js +1 -1
  7. package/dist/templates/next-app/.env.template +1 -1
  8. package/dist/templates/next-app/README.en.md +130 -0
  9. package/dist/templates/next-app/README.md +114 -20
  10. package/dist/templates/next-app/config/Identifier/api.ts +5 -5
  11. package/dist/templates/next-app/config/Identifier/common/admint.table.ts +69 -0
  12. package/dist/templates/next-app/config/Identifier/common/common.ts +76 -0
  13. package/dist/templates/next-app/config/Identifier/common/index.ts +3 -0
  14. package/dist/templates/next-app/config/Identifier/{validator.ts → common/validators.ts} +5 -5
  15. package/dist/templates/next-app/config/Identifier/index.ts +2 -12
  16. package/dist/templates/next-app/config/Identifier/pages/index.ts +6 -0
  17. package/dist/templates/next-app/config/Identifier/pages/page.admin.home.ts +27 -0
  18. package/dist/templates/next-app/config/Identifier/pages/page.admin.locales.ts +266 -0
  19. package/dist/templates/next-app/config/Identifier/pages/page.admin.user.ts +293 -0
  20. package/dist/templates/{react-app/config/Identifier → next-app/config/Identifier/pages}/page.home.ts +15 -22
  21. package/dist/templates/next-app/config/Identifier/{page.login.ts → pages/page.login.ts} +28 -34
  22. package/dist/templates/next-app/config/Identifier/{page.register.ts → pages/page.register.ts} +30 -29
  23. package/dist/templates/next-app/config/adminNavs.ts +19 -0
  24. package/dist/templates/next-app/config/common.ts +22 -13
  25. package/dist/templates/next-app/config/i18n/HomeI18n.ts +5 -5
  26. package/dist/templates/next-app/config/i18n/admin18n.ts +61 -19
  27. package/dist/templates/next-app/config/i18n/i18nConfig.ts +2 -0
  28. package/dist/templates/next-app/config/i18n/i18nKeyScheam.ts +36 -0
  29. package/dist/templates/next-app/config/i18n/loginI18n.ts +22 -22
  30. package/dist/templates/next-app/config/i18n/register18n.ts +23 -24
  31. package/dist/templates/next-app/docs/en/api.md +387 -0
  32. package/dist/templates/next-app/docs/en/component.md +544 -0
  33. package/dist/templates/next-app/docs/en/database.md +496 -0
  34. package/dist/templates/next-app/docs/en/development-guide.md +727 -0
  35. package/dist/templates/next-app/docs/en/env.md +563 -0
  36. package/dist/templates/next-app/docs/en/i18n.md +287 -0
  37. package/dist/templates/next-app/docs/en/index.md +165 -0
  38. package/dist/templates/next-app/docs/en/page.md +457 -0
  39. package/dist/templates/next-app/docs/en/project-structure.md +176 -0
  40. package/dist/templates/next-app/docs/en/router.md +427 -0
  41. package/dist/templates/next-app/docs/en/theme.md +532 -0
  42. package/dist/templates/next-app/docs/en/validator.md +478 -0
  43. package/dist/templates/next-app/docs/zh/api.md +387 -0
  44. package/dist/templates/next-app/docs/zh/component.md +544 -0
  45. package/dist/templates/next-app/docs/zh/database.md +496 -0
  46. package/dist/templates/next-app/docs/zh/development-guide.md +727 -0
  47. package/dist/templates/next-app/docs/zh/env.md +563 -0
  48. package/dist/templates/next-app/docs/zh/i18n.md +287 -0
  49. package/dist/templates/next-app/docs/zh/index.md +165 -0
  50. package/dist/templates/next-app/docs/zh/page.md +457 -0
  51. package/dist/templates/next-app/docs/zh/project-structure.md +176 -0
  52. package/dist/templates/next-app/docs/zh/router.md +427 -0
  53. package/dist/templates/next-app/docs/zh/theme.md +532 -0
  54. package/dist/templates/next-app/docs/zh/validator.md +476 -0
  55. package/dist/templates/next-app/make/generateLocales.ts +19 -12
  56. package/dist/templates/next-app/migrations/schema/LocalesSchema.ts +15 -0
  57. package/dist/templates/next-app/migrations/sql/1694244000000.sql +11 -0
  58. package/dist/templates/next-app/package.json +7 -3
  59. package/dist/templates/next-app/public/locales/en.json +172 -207
  60. package/dist/templates/next-app/public/locales/zh.json +172 -207
  61. package/dist/templates/next-app/src/app/[locale]/admin/locales/page.tsx +153 -0
  62. package/dist/templates/next-app/src/app/[locale]/admin/users/page.tsx +48 -50
  63. package/dist/templates/next-app/src/app/[locale]/login/LoginForm.tsx +2 -2
  64. package/dist/templates/next-app/src/app/api/admin/locales/create/route.ts +34 -0
  65. package/dist/templates/next-app/src/app/api/admin/locales/import/route.ts +40 -0
  66. package/dist/templates/next-app/src/app/api/admin/locales/route.ts +42 -0
  67. package/dist/templates/next-app/src/app/api/admin/locales/update/route.ts +32 -0
  68. package/dist/templates/next-app/src/app/api/locales/json/route.ts +44 -0
  69. package/dist/templates/next-app/src/base/cases/AdminPageManager.ts +1 -13
  70. package/dist/templates/next-app/src/base/cases/Datetime.ts +18 -0
  71. package/dist/templates/next-app/src/base/cases/DialogErrorPlugin.ts +12 -6
  72. package/dist/templates/next-app/src/base/cases/ResourceState.ts +17 -0
  73. package/dist/templates/next-app/src/base/cases/TranslateI18nInterface.ts +25 -0
  74. package/dist/templates/next-app/src/base/cases/ZodColumnBuilder.ts +200 -0
  75. package/dist/templates/next-app/src/base/port/ZodBuilderInterface.ts +8 -0
  76. package/dist/templates/next-app/src/base/services/AdminLocalesService.ts +20 -0
  77. package/dist/templates/next-app/src/base/services/AdminPageEvent.ts +26 -0
  78. package/dist/templates/next-app/src/base/services/AdminPageScheduler.ts +42 -0
  79. package/dist/templates/next-app/src/base/services/ResourceService.ts +122 -0
  80. package/dist/templates/next-app/src/base/services/adminApi/AdminLocalesApi.ts +104 -0
  81. package/dist/templates/next-app/src/base/services/adminApi/AdminUserApi.ts +38 -5
  82. package/dist/templates/next-app/src/base/services/appApi/AppApiPlugin.ts +1 -1
  83. package/dist/templates/next-app/src/i18n/request.ts +30 -1
  84. package/dist/templates/next-app/src/server/PageParams.ts +2 -10
  85. package/dist/templates/next-app/src/server/port/DBBridgeInterface.ts +5 -0
  86. package/dist/templates/next-app/src/server/port/DBTableInterface.ts +2 -0
  87. package/dist/templates/next-app/src/server/port/LocalesRepositoryInterface.ts +43 -0
  88. package/dist/templates/next-app/src/server/repositorys/LocalesRepository.ts +197 -0
  89. package/dist/templates/next-app/src/server/services/ApiLocaleService.ts +122 -0
  90. package/dist/templates/next-app/src/server/sqlBridges/SupabaseBridge.ts +60 -11
  91. package/dist/templates/next-app/src/server/validators/ExtendedExecutorError.ts +6 -0
  92. package/dist/templates/next-app/src/server/validators/LocalesValidator.ts +131 -0
  93. package/dist/templates/next-app/src/server/validators/LoginValidator.ts +2 -5
  94. package/dist/templates/next-app/src/server/validators/PaginationValidator.ts +32 -16
  95. package/dist/templates/next-app/src/styles/css/antd-themes/pagination/_default.css +2 -1
  96. package/dist/templates/next-app/src/styles/css/antd-themes/pagination/dark.css +28 -29
  97. package/dist/templates/next-app/src/styles/css/antd-themes/pagination/pink.css +2 -1
  98. package/dist/templates/next-app/src/uikit/components/AdminLayout.tsx +17 -3
  99. package/dist/templates/next-app/src/uikit/components/BaseHeader.tsx +5 -4
  100. package/dist/templates/next-app/src/uikit/components/BaseLayout.tsx +5 -4
  101. package/dist/templates/next-app/src/uikit/components/BootstrapsProvider.tsx +3 -2
  102. package/dist/templates/next-app/src/uikit/components/ComboProvider.tsx +1 -1
  103. package/dist/templates/next-app/src/uikit/components/EditableCell.tsx +118 -0
  104. package/dist/templates/next-app/src/uikit/components/LogoutButton.tsx +5 -6
  105. package/dist/templates/next-app/src/uikit/components/ThemeSwitcher.tsx +1 -1
  106. package/dist/templates/next-app/src/uikit/components/With.tsx +2 -2
  107. package/dist/templates/next-app/src/uikit/components/localesImportButton/LocalesImportButton.tsx +62 -0
  108. package/dist/templates/next-app/src/uikit/components/localesImportButton/LocalesImportEvent.ts +28 -0
  109. package/dist/templates/next-app/src/uikit/components/localesImportButton/import.module.css +6 -0
  110. package/dist/templates/next-app/src/uikit/hook/useI18nInterface.ts +8 -14
  111. package/dist/templates/next-app/src/uikit/hook/useWarnTranslations.ts +25 -0
  112. package/dist/templates/react-app/.prettierignore +17 -0
  113. package/dist/templates/react-app/README.en.md +71 -54
  114. package/dist/templates/react-app/README.md +35 -18
  115. package/dist/templates/react-app/__tests__/__mocks__/BootstrapTest.ts +14 -0
  116. package/dist/templates/react-app/__tests__/__mocks__/MockAppConfit.ts +1 -1
  117. package/dist/templates/react-app/__tests__/__mocks__/MockDialogHandler.ts +2 -2
  118. package/dist/templates/react-app/__tests__/__mocks__/MockLogger.ts +1 -1
  119. package/dist/templates/react-app/__tests__/__mocks__/components/TestApp.tsx +45 -0
  120. package/dist/templates/react-app/__tests__/__mocks__/components/TestBootstrapsProvider.tsx +34 -0
  121. package/dist/templates/react-app/__tests__/__mocks__/components/TestRouter.tsx +46 -0
  122. package/dist/templates/react-app/__tests__/__mocks__/components/index.ts +12 -0
  123. package/dist/templates/react-app/__tests__/__mocks__/createMockGlobals.ts +1 -2
  124. package/dist/templates/react-app/__tests__/__mocks__/testIOC/TestIOC.ts +51 -0
  125. package/dist/templates/react-app/__tests__/__mocks__/testIOC/TestIOCRegister.ts +69 -0
  126. package/dist/templates/react-app/__tests__/setup/index.ts +1 -51
  127. package/dist/templates/react-app/__tests__/setup/setupGlobal.ts +51 -0
  128. package/dist/templates/react-app/__tests__/src/App.structure.test.tsx +115 -0
  129. package/dist/templates/react-app/__tests__/src/base/cases/AppConfig.test.ts +2 -2
  130. package/dist/templates/react-app/__tests__/src/base/cases/AppError.test.ts +1 -1
  131. package/dist/templates/react-app/__tests__/src/base/cases/DialogHandler.test.ts +3 -5
  132. package/dist/templates/react-app/__tests__/src/base/cases/I18nKeyErrorPlugin.test.ts +13 -2
  133. package/dist/templates/react-app/__tests__/src/base/cases/InversifyContainer.test.ts +1 -1
  134. package/dist/templates/react-app/__tests__/src/base/cases/PublicAssetsPath.test.ts +1 -1
  135. package/dist/templates/react-app/__tests__/src/base/cases/RequestLogger.test.ts +5 -5
  136. package/dist/templates/react-app/__tests__/src/base/cases/RequestStatusCatcher.test.ts +1 -2
  137. package/dist/templates/react-app/__tests__/src/base/cases/RouterLoader.test.ts +25 -15
  138. package/dist/templates/react-app/__tests__/src/base/services/I18nService.test.ts +29 -15
  139. package/dist/templates/react-app/__tests__/src/core/IOC.test.ts +19 -9
  140. package/dist/templates/react-app/__tests__/src/core/bootstraps/BootstrapClient.test.ts +153 -0
  141. package/dist/templates/react-app/__tests__/src/core/bootstraps/BootstrapsApp.test.ts +9 -7
  142. package/dist/templates/react-app/__tests__/src/main.integration.test.tsx +4 -5
  143. package/dist/templates/react-app/__tests__/src/main.test.tsx +4 -4
  144. package/dist/templates/react-app/__tests__/src/uikit/components/BaseHeader.test.tsx +68 -59
  145. package/dist/templates/react-app/config/IOCIdentifier.ts +8 -8
  146. package/dist/templates/react-app/config/Identifier/{common.error.ts → common/common.error.ts} +5 -5
  147. package/dist/templates/react-app/config/Identifier/{common.ts → common/common.ts} +9 -9
  148. package/dist/templates/react-app/config/Identifier/common/index.ts +2 -0
  149. package/dist/templates/react-app/config/Identifier/index.ts +1 -9
  150. package/dist/templates/react-app/config/Identifier/pages/index.ts +8 -0
  151. package/dist/templates/react-app/config/Identifier/{page.about.ts → pages/page.about.ts} +34 -26
  152. package/dist/templates/react-app/config/Identifier/{page.executor.ts → pages/page.executor.ts} +47 -39
  153. package/dist/templates/{next-app/config/Identifier → react-app/config/Identifier/pages}/page.home.ts +24 -23
  154. package/dist/templates/react-app/config/Identifier/pages/page.identifiter.ts +102 -0
  155. package/dist/templates/react-app/config/Identifier/{page.jsonStorage.ts → pages/page.jsonStorage.ts} +18 -11
  156. package/dist/templates/react-app/config/Identifier/{page.login.ts → pages/page.login.ts} +37 -27
  157. package/dist/templates/react-app/config/Identifier/{page.register.ts → pages/page.register.ts} +37 -25
  158. package/dist/templates/react-app/config/Identifier/{page.request.ts → pages/page.request.ts} +34 -44
  159. package/dist/templates/react-app/config/app.router.ts +66 -69
  160. package/dist/templates/react-app/config/i18n/PageI18nInterface.ts +51 -0
  161. package/dist/templates/react-app/config/i18n/aboutI18n.ts +42 -0
  162. package/dist/templates/react-app/config/i18n/executorI18n.ts +51 -0
  163. package/dist/templates/react-app/config/i18n/homeI18n.ts +24 -0
  164. package/dist/templates/react-app/config/i18n/i18nConfig.ts +30 -0
  165. package/dist/templates/react-app/config/i18n/identifiter18n.ts +30 -0
  166. package/dist/templates/react-app/config/i18n/jsonStorage18n.ts +27 -0
  167. package/dist/templates/react-app/config/i18n/login18n.ts +42 -0
  168. package/dist/templates/react-app/config/i18n/notFoundI18n.ts +34 -0
  169. package/dist/templates/react-app/config/i18n/register18n.ts +40 -0
  170. package/dist/templates/react-app/config/i18n/request18n.ts +41 -0
  171. package/dist/templates/react-app/config/theme.ts +14 -4
  172. package/dist/templates/react-app/docs/en/bootstrap.md +1670 -341
  173. package/dist/templates/react-app/docs/en/development-guide.md +1021 -345
  174. package/dist/templates/react-app/docs/en/env.md +1132 -278
  175. package/dist/templates/react-app/docs/en/i18n.md +858 -147
  176. package/dist/templates/react-app/docs/en/index.md +733 -104
  177. package/dist/templates/react-app/docs/en/ioc.md +1228 -287
  178. package/dist/templates/react-app/docs/en/playwright/e2e-tests.md +321 -0
  179. package/dist/templates/react-app/docs/en/playwright/index.md +19 -0
  180. package/dist/templates/react-app/docs/en/playwright/installation-summary.md +332 -0
  181. package/dist/templates/react-app/docs/en/playwright/overview.md +222 -0
  182. package/dist/templates/react-app/docs/en/playwright/quickstart.md +325 -0
  183. package/dist/templates/react-app/docs/en/playwright/reorganization-notes.md +340 -0
  184. package/dist/templates/react-app/docs/en/playwright/setup-complete.md +290 -0
  185. package/dist/templates/react-app/docs/en/playwright/testing-guide.md +565 -0
  186. package/dist/templates/react-app/docs/en/store.md +1194 -184
  187. package/dist/templates/react-app/docs/en/why-no-globals.md +797 -0
  188. package/dist/templates/react-app/docs/zh/bootstrap.md +1670 -341
  189. package/dist/templates/react-app/docs/zh/development-guide.md +1021 -345
  190. package/dist/templates/react-app/docs/zh/env.md +1132 -275
  191. package/dist/templates/react-app/docs/zh/i18n.md +858 -147
  192. package/dist/templates/react-app/docs/zh/index.md +717 -104
  193. package/dist/templates/react-app/docs/zh/ioc.md +1229 -287
  194. package/dist/templates/react-app/docs/zh/playwright/e2e-tests.md +321 -0
  195. package/dist/templates/react-app/docs/zh/playwright/index.md +19 -0
  196. package/dist/templates/react-app/docs/zh/playwright/installation-summary.md +332 -0
  197. package/dist/templates/react-app/docs/zh/playwright/overview.md +222 -0
  198. package/dist/templates/react-app/docs/zh/playwright/quickstart.md +325 -0
  199. package/dist/templates/react-app/docs/zh/playwright/reorganization-notes.md +340 -0
  200. package/dist/templates/react-app/docs/zh/playwright/setup-complete.md +290 -0
  201. package/dist/templates/react-app/docs/zh/playwright/testing-guide.md +565 -0
  202. package/dist/templates/react-app/docs/zh/store.md +1192 -184
  203. package/dist/templates/react-app/docs/zh/why-no-globals.md +797 -0
  204. package/dist/templates/react-app/e2e/App.spec.ts +319 -0
  205. package/dist/templates/react-app/e2e/fixtures/base.fixture.ts +40 -0
  206. package/dist/templates/react-app/e2e/main.spec.ts +20 -0
  207. package/dist/templates/react-app/e2e/utils/test-helpers.ts +19 -0
  208. package/dist/templates/react-app/eslint.config.mjs +247 -0
  209. package/dist/templates/react-app/makes/eslint-utils.mjs +195 -0
  210. package/dist/templates/react-app/makes/generateTs2LocalesOptions.ts +26 -0
  211. package/dist/templates/react-app/package.json +31 -3
  212. package/dist/templates/react-app/playwright.config.ts +79 -0
  213. package/dist/templates/react-app/public/locales/en/common.json +190 -179
  214. package/dist/templates/react-app/public/locales/zh/common.json +190 -179
  215. package/dist/templates/react-app/src/App.tsx +15 -42
  216. package/dist/templates/react-app/src/base/apis/AiApi.ts +5 -5
  217. package/dist/templates/react-app/src/base/apis/feApi/FeApi.ts +1 -1
  218. package/dist/templates/react-app/src/base/apis/feApi/FeApiAdapter.ts +1 -1
  219. package/dist/templates/react-app/src/base/apis/feApi/FeApiBootstarp.ts +8 -8
  220. package/dist/templates/react-app/src/base/apis/feApi/FeApiType.ts +1 -1
  221. package/dist/templates/react-app/src/base/apis/userApi/UserApi.ts +6 -6
  222. package/dist/templates/react-app/src/base/apis/userApi/UserApiAdapter.ts +1 -1
  223. package/dist/templates/react-app/src/base/apis/userApi/UserApiBootstarp.ts +12 -14
  224. package/dist/templates/react-app/src/base/apis/userApi/UserApiType.ts +1 -1
  225. package/dist/templates/react-app/src/base/cases/DialogHandler.ts +5 -2
  226. package/dist/templates/react-app/src/base/cases/I18nKeyErrorPlugin.ts +3 -3
  227. package/dist/templates/react-app/src/base/cases/InversifyContainer.ts +3 -3
  228. package/dist/templates/react-app/src/base/cases/RequestLanguages.ts +2 -2
  229. package/dist/templates/react-app/src/base/cases/RequestLogger.ts +4 -4
  230. package/dist/templates/react-app/src/base/cases/RequestStatusCatcher.ts +1 -1
  231. package/dist/templates/react-app/src/base/cases/ResourceState.ts +23 -0
  232. package/dist/templates/react-app/src/base/cases/RouterLoader.ts +4 -4
  233. package/dist/templates/react-app/src/base/cases/TranslateI18nInterface.ts +26 -0
  234. package/dist/templates/react-app/src/base/port/ExecutorPageBridgeInterface.ts +2 -3
  235. package/dist/templates/react-app/src/base/port/I18nServiceInterface.ts +1 -1
  236. package/dist/templates/react-app/src/base/port/IOCInterface.ts +36 -0
  237. package/dist/templates/react-app/src/base/port/JSONStoragePageBridgeInterface.ts +2 -1
  238. package/dist/templates/react-app/src/base/port/ProcesserExecutorInterface.ts +1 -1
  239. package/dist/templates/react-app/src/base/port/RequestPageBridgeInterface.ts +2 -2
  240. package/dist/templates/react-app/src/base/port/RouteServiceInterface.ts +9 -5
  241. package/dist/templates/react-app/src/base/port/UserServiceInterface.ts +1 -1
  242. package/dist/templates/react-app/src/base/services/I18nService.ts +29 -29
  243. package/dist/templates/react-app/src/base/services/IdentifierService.ts +143 -0
  244. package/dist/templates/react-app/src/base/services/ProcesserExecutor.ts +3 -3
  245. package/dist/templates/react-app/src/base/services/RouteService.ts +27 -8
  246. package/dist/templates/react-app/src/base/services/UserService.ts +8 -8
  247. package/dist/templates/react-app/src/base/types/Page.ts +14 -2
  248. package/dist/templates/react-app/src/base/types/global.d.ts +1 -1
  249. package/dist/templates/react-app/src/core/IOC.ts +5 -46
  250. package/dist/templates/react-app/src/core/bootstraps/{BootstrapApp.ts → BootstrapClient.ts} +44 -17
  251. package/dist/templates/react-app/src/core/bootstraps/BootstrapsRegistry.ts +14 -7
  252. package/dist/templates/react-app/src/core/bootstraps/IocIdentifierTest.ts +1 -1
  253. package/dist/templates/react-app/src/core/bootstraps/PrintBootstrap.ts +1 -1
  254. package/dist/templates/react-app/src/core/clientIoc/ClientIOC.ts +40 -0
  255. package/dist/templates/react-app/src/core/{IocRegisterImpl.ts → clientIoc/ClientIOCRegister.ts} +35 -24
  256. package/dist/templates/react-app/src/core/globals.ts +9 -9
  257. package/dist/templates/react-app/src/main.tsx +4 -4
  258. package/dist/templates/react-app/src/pages/404.tsx +6 -3
  259. package/dist/templates/react-app/src/pages/500.tsx +5 -2
  260. package/dist/templates/react-app/src/pages/NoRouteFound.tsx +5 -0
  261. package/dist/templates/react-app/src/pages/auth/Layout.tsx +9 -6
  262. package/dist/templates/react-app/src/pages/auth/LoginPage.tsx +46 -56
  263. package/dist/templates/react-app/src/pages/auth/RegisterPage.tsx +46 -58
  264. package/dist/templates/react-app/src/pages/base/AboutPage.tsx +35 -40
  265. package/dist/templates/react-app/src/pages/base/ExecutorPage.tsx +51 -51
  266. package/dist/templates/react-app/src/pages/base/HomePage.tsx +14 -15
  267. package/dist/templates/react-app/src/pages/base/IdentifierPage.tsx +70 -11
  268. package/dist/templates/react-app/src/pages/base/JSONStoragePage.tsx +24 -25
  269. package/dist/templates/react-app/src/pages/base/Layout.tsx +2 -2
  270. package/dist/templates/react-app/src/pages/base/RedirectPathname.tsx +3 -2
  271. package/dist/templates/react-app/src/pages/base/RequestPage.tsx +41 -59
  272. package/dist/templates/react-app/src/styles/css/antd-themes/{_default.css → _common/_default.css} +85 -0
  273. package/dist/templates/react-app/src/styles/css/antd-themes/{dark.css → _common/dark.css} +99 -0
  274. package/dist/templates/react-app/src/styles/css/antd-themes/_common/index.css +3 -0
  275. package/dist/templates/react-app/src/styles/css/antd-themes/{pink.css → _common/pink.css} +86 -0
  276. package/dist/templates/react-app/src/styles/css/antd-themes/index.css +4 -3
  277. package/dist/templates/react-app/src/styles/css/antd-themes/menu/_default.css +108 -0
  278. package/dist/templates/react-app/src/styles/css/antd-themes/menu/dark.css +67 -0
  279. package/dist/templates/react-app/src/styles/css/antd-themes/menu/index.css +3 -0
  280. package/dist/templates/react-app/src/styles/css/antd-themes/menu/pink.css +67 -0
  281. package/dist/templates/react-app/src/styles/css/antd-themes/pagination/_default.css +34 -0
  282. package/dist/templates/react-app/src/styles/css/antd-themes/pagination/dark.css +31 -0
  283. package/dist/templates/react-app/src/styles/css/antd-themes/pagination/index.css +3 -0
  284. package/dist/templates/react-app/src/styles/css/antd-themes/pagination/pink.css +36 -0
  285. package/dist/templates/react-app/src/styles/css/antd-themes/table/_default.css +44 -0
  286. package/dist/templates/react-app/src/styles/css/antd-themes/table/dark.css +43 -0
  287. package/dist/templates/react-app/src/styles/css/antd-themes/table/index.css +3 -0
  288. package/dist/templates/react-app/src/styles/css/antd-themes/table/pink.css +43 -0
  289. package/dist/templates/react-app/src/styles/css/page.css +4 -3
  290. package/dist/templates/react-app/src/styles/css/themes/_default.css +1 -0
  291. package/dist/templates/react-app/src/styles/css/themes/dark.css +1 -0
  292. package/dist/templates/react-app/src/styles/css/themes/pink.css +1 -0
  293. package/dist/templates/react-app/src/styles/css/zIndex.css +1 -1
  294. package/dist/templates/react-app/src/uikit/bridges/ExecutorPageBridge.ts +3 -3
  295. package/dist/templates/react-app/src/uikit/bridges/JSONStoragePageBridge.ts +2 -2
  296. package/dist/templates/react-app/src/uikit/bridges/NavigateBridge.ts +1 -1
  297. package/dist/templates/react-app/src/uikit/bridges/RequestPageBridge.ts +3 -3
  298. package/dist/templates/react-app/src/uikit/components/AppRouterProvider.tsx +35 -0
  299. package/dist/templates/react-app/src/uikit/components/BaseHeader.tsx +15 -11
  300. package/dist/templates/react-app/src/uikit/components/BaseRouteProvider.tsx +14 -11
  301. package/dist/templates/react-app/src/uikit/components/BaseRouteSeo.tsx +18 -0
  302. package/dist/templates/react-app/src/uikit/components/BootstrapsProvider.tsx +13 -0
  303. package/dist/templates/react-app/src/uikit/components/ClientSeo.tsx +62 -0
  304. package/dist/templates/react-app/src/uikit/components/ComboProvider.tsx +38 -0
  305. package/dist/templates/react-app/src/uikit/components/LanguageSwitcher.tsx +48 -27
  306. package/dist/templates/react-app/src/uikit/components/Loading.tsx +4 -2
  307. package/dist/templates/react-app/src/uikit/components/LocaleLink.tsx +4 -5
  308. package/dist/templates/react-app/src/uikit/components/LogoutButton.tsx +34 -11
  309. package/dist/templates/react-app/src/uikit/components/ProcessExecutorProvider.tsx +9 -5
  310. package/dist/templates/react-app/src/uikit/components/RouterRenderComponent.tsx +6 -3
  311. package/dist/templates/react-app/src/uikit/components/ThemeSwitcher.tsx +97 -40
  312. package/dist/templates/react-app/src/uikit/components/UserAuthProvider.tsx +5 -5
  313. package/dist/templates/react-app/src/uikit/components/With.tsx +17 -0
  314. package/dist/templates/react-app/src/uikit/contexts/BaseRouteContext.ts +17 -11
  315. package/dist/templates/react-app/src/uikit/contexts/IOCContext.ts +13 -0
  316. package/dist/templates/react-app/src/uikit/hooks/useAppTranslation.ts +26 -0
  317. package/dist/templates/react-app/src/uikit/hooks/useI18nGuard.ts +8 -11
  318. package/dist/templates/react-app/src/uikit/hooks/useI18nInterface.ts +25 -0
  319. package/dist/templates/react-app/src/uikit/hooks/useIOC.ts +35 -0
  320. package/dist/templates/react-app/src/uikit/hooks/useNavigateBridge.ts +3 -3
  321. package/dist/templates/react-app/src/uikit/hooks/useStrictEffect.ts +0 -1
  322. package/dist/templates/react-app/tsconfig.e2e.json +21 -0
  323. package/dist/templates/react-app/tsconfig.json +8 -1
  324. package/dist/templates/react-app/tsconfig.node.json +1 -1
  325. package/dist/templates/react-app/tsconfig.test.json +3 -1
  326. package/dist/templates/react-app/vite.config.ts +50 -34
  327. package/package.json +2 -1
  328. package/dist/configs/react-app/eslint.config.js +0 -94
  329. package/dist/templates/next-app/config/Identifier/common.error.ts +0 -41
  330. package/dist/templates/next-app/config/Identifier/common.ts +0 -69
  331. package/dist/templates/next-app/config/Identifier/page.about.ts +0 -181
  332. package/dist/templates/next-app/config/Identifier/page.admin.ts +0 -48
  333. package/dist/templates/next-app/config/Identifier/page.executor.ts +0 -272
  334. package/dist/templates/next-app/config/Identifier/page.identifiter.ts +0 -39
  335. package/dist/templates/next-app/config/Identifier/page.jsonStorage.ts +0 -72
  336. package/dist/templates/next-app/config/Identifier/page.request.ts +0 -182
  337. package/dist/templates/next-app/docs/env.md +0 -94
  338. package/dist/templates/next-app/src/base/cases/ChatAction.ts +0 -21
  339. package/dist/templates/next-app/src/base/cases/FocusBarAction.ts +0 -36
  340. package/dist/templates/next-app/src/base/cases/RequestState.ts +0 -20
  341. package/dist/templates/next-app/src/base/port/AdminPageInterface.ts +0 -85
  342. package/dist/templates/next-app/src/base/port/AsyncStateInterface.ts +0 -7
  343. package/dist/templates/next-app/src/base/services/AdminUserService.ts +0 -45
  344. package/dist/templates/next-app/src/uikit/components/ChatRoot.tsx +0 -17
  345. package/dist/templates/next-app/src/uikit/components/chat/ChatActionInterface.ts +0 -30
  346. package/dist/templates/next-app/src/uikit/components/chat/ChatFocusBar.tsx +0 -65
  347. package/dist/templates/next-app/src/uikit/components/chat/ChatMessages.tsx +0 -59
  348. package/dist/templates/next-app/src/uikit/components/chat/ChatWrap.tsx +0 -28
  349. package/dist/templates/next-app/src/uikit/components/chat/FocusBarActionInterface.ts +0 -19
  350. package/dist/templates/next-app/src/uikit/hook/useMountedClient.ts +0 -17
  351. package/dist/templates/next-app/src/uikit/hook/useStore.ts +0 -15
  352. package/dist/templates/react-app/__tests__/__mocks__/I18nService.ts +0 -13
  353. package/dist/templates/react-app/__tests__/src/App.test.tsx +0 -139
  354. package/dist/templates/react-app/config/Identifier/page.identifiter.ts +0 -39
  355. package/dist/templates/react-app/config/i18n.ts +0 -15
  356. package/dist/templates/react-app/docs/en/project-structure.md +0 -434
  357. package/dist/templates/react-app/docs/zh/project-structure.md +0 -434
  358. package/dist/templates/react-app/src/base/cases/RequestState.ts +0 -20
  359. package/dist/templates/react-app/src/base/port/AsyncStateInterface.ts +0 -7
  360. package/dist/templates/react-app/src/uikit/hooks/useDocumentTitle.ts +0 -15
  361. package/dist/templates/react-app/src/uikit/hooks/useStore.ts +0 -15
@@ -3,61 +3,54 @@
3
3
  * @localZh 首页
4
4
  * @localEn Home
5
5
  */
6
- export const PAGE_HOME_TITLE = 'page.home.title';
6
+ export const PAGE_HOME_TITLE = 'page_home:title';
7
7
 
8
8
  /**
9
9
  * @description Home page description
10
10
  * @localZh 一个现代前端实用库集合,提供各种实用工具和组件
11
11
  * @localEn A modern frontend utility library collection providing various practical tools and components
12
12
  */
13
- export const PAGE_HOME_DESCRIPTION = 'page.home.description';
13
+ export const PAGE_HOME_DESCRIPTION = 'page_home:description';
14
+
15
+ /**
16
+ * @description Home page keywords
17
+ * @localZh 现代前端实用库, 实用工具, 组件
18
+ * @localEn Modern frontend utility library, practical tools, components
19
+ */
20
+ export const PAGE_HOME_KEYWORDS = 'page_home:keywords';
14
21
 
15
22
  /**
16
23
  * @description Home page welcome message
17
24
  * @localZh 欢迎来到主页
18
25
  * @localEn Welcome to the home page
19
26
  */
20
- export const HOME_WELCOME = 'home.welcome';
27
+ export const PAGE_HOME_WELCOME = 'page_home:welcome';
21
28
 
22
29
  /**
23
30
  * @description Home page description
24
31
  * @localZh 一个现代前端实用库集合,提供各种实用工具和组件
25
32
  * @localEn A modern frontend utility library collection providing various practical tools and components
26
33
  */
27
- export const HOME_DESCRIPTION = 'home.description';
28
-
29
- /**
30
- * @description Error Identifier page description
31
- * @localZh 错误标识符的使用和示例
32
- * @localEn Error identifier usage and examples
33
- */
34
- export const PAGE_ERROR_IDENTIFIER_DESCRIPTION =
35
- 'page.error.identifier.description';
36
-
37
- /**
38
- * @description Home page explore button text
39
- * @localZh 探索
40
- * @localEn Explore
41
- */
42
- export const HOME_EXPLORE = 'home.explore';
34
+ export const PAGE_HOME_INTRODUCTION = 'page_home:introduction';
43
35
 
44
36
  /**
45
37
  * @description Home page get started section title
46
38
  * @localZh 准备开始使用?
47
39
  * @localEn Ready to Get Started?
48
40
  */
49
- export const HOME_GET_STARTED_TITLE = 'home.get_started.title';
41
+ export const PAGE_HOME_GET_STARTED = 'page_home:get_started';
50
42
 
51
43
  /**
52
44
  * @description Home page get started section description
53
45
  * @localZh 加入我们,探索实用工具的力量
54
46
  * @localEn Join us and discover the power of our utilities
55
47
  */
56
- export const HOME_GET_STARTED_DESCRIPTION = 'home.get_started.description';
48
+ export const PAGE_HOME_GET_STARTED_DESCRIPTION =
49
+ 'page_home:get_started__description';
57
50
 
58
51
  /**
59
52
  * @description Home page get started button text
60
53
  * @localZh 立即开始
61
54
  * @localEn Get Started Now
62
55
  */
63
- export const HOME_GET_STARTED_BUTTON = 'home.get_started.button';
56
+ export const PAGE_HOME_GET_STARTED_BUTTON = 'page_home:get_started__button';
@@ -3,163 +3,157 @@
3
3
  * @localZh 登录
4
4
  * @localEn Login
5
5
  */
6
- export const PAGE_LOGIN_TITLE = 'page__login__title';
6
+ export const PAGE_LOGIN_TITLE = 'page_login:title';
7
7
  /**
8
8
  * @description Login page description
9
9
  * @localZh 登录页面描述
10
10
  * @localEn Login Page Description
11
11
  */
12
- export const PAGE_LOGIN_DESCRIPTION = 'page__login__description';
12
+ export const PAGE_LOGIN_DESCRIPTION = 'page_login:description';
13
13
  /**
14
14
  * @description Login page content
15
15
  * @localZh 登录页面内容
16
16
  * @localEn Login Page Content
17
17
  */
18
- export const PAGE_LOGIN_CONTENT = 'page__login__content';
18
+ export const PAGE_LOGIN_CONTENT = 'page_login:content';
19
19
  /**
20
20
  * @description Login page keywords
21
21
  * @localZh 登录页面关键词
22
22
  * @localEn Login Page Keywords
23
23
  */
24
- export const PAGE_LOGIN_KEYWORDS = 'page__login__keywords';
24
+ export const PAGE_LOGIN_KEYWORDS = 'page_login:keywords';
25
25
 
26
- /**
27
- * @description Login page title
28
- * @localZh 登录
29
- * @localEn Login
30
- */
31
- export const LOGIN_TITLE = 'login__title';
32
26
  /**
33
27
  * @description Email field label
34
28
  * @localZh 邮箱
35
29
  * @localEn Email
36
30
  */
37
- export const LOGIN_EMAIL = 'login__email';
31
+ export const PAGE_LOGIN_EMAIL = 'page_login:email';
38
32
  /**
39
33
  * @description Username field label
40
34
  * @localZh 用户名
41
35
  * @localEn Username
42
36
  */
43
- export const LOGIN_USERNAME = 'login__username';
37
+ export const PAGE_LOGIN_USERNAME = 'page_login:username';
44
38
  /**
45
39
  * @description Password field label
46
40
  * @localZh 密码
47
41
  * @localEn Password
48
42
  */
49
- export const LOGIN_PASSWORD = 'login__password';
43
+ export const PAGE_LOGIN_PASSWORD = 'page_login:password';
50
44
  /**
51
45
  * @description Login button text
52
46
  * @localZh 登录
53
47
  * @localEn Login
54
48
  */
55
- export const LOGIN_BUTTON = 'login__login';
49
+ export const PAGE_LOGIN_BUTTON = 'page_login:login';
56
50
  /**
57
51
  * @description Login page description
58
52
  * @localZh 欢迎来到未来学习
59
53
  * @localEn Welcome to the future of learning
60
54
  */
61
- export const LOGIN_WELCOME = 'login__welcome';
55
+ export const PAGE_LOGIN_WELCOME = 'page_login:welcome';
62
56
  /**
63
57
  * @description Login page description
64
58
  * @localZh 解锁个性化 AI 驱动的学习体验,加速您的知识旅程。
65
59
  * @localEn Unlock personalized AI-powered learning experiences designed to accelerate your knowledge journey__
66
60
  */
67
- export const LOGIN_SUBTITLE = 'login__subtitle';
61
+ export const PAGE_LOGIN_SUBTITLE = 'page_login:subtitle';
68
62
  /**
69
63
  * @description Login page forgot password text
70
64
  * @localZh 忘记密码?
71
65
  * @localEn Forgot your password?
72
66
  */
73
- export const LOGIN_FORGOT_PASSWORD = 'login__forgot_password';
67
+ export const PAGE_LOGIN_FORGOT_PASSWORD = 'page_login:forgot_password';
74
68
  /**
75
69
  * @description Login page continue with text
76
70
  * @localZh 或继续使用
77
71
  * @localEn or continue with
78
72
  */
79
- export const LOGIN_CONTINUE_WITH = 'login__continue_with';
73
+ export const PAGE_LOGIN_CONTINUE_WITH = 'page_login:continue_with';
80
74
  /**
81
75
  * @description Login with Google button text
82
76
  * @localZh 使用 Google 登录
83
77
  * @localEn Sign in with Google
84
78
  */
85
- export const LOGIN_WITH_GOOGLE = 'login__with_google';
79
+ export const PAGE_LOGIN_WITH_GOOGLE = 'page_login:with_google';
86
80
  /**
87
81
  * @description Login page no account text
88
82
  * @localZh 还没有账号?
89
83
  * @localEn Don't have an account?
90
84
  */
91
- export const LOGIN_NO_ACCOUNT = 'login__no_account';
85
+ export const PAGE_LOGIN_NO_ACCOUNT = 'page_login:no_account';
92
86
  /**
93
87
  * @description Login page create account link text
94
88
  * @localZh 在此创建
95
89
  * @localEn Create one here
96
90
  */
97
- export const LOGIN_CREATE_ACCOUNT = 'login__create_account';
91
+ export const PAGE_LOGIN_CREATE_ACCOUNT = 'page_login:create_account';
98
92
  /**
99
93
  * @description Login page email validation message
100
94
  * @localZh 请输入正确的邮箱!
101
95
  * @localEn Please input a valid email!
102
96
  */
103
- export const LOGIN_EMAIL_REQUIRED = 'login__email_required';
97
+ export const PAGE_LOGIN_EMAIL_REQUIRED = 'page_login:email_required';
104
98
  /**
105
99
  * @description Login page password validation message
106
100
  * @localZh 请输入您的密码!
107
101
  * @localEn Please input your password!
108
102
  */
109
- export const LOGIN_PASSWORD_REQUIRED = 'login__password_required';
103
+ export const PAGE_LOGIN_PASSWORD_REQUIRED = 'page_login:password_required';
110
104
  /**
111
105
  * @description Login page feature item - AI learning paths
112
106
  * @localZh AI驱动的个性化学习路径
113
107
  * @localEn AI-powered personalized learning paths
114
108
  */
115
- export const LOGIN_FEATURE_AI_PATHS = 'login__feature__ai_paths';
109
+ export const PAGE_LOGIN_FEATURE_AI_PATHS = 'page_login:feature__ai_paths';
116
110
  /**
117
111
  * @description Login page feature item - Smart recommendations
118
112
  * @localZh 智能内容推荐
119
113
  * @localEn Smart content recommendations
120
114
  */
121
- export const LOGIN_FEATURE_SMART_RECOMMENDATIONS =
122
- 'login__feature__smart_recommendations';
115
+ export const PAGE_LOGIN_FEATURE_SMART = 'page_login:feature__smart';
123
116
  /**
124
117
  * @description Login page feature item - Progress tracking
125
118
  * @localZh 实时进度追踪
126
119
  * @localEn Real-time progress tracking
127
120
  */
128
- export const LOGIN_FEATURE_PROGRESS_TRACKING =
129
- 'login__feature__progress_tracking';
121
+ export const PAGE_LOGIN_TRACKING = 'page_login:tracking';
130
122
  /**
131
123
  * @description Login page email input title
132
124
  * @localZh 输入邮箱
133
125
  * @localEn Enter email
134
126
  */
135
- export const LOGIN_EMAIL_TITLE = 'login__email__title';
127
+ export const PAGE_LOGIN_EMAIL2 = 'page_login:email2';
128
+
136
129
  /**
137
130
  * @description Login page password input title
138
131
  * @localZh 输入密码
139
132
  * @localEn Enter password
140
133
  */
141
- export const LOGIN_PASSWORD_TITLE = 'login__password__title';
134
+ export const PAGE_LOGIN_PASSWORD2 = 'page_login:password2';
135
+
142
136
  /**
143
137
  * @description Login page forgot password link title
144
138
  * @localZh 重置密码
145
139
  * @localEn Reset password
146
140
  */
147
- export const LOGIN_FORGOT_PASSWORD_TITLE = 'login__forgot_password__title';
141
+ export const PAGE_LOGIN_FORGOT_PASSWORD2 = 'page_login:forgot_password2';
148
142
  /**
149
143
  * @description Login page submit button title
150
144
  * @localZh 登录账号
151
145
  * @localEn Sign in to account
152
146
  */
153
- export const LOGIN_BUTTON_TITLE = 'login__button__title';
147
+ export const PAGE_LOGIN_BUTTON2 = 'page_login:button2';
154
148
  /**
155
149
  * @description Login page Google sign in button title
156
150
  * @localZh 使用Google账号登录
157
151
  * @localEn Sign in with Google account
158
152
  */
159
- export const LOGIN_WITH_GOOGLE_TITLE = 'login__with_google__title';
153
+ export const PAGE_LOGIN_WITH_GOOGLE2 = 'page_login:with_google2';
160
154
  /**
161
155
  * @description Login page create account link title
162
156
  * @localZh 创建新账号
163
157
  * @localEn Create new account
164
158
  */
165
- export const LOGIN_CREATE_ACCOUNT_TITLE = 'login__create_account__title';
159
+ export const PAGE_LOGIN_CREATE_ACCOUNT2 = 'page_login:create_account2';
@@ -3,166 +3,167 @@
3
3
  * @localZh 创建账号
4
4
  * @localEn Create Account
5
5
  */
6
- export const PAGE_REGISTER_TITLE = 'page__register__title';
6
+ export const PAGE_REGISTER_TITLE = 'page_register:title';
7
7
 
8
8
  /**
9
9
  * @description Register page description
10
10
  * @localZh 创建账号页面描述
11
11
  * @localEn Create Account Page Description
12
12
  */
13
- export const PAGE_REGISTER_DESCRIPTION = 'page__register__description';
13
+ export const PAGE_REGISTER_DESCRIPTION = 'page_register:description';
14
14
 
15
15
  /**
16
16
  * @description Register page content
17
17
  * @localZh 创建账号页面内容
18
18
  * @localEn Create Account Page Content
19
19
  */
20
- export const PAGE_REGISTER_CONTENT = 'page__register__content';
20
+ export const PAGE_REGISTER_CONTENT = 'page_register:content';
21
21
 
22
22
  /**
23
23
  * @description Register page keywords
24
24
  * @localZh 创建账号页面关键词
25
25
  * @localEn Create Account Page Keywords
26
26
  */
27
- export const PAGE_REGISTER_KEYWORDS = 'page__register__keywords';
27
+ export const PAGE_REGISTER_KEYWORDS = 'page_register:keywords';
28
28
 
29
29
  /**
30
30
  * @description Register page welcome
31
31
  * @localZh 欢迎来到我们的平台
32
32
  * @localEn Welcome to our platform
33
33
  */
34
- export const REGISTER_WELCOME = 'register__welcome';
34
+ export const PAGE_REGISTER_WELCOME = 'page_register:welcome';
35
35
 
36
36
  /**
37
37
  * @description Register page subtitle
38
38
  * @localZh 开始您的学习之旅
39
39
  * @localEn Start your learning journey
40
40
  */
41
- export const REGISTER_SUBTITLE = 'register__subtitle';
41
+ export const PAGE_REGISTER_SUBTITLE = 'page_register:subtitle';
42
42
 
43
43
  /**
44
44
  * @description Register page feature ai paths
45
45
  * @localZh AI路径
46
46
  * @localEn AI Paths
47
47
  */
48
- export const REGISTER_FEATURE_AI_PATHS = 'register__feature__ai_paths';
48
+ export const PAGE_REGISTER_AI_PATHS = 'page_register:ai_paths';
49
49
 
50
50
  /**
51
51
  * @description Register page feature smart recommendations
52
52
  * @localZh 智能推荐
53
53
  * @localEn Smart Recommendations
54
54
  */
55
- export const REGISTER_FEATURE_SMART_RECOMMENDATIONS =
56
- 'register__feature__smart_recommendations';
55
+ export const PAGE_REGISTER_RECOMMENDATIONS = 'page_register:recommendations';
57
56
 
58
57
  /**
59
58
  * @description Register page feature progress tracking
60
59
  * @localZh 进度跟踪
61
60
  * @localEn Progress Tracking
62
61
  */
63
- export const REGISTER_FEATURE_PROGRESS_TRACKING =
64
- 'register__feature__progress_tracking';
62
+ export const PAGE_REGISTER_TRACKING = 'page_register:tracking';
65
63
 
66
64
  /**
67
65
  * @description Register page username field
68
66
  * @localZh 用户名
69
67
  * @localEn Username
70
68
  */
71
- export const REGISTER_USERNAME = 'register__username';
69
+ export const PAGE_REGISTER_USERNAME = 'page_register:username';
72
70
  /**
73
71
  * @description Register page username required message
74
72
  * @localZh 请输入用户名!
75
73
  * @localEn Please input your username!
76
74
  */
77
- export const REGISTER_USERNAME_REQUIRED = 'register__username_required';
75
+ export const PAGE_REGISTER_USERNAME_REQUIRED =
76
+ 'page_register:username_required';
78
77
  /**
79
78
  * @description Register page email field
80
79
  * @localZh 邮箱
81
80
  * @localEn Email
82
81
  */
83
- export const REGISTER_EMAIL = 'register__email';
82
+ export const PAGE_REGISTER_EMAIL = 'page_register:email';
84
83
  /**
85
84
  * @description Register page email required message
86
85
  * @localZh 请输入邮箱!
87
86
  * @localEn Please input your email!
88
87
  */
89
- export const REGISTER_EMAIL_REQUIRED = 'register__email_required';
88
+ export const PAGE_REGISTER_EMAIL_REQUIRED = 'page_register:email_required';
90
89
  /**
91
90
  * @description Register page password field
92
91
  * @localZh 密码
93
92
  * @localEn Password
94
93
  */
95
- export const REGISTER_PASSWORD = 'register__password';
94
+ export const PAGE_REGISTER_PASSWORD = 'page_register:password';
96
95
  /**
97
96
  * @description Register page password required message
98
97
  * @localZh 请输入密码!
99
98
  * @localEn Please input your password!
100
99
  */
101
- export const REGISTER_PASSWORD_REQUIRED = 'register__password_required';
100
+ export const PAGE_REGISTER_PASSWORD_REQUIRED =
101
+ 'page_register:password_required';
102
102
  /**
103
103
  * @description Register page confirm password field
104
104
  * @localZh 确认密码
105
105
  * @localEn Confirm Password
106
106
  */
107
- export const REGISTER_CONFIRM_PASSWORD = 'register__confirm_password';
107
+ export const PAGE_REGISTER_CONFIRM_PASSWORD = 'page_register:confirm_password';
108
108
  /**
109
109
  * @description Register page confirm password required message
110
110
  * @localZh 请确认密码!
111
111
  * @localEn Please confirm your password!
112
112
  */
113
- export const REGISTER_CONFIRM_PASSWORD_REQUIRED =
114
- 'register__confirm_password_required';
113
+ export const PAGE_REGISTER_CONFIRM_PASSWORD_REQUIRED =
114
+ 'page_register:confirm_password_required';
115
115
  /**
116
116
  * @description Register page passwords don't match message
117
117
  * @localZh 两次输入的密码不匹配!
118
118
  * @localEn The passwords you entered don't match!
119
119
  */
120
- export const REGISTER_PASSWORD_MISMATCH = 'register__password_mismatch';
120
+ export const PAGE_REGISTER_PASSWORD_MISMATCH =
121
+ 'page_register:password_mismatch';
121
122
  /**
122
123
  * @description Register page submit button
123
124
  * @localZh 注册
124
125
  * @localEn Register
125
126
  */
126
- export const REGISTER_BUTTON = 'register__button';
127
+ export const PAGE_REGISTER_BUTTON = 'page_register:button';
127
128
  /**
128
129
  * @description Register page terms and conditions text
129
130
  * @localZh 注册即表示您同意我们的
130
131
  * @localEn By registering, you agree to our
131
132
  */
132
- export const REGISTER_TERMS_PREFIX = 'register__terms_prefix';
133
+ export const PAGE_REGISTER_TERMS_PREFIX = 'page_register:terms_prefix';
133
134
  /**
134
135
  * @description Register page terms and conditions link
135
136
  * @localZh 服务条款
136
137
  * @localEn Terms of Service
137
138
  */
138
- export const REGISTER_TERMS_LINK = 'register__terms_link';
139
+ export const PAGE_REGISTER_TERMS_LINK = 'page_register:terms_link';
139
140
  /**
140
141
  * @description Register page privacy policy text
141
142
  * @localZh 和
142
143
  * @localEn and
143
144
  */
144
- export const REGISTER_TERMS_AND = 'register__terms_and';
145
+ export const PAGE_REGISTER_TERMS_AND = 'page_register:terms_and';
145
146
  /**
146
147
  * @description Register page privacy policy link
147
148
  * @localZh 隐私政策
148
149
  * @localEn Privacy Policy
149
150
  */
150
- export const REGISTER_PRIVACY_LINK = 'register__privacy_link';
151
+ export const PAGE_REGISTER_PRIVACY_LINK = 'page_register:privacy_link';
151
152
  /**
152
153
  * @description Register page have account text
153
154
  * @localZh 已有账号?
154
155
  * @localEn Already have an account?
155
156
  */
156
- export const REGISTER_HAVE_ACCOUNT = 'register__have_account';
157
+ export const PAGE_REGISTER_HAVE_ACCOUNT = 'page_register:have_account';
157
158
  /**
158
159
  * @description Register page login link
159
160
  * @localZh 登录
160
161
  * @localEn Sign in
161
162
  */
162
- export const REGISTER_LOGIN_LINK = 'register__login_link';
163
+ export const PAGE_REGISTER_LOGIN_LINK = 'page_register:login_link';
163
164
  /**
164
165
  * @description Register page terms agreement required message
165
166
  * @localZh 请同意服务条款和隐私政策
166
167
  * @localEn Please agree to the Terms of Service and Privacy Policy
167
168
  */
168
- export const REGISTER_TERMS_REQUIRED = 'register__terms_required';
169
+ export const PAGE_REGISTER_TERMS_REQUIRED = 'page_register:terms_required';
@@ -0,0 +1,19 @@
1
+ import type { NavItemInterface } from '@/base/port/AdminLayoutInterface';
2
+
3
+ export const defaultNavItems: NavItemInterface[] = [
4
+ {
5
+ key: 'dashboard',
6
+ i18nKey: 'Dashboard',
7
+ pathname: '/admin'
8
+ },
9
+ {
10
+ key: 'users',
11
+ i18nKey: 'User Management',
12
+ pathname: '/admin/users'
13
+ },
14
+ {
15
+ key: 'locales',
16
+ i18nKey: 'Locales',
17
+ pathname: '/admin/locales'
18
+ }
19
+ ];
@@ -2,11 +2,6 @@ export const envPrefix = 'NEXT_PUBLIC_';
2
2
 
3
3
  export const browserGlobalsName = 'feGlobals';
4
4
 
5
- /**
6
- * 启动器环境变量注入黑名单
7
- */
8
- export const envBlackList = ['env', 'userNodeEnv'];
9
-
10
5
  export const loggerStyles = {
11
6
  fatal: { color: '#ff0000', fontWeight: 'bold' },
12
7
  error: { color: '#ff0000' },
@@ -17,14 +12,6 @@ export const loggerStyles = {
17
12
  log: { color: '#000000' }
18
13
  };
19
14
 
20
- /**
21
- * 路由前缀
22
- *
23
- * - 需要以 / 开头
24
- * - 但是不能只有 /
25
- */
26
- export const routerPrefix = '/router-root';
27
-
28
15
  /**
29
16
  * 是否使用本地化路由
30
17
  *
@@ -32,3 +19,25 @@ export const routerPrefix = '/router-root';
32
19
  * - false: 不使用本地化路由,直接使用路径 (例如: /home)
33
20
  */
34
21
  export const useLocaleRoutes = true;
22
+
23
+ /**
24
+ * 是否使用API获取本地化数据
25
+ *
26
+ * - true: 使用API获取本地化数据,可以在 /admin/locales 页面中对他进行修改
27
+ * - false: 不使用API获取本地化数据,直接使用 `@brain-toolkit/ts2locales` 生成的json数据
28
+ */
29
+ export const useApiLocales = false;
30
+
31
+ /**
32
+ * 是否在在 useWarnTranslations 中警告缺失的翻译,而不是抛出错误
33
+ *
34
+ * 如果为 false 则会抛出错误
35
+ *
36
+ * - true: 警告缺失的翻译
37
+ * - false: 不警告缺失的翻译,而是默认行为
38
+ *
39
+ * @example
40
+ * const t = useWarnTranslations();
41
+ * t('missing_translation'); // 警告缺失的翻译
42
+ */
43
+ export const i18nWarnMissingTranslation = true;
@@ -1,4 +1,4 @@
1
- import * as i18nKeys from '../Identifier/page.home';
1
+ import * as i18nKeys from '../Identifier/pages/page.home';
2
2
 
3
3
  /**
4
4
  * Home page i18n interface
@@ -15,8 +15,8 @@ export const homeI18n = Object.freeze({
15
15
  content: i18nKeys.PAGE_HOME_DESCRIPTION,
16
16
  keywords: i18nKeys.PAGE_HOME_KEYWORDS,
17
17
 
18
- welcome: i18nKeys.HOME_WELCOME,
19
- getStartedTitle: i18nKeys.HOME_GET_STARTED_TITLE,
20
- getStartedDescription: i18nKeys.HOME_GET_STARTED_DESCRIPTION,
21
- getStartedButton: i18nKeys.HOME_GET_STARTED_BUTTON
18
+ welcome: i18nKeys.PAGE_HOME_WELCOME,
19
+ getStartedTitle: i18nKeys.PAGE_HOME_GET_STARTED,
20
+ getStartedDescription: i18nKeys.PAGE_HOME_GET_STARTED_DESCRIPTION,
21
+ getStartedButton: i18nKeys.PAGE_HOME_GET_STARTED_BUTTON
22
22
  });
@@ -1,33 +1,75 @@
1
- import * as i18nKeys from '../Identifier/page.admin';
1
+ import * as commonKeys from '../Identifier/common';
2
+ import * as homeKeys from '../Identifier/pages/page.admin.home';
3
+ import * as localesKeys from '../Identifier/pages/page.admin.locales';
4
+ import * as userKeys from '../Identifier/pages/page.admin.user';
2
5
 
3
- /**
4
- * Register page i18n interface
5
- *
6
- * @description
7
- * - welcome: welcome message
8
- */
9
- export type AdminI18nInterface = typeof admin18n;
6
+ export const adminTableHeaderI18n = {
7
+ create: commonKeys.COMMON_ADMIN_TABLE_CREATE,
8
+ refresh: commonKeys.COMMON_ADMIN_TABLE_REFRESH,
9
+ search: commonKeys.COMMON_ADMIN_TABLE_SEARCH,
10
+ reset: commonKeys.COMMON_ADMIN_TABLE_RESET,
11
+ export: commonKeys.COMMON_ADMIN_TABLE_EXPORT,
12
+ settings: commonKeys.COMMON_ADMIN_TABLE_SETTINGS
13
+ } as const;
14
+
15
+ export const adminTableI18n = {
16
+ ...adminTableHeaderI18n,
17
+ action: commonKeys.COMMON_ADMIN_TABLE_ACTION,
18
+ editText: commonKeys.COMMON_ADMIN_TABLE_EDIT,
19
+ deleteText: commonKeys.COMMON_ADMIN_TABLE_DELETE,
20
+ detailText: commonKeys.COMMON_ADMIN_TABLE_DETAIL
21
+ } as const;
10
22
 
11
23
  export const admin18n = Object.freeze({
12
24
  // basic meta properties
13
- title: i18nKeys.PAGE_ADMIN_TITLE,
14
- description: i18nKeys.PAGE_ADMIN_DESCRIPTION,
15
- content: i18nKeys.PAGE_ADMIN_DESCRIPTION,
16
- keywords: i18nKeys.PAGE_ADMIN_KEYWORDS,
25
+ title: homeKeys.ADMIN_HOME_TITLE,
26
+ description: homeKeys.ADMIN_HOME_DESCRIPTION,
27
+ content: homeKeys.ADMIN_HOME_DESCRIPTION,
28
+ keywords: homeKeys.ADMIN_HOME_KEYWORDS,
17
29
 
18
30
  // admin page
19
- welcome: i18nKeys.ADMIN_WELCOME
31
+ welcome: homeKeys.ADMIN_HOME_WELCOME
20
32
  });
21
33
 
22
34
  export type AdminUsersI18nInterface = typeof adminUsers18n;
23
35
 
24
36
  export const adminUsers18n = Object.freeze({
25
37
  // basic meta properties
26
- title: i18nKeys.PAGE_ADMIN_USERS_TITLE,
27
- description: i18nKeys.PAGE_ADMIN_USERS_DESCRIPTION,
28
- content: i18nKeys.PAGE_ADMIN_USERS_DESCRIPTION,
29
- keywords: i18nKeys.PAGE_ADMIN_USERS_KEYWORDS,
38
+ title: userKeys.ADMIN_USERS_TITLE,
39
+ description: userKeys.ADMIN_USERS_DESCRIPTION,
40
+ content: userKeys.ADMIN_USERS_DESCRIPTION,
41
+ keywords: userKeys.ADMIN_USERS_KEYWORDS,
30
42
 
31
- // admin page
32
- welcome: i18nKeys.ADMIN_WELCOME
43
+ createTitle: userKeys.ADMIN_USERS_CREATE_TITLE,
44
+ editTitle: userKeys.ADMIN_USERS_EDIT_TITLE,
45
+ detailTitle: userKeys.ADMIN_USERS_DETAIL_TITLE,
46
+ deleteTitle: userKeys.ADMIN_USERS_DELETE_TITLE,
47
+ deleteContent: userKeys.ADMIN_USERS_DELETE_CONTENT,
48
+ saveButton: commonKeys.COMMON_SAVE,
49
+ detailButton: commonKeys.COMMON_DETAIL,
50
+ cancelButton: commonKeys.COMMON_CANCEL,
51
+ createButton: commonKeys.COMMON_CREATE
52
+ });
53
+
54
+ export type AdminLocalesI18nInterface = typeof adminLocales18n;
55
+
56
+ export const adminLocales18n = Object.freeze({
57
+ // basic meta properties
58
+ title: localesKeys.ADMIN_LOCALES_TITLE,
59
+ description: localesKeys.ADMIN_LOCALES_DESCRIPTION,
60
+ content: localesKeys.ADMIN_LOCALES_DESCRIPTION,
61
+ keywords: localesKeys.ADMIN_LOCALES_KEYWORDS,
62
+
63
+ createTitle: localesKeys.ADMIN_LOCALES_CREATE_TITLE,
64
+ editTitle: localesKeys.ADMIN_LOCALES_EDIT_TITLE,
65
+ detailTitle: localesKeys.ADMIN_LOCALES_DETAIL_TITLE,
66
+ deleteTitle: localesKeys.ADMIN_LOCALES_DELETE_TITLE,
67
+ deleteContent: localesKeys.ADMIN_LOCALES_DELETE_CONTENT,
68
+ saveButton: commonKeys.COMMON_SAVE,
69
+ detailButton: commonKeys.COMMON_DETAIL,
70
+ cancelButton: commonKeys.COMMON_CANCEL,
71
+ createButton: commonKeys.COMMON_CREATE,
72
+ importTitle: localesKeys.ADMIN_LOCALES_IMPORT_TITLE,
73
+ importZhTitle: localesKeys.ADMIN_LOCALES_IMPORT_ZH_TITLE,
74
+ importEnTitle: localesKeys.ADMIN_LOCALES_IMPORT_EN_TITLE
33
75
  });
@@ -1,4 +1,6 @@
1
1
  export const i18nConfig = {
2
+ // 语言包缓存时间(秒)
3
+ localeCacheTime: 60,
2
4
  localeNames: {
3
5
  en: 'English',
4
6
  zh: '中文'