@qlover/create-app 0.7.15 → 0.9.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 (363) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/configs/_common/.github/workflows/general-check.yml +1 -1
  3. package/dist/configs/_common/.github/workflows/release.yml +2 -2
  4. package/dist/configs/_common/.gitignore.template +6 -0
  5. package/dist/configs/_common/.prettierignore +17 -5
  6. package/dist/configs/_common/.vscode/settings.json +6 -1
  7. package/dist/index.cjs +1 -1
  8. package/dist/index.js +1 -1
  9. package/dist/templates/next-app/.env.template +1 -1
  10. package/dist/templates/next-app/README.en.md +0 -1
  11. package/dist/templates/next-app/README.md +0 -1
  12. package/dist/templates/next-app/config/Identifier/api.ts +5 -5
  13. package/dist/templates/next-app/config/Identifier/common/admint.table.ts +69 -0
  14. package/dist/templates/next-app/config/Identifier/common/common.ts +76 -0
  15. package/dist/templates/next-app/config/Identifier/common/index.ts +3 -0
  16. package/dist/templates/next-app/config/Identifier/{validator.ts → common/validators.ts} +5 -5
  17. package/dist/templates/next-app/config/Identifier/index.ts +2 -12
  18. package/dist/templates/next-app/config/Identifier/pages/index.ts +6 -0
  19. package/dist/templates/next-app/config/Identifier/pages/page.admin.home.ts +27 -0
  20. package/dist/templates/next-app/config/Identifier/pages/page.admin.locales.ts +266 -0
  21. package/dist/templates/next-app/config/Identifier/pages/page.admin.user.ts +293 -0
  22. package/dist/templates/{react-app/config/Identifier → next-app/config/Identifier/pages}/page.home.ts +15 -22
  23. package/dist/templates/next-app/config/Identifier/{page.login.ts → pages/page.login.ts} +28 -34
  24. package/dist/templates/next-app/config/Identifier/{page.register.ts → pages/page.register.ts} +30 -29
  25. package/dist/templates/next-app/config/adminNavs.ts +19 -0
  26. package/dist/templates/next-app/config/common.ts +22 -13
  27. package/dist/templates/next-app/config/i18n/HomeI18n.ts +5 -5
  28. package/dist/templates/next-app/config/i18n/admin18n.ts +61 -19
  29. package/dist/templates/next-app/config/i18n/i18nConfig.ts +2 -0
  30. package/dist/templates/next-app/config/i18n/i18nKeyScheam.ts +36 -0
  31. package/dist/templates/next-app/config/i18n/loginI18n.ts +22 -22
  32. package/dist/templates/next-app/config/i18n/register18n.ts +23 -24
  33. package/dist/templates/next-app/docs/en/index.md +0 -1
  34. package/dist/templates/next-app/docs/en/project-structure.md +0 -1
  35. package/dist/templates/next-app/docs/zh/index.md +0 -1
  36. package/dist/templates/next-app/docs/zh/project-structure.md +0 -1
  37. package/dist/templates/next-app/make/generateLocales.ts +19 -12
  38. package/dist/templates/next-app/migrations/schema/LocalesSchema.ts +15 -0
  39. package/dist/templates/next-app/migrations/sql/1694244000000.sql +11 -0
  40. package/dist/templates/next-app/package.json +7 -3
  41. package/dist/templates/next-app/public/locales/en.json +172 -207
  42. package/dist/templates/next-app/public/locales/zh.json +172 -207
  43. package/dist/templates/next-app/src/app/[locale]/admin/locales/page.tsx +153 -0
  44. package/dist/templates/next-app/src/app/[locale]/admin/users/page.tsx +48 -50
  45. package/dist/templates/next-app/src/app/[locale]/login/LoginForm.tsx +2 -2
  46. package/dist/templates/next-app/src/app/api/admin/locales/create/route.ts +34 -0
  47. package/dist/templates/next-app/src/app/api/admin/locales/import/route.ts +40 -0
  48. package/dist/templates/next-app/src/app/api/admin/locales/route.ts +42 -0
  49. package/dist/templates/next-app/src/app/api/admin/locales/update/route.ts +32 -0
  50. package/dist/templates/next-app/src/app/api/locales/json/route.ts +44 -0
  51. package/dist/templates/next-app/src/base/cases/AdminPageManager.ts +1 -13
  52. package/dist/templates/next-app/src/base/cases/Datetime.ts +18 -0
  53. package/dist/templates/next-app/src/base/cases/DialogErrorPlugin.ts +12 -6
  54. package/dist/templates/next-app/src/base/cases/ResourceState.ts +17 -0
  55. package/dist/templates/next-app/src/base/cases/TranslateI18nInterface.ts +25 -0
  56. package/dist/templates/next-app/src/base/cases/ZodColumnBuilder.ts +200 -0
  57. package/dist/templates/next-app/src/base/port/ZodBuilderInterface.ts +8 -0
  58. package/dist/templates/next-app/src/base/services/AdminLocalesService.ts +20 -0
  59. package/dist/templates/next-app/src/base/services/AdminPageEvent.ts +26 -0
  60. package/dist/templates/next-app/src/base/services/AdminPageScheduler.ts +42 -0
  61. package/dist/templates/next-app/src/base/services/ResourceService.ts +122 -0
  62. package/dist/templates/next-app/src/base/services/adminApi/AdminLocalesApi.ts +104 -0
  63. package/dist/templates/next-app/src/base/services/adminApi/AdminUserApi.ts +38 -5
  64. package/dist/templates/next-app/src/base/services/appApi/AppApiPlugin.ts +1 -1
  65. package/dist/templates/next-app/src/i18n/request.ts +30 -1
  66. package/dist/templates/next-app/src/server/PageParams.ts +2 -10
  67. package/dist/templates/next-app/src/server/port/DBBridgeInterface.ts +5 -0
  68. package/dist/templates/next-app/src/server/port/DBTableInterface.ts +2 -0
  69. package/dist/templates/next-app/src/server/port/LocalesRepositoryInterface.ts +43 -0
  70. package/dist/templates/next-app/src/server/repositorys/LocalesRepository.ts +197 -0
  71. package/dist/templates/next-app/src/server/services/ApiLocaleService.ts +122 -0
  72. package/dist/templates/next-app/src/server/sqlBridges/SupabaseBridge.ts +60 -11
  73. package/dist/templates/next-app/src/server/validators/ExtendedExecutorError.ts +6 -0
  74. package/dist/templates/next-app/src/server/validators/LocalesValidator.ts +131 -0
  75. package/dist/templates/next-app/src/server/validators/LoginValidator.ts +2 -5
  76. package/dist/templates/next-app/src/server/validators/PaginationValidator.ts +32 -16
  77. package/dist/templates/next-app/src/styles/css/antd-themes/pagination/_default.css +2 -1
  78. package/dist/templates/next-app/src/styles/css/antd-themes/pagination/dark.css +28 -29
  79. package/dist/templates/next-app/src/styles/css/antd-themes/pagination/pink.css +2 -1
  80. package/dist/templates/next-app/src/uikit/components/AdminLayout.tsx +17 -3
  81. package/dist/templates/next-app/src/uikit/components/BaseHeader.tsx +5 -4
  82. package/dist/templates/next-app/src/uikit/components/BaseLayout.tsx +5 -4
  83. package/dist/templates/next-app/src/uikit/components/BootstrapsProvider.tsx +3 -2
  84. package/dist/templates/next-app/src/uikit/components/ComboProvider.tsx +1 -1
  85. package/dist/templates/next-app/src/uikit/components/EditableCell.tsx +118 -0
  86. package/dist/templates/next-app/src/uikit/components/LogoutButton.tsx +5 -6
  87. package/dist/templates/next-app/src/uikit/components/ThemeSwitcher.tsx +1 -1
  88. package/dist/templates/next-app/src/uikit/components/With.tsx +2 -2
  89. package/dist/templates/next-app/src/uikit/components/localesImportButton/LocalesImportButton.tsx +62 -0
  90. package/dist/templates/next-app/src/uikit/components/localesImportButton/LocalesImportEvent.ts +28 -0
  91. package/dist/templates/next-app/src/uikit/components/localesImportButton/import.module.css +6 -0
  92. package/dist/templates/next-app/src/uikit/hook/useI18nInterface.ts +8 -14
  93. package/dist/templates/next-app/src/uikit/hook/useWarnTranslations.ts +25 -0
  94. package/dist/templates/react-app/.prettierignore +17 -0
  95. package/dist/templates/react-app/README.en.md +71 -54
  96. package/dist/templates/react-app/README.md +35 -18
  97. package/dist/templates/react-app/__tests__/__mocks__/BootstrapTest.ts +14 -0
  98. package/dist/templates/react-app/__tests__/__mocks__/MockAppConfit.ts +1 -1
  99. package/dist/templates/react-app/__tests__/__mocks__/MockDialogHandler.ts +2 -2
  100. package/dist/templates/react-app/__tests__/__mocks__/MockLogger.ts +1 -1
  101. package/dist/templates/react-app/__tests__/__mocks__/components/TestApp.tsx +45 -0
  102. package/dist/templates/react-app/__tests__/__mocks__/components/TestBootstrapsProvider.tsx +34 -0
  103. package/dist/templates/react-app/__tests__/__mocks__/components/TestRouter.tsx +46 -0
  104. package/dist/templates/react-app/__tests__/__mocks__/components/index.ts +12 -0
  105. package/dist/templates/react-app/__tests__/__mocks__/createMockGlobals.ts +1 -2
  106. package/dist/templates/react-app/__tests__/__mocks__/testIOC/TestIOC.ts +51 -0
  107. package/dist/templates/react-app/__tests__/__mocks__/testIOC/TestIOCRegister.ts +69 -0
  108. package/dist/templates/react-app/__tests__/setup/index.ts +1 -51
  109. package/dist/templates/react-app/__tests__/setup/setupGlobal.ts +51 -0
  110. package/dist/templates/react-app/__tests__/src/App.structure.test.tsx +115 -0
  111. package/dist/templates/react-app/__tests__/src/base/cases/AppConfig.test.ts +2 -2
  112. package/dist/templates/react-app/__tests__/src/base/cases/AppError.test.ts +1 -1
  113. package/dist/templates/react-app/__tests__/src/base/cases/DialogHandler.test.ts +3 -5
  114. package/dist/templates/react-app/__tests__/src/base/cases/I18nKeyErrorPlugin.test.ts +13 -2
  115. package/dist/templates/react-app/__tests__/src/base/cases/InversifyContainer.test.ts +1 -1
  116. package/dist/templates/react-app/__tests__/src/base/cases/PublicAssetsPath.test.ts +1 -1
  117. package/dist/templates/react-app/__tests__/src/base/cases/RequestLogger.test.ts +5 -5
  118. package/dist/templates/react-app/__tests__/src/base/cases/RequestStatusCatcher.test.ts +1 -2
  119. package/dist/templates/react-app/__tests__/src/base/cases/RouterLoader.test.ts +25 -15
  120. package/dist/templates/react-app/__tests__/src/base/services/I18nService.test.ts +29 -15
  121. package/dist/templates/react-app/__tests__/src/core/IOC.test.ts +19 -9
  122. package/dist/templates/react-app/__tests__/src/core/bootstraps/BootstrapClient.test.ts +153 -0
  123. package/dist/templates/react-app/__tests__/src/core/bootstraps/BootstrapsApp.test.ts +9 -7
  124. package/dist/templates/react-app/__tests__/src/main.integration.test.tsx +4 -5
  125. package/dist/templates/react-app/__tests__/src/main.test.tsx +4 -4
  126. package/dist/templates/react-app/__tests__/src/uikit/components/BaseHeader.test.tsx +68 -59
  127. package/dist/templates/react-app/__tests__/src/uikit/components/chatMessage/ChatRoot.test.tsx +274 -0
  128. package/dist/templates/react-app/config/IOCIdentifier.ts +11 -8
  129. package/dist/templates/react-app/config/Identifier/{common.error.ts → common/common.error.ts} +5 -5
  130. package/dist/templates/react-app/config/Identifier/{common.ts → common/common.ts} +9 -9
  131. package/dist/templates/react-app/config/Identifier/common/index.ts +2 -0
  132. package/dist/templates/react-app/config/Identifier/components/component.chatMessage.ts +56 -0
  133. package/dist/templates/react-app/config/Identifier/components/component.messageBaseList.ts +103 -0
  134. package/dist/templates/react-app/config/Identifier/index.ts +1 -9
  135. package/dist/templates/react-app/config/Identifier/pages/index.ts +9 -0
  136. package/dist/templates/react-app/config/Identifier/{page.about.ts → pages/page.about.ts} +34 -26
  137. package/dist/templates/react-app/config/Identifier/{page.executor.ts → pages/page.executor.ts} +47 -39
  138. package/dist/templates/{next-app/config/Identifier → react-app/config/Identifier/pages}/page.home.ts +24 -23
  139. package/dist/templates/react-app/config/Identifier/pages/page.identifiter.ts +102 -0
  140. package/dist/templates/react-app/config/Identifier/{page.jsonStorage.ts → pages/page.jsonStorage.ts} +18 -11
  141. package/dist/templates/react-app/config/Identifier/{page.login.ts → pages/page.login.ts} +37 -27
  142. package/dist/templates/react-app/config/Identifier/pages/page.message.ts +20 -0
  143. package/dist/templates/react-app/config/Identifier/{page.register.ts → pages/page.register.ts} +37 -25
  144. package/dist/templates/react-app/config/Identifier/{page.request.ts → pages/page.request.ts} +34 -44
  145. package/dist/templates/react-app/config/app.router.ts +81 -61
  146. package/dist/templates/react-app/config/i18n/PageI18nInterface.ts +51 -0
  147. package/dist/templates/react-app/config/i18n/aboutI18n.ts +42 -0
  148. package/dist/templates/react-app/config/i18n/chatMessageI18n.ts +17 -0
  149. package/dist/templates/react-app/config/i18n/executorI18n.ts +51 -0
  150. package/dist/templates/react-app/config/i18n/homeI18n.ts +24 -0
  151. package/dist/templates/react-app/config/i18n/i18nConfig.ts +30 -0
  152. package/dist/templates/react-app/config/i18n/identifiter18n.ts +30 -0
  153. package/dist/templates/react-app/config/i18n/jsonStorage18n.ts +27 -0
  154. package/dist/templates/react-app/config/i18n/login18n.ts +42 -0
  155. package/dist/templates/react-app/config/i18n/messageBaseListI18n.ts +22 -0
  156. package/dist/templates/react-app/config/i18n/messageI18n.ts +14 -0
  157. package/dist/templates/react-app/config/i18n/notFoundI18n.ts +34 -0
  158. package/dist/templates/react-app/config/i18n/register18n.ts +40 -0
  159. package/dist/templates/react-app/config/i18n/request18n.ts +41 -0
  160. package/dist/templates/react-app/config/theme.ts +14 -4
  161. package/dist/templates/react-app/docs/en/bootstrap.md +1670 -341
  162. package/dist/templates/react-app/docs/en/components/chat-message-component.md +314 -0
  163. package/dist/templates/react-app/docs/en/components/chat-message-refactor.md +270 -0
  164. package/dist/templates/react-app/docs/en/components/message-base-list-component.md +172 -0
  165. package/dist/templates/react-app/docs/en/development-guide.md +1021 -345
  166. package/dist/templates/react-app/docs/en/env.md +1132 -278
  167. package/dist/templates/react-app/docs/en/i18n.md +858 -147
  168. package/dist/templates/react-app/docs/en/index.md +733 -104
  169. package/dist/templates/react-app/docs/en/ioc.md +1228 -287
  170. package/dist/templates/react-app/docs/en/playwright/e2e-tests.md +321 -0
  171. package/dist/templates/react-app/docs/en/playwright/index.md +19 -0
  172. package/dist/templates/react-app/docs/en/playwright/installation-summary.md +332 -0
  173. package/dist/templates/react-app/docs/en/playwright/overview.md +222 -0
  174. package/dist/templates/react-app/docs/en/playwright/quickstart.md +325 -0
  175. package/dist/templates/react-app/docs/en/playwright/reorganization-notes.md +340 -0
  176. package/dist/templates/react-app/docs/en/playwright/setup-complete.md +290 -0
  177. package/dist/templates/react-app/docs/en/playwright/testing-guide.md +565 -0
  178. package/dist/templates/react-app/docs/en/store.md +1194 -184
  179. package/dist/templates/react-app/docs/en/why-no-globals.md +797 -0
  180. package/dist/templates/react-app/docs/zh/bootstrap.md +1670 -341
  181. package/dist/templates/react-app/docs/zh/components/chat-message-component.md +314 -0
  182. package/dist/templates/react-app/docs/zh/components/chat-message-refactor.md +270 -0
  183. package/dist/templates/react-app/docs/zh/components/message-base-list-component.md +172 -0
  184. package/dist/templates/react-app/docs/zh/development-guide.md +1021 -345
  185. package/dist/templates/react-app/docs/zh/env.md +1132 -275
  186. package/dist/templates/react-app/docs/zh/i18n.md +858 -147
  187. package/dist/templates/react-app/docs/zh/index.md +717 -104
  188. package/dist/templates/react-app/docs/zh/ioc.md +1229 -287
  189. package/dist/templates/react-app/docs/zh/playwright/e2e-tests.md +321 -0
  190. package/dist/templates/react-app/docs/zh/playwright/index.md +19 -0
  191. package/dist/templates/react-app/docs/zh/playwright/installation-summary.md +332 -0
  192. package/dist/templates/react-app/docs/zh/playwright/overview.md +222 -0
  193. package/dist/templates/react-app/docs/zh/playwright/quickstart.md +325 -0
  194. package/dist/templates/react-app/docs/zh/playwright/reorganization-notes.md +340 -0
  195. package/dist/templates/react-app/docs/zh/playwright/setup-complete.md +290 -0
  196. package/dist/templates/react-app/docs/zh/playwright/testing-guide.md +565 -0
  197. package/dist/templates/react-app/docs/zh/store.md +1192 -184
  198. package/dist/templates/react-app/docs/zh/why-no-globals.md +797 -0
  199. package/dist/templates/react-app/e2e/App.spec.ts +319 -0
  200. package/dist/templates/react-app/e2e/fixtures/base.fixture.ts +40 -0
  201. package/dist/templates/react-app/e2e/main.spec.ts +20 -0
  202. package/dist/templates/react-app/e2e/utils/test-helpers.ts +19 -0
  203. package/dist/templates/react-app/eslint.config.mjs +247 -0
  204. package/dist/templates/react-app/makes/eslint-utils.mjs +195 -0
  205. package/dist/templates/react-app/makes/generateTs2LocalesOptions.ts +26 -0
  206. package/dist/templates/react-app/package.json +31 -3
  207. package/dist/templates/react-app/playwright.config.ts +79 -0
  208. package/dist/templates/react-app/public/locales/en/common.json +233 -179
  209. package/dist/templates/react-app/public/locales/zh/common.json +233 -179
  210. package/dist/templates/react-app/src/App.tsx +15 -42
  211. package/dist/templates/react-app/src/base/apis/AiApi.ts +5 -5
  212. package/dist/templates/react-app/src/base/apis/feApi/FeApi.ts +1 -1
  213. package/dist/templates/react-app/src/base/apis/feApi/FeApiAdapter.ts +1 -1
  214. package/dist/templates/react-app/src/base/apis/feApi/FeApiBootstarp.ts +8 -8
  215. package/dist/templates/react-app/src/base/apis/feApi/FeApiType.ts +1 -1
  216. package/dist/templates/react-app/src/base/apis/userApi/UserApi.ts +6 -6
  217. package/dist/templates/react-app/src/base/apis/userApi/UserApiAdapter.ts +1 -1
  218. package/dist/templates/react-app/src/base/apis/userApi/UserApiBootstarp.ts +12 -14
  219. package/dist/templates/react-app/src/base/apis/userApi/UserApiType.ts +1 -1
  220. package/dist/templates/react-app/src/base/cases/DialogHandler.ts +5 -2
  221. package/dist/templates/react-app/src/base/cases/I18nKeyErrorPlugin.ts +3 -3
  222. package/dist/templates/react-app/src/base/cases/InversifyContainer.ts +3 -3
  223. package/dist/templates/react-app/src/base/cases/RequestLanguages.ts +2 -2
  224. package/dist/templates/react-app/src/base/cases/RequestLogger.ts +4 -4
  225. package/dist/templates/react-app/src/base/cases/RequestStatusCatcher.ts +1 -1
  226. package/dist/templates/react-app/src/base/cases/ResourceState.ts +23 -0
  227. package/dist/templates/react-app/src/base/cases/RouterLoader.ts +4 -4
  228. package/dist/templates/react-app/src/base/cases/TranslateI18nInterface.ts +26 -0
  229. package/dist/templates/react-app/src/base/port/ExecutorPageBridgeInterface.ts +2 -3
  230. package/dist/templates/react-app/src/base/port/I18nServiceInterface.ts +1 -1
  231. package/dist/templates/react-app/src/base/port/IOCInterface.ts +36 -0
  232. package/dist/templates/react-app/src/base/port/JSONStoragePageBridgeInterface.ts +2 -1
  233. package/dist/templates/react-app/src/base/port/ProcesserExecutorInterface.ts +1 -1
  234. package/dist/templates/react-app/src/base/port/RequestPageBridgeInterface.ts +2 -2
  235. package/dist/templates/react-app/src/base/port/RouteServiceInterface.ts +9 -5
  236. package/dist/templates/react-app/src/base/port/UserServiceInterface.ts +1 -1
  237. package/dist/templates/react-app/src/base/services/I18nService.ts +29 -29
  238. package/dist/templates/react-app/src/base/services/IdentifierService.ts +143 -0
  239. package/dist/templates/react-app/src/base/services/ProcesserExecutor.ts +3 -3
  240. package/dist/templates/react-app/src/base/services/RouteService.ts +27 -8
  241. package/dist/templates/react-app/src/base/services/UserService.ts +8 -8
  242. package/dist/templates/react-app/src/base/types/Page.ts +14 -2
  243. package/dist/templates/react-app/src/base/types/global.d.ts +1 -1
  244. package/dist/templates/react-app/src/core/IOC.ts +5 -46
  245. package/dist/templates/react-app/src/core/bootstraps/{BootstrapApp.ts → BootstrapClient.ts} +44 -17
  246. package/dist/templates/react-app/src/core/bootstraps/BootstrapsRegistry.ts +14 -7
  247. package/dist/templates/react-app/src/core/bootstraps/IocIdentifierTest.ts +1 -1
  248. package/dist/templates/react-app/src/core/bootstraps/PrintBootstrap.ts +1 -1
  249. package/dist/templates/react-app/src/core/clientIoc/ClientIOC.ts +40 -0
  250. package/dist/templates/react-app/src/core/{IocRegisterImpl.ts → clientIoc/ClientIOCRegister.ts} +35 -24
  251. package/dist/templates/react-app/src/core/globals.ts +9 -9
  252. package/dist/templates/react-app/src/main.tsx +4 -4
  253. package/dist/templates/react-app/src/pages/404.tsx +6 -3
  254. package/dist/templates/react-app/src/pages/500.tsx +5 -2
  255. package/dist/templates/react-app/src/pages/NoRouteFound.tsx +5 -0
  256. package/dist/templates/react-app/src/pages/auth/Layout.tsx +9 -6
  257. package/dist/templates/react-app/src/pages/auth/LoginPage.tsx +46 -56
  258. package/dist/templates/react-app/src/pages/auth/RegisterPage.tsx +46 -58
  259. package/dist/templates/react-app/src/pages/base/AboutPage.tsx +35 -40
  260. package/dist/templates/react-app/src/pages/base/ExecutorPage.tsx +51 -51
  261. package/dist/templates/react-app/src/pages/base/HomePage.tsx +14 -15
  262. package/dist/templates/react-app/src/pages/base/IdentifierPage.tsx +70 -11
  263. package/dist/templates/react-app/src/pages/base/JSONStoragePage.tsx +24 -25
  264. package/dist/templates/react-app/src/pages/base/Layout.tsx +2 -2
  265. package/dist/templates/react-app/src/pages/base/MessagePage.tsx +40 -0
  266. package/dist/templates/react-app/src/pages/base/RedirectPathname.tsx +3 -2
  267. package/dist/templates/react-app/src/pages/base/RequestPage.tsx +41 -59
  268. package/dist/templates/react-app/src/styles/css/antd-themes/{_default.css → _common/_default.css} +85 -0
  269. package/dist/templates/react-app/src/styles/css/antd-themes/{dark.css → _common/dark.css} +99 -0
  270. package/dist/templates/react-app/src/styles/css/antd-themes/_common/index.css +3 -0
  271. package/dist/templates/react-app/src/styles/css/antd-themes/{pink.css → _common/pink.css} +86 -0
  272. package/dist/templates/react-app/src/styles/css/antd-themes/index.css +4 -3
  273. package/dist/templates/react-app/src/styles/css/antd-themes/menu/_default.css +108 -0
  274. package/dist/templates/react-app/src/styles/css/antd-themes/menu/dark.css +67 -0
  275. package/dist/templates/react-app/src/styles/css/antd-themes/menu/index.css +3 -0
  276. package/dist/templates/react-app/src/styles/css/antd-themes/menu/pink.css +67 -0
  277. package/dist/templates/react-app/src/styles/css/antd-themes/pagination/_default.css +34 -0
  278. package/dist/templates/react-app/src/styles/css/antd-themes/pagination/dark.css +31 -0
  279. package/dist/templates/react-app/src/styles/css/antd-themes/pagination/index.css +3 -0
  280. package/dist/templates/react-app/src/styles/css/antd-themes/pagination/pink.css +36 -0
  281. package/dist/templates/react-app/src/styles/css/antd-themes/table/_default.css +44 -0
  282. package/dist/templates/react-app/src/styles/css/antd-themes/table/dark.css +43 -0
  283. package/dist/templates/react-app/src/styles/css/antd-themes/table/index.css +3 -0
  284. package/dist/templates/react-app/src/styles/css/antd-themes/table/pink.css +43 -0
  285. package/dist/templates/react-app/src/styles/css/page.css +4 -3
  286. package/dist/templates/react-app/src/styles/css/themes/_default.css +1 -0
  287. package/dist/templates/react-app/src/styles/css/themes/dark.css +1 -0
  288. package/dist/templates/react-app/src/styles/css/themes/pink.css +1 -0
  289. package/dist/templates/react-app/src/styles/css/zIndex.css +1 -1
  290. package/dist/templates/react-app/src/uikit/bridges/ExecutorPageBridge.ts +3 -3
  291. package/dist/templates/react-app/src/uikit/bridges/JSONStoragePageBridge.ts +2 -2
  292. package/dist/templates/react-app/src/uikit/bridges/NavigateBridge.ts +1 -1
  293. package/dist/templates/react-app/src/uikit/bridges/RequestPageBridge.ts +3 -3
  294. package/dist/templates/react-app/src/uikit/components/AppRouterProvider.tsx +35 -0
  295. package/dist/templates/react-app/src/uikit/components/BaseHeader.tsx +15 -11
  296. package/dist/templates/react-app/src/uikit/components/BaseRouteProvider.tsx +14 -11
  297. package/dist/templates/react-app/src/uikit/components/BaseRouteSeo.tsx +18 -0
  298. package/dist/templates/react-app/src/uikit/components/BootstrapsProvider.tsx +13 -0
  299. package/dist/templates/react-app/src/uikit/components/ClientSeo.tsx +62 -0
  300. package/dist/templates/react-app/src/uikit/components/ComboProvider.tsx +38 -0
  301. package/dist/templates/react-app/src/uikit/components/LanguageSwitcher.tsx +48 -27
  302. package/dist/templates/react-app/src/uikit/components/Loading.tsx +4 -2
  303. package/dist/templates/react-app/src/uikit/components/LocaleLink.tsx +4 -5
  304. package/dist/templates/react-app/src/uikit/components/LogoutButton.tsx +34 -11
  305. package/dist/templates/react-app/src/uikit/components/MessageBaseList.tsx +240 -0
  306. package/dist/templates/react-app/src/uikit/components/ProcessExecutorProvider.tsx +9 -5
  307. package/dist/templates/react-app/src/uikit/components/RouterRenderComponent.tsx +6 -3
  308. package/dist/templates/react-app/src/uikit/components/ThemeSwitcher.tsx +97 -40
  309. package/dist/templates/react-app/src/uikit/components/UserAuthProvider.tsx +5 -5
  310. package/dist/templates/react-app/src/uikit/components/With.tsx +17 -0
  311. package/dist/templates/react-app/src/uikit/components/chatMessage/ChatMessageBridge.ts +176 -0
  312. package/dist/templates/react-app/src/uikit/components/chatMessage/ChatRoot.tsx +21 -0
  313. package/dist/templates/react-app/src/uikit/components/chatMessage/FocusBar.tsx +106 -0
  314. package/dist/templates/react-app/src/uikit/components/chatMessage/MessageApi.ts +271 -0
  315. package/dist/templates/react-app/src/uikit/components/chatMessage/MessageItem.tsx +102 -0
  316. package/dist/templates/react-app/src/uikit/components/chatMessage/MessagesList.tsx +86 -0
  317. package/dist/templates/react-app/src/uikit/contexts/BaseRouteContext.ts +17 -11
  318. package/dist/templates/react-app/src/uikit/contexts/IOCContext.ts +13 -0
  319. package/dist/templates/react-app/src/uikit/hooks/useAppTranslation.ts +26 -0
  320. package/dist/templates/react-app/src/uikit/hooks/useI18nGuard.ts +8 -11
  321. package/dist/templates/react-app/src/uikit/hooks/useI18nInterface.ts +25 -0
  322. package/dist/templates/react-app/src/uikit/hooks/useIOC.ts +35 -0
  323. package/dist/templates/react-app/src/uikit/hooks/useNavigateBridge.ts +3 -3
  324. package/dist/templates/react-app/src/uikit/hooks/useStrictEffect.ts +0 -1
  325. package/dist/templates/react-app/tsconfig.e2e.json +21 -0
  326. package/dist/templates/react-app/tsconfig.json +8 -1
  327. package/dist/templates/react-app/tsconfig.node.json +1 -1
  328. package/dist/templates/react-app/tsconfig.test.json +3 -1
  329. package/dist/templates/react-app/vite.config.ts +50 -34
  330. package/package.json +2 -1
  331. package/dist/configs/react-app/eslint.config.js +0 -94
  332. package/dist/templates/next-app/config/Identifier/common.error.ts +0 -41
  333. package/dist/templates/next-app/config/Identifier/common.ts +0 -69
  334. package/dist/templates/next-app/config/Identifier/page.about.ts +0 -181
  335. package/dist/templates/next-app/config/Identifier/page.admin.ts +0 -48
  336. package/dist/templates/next-app/config/Identifier/page.executor.ts +0 -272
  337. package/dist/templates/next-app/config/Identifier/page.identifiter.ts +0 -39
  338. package/dist/templates/next-app/config/Identifier/page.jsonStorage.ts +0 -72
  339. package/dist/templates/next-app/config/Identifier/page.request.ts +0 -182
  340. package/dist/templates/next-app/src/base/cases/ChatAction.ts +0 -21
  341. package/dist/templates/next-app/src/base/cases/FocusBarAction.ts +0 -36
  342. package/dist/templates/next-app/src/base/cases/RequestState.ts +0 -20
  343. package/dist/templates/next-app/src/base/port/AdminPageInterface.ts +0 -85
  344. package/dist/templates/next-app/src/base/port/AsyncStateInterface.ts +0 -7
  345. package/dist/templates/next-app/src/base/services/AdminUserService.ts +0 -45
  346. package/dist/templates/next-app/src/uikit/components/ChatRoot.tsx +0 -17
  347. package/dist/templates/next-app/src/uikit/components/chat/ChatActionInterface.ts +0 -30
  348. package/dist/templates/next-app/src/uikit/components/chat/ChatFocusBar.tsx +0 -65
  349. package/dist/templates/next-app/src/uikit/components/chat/ChatMessages.tsx +0 -59
  350. package/dist/templates/next-app/src/uikit/components/chat/ChatWrap.tsx +0 -28
  351. package/dist/templates/next-app/src/uikit/components/chat/FocusBarActionInterface.ts +0 -19
  352. package/dist/templates/next-app/src/uikit/hook/useMountedClient.ts +0 -17
  353. package/dist/templates/next-app/src/uikit/hook/useStore.ts +0 -15
  354. package/dist/templates/react-app/__tests__/__mocks__/I18nService.ts +0 -13
  355. package/dist/templates/react-app/__tests__/src/App.test.tsx +0 -139
  356. package/dist/templates/react-app/config/Identifier/page.identifiter.ts +0 -39
  357. package/dist/templates/react-app/config/i18n.ts +0 -15
  358. package/dist/templates/react-app/docs/en/project-structure.md +0 -434
  359. package/dist/templates/react-app/docs/zh/project-structure.md +0 -434
  360. package/dist/templates/react-app/src/base/cases/RequestState.ts +0 -20
  361. package/dist/templates/react-app/src/base/port/AsyncStateInterface.ts +0 -7
  362. package/dist/templates/react-app/src/uikit/hooks/useDocumentTitle.ts +0 -15
  363. package/dist/templates/react-app/src/uikit/hooks/useStore.ts +0 -15
@@ -1,4 +1,14 @@
1
1
  import type { RouteConfigValue } from '@/base/cases/RouterLoader';
2
+ import { aboutI18n } from './i18n/aboutI18n';
3
+ import { executorI18n } from './i18n/executorI18n';
4
+ import { homeI18n } from './i18n/homeI18n';
5
+ import { identifiter18n } from './i18n/identifiter18n';
6
+ import { jsonStorage18n } from './i18n/jsonStorage18n';
7
+ import { login18n } from './i18n/login18n';
8
+ import { messageI18n } from './i18n/messageI18n';
9
+ import { notFound18n, serverError18n } from './i18n/notFoundI18n';
10
+ import { register18n } from './i18n/register18n';
11
+ import { request18n } from './i18n/request18n';
2
12
  import * as identifier from './Identifier';
3
13
 
4
14
  export const baseRoutes: RouteConfigValue[] = [
@@ -20,7 +30,8 @@ export const baseRoutes: RouteConfigValue[] = [
20
30
  title: identifier.PAGE_HOME_TITLE,
21
31
  description: identifier.PAGE_HOME_DESCRIPTION,
22
32
  icon: 'home',
23
- localNamespace: 'common'
33
+ localNamespace: 'common',
34
+ i18nInterface: homeI18n
24
35
  }
25
36
  },
26
37
  {
@@ -30,7 +41,8 @@ export const baseRoutes: RouteConfigValue[] = [
30
41
  title: identifier.PAGE_ABOUT_TITLE,
31
42
  description: identifier.PAGE_ABOUT_DESCRIPTION,
32
43
  icon: 'info',
33
- localNamespace: 'common'
44
+ localNamespace: 'common',
45
+ i18nInterface: aboutI18n
34
46
  }
35
47
  },
36
48
  {
@@ -40,7 +52,8 @@ export const baseRoutes: RouteConfigValue[] = [
40
52
  title: identifier.PAGE_JSONSTORAGE_TITLE,
41
53
  description: identifier.PAGE_JSONSTORAGE_DESCRIPTION,
42
54
  icon: 'info',
43
- localNamespace: 'common'
55
+ localNamespace: 'common',
56
+ i18nInterface: jsonStorage18n
44
57
  }
45
58
  },
46
59
  {
@@ -50,7 +63,8 @@ export const baseRoutes: RouteConfigValue[] = [
50
63
  title: identifier.PAGE_REQUEST_TITLE,
51
64
  description: identifier.PAGE_REQUEST_DESCRIPTION,
52
65
  icon: 'info',
53
- localNamespace: 'common'
66
+ localNamespace: 'common',
67
+ i18nInterface: request18n
54
68
  }
55
69
  },
56
70
  {
@@ -60,7 +74,8 @@ export const baseRoutes: RouteConfigValue[] = [
60
74
  title: identifier.PAGE_EXECUTOR_TITLE,
61
75
  description: identifier.PAGE_EXECUTOR_DESCRIPTION,
62
76
  icon: 'info',
63
- localNamespace: 'common'
77
+ localNamespace: 'common',
78
+ i18nInterface: executorI18n
64
79
  }
65
80
  },
66
81
  {
@@ -70,27 +85,28 @@ export const baseRoutes: RouteConfigValue[] = [
70
85
  title: identifier.PAGE_ERROR_IDENTIFIER_TITLE,
71
86
  description: identifier.PAGE_ERROR_IDENTIFIER_DESCRIPTION,
72
87
  icon: 'info',
73
- localNamespace: 'common'
88
+ localNamespace: 'common',
89
+ i18nInterface: identifiter18n
74
90
  }
75
91
  },
76
92
  {
77
- path: '404',
78
- element: '404',
93
+ path: 'message',
94
+ element: 'base/MessagePage',
79
95
  meta: {
80
- category: 'common',
81
- title: identifier.PAGE_404_TITLE,
82
- description: identifier.PAGE_404_DESCRIPTION,
83
- localNamespace: 'common'
96
+ title: identifier.PAGE_MESSAGE_TITLE,
97
+ description: identifier.PAGE_MESSAGE_DESCRIPTION,
98
+ icon: 'message',
99
+ localNamespace: 'common',
100
+ i18nInterface: messageI18n
84
101
  }
85
102
  },
86
103
  {
87
- path: '500',
88
- element: '500',
104
+ path: '*',
105
+ element: 'NoRouteFound',
89
106
  meta: {
90
107
  category: 'common',
91
- title: identifier.PAGE_500_TITLE,
92
- description: identifier.PAGE_500_DESCRIPTION,
93
- localNamespace: 'common'
108
+ localNamespace: 'common',
109
+ i18nInterface: notFound18n
94
110
  }
95
111
  }
96
112
  ]
@@ -114,7 +130,8 @@ export const baseRoutes: RouteConfigValue[] = [
114
130
  title: identifier.PAGE_LOGIN_TITLE,
115
131
  description: identifier.PAGE_LOGIN_DESCRIPTION,
116
132
  icon: 'info',
117
- localNamespace: 'common'
133
+ localNamespace: 'common',
134
+ i18nInterface: login18n
118
135
  }
119
136
  },
120
137
  {
@@ -124,7 +141,17 @@ export const baseRoutes: RouteConfigValue[] = [
124
141
  title: identifier.PAGE_REGISTER_TITLE,
125
142
  description: identifier.PAGE_REGISTER_DESCRIPTION,
126
143
  icon: 'info',
127
- localNamespace: 'common'
144
+ localNamespace: 'common',
145
+ i18nInterface: register18n
146
+ }
147
+ },
148
+ {
149
+ path: '*',
150
+ element: 'NoRouteFound',
151
+ meta: {
152
+ category: 'common',
153
+ localNamespace: 'common',
154
+ i18nInterface: notFound18n
128
155
  }
129
156
  }
130
157
  ]
@@ -135,9 +162,8 @@ export const baseRoutes: RouteConfigValue[] = [
135
162
  element: '404',
136
163
  meta: {
137
164
  category: 'common',
138
- title: identifier.PAGE_404_TITLE,
139
- description: identifier.PAGE_404_DESCRIPTION,
140
- localNamespace: 'common'
165
+ localNamespace: 'common',
166
+ i18nInterface: notFound18n
141
167
  }
142
168
  },
143
169
  {
@@ -145,19 +171,19 @@ export const baseRoutes: RouteConfigValue[] = [
145
171
  element: '500',
146
172
  meta: {
147
173
  category: 'common',
148
- title: identifier.PAGE_500_TITLE,
149
- description: identifier.PAGE_500_DESCRIPTION,
150
- localNamespace: 'common'
174
+ localNamespace: 'common',
175
+ i18nInterface: serverError18n
151
176
  }
152
177
  },
153
178
  {
154
179
  path: '*',
155
- element: '404',
180
+ element: 'NoRouteFound',
156
181
  meta: {
157
182
  category: 'common',
158
183
  title: identifier.PAGE_404_TITLE,
159
184
  description: identifier.PAGE_404_DESCRIPTION,
160
- localNamespace: 'common'
185
+ localNamespace: 'common',
186
+ i18nInterface: notFound18n
161
187
  }
162
188
  }
163
189
  ];
@@ -177,7 +203,8 @@ export const baseNoLocaleRoutes: RouteConfigValue[] = [
177
203
  title: identifier.PAGE_HOME_TITLE,
178
204
  description: identifier.PAGE_HOME_DESCRIPTION,
179
205
  icon: 'home',
180
- localNamespace: 'common'
206
+ localNamespace: 'common',
207
+ i18nInterface: homeI18n
181
208
  }
182
209
  },
183
210
  {
@@ -187,7 +214,8 @@ export const baseNoLocaleRoutes: RouteConfigValue[] = [
187
214
  title: identifier.PAGE_ABOUT_TITLE,
188
215
  description: identifier.PAGE_ABOUT_DESCRIPTION,
189
216
  icon: 'info',
190
- localNamespace: 'common'
217
+ localNamespace: 'common',
218
+ i18nInterface: aboutI18n
191
219
  }
192
220
  },
193
221
  {
@@ -197,7 +225,8 @@ export const baseNoLocaleRoutes: RouteConfigValue[] = [
197
225
  title: identifier.PAGE_JSONSTORAGE_TITLE,
198
226
  description: identifier.PAGE_JSONSTORAGE_DESCRIPTION,
199
227
  icon: 'info',
200
- localNamespace: 'common'
228
+ localNamespace: 'common',
229
+ i18nInterface: jsonStorage18n
201
230
  }
202
231
  },
203
232
  {
@@ -207,7 +236,8 @@ export const baseNoLocaleRoutes: RouteConfigValue[] = [
207
236
  title: identifier.PAGE_REQUEST_TITLE,
208
237
  description: identifier.PAGE_REQUEST_DESCRIPTION,
209
238
  icon: 'info',
210
- localNamespace: 'common'
239
+ localNamespace: 'common',
240
+ i18nInterface: request18n
211
241
  }
212
242
  },
213
243
  {
@@ -217,37 +247,30 @@ export const baseNoLocaleRoutes: RouteConfigValue[] = [
217
247
  title: identifier.PAGE_EXECUTOR_TITLE,
218
248
  description: identifier.PAGE_EXECUTOR_DESCRIPTION,
219
249
  icon: 'info',
220
- localNamespace: 'common'
250
+ localNamespace: 'common',
251
+ i18nInterface: executorI18n
221
252
  }
222
253
  },
223
254
  {
224
- path: 'errorIdentifier',
225
- element: 'base/ErrorIdentifierPage',
255
+ path: 'identifier',
256
+ element: 'base/IdentifierPage',
226
257
  meta: {
227
258
  title: identifier.PAGE_ERROR_IDENTIFIER_TITLE,
228
259
  description: identifier.PAGE_ERROR_IDENTIFIER_DESCRIPTION,
229
260
  icon: 'info',
230
- localNamespace: 'common'
231
- }
232
- },
233
- {
234
- path: '404',
235
- element: '404',
236
- meta: {
237
- category: 'common',
238
- title: identifier.PAGE_404_TITLE,
239
- description: identifier.PAGE_404_DESCRIPTION,
240
- localNamespace: 'common'
261
+ localNamespace: 'common',
262
+ i18nInterface: identifiter18n
241
263
  }
242
264
  },
243
265
  {
244
- path: '500',
245
- element: '500',
266
+ path: 'message',
267
+ element: 'base/MessagePage',
246
268
  meta: {
247
- category: 'common',
248
- title: identifier.PAGE_500_TITLE,
249
- description: identifier.PAGE_500_DESCRIPTION,
250
- localNamespace: 'common'
269
+ title: identifier.PAGE_MESSAGE_TITLE,
270
+ description: identifier.PAGE_MESSAGE_DESCRIPTION,
271
+ icon: 'message',
272
+ localNamespace: 'common',
273
+ i18nInterface: messageI18n
251
274
  }
252
275
  }
253
276
  ]
@@ -290,9 +313,8 @@ export const baseNoLocaleRoutes: RouteConfigValue[] = [
290
313
  element: '404',
291
314
  meta: {
292
315
  category: 'common',
293
- title: identifier.PAGE_404_TITLE,
294
- description: identifier.PAGE_404_DESCRIPTION,
295
- localNamespace: 'common'
316
+ localNamespace: 'common',
317
+ i18nInterface: notFound18n
296
318
  }
297
319
  },
298
320
  {
@@ -300,19 +322,17 @@ export const baseNoLocaleRoutes: RouteConfigValue[] = [
300
322
  element: '500',
301
323
  meta: {
302
324
  category: 'common',
303
- title: identifier.PAGE_500_TITLE,
304
- description: identifier.PAGE_500_DESCRIPTION,
305
- localNamespace: 'common'
325
+ localNamespace: 'common',
326
+ i18nInterface: serverError18n
306
327
  }
307
328
  },
308
329
  {
309
330
  path: '*',
310
- element: '404',
331
+ element: 'NoRouteFound',
311
332
  meta: {
312
333
  category: 'common',
313
- title: identifier.PAGE_404_TITLE,
314
- description: identifier.PAGE_404_DESCRIPTION,
315
- localNamespace: 'common'
334
+ localNamespace: 'common',
335
+ i18nInterface: notFound18n
316
336
  }
317
337
  }
318
338
  ];
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Page I18n Interface for SEO meta properties
3
+ *
4
+ * value may be undefined, which means the page does not have this meta property
5
+ *
6
+ * - if value is i18n key, it will be translated to the current language
7
+ * - if value is a string, it will be used as is
8
+ */
9
+ export interface PageI18nInterface {
10
+ // Basic meta properties
11
+ title: string;
12
+ description: string;
13
+ content: string;
14
+ keywords: string;
15
+
16
+ // Canonical URL
17
+ canonical?: string;
18
+
19
+ // Robots meta
20
+ robots?: {
21
+ index?: boolean;
22
+ follow?: boolean;
23
+ noarchive?: boolean;
24
+ };
25
+
26
+ // Open Graph meta properties
27
+ og?: {
28
+ title?: string;
29
+ description?: string;
30
+ type?: string;
31
+ image?: string;
32
+ url?: string;
33
+ siteName?: string;
34
+ locale?: string;
35
+ };
36
+
37
+ // Twitter Card meta properties
38
+ twitter?: {
39
+ card?: 'summary' | 'summary_large_image' | 'app' | 'player';
40
+ site?: string;
41
+ creator?: string;
42
+ title?: string;
43
+ description?: string;
44
+ image?: string;
45
+ };
46
+
47
+ // Additional meta properties
48
+ author?: string;
49
+ publishedTime?: string;
50
+ modifiedTime?: string;
51
+ }
@@ -0,0 +1,42 @@
1
+ import * as i18nKeys from '../Identifier/pages/page.about';
2
+
3
+ /**
4
+ * Home page i18n interface
5
+ *
6
+ * @description
7
+ * - welcome: welcome message
8
+ */
9
+ export type AboutI18nInterface = typeof aboutI18n;
10
+
11
+ export const aboutI18n = Object.freeze({
12
+ // basic meta properties
13
+ title: i18nKeys.PAGE_ABOUT_TITLE,
14
+ description: i18nKeys.PAGE_ABOUT_DESCRIPTION,
15
+ content: i18nKeys.PAGE_ABOUT_DESCRIPTION,
16
+ keywords: i18nKeys.PAGE_ABOUT_KEYWORDS,
17
+
18
+ messageTest: i18nKeys.PAGE_ABOUT_MESSAGE_TEST,
19
+ notificationTitle: i18nKeys.PAGE_ABOUT_NOTIFICATION_TITLE,
20
+ notificationDescription: i18nKeys.PAGE_ABOUT_NOTIFICATION_DESC,
21
+ btnMessage: i18nKeys.PAGE_ABOUT_BTN_MESSAGE,
22
+ btnMessage2: i18nKeys.PAGE_ABOUT_BTN_MESSAGE2,
23
+ btnNotification: i18nKeys.PAGE_ABOUT_BTN_NOTIFICATION,
24
+ btnNotification2: i18nKeys.PAGE_ABOUT_BTN_NOTIFICATION2,
25
+ tooltipText: i18nKeys.PAGE_ABOUT_TOOLTIP_TEXT,
26
+ btnTooltip: i18nKeys.PAGE_ABOUT_BTN_TOOLTIP,
27
+ modalTitle: i18nKeys.PAGE_ABOUT_MODAL_TITLE,
28
+ modalContent: i18nKeys.PAGE_ABOUT_MODAL_CONTENT,
29
+ btnModal: i18nKeys.PAGE_ABOUT_BTN_MODAL,
30
+ drawerTitle: i18nKeys.PAGE_ABOUT_DRAWER_TITLE,
31
+ drawerContent: i18nKeys.PAGE_ABOUT_DRAWER_CONTENT,
32
+ btnDrawer: i18nKeys.PAGE_ABOUT_BTN_DRAWER,
33
+ popoverContent: i18nKeys.PAGE_ABOUT_POPOVER_CONTENT,
34
+ popoverTitle: i18nKeys.PAGE_ABOUT_POPOVER_TITLE,
35
+ btnPopover: i18nKeys.PAGE_ABOUT_BTN_POPOVER,
36
+ popconfirmTitle: i18nKeys.PAGE_ABOUT_POPCONFIRM_TITLE,
37
+ popconfirmDesc: i18nKeys.PAGE_ABOUT_POPCONFIRM_DESC,
38
+ btnPopconfirm: i18nKeys.PAGE_ABOUT_BTN_POPCONFIRM,
39
+ alertMessage: i18nKeys.PAGE_ABOUT_ALERT_MESSAGE,
40
+ okText: i18nKeys.PAGE_ABOUT_OK_TEXT,
41
+ cancelText: i18nKeys.PAGE_ABOUT_CANCEL_TEXT
42
+ });
@@ -0,0 +1,17 @@
1
+ import * as i18nKeys from '../Identifier/components/component.chatMessage';
2
+
3
+ /**
4
+ * ChatMessage component i18n interface
5
+ */
6
+ export type ChatMessageI18nInterface = typeof chatMessageI18n;
7
+
8
+ export const chatMessageI18n = Object.freeze({
9
+ send: i18nKeys.COMPONENT_CHAT_SEND,
10
+ stop: i18nKeys.COMPONENT_CHAT_STOP,
11
+ loading: i18nKeys.COMPONENT_CHAT_LOADING,
12
+ inputPlaceholder: i18nKeys.COMPONENT_CHAT_INPUT_PLACEHOLDER,
13
+ empty: i18nKeys.COMPONENT_CHAT_EMPTY,
14
+ start: i18nKeys.COMPONENT_CHAT_START,
15
+ retry: i18nKeys.COMPONENT_CHAT_RETRY,
16
+ duration: i18nKeys.COMPONENT_CHAT_DURATION
17
+ });
@@ -0,0 +1,51 @@
1
+ import * as i18nKeys from '../Identifier/pages/page.executor';
2
+
3
+ /**
4
+ * Home page i18n interface
5
+ *
6
+ * @description
7
+ * - welcome: welcome message
8
+ */
9
+ export type ExecutorI18nInterface = typeof executorI18n;
10
+
11
+ export const executorI18n = Object.freeze({
12
+ // basic meta properties
13
+ title: i18nKeys.PAGE_EXECUTOR_TITLE,
14
+ description: i18nKeys.PAGE_EXECUTOR_DESCRIPTION,
15
+ content: i18nKeys.PAGE_EXECUTOR_DESCRIPTION,
16
+ keywords: i18nKeys.PAGE_EXECUTOR_KEYWORDS,
17
+
18
+ mainTitle: i18nKeys.PAGE_EXECUTOR_MAIN_TITLE,
19
+ testPluginTitle: i18nKeys.PAGE_EXECUTOR_TEST_PLUGIN_TITLE,
20
+ taskStatusPending: i18nKeys.PAGE_EXECUTOR_TASK_STATUS_PENDING,
21
+ taskStatusRunning: i18nKeys.PAGE_EXECUTOR_TASK_STATUS_RUNNING,
22
+ taskStatusCompleted: i18nKeys.PAGE_EXECUTOR_TASK_STATUS_COMPLETED,
23
+ taskStatusFailed: i18nKeys.PAGE_EXECUTOR_TASK_STATUS_FAILED,
24
+ taskTypeDataSync: i18nKeys.PAGE_EXECUTOR_TASK_TYPE_DATA_SYNC,
25
+ taskTypeReport: i18nKeys.PAGE_EXECUTOR_TASK_TYPE_REPORT,
26
+ taskTypeMaintenance: i18nKeys.PAGE_EXECUTOR_TASK_TYPE_MAINTENANCE,
27
+ taskTypeBackup: i18nKeys.PAGE_EXECUTOR_TASK_TYPE_BACKUP,
28
+ taskDurationUnit: i18nKeys.PAGE_EXECUTOR_TASK_DURATION_UNIT,
29
+ taskStart: i18nKeys.PAGE_EXECUTOR_TASK_START,
30
+ taskStop: i18nKeys.PAGE_EXECUTOR_TASK_STOP,
31
+ taskSuccess: i18nKeys.PAGE_EXECUTOR_TASK_SUCCESS,
32
+ taskFailure: i18nKeys.PAGE_EXECUTOR_TASK_FAILURE,
33
+ pluginTestSuccess: i18nKeys.PAGE_EXECUTOR_PLUGIN_TEST_SUCCESS,
34
+ pluginTestFailure: i18nKeys.PAGE_EXECUTOR_PLUGIN_TEST_FAILURE,
35
+ customTaskUrlRequired: i18nKeys.PAGE_EXECUTOR_CUSTOM_TASK_URL_REQUIRED,
36
+ customTaskName: i18nKeys.PAGE_EXECUTOR_CUSTOM_TASK_NAME,
37
+ createTaskTitle: i18nKeys.PAGE_EXECUTOR_CREATE_TASK_TITLE,
38
+ createButton: i18nKeys.PAGE_EXECUTOR_CREATE_BUTTON,
39
+ enterUrl: i18nKeys.PAGE_EXECUTOR_ENTER_URL,
40
+ taskListTitle: i18nKeys.PAGE_EXECUTOR_TASK_LIST_TITLE,
41
+ taskStatsTotal: i18nKeys.PAGE_EXECUTOR_TASK_STATS_TOTAL,
42
+ taskStatsRunning: i18nKeys.PAGE_EXECUTOR_TASK_STATS_RUNNING,
43
+ taskStatsCompleted: i18nKeys.PAGE_EXECUTOR_TASK_STATS_COMPLETED,
44
+ taskStatsFailed: i18nKeys.PAGE_EXECUTOR_TASK_STATS_FAILED,
45
+ taskHistoryTitle: i18nKeys.PAGE_EXECUTOR_TASK_HISTORY_TITLE,
46
+ helpTitle: i18nKeys.PAGE_EXECUTOR_HELP_TITLE,
47
+ helpDescription: i18nKeys.PAGE_EXECUTOR_HELP_DESCRIPTION,
48
+ viewGuide: i18nKeys.PAGE_EXECUTOR_VIEW_GUIDE,
49
+ contactSupport: i18nKeys.PAGE_EXECUTOR_CONTACT_SUPPORT,
50
+ requestTimeout: i18nKeys.PAGE_EXECUTOR_REQUEST_TIMEOUT
51
+ });
@@ -0,0 +1,24 @@
1
+ import * as i18nKeys from '../Identifier/pages/page.home';
2
+
3
+ /**
4
+ * Home page i18n interface
5
+ *
6
+ * @description
7
+ * - welcome: welcome message
8
+ */
9
+ export type HomeI18nInterface = typeof homeI18n;
10
+
11
+ export const homeI18n = Object.freeze({
12
+ // basic meta properties
13
+ title: i18nKeys.PAGE_HOME_TITLE,
14
+ description: i18nKeys.PAGE_HOME_DESCRIPTION,
15
+ content: i18nKeys.PAGE_HOME_DESCRIPTION,
16
+ keywords: i18nKeys.PAGE_HOME_KEYWORDS,
17
+
18
+ welcome: i18nKeys.PAGE_HOME_WELCOME,
19
+ description2: i18nKeys.PAGE_HOME_DESCRIPTION2,
20
+ explore: i18nKeys.PAGE_HOME_EXPLORE,
21
+ getStartedTitle: i18nKeys.PAGE_HOME_GET_STARTED,
22
+ getStartedDescription: i18nKeys.PAGE_HOME_GET_STARTED_DESCRIPTION,
23
+ getStartedButton: i18nKeys.PAGE_HOME_GET_STARTED_BUTTON
24
+ });
@@ -0,0 +1,30 @@
1
+ import { routerPrefix } from '../common';
2
+
3
+ export const i18nConfig = {
4
+ fallbackLng: 'en',
5
+ debug: false,
6
+ interpolation: {
7
+ escapeValue: false
8
+ },
9
+ ns: ['common'],
10
+ defaultNS: 'common',
11
+ backend: {
12
+ loadPath: routerPrefix + '/locales/{{lng}}/{{ns}}.json'
13
+ },
14
+ supportedLngs: ['en', 'zh'],
15
+ /**
16
+ * Whether to redirect to the fallback language when the language is not valid
17
+ *
18
+ * if `true`, redirect to the fallback language
19
+ * if `false`, redirect to the 404 page
20
+ * @example
21
+ *
22
+ * true: /ena/login -> /en/login
23
+ * false: /ena/login -> /404
24
+ *
25
+ * @default `true`
26
+ */
27
+ noValidRedirectFallbackLng: true
28
+ } as const;
29
+
30
+ export type LocaleType = (typeof i18nConfig.supportedLngs)[number];
@@ -0,0 +1,30 @@
1
+ import * as i18nKeys from '../Identifier/pages/page.identifiter';
2
+
3
+ /**
4
+ * Home page i18n interface
5
+ *
6
+ * @description
7
+ * - welcome: welcome message
8
+ */
9
+ export type Identifiter18nInterface = typeof identifiter18n;
10
+
11
+ export const identifiter18n = Object.freeze({
12
+ // basic meta properties
13
+ title: i18nKeys.PAGE_IDENTIFITER_TITLE,
14
+ description: i18nKeys.PAGE_IDENTIFITER_DESCRIPTION,
15
+ content: i18nKeys.PAGE_IDENTIFITER_DESCRIPTION,
16
+ keywords: i18nKeys.PAGE_IDENTIFITER_KEYWORDS,
17
+
18
+ sourceDescription: i18nKeys.PAGE_IDENTIFITER_SOURCE_DESCRIPTION,
19
+ helpTitle: i18nKeys.PAGE_IDENTIFITER_HELP_TITLE,
20
+ helpDescription: i18nKeys.PAGE_IDENTIFITER_HELP_DESCRIPTION,
21
+ contactSupport: i18nKeys.PAGE_IDENTIFITER_CONTACT_SUPPORT,
22
+
23
+ iTableTitle: i18nKeys.PAGE_IDENTIFITER_TABLE_TITLE,
24
+ iTableIndex: i18nKeys.PAGE_IDENTIFITER_TABLE_INDEX,
25
+ iTableDescription: i18nKeys.PAGE_IDENTIFITER_TABLE_DESCRIPTION,
26
+ iTableId: i18nKeys.PAGE_IDENTIFITER_TABLE_ID,
27
+ iTableKey: i18nKeys.PAGE_IDENTIFITER_TABLE_KEY,
28
+ iTableLocaleValue: i18nKeys.PAGE_IDENTIFITER_TABLE_LOCALE_VALUE,
29
+ iTableLabel: i18nKeys.PAGE_IDENTIFITER_TABLE_LABEL
30
+ });
@@ -0,0 +1,27 @@
1
+ import * as i18nKeys from '../Identifier/pages/page.jsonStorage';
2
+
3
+ /**
4
+ * Home page i18n interface
5
+ *
6
+ * @description
7
+ * - welcome: welcome message
8
+ */
9
+ export type JsonStorage18nInterface = typeof jsonStorage18n;
10
+
11
+ export const jsonStorage18n = Object.freeze({
12
+ // basic meta properties
13
+ title: i18nKeys.PAGE_JSONSTORAGE_TITLE,
14
+ description: i18nKeys.PAGE_JSONSTORAGE_DESCRIPTION,
15
+ content: i18nKeys.PAGE_JSONSTORAGE_DESCRIPTION,
16
+ keywords: i18nKeys.PAGE_JSONSTORAGE_KEYWORDS,
17
+
18
+ mainTitle: i18nKeys.PAGE_JSONSTORAGE_MAIN_TITLE,
19
+ permanentTitle: i18nKeys.PAGE_JSONSTORAGE_PERMANENT_TITLE,
20
+ expireTitle: i18nKeys.PAGE_JSONSTORAGE_EXPIRE_TITLE,
21
+ timeoutTitle: i18nKeys.PAGE_JSONSTORAGE_TIMEOUT_TITLE,
22
+ formatTitle: i18nKeys.PAGE_JSONSTORAGE_FORMAT_TITLE,
23
+ setRandom: i18nKeys.PAGE_JSONSTORAGE_SET_RANDOM,
24
+ currentValue: i18nKeys.PAGE_JSONSTORAGE_CURRENT_VALUE,
25
+ setExpire: i18nKeys.PAGE_JSONSTORAGE_SET_EXPIRE,
26
+ ms: i18nKeys.PAGE_JSONSTORAGE_MS
27
+ });
@@ -0,0 +1,42 @@
1
+ import * as i18nKeys from '../Identifier/pages/page.login';
2
+
3
+ /**
4
+ * Home page i18n interface
5
+ *
6
+ * @description
7
+ * - welcome: welcome message
8
+ */
9
+ export type Login18nInterface = typeof login18n;
10
+
11
+ export const login18n = Object.freeze({
12
+ // basic meta properties
13
+ title: i18nKeys.PAGE_LOGIN_TITLE,
14
+ description: i18nKeys.PAGE_LOGIN_DESCRIPTION,
15
+ content: i18nKeys.PAGE_LOGIN_DESCRIPTION,
16
+ keywords: i18nKeys.PAGE_LOGIN_KEYWORDS,
17
+
18
+ title2: i18nKeys.PAGE_LOGIN_TITLE2,
19
+ email: i18nKeys.PAGE_LOGIN_EMAIL,
20
+ username: i18nKeys.PAGE_LOGIN_USERNAME,
21
+ password: i18nKeys.PAGE_LOGIN_PASSWORD,
22
+ button: i18nKeys.PAGE_LOGIN_BUTTON,
23
+ welcome: i18nKeys.PAGE_LOGIN_WELCOME,
24
+ subtitle: i18nKeys.PAGE_LOGIN_SUBTITLE,
25
+ forgotPassword: i18nKeys.PAGE_LOGIN_FORGOT_PASSWORD,
26
+ continueWith: i18nKeys.PAGE_LOGIN_CONTINUE_WITH,
27
+ withGoogle: i18nKeys.PAGE_LOGIN_WITH_GOOGLE,
28
+ noAccount: i18nKeys.PAGE_LOGIN_NO_ACCOUNT,
29
+ createAccount: i18nKeys.PAGE_LOGIN_CREATE_ACCOUNT,
30
+ emailRequired: i18nKeys.PAGE_LOGIN_EMAIL_REQUIRED,
31
+ passwordRequired: i18nKeys.PAGE_LOGIN_PASSWORD_REQUIRED,
32
+ featureAiPaths: i18nKeys.PAGE_LOGIN_FEATURE_AI_PATHS,
33
+ featureSmartRecommendations:
34
+ i18nKeys.PAGE_LOGIN_FEATURE_SMART_RECOMMENDATIONS,
35
+ featureProgressTracking: i18nKeys.PAGE_LOGIN_FEATURE_PROGRESS_TRACKING,
36
+ emailTitle: i18nKeys.PAGE_LOGIN_EMAIL_TITLE,
37
+ passwordTitle: i18nKeys.PAGE_LOGIN_PASSWORD_TITLE,
38
+ forgotPasswordTitle: i18nKeys.PAGE_LOGIN_FORGOT_PASSWORD_TITLE,
39
+ buttonTitle: i18nKeys.PAGE_LOGIN_BUTTON_TITLE,
40
+ withGoogleTitle: i18nKeys.PAGE_LOGIN_WITH_GOOGLE_TITLE,
41
+ createAccountTitle: i18nKeys.PAGE_LOGIN_CREATE_ACCOUNT_TITLE
42
+ });
@@ -0,0 +1,22 @@
1
+ import * as i18nKeys from '../Identifier/components/component.messageBaseList';
2
+
3
+ /**
4
+ * MessageBaseList component i18n interface
5
+ */
6
+ export type MessageBaseListI18nInterface = typeof messageBaseListI18n;
7
+
8
+ export const messageBaseListI18n = Object.freeze({
9
+ title: i18nKeys.COMPONENT_MESSAGE_BASE_LIST_TITLE,
10
+ description: i18nKeys.COMPONENT_MESSAGE_BASE_LIST_DESCRIPTION,
11
+ noMessages: i18nKeys.COMPONENT_MESSAGE_BASE_LIST_NO_MESSAGES,
12
+ getStarted: i18nKeys.COMPONENT_MESSAGE_BASE_LIST_GET_STARTED,
13
+ user: i18nKeys.COMPONENT_MESSAGE_BASE_LIST_USER,
14
+ gateway: i18nKeys.COMPONENT_MESSAGE_BASE_LIST_GATEWAY,
15
+ processing: i18nKeys.COMPONENT_MESSAGE_BASE_LIST_PROCESSING,
16
+ gatewayFailed: i18nKeys.COMPONENT_MESSAGE_BASE_LIST_GATEWAY_FAILED,
17
+ sendFailed: i18nKeys.COMPONENT_MESSAGE_BASE_LIST_SEND_FAILED,
18
+ gatewayResponse: i18nKeys.COMPONENT_MESSAGE_BASE_LIST_GATEWAY_RESPONSE,
19
+ inputPlaceholder: i18nKeys.COMPONENT_MESSAGE_BASE_LIST_INPUT_PLACEHOLDER,
20
+ sendButton: i18nKeys.COMPONENT_MESSAGE_BASE_LIST_SEND_BUTTON,
21
+ errorTip: i18nKeys.COMPONENT_MESSAGE_BASE_LIST_ERROR_TIP
22
+ });
@@ -0,0 +1,14 @@
1
+ import * as i18nKeys from '../Identifier/pages/page.message';
2
+
3
+ /**
4
+ * Message page i18n interface
5
+ */
6
+ export type MessageI18nInterface = typeof messageI18n;
7
+
8
+ export const messageI18n = Object.freeze({
9
+ // basic meta properties
10
+ title: i18nKeys.PAGE_MESSAGE_TITLE,
11
+ description: i18nKeys.PAGE_MESSAGE_DESCRIPTION,
12
+ content: i18nKeys.PAGE_MESSAGE_DESCRIPTION,
13
+ keywords: i18nKeys.PAGE_MESSAGE_KEYWORDS
14
+ });