@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.
- package/CHANGELOG.md +21 -0
- package/dist/configs/_common/.github/workflows/general-check.yml +1 -1
- package/dist/configs/_common/.github/workflows/release.yml +2 -2
- package/dist/configs/_common/.gitignore.template +6 -0
- package/dist/configs/_common/.prettierignore +17 -5
- package/dist/configs/_common/.vscode/settings.json +6 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/templates/next-app/.env.template +1 -1
- package/dist/templates/next-app/README.en.md +0 -1
- package/dist/templates/next-app/README.md +0 -1
- package/dist/templates/next-app/config/Identifier/api.ts +5 -5
- package/dist/templates/next-app/config/Identifier/common/admint.table.ts +69 -0
- package/dist/templates/next-app/config/Identifier/common/common.ts +76 -0
- package/dist/templates/next-app/config/Identifier/common/index.ts +3 -0
- package/dist/templates/next-app/config/Identifier/{validator.ts → common/validators.ts} +5 -5
- package/dist/templates/next-app/config/Identifier/index.ts +2 -12
- package/dist/templates/next-app/config/Identifier/pages/index.ts +6 -0
- package/dist/templates/next-app/config/Identifier/pages/page.admin.home.ts +27 -0
- package/dist/templates/next-app/config/Identifier/pages/page.admin.locales.ts +266 -0
- package/dist/templates/next-app/config/Identifier/pages/page.admin.user.ts +293 -0
- package/dist/templates/{react-app/config/Identifier → next-app/config/Identifier/pages}/page.home.ts +15 -22
- package/dist/templates/next-app/config/Identifier/{page.login.ts → pages/page.login.ts} +28 -34
- package/dist/templates/next-app/config/Identifier/{page.register.ts → pages/page.register.ts} +30 -29
- package/dist/templates/next-app/config/adminNavs.ts +19 -0
- package/dist/templates/next-app/config/common.ts +22 -13
- package/dist/templates/next-app/config/i18n/HomeI18n.ts +5 -5
- package/dist/templates/next-app/config/i18n/admin18n.ts +61 -19
- package/dist/templates/next-app/config/i18n/i18nConfig.ts +2 -0
- package/dist/templates/next-app/config/i18n/i18nKeyScheam.ts +36 -0
- package/dist/templates/next-app/config/i18n/loginI18n.ts +22 -22
- package/dist/templates/next-app/config/i18n/register18n.ts +23 -24
- package/dist/templates/next-app/docs/en/index.md +0 -1
- package/dist/templates/next-app/docs/en/project-structure.md +0 -1
- package/dist/templates/next-app/docs/zh/index.md +0 -1
- package/dist/templates/next-app/docs/zh/project-structure.md +0 -1
- package/dist/templates/next-app/make/generateLocales.ts +19 -12
- package/dist/templates/next-app/migrations/schema/LocalesSchema.ts +15 -0
- package/dist/templates/next-app/migrations/sql/1694244000000.sql +11 -0
- package/dist/templates/next-app/package.json +7 -3
- package/dist/templates/next-app/public/locales/en.json +172 -207
- package/dist/templates/next-app/public/locales/zh.json +172 -207
- package/dist/templates/next-app/src/app/[locale]/admin/locales/page.tsx +153 -0
- package/dist/templates/next-app/src/app/[locale]/admin/users/page.tsx +48 -50
- package/dist/templates/next-app/src/app/[locale]/login/LoginForm.tsx +2 -2
- package/dist/templates/next-app/src/app/api/admin/locales/create/route.ts +34 -0
- package/dist/templates/next-app/src/app/api/admin/locales/import/route.ts +40 -0
- package/dist/templates/next-app/src/app/api/admin/locales/route.ts +42 -0
- package/dist/templates/next-app/src/app/api/admin/locales/update/route.ts +32 -0
- package/dist/templates/next-app/src/app/api/locales/json/route.ts +44 -0
- package/dist/templates/next-app/src/base/cases/AdminPageManager.ts +1 -13
- package/dist/templates/next-app/src/base/cases/Datetime.ts +18 -0
- package/dist/templates/next-app/src/base/cases/DialogErrorPlugin.ts +12 -6
- package/dist/templates/next-app/src/base/cases/ResourceState.ts +17 -0
- package/dist/templates/next-app/src/base/cases/TranslateI18nInterface.ts +25 -0
- package/dist/templates/next-app/src/base/cases/ZodColumnBuilder.ts +200 -0
- package/dist/templates/next-app/src/base/port/ZodBuilderInterface.ts +8 -0
- package/dist/templates/next-app/src/base/services/AdminLocalesService.ts +20 -0
- package/dist/templates/next-app/src/base/services/AdminPageEvent.ts +26 -0
- package/dist/templates/next-app/src/base/services/AdminPageScheduler.ts +42 -0
- package/dist/templates/next-app/src/base/services/ResourceService.ts +122 -0
- package/dist/templates/next-app/src/base/services/adminApi/AdminLocalesApi.ts +104 -0
- package/dist/templates/next-app/src/base/services/adminApi/AdminUserApi.ts +38 -5
- package/dist/templates/next-app/src/base/services/appApi/AppApiPlugin.ts +1 -1
- package/dist/templates/next-app/src/i18n/request.ts +30 -1
- package/dist/templates/next-app/src/server/PageParams.ts +2 -10
- package/dist/templates/next-app/src/server/port/DBBridgeInterface.ts +5 -0
- package/dist/templates/next-app/src/server/port/DBTableInterface.ts +2 -0
- package/dist/templates/next-app/src/server/port/LocalesRepositoryInterface.ts +43 -0
- package/dist/templates/next-app/src/server/repositorys/LocalesRepository.ts +197 -0
- package/dist/templates/next-app/src/server/services/ApiLocaleService.ts +122 -0
- package/dist/templates/next-app/src/server/sqlBridges/SupabaseBridge.ts +60 -11
- package/dist/templates/next-app/src/server/validators/ExtendedExecutorError.ts +6 -0
- package/dist/templates/next-app/src/server/validators/LocalesValidator.ts +131 -0
- package/dist/templates/next-app/src/server/validators/LoginValidator.ts +2 -5
- package/dist/templates/next-app/src/server/validators/PaginationValidator.ts +32 -16
- package/dist/templates/next-app/src/styles/css/antd-themes/pagination/_default.css +2 -1
- package/dist/templates/next-app/src/styles/css/antd-themes/pagination/dark.css +28 -29
- package/dist/templates/next-app/src/styles/css/antd-themes/pagination/pink.css +2 -1
- package/dist/templates/next-app/src/uikit/components/AdminLayout.tsx +17 -3
- package/dist/templates/next-app/src/uikit/components/BaseHeader.tsx +5 -4
- package/dist/templates/next-app/src/uikit/components/BaseLayout.tsx +5 -4
- package/dist/templates/next-app/src/uikit/components/BootstrapsProvider.tsx +3 -2
- package/dist/templates/next-app/src/uikit/components/ComboProvider.tsx +1 -1
- package/dist/templates/next-app/src/uikit/components/EditableCell.tsx +118 -0
- package/dist/templates/next-app/src/uikit/components/LogoutButton.tsx +5 -6
- package/dist/templates/next-app/src/uikit/components/ThemeSwitcher.tsx +1 -1
- package/dist/templates/next-app/src/uikit/components/With.tsx +2 -2
- package/dist/templates/next-app/src/uikit/components/localesImportButton/LocalesImportButton.tsx +62 -0
- package/dist/templates/next-app/src/uikit/components/localesImportButton/LocalesImportEvent.ts +28 -0
- package/dist/templates/next-app/src/uikit/components/localesImportButton/import.module.css +6 -0
- package/dist/templates/next-app/src/uikit/hook/useI18nInterface.ts +8 -14
- package/dist/templates/next-app/src/uikit/hook/useWarnTranslations.ts +25 -0
- package/dist/templates/react-app/.prettierignore +17 -0
- package/dist/templates/react-app/README.en.md +71 -54
- package/dist/templates/react-app/README.md +35 -18
- package/dist/templates/react-app/__tests__/__mocks__/BootstrapTest.ts +14 -0
- package/dist/templates/react-app/__tests__/__mocks__/MockAppConfit.ts +1 -1
- package/dist/templates/react-app/__tests__/__mocks__/MockDialogHandler.ts +2 -2
- package/dist/templates/react-app/__tests__/__mocks__/MockLogger.ts +1 -1
- package/dist/templates/react-app/__tests__/__mocks__/components/TestApp.tsx +45 -0
- package/dist/templates/react-app/__tests__/__mocks__/components/TestBootstrapsProvider.tsx +34 -0
- package/dist/templates/react-app/__tests__/__mocks__/components/TestRouter.tsx +46 -0
- package/dist/templates/react-app/__tests__/__mocks__/components/index.ts +12 -0
- package/dist/templates/react-app/__tests__/__mocks__/createMockGlobals.ts +1 -2
- package/dist/templates/react-app/__tests__/__mocks__/testIOC/TestIOC.ts +51 -0
- package/dist/templates/react-app/__tests__/__mocks__/testIOC/TestIOCRegister.ts +69 -0
- package/dist/templates/react-app/__tests__/setup/index.ts +1 -51
- package/dist/templates/react-app/__tests__/setup/setupGlobal.ts +51 -0
- package/dist/templates/react-app/__tests__/src/App.structure.test.tsx +115 -0
- package/dist/templates/react-app/__tests__/src/base/cases/AppConfig.test.ts +2 -2
- package/dist/templates/react-app/__tests__/src/base/cases/AppError.test.ts +1 -1
- package/dist/templates/react-app/__tests__/src/base/cases/DialogHandler.test.ts +3 -5
- package/dist/templates/react-app/__tests__/src/base/cases/I18nKeyErrorPlugin.test.ts +13 -2
- package/dist/templates/react-app/__tests__/src/base/cases/InversifyContainer.test.ts +1 -1
- package/dist/templates/react-app/__tests__/src/base/cases/PublicAssetsPath.test.ts +1 -1
- package/dist/templates/react-app/__tests__/src/base/cases/RequestLogger.test.ts +5 -5
- package/dist/templates/react-app/__tests__/src/base/cases/RequestStatusCatcher.test.ts +1 -2
- package/dist/templates/react-app/__tests__/src/base/cases/RouterLoader.test.ts +25 -15
- package/dist/templates/react-app/__tests__/src/base/services/I18nService.test.ts +29 -15
- package/dist/templates/react-app/__tests__/src/core/IOC.test.ts +19 -9
- package/dist/templates/react-app/__tests__/src/core/bootstraps/BootstrapClient.test.ts +153 -0
- package/dist/templates/react-app/__tests__/src/core/bootstraps/BootstrapsApp.test.ts +9 -7
- package/dist/templates/react-app/__tests__/src/main.integration.test.tsx +4 -5
- package/dist/templates/react-app/__tests__/src/main.test.tsx +4 -4
- package/dist/templates/react-app/__tests__/src/uikit/components/BaseHeader.test.tsx +68 -59
- package/dist/templates/react-app/__tests__/src/uikit/components/chatMessage/ChatRoot.test.tsx +274 -0
- package/dist/templates/react-app/config/IOCIdentifier.ts +11 -8
- package/dist/templates/react-app/config/Identifier/{common.error.ts → common/common.error.ts} +5 -5
- package/dist/templates/react-app/config/Identifier/{common.ts → common/common.ts} +9 -9
- package/dist/templates/react-app/config/Identifier/common/index.ts +2 -0
- package/dist/templates/react-app/config/Identifier/components/component.chatMessage.ts +56 -0
- package/dist/templates/react-app/config/Identifier/components/component.messageBaseList.ts +103 -0
- package/dist/templates/react-app/config/Identifier/index.ts +1 -9
- package/dist/templates/react-app/config/Identifier/pages/index.ts +9 -0
- package/dist/templates/react-app/config/Identifier/{page.about.ts → pages/page.about.ts} +34 -26
- package/dist/templates/react-app/config/Identifier/{page.executor.ts → pages/page.executor.ts} +47 -39
- package/dist/templates/{next-app/config/Identifier → react-app/config/Identifier/pages}/page.home.ts +24 -23
- package/dist/templates/react-app/config/Identifier/pages/page.identifiter.ts +102 -0
- package/dist/templates/react-app/config/Identifier/{page.jsonStorage.ts → pages/page.jsonStorage.ts} +18 -11
- package/dist/templates/react-app/config/Identifier/{page.login.ts → pages/page.login.ts} +37 -27
- package/dist/templates/react-app/config/Identifier/pages/page.message.ts +20 -0
- package/dist/templates/react-app/config/Identifier/{page.register.ts → pages/page.register.ts} +37 -25
- package/dist/templates/react-app/config/Identifier/{page.request.ts → pages/page.request.ts} +34 -44
- package/dist/templates/react-app/config/app.router.ts +81 -61
- package/dist/templates/react-app/config/i18n/PageI18nInterface.ts +51 -0
- package/dist/templates/react-app/config/i18n/aboutI18n.ts +42 -0
- package/dist/templates/react-app/config/i18n/chatMessageI18n.ts +17 -0
- package/dist/templates/react-app/config/i18n/executorI18n.ts +51 -0
- package/dist/templates/react-app/config/i18n/homeI18n.ts +24 -0
- package/dist/templates/react-app/config/i18n/i18nConfig.ts +30 -0
- package/dist/templates/react-app/config/i18n/identifiter18n.ts +30 -0
- package/dist/templates/react-app/config/i18n/jsonStorage18n.ts +27 -0
- package/dist/templates/react-app/config/i18n/login18n.ts +42 -0
- package/dist/templates/react-app/config/i18n/messageBaseListI18n.ts +22 -0
- package/dist/templates/react-app/config/i18n/messageI18n.ts +14 -0
- package/dist/templates/react-app/config/i18n/notFoundI18n.ts +34 -0
- package/dist/templates/react-app/config/i18n/register18n.ts +40 -0
- package/dist/templates/react-app/config/i18n/request18n.ts +41 -0
- package/dist/templates/react-app/config/theme.ts +14 -4
- package/dist/templates/react-app/docs/en/bootstrap.md +1670 -341
- package/dist/templates/react-app/docs/en/components/chat-message-component.md +314 -0
- package/dist/templates/react-app/docs/en/components/chat-message-refactor.md +270 -0
- package/dist/templates/react-app/docs/en/components/message-base-list-component.md +172 -0
- package/dist/templates/react-app/docs/en/development-guide.md +1021 -345
- package/dist/templates/react-app/docs/en/env.md +1132 -278
- package/dist/templates/react-app/docs/en/i18n.md +858 -147
- package/dist/templates/react-app/docs/en/index.md +733 -104
- package/dist/templates/react-app/docs/en/ioc.md +1228 -287
- package/dist/templates/react-app/docs/en/playwright/e2e-tests.md +321 -0
- package/dist/templates/react-app/docs/en/playwright/index.md +19 -0
- package/dist/templates/react-app/docs/en/playwright/installation-summary.md +332 -0
- package/dist/templates/react-app/docs/en/playwright/overview.md +222 -0
- package/dist/templates/react-app/docs/en/playwright/quickstart.md +325 -0
- package/dist/templates/react-app/docs/en/playwright/reorganization-notes.md +340 -0
- package/dist/templates/react-app/docs/en/playwright/setup-complete.md +290 -0
- package/dist/templates/react-app/docs/en/playwright/testing-guide.md +565 -0
- package/dist/templates/react-app/docs/en/store.md +1194 -184
- package/dist/templates/react-app/docs/en/why-no-globals.md +797 -0
- package/dist/templates/react-app/docs/zh/bootstrap.md +1670 -341
- package/dist/templates/react-app/docs/zh/components/chat-message-component.md +314 -0
- package/dist/templates/react-app/docs/zh/components/chat-message-refactor.md +270 -0
- package/dist/templates/react-app/docs/zh/components/message-base-list-component.md +172 -0
- package/dist/templates/react-app/docs/zh/development-guide.md +1021 -345
- package/dist/templates/react-app/docs/zh/env.md +1132 -275
- package/dist/templates/react-app/docs/zh/i18n.md +858 -147
- package/dist/templates/react-app/docs/zh/index.md +717 -104
- package/dist/templates/react-app/docs/zh/ioc.md +1229 -287
- package/dist/templates/react-app/docs/zh/playwright/e2e-tests.md +321 -0
- package/dist/templates/react-app/docs/zh/playwright/index.md +19 -0
- package/dist/templates/react-app/docs/zh/playwright/installation-summary.md +332 -0
- package/dist/templates/react-app/docs/zh/playwright/overview.md +222 -0
- package/dist/templates/react-app/docs/zh/playwright/quickstart.md +325 -0
- package/dist/templates/react-app/docs/zh/playwright/reorganization-notes.md +340 -0
- package/dist/templates/react-app/docs/zh/playwright/setup-complete.md +290 -0
- package/dist/templates/react-app/docs/zh/playwright/testing-guide.md +565 -0
- package/dist/templates/react-app/docs/zh/store.md +1192 -184
- package/dist/templates/react-app/docs/zh/why-no-globals.md +797 -0
- package/dist/templates/react-app/e2e/App.spec.ts +319 -0
- package/dist/templates/react-app/e2e/fixtures/base.fixture.ts +40 -0
- package/dist/templates/react-app/e2e/main.spec.ts +20 -0
- package/dist/templates/react-app/e2e/utils/test-helpers.ts +19 -0
- package/dist/templates/react-app/eslint.config.mjs +247 -0
- package/dist/templates/react-app/makes/eslint-utils.mjs +195 -0
- package/dist/templates/react-app/makes/generateTs2LocalesOptions.ts +26 -0
- package/dist/templates/react-app/package.json +31 -3
- package/dist/templates/react-app/playwright.config.ts +79 -0
- package/dist/templates/react-app/public/locales/en/common.json +233 -179
- package/dist/templates/react-app/public/locales/zh/common.json +233 -179
- package/dist/templates/react-app/src/App.tsx +15 -42
- package/dist/templates/react-app/src/base/apis/AiApi.ts +5 -5
- package/dist/templates/react-app/src/base/apis/feApi/FeApi.ts +1 -1
- package/dist/templates/react-app/src/base/apis/feApi/FeApiAdapter.ts +1 -1
- package/dist/templates/react-app/src/base/apis/feApi/FeApiBootstarp.ts +8 -8
- package/dist/templates/react-app/src/base/apis/feApi/FeApiType.ts +1 -1
- package/dist/templates/react-app/src/base/apis/userApi/UserApi.ts +6 -6
- package/dist/templates/react-app/src/base/apis/userApi/UserApiAdapter.ts +1 -1
- package/dist/templates/react-app/src/base/apis/userApi/UserApiBootstarp.ts +12 -14
- package/dist/templates/react-app/src/base/apis/userApi/UserApiType.ts +1 -1
- package/dist/templates/react-app/src/base/cases/DialogHandler.ts +5 -2
- package/dist/templates/react-app/src/base/cases/I18nKeyErrorPlugin.ts +3 -3
- package/dist/templates/react-app/src/base/cases/InversifyContainer.ts +3 -3
- package/dist/templates/react-app/src/base/cases/RequestLanguages.ts +2 -2
- package/dist/templates/react-app/src/base/cases/RequestLogger.ts +4 -4
- package/dist/templates/react-app/src/base/cases/RequestStatusCatcher.ts +1 -1
- package/dist/templates/react-app/src/base/cases/ResourceState.ts +23 -0
- package/dist/templates/react-app/src/base/cases/RouterLoader.ts +4 -4
- package/dist/templates/react-app/src/base/cases/TranslateI18nInterface.ts +26 -0
- package/dist/templates/react-app/src/base/port/ExecutorPageBridgeInterface.ts +2 -3
- package/dist/templates/react-app/src/base/port/I18nServiceInterface.ts +1 -1
- package/dist/templates/react-app/src/base/port/IOCInterface.ts +36 -0
- package/dist/templates/react-app/src/base/port/JSONStoragePageBridgeInterface.ts +2 -1
- package/dist/templates/react-app/src/base/port/ProcesserExecutorInterface.ts +1 -1
- package/dist/templates/react-app/src/base/port/RequestPageBridgeInterface.ts +2 -2
- package/dist/templates/react-app/src/base/port/RouteServiceInterface.ts +9 -5
- package/dist/templates/react-app/src/base/port/UserServiceInterface.ts +1 -1
- package/dist/templates/react-app/src/base/services/I18nService.ts +29 -29
- package/dist/templates/react-app/src/base/services/IdentifierService.ts +143 -0
- package/dist/templates/react-app/src/base/services/ProcesserExecutor.ts +3 -3
- package/dist/templates/react-app/src/base/services/RouteService.ts +27 -8
- package/dist/templates/react-app/src/base/services/UserService.ts +8 -8
- package/dist/templates/react-app/src/base/types/Page.ts +14 -2
- package/dist/templates/react-app/src/base/types/global.d.ts +1 -1
- package/dist/templates/react-app/src/core/IOC.ts +5 -46
- package/dist/templates/react-app/src/core/bootstraps/{BootstrapApp.ts → BootstrapClient.ts} +44 -17
- package/dist/templates/react-app/src/core/bootstraps/BootstrapsRegistry.ts +14 -7
- package/dist/templates/react-app/src/core/bootstraps/IocIdentifierTest.ts +1 -1
- package/dist/templates/react-app/src/core/bootstraps/PrintBootstrap.ts +1 -1
- package/dist/templates/react-app/src/core/clientIoc/ClientIOC.ts +40 -0
- package/dist/templates/react-app/src/core/{IocRegisterImpl.ts → clientIoc/ClientIOCRegister.ts} +35 -24
- package/dist/templates/react-app/src/core/globals.ts +9 -9
- package/dist/templates/react-app/src/main.tsx +4 -4
- package/dist/templates/react-app/src/pages/404.tsx +6 -3
- package/dist/templates/react-app/src/pages/500.tsx +5 -2
- package/dist/templates/react-app/src/pages/NoRouteFound.tsx +5 -0
- package/dist/templates/react-app/src/pages/auth/Layout.tsx +9 -6
- package/dist/templates/react-app/src/pages/auth/LoginPage.tsx +46 -56
- package/dist/templates/react-app/src/pages/auth/RegisterPage.tsx +46 -58
- package/dist/templates/react-app/src/pages/base/AboutPage.tsx +35 -40
- package/dist/templates/react-app/src/pages/base/ExecutorPage.tsx +51 -51
- package/dist/templates/react-app/src/pages/base/HomePage.tsx +14 -15
- package/dist/templates/react-app/src/pages/base/IdentifierPage.tsx +70 -11
- package/dist/templates/react-app/src/pages/base/JSONStoragePage.tsx +24 -25
- package/dist/templates/react-app/src/pages/base/Layout.tsx +2 -2
- package/dist/templates/react-app/src/pages/base/MessagePage.tsx +40 -0
- package/dist/templates/react-app/src/pages/base/RedirectPathname.tsx +3 -2
- package/dist/templates/react-app/src/pages/base/RequestPage.tsx +41 -59
- package/dist/templates/react-app/src/styles/css/antd-themes/{_default.css → _common/_default.css} +85 -0
- package/dist/templates/react-app/src/styles/css/antd-themes/{dark.css → _common/dark.css} +99 -0
- package/dist/templates/react-app/src/styles/css/antd-themes/_common/index.css +3 -0
- package/dist/templates/react-app/src/styles/css/antd-themes/{pink.css → _common/pink.css} +86 -0
- package/dist/templates/react-app/src/styles/css/antd-themes/index.css +4 -3
- package/dist/templates/react-app/src/styles/css/antd-themes/menu/_default.css +108 -0
- package/dist/templates/react-app/src/styles/css/antd-themes/menu/dark.css +67 -0
- package/dist/templates/react-app/src/styles/css/antd-themes/menu/index.css +3 -0
- package/dist/templates/react-app/src/styles/css/antd-themes/menu/pink.css +67 -0
- package/dist/templates/react-app/src/styles/css/antd-themes/pagination/_default.css +34 -0
- package/dist/templates/react-app/src/styles/css/antd-themes/pagination/dark.css +31 -0
- package/dist/templates/react-app/src/styles/css/antd-themes/pagination/index.css +3 -0
- package/dist/templates/react-app/src/styles/css/antd-themes/pagination/pink.css +36 -0
- package/dist/templates/react-app/src/styles/css/antd-themes/table/_default.css +44 -0
- package/dist/templates/react-app/src/styles/css/antd-themes/table/dark.css +43 -0
- package/dist/templates/react-app/src/styles/css/antd-themes/table/index.css +3 -0
- package/dist/templates/react-app/src/styles/css/antd-themes/table/pink.css +43 -0
- package/dist/templates/react-app/src/styles/css/page.css +4 -3
- package/dist/templates/react-app/src/styles/css/themes/_default.css +1 -0
- package/dist/templates/react-app/src/styles/css/themes/dark.css +1 -0
- package/dist/templates/react-app/src/styles/css/themes/pink.css +1 -0
- package/dist/templates/react-app/src/styles/css/zIndex.css +1 -1
- package/dist/templates/react-app/src/uikit/bridges/ExecutorPageBridge.ts +3 -3
- package/dist/templates/react-app/src/uikit/bridges/JSONStoragePageBridge.ts +2 -2
- package/dist/templates/react-app/src/uikit/bridges/NavigateBridge.ts +1 -1
- package/dist/templates/react-app/src/uikit/bridges/RequestPageBridge.ts +3 -3
- package/dist/templates/react-app/src/uikit/components/AppRouterProvider.tsx +35 -0
- package/dist/templates/react-app/src/uikit/components/BaseHeader.tsx +15 -11
- package/dist/templates/react-app/src/uikit/components/BaseRouteProvider.tsx +14 -11
- package/dist/templates/react-app/src/uikit/components/BaseRouteSeo.tsx +18 -0
- package/dist/templates/react-app/src/uikit/components/BootstrapsProvider.tsx +13 -0
- package/dist/templates/react-app/src/uikit/components/ClientSeo.tsx +62 -0
- package/dist/templates/react-app/src/uikit/components/ComboProvider.tsx +38 -0
- package/dist/templates/react-app/src/uikit/components/LanguageSwitcher.tsx +48 -27
- package/dist/templates/react-app/src/uikit/components/Loading.tsx +4 -2
- package/dist/templates/react-app/src/uikit/components/LocaleLink.tsx +4 -5
- package/dist/templates/react-app/src/uikit/components/LogoutButton.tsx +34 -11
- package/dist/templates/react-app/src/uikit/components/MessageBaseList.tsx +240 -0
- package/dist/templates/react-app/src/uikit/components/ProcessExecutorProvider.tsx +9 -5
- package/dist/templates/react-app/src/uikit/components/RouterRenderComponent.tsx +6 -3
- package/dist/templates/react-app/src/uikit/components/ThemeSwitcher.tsx +97 -40
- package/dist/templates/react-app/src/uikit/components/UserAuthProvider.tsx +5 -5
- package/dist/templates/react-app/src/uikit/components/With.tsx +17 -0
- package/dist/templates/react-app/src/uikit/components/chatMessage/ChatMessageBridge.ts +176 -0
- package/dist/templates/react-app/src/uikit/components/chatMessage/ChatRoot.tsx +21 -0
- package/dist/templates/react-app/src/uikit/components/chatMessage/FocusBar.tsx +106 -0
- package/dist/templates/react-app/src/uikit/components/chatMessage/MessageApi.ts +271 -0
- package/dist/templates/react-app/src/uikit/components/chatMessage/MessageItem.tsx +102 -0
- package/dist/templates/react-app/src/uikit/components/chatMessage/MessagesList.tsx +86 -0
- package/dist/templates/react-app/src/uikit/contexts/BaseRouteContext.ts +17 -11
- package/dist/templates/react-app/src/uikit/contexts/IOCContext.ts +13 -0
- package/dist/templates/react-app/src/uikit/hooks/useAppTranslation.ts +26 -0
- package/dist/templates/react-app/src/uikit/hooks/useI18nGuard.ts +8 -11
- package/dist/templates/react-app/src/uikit/hooks/useI18nInterface.ts +25 -0
- package/dist/templates/react-app/src/uikit/hooks/useIOC.ts +35 -0
- package/dist/templates/react-app/src/uikit/hooks/useNavigateBridge.ts +3 -3
- package/dist/templates/react-app/src/uikit/hooks/useStrictEffect.ts +0 -1
- package/dist/templates/react-app/tsconfig.e2e.json +21 -0
- package/dist/templates/react-app/tsconfig.json +8 -1
- package/dist/templates/react-app/tsconfig.node.json +1 -1
- package/dist/templates/react-app/tsconfig.test.json +3 -1
- package/dist/templates/react-app/vite.config.ts +50 -34
- package/package.json +2 -1
- package/dist/configs/react-app/eslint.config.js +0 -94
- package/dist/templates/next-app/config/Identifier/common.error.ts +0 -41
- package/dist/templates/next-app/config/Identifier/common.ts +0 -69
- package/dist/templates/next-app/config/Identifier/page.about.ts +0 -181
- package/dist/templates/next-app/config/Identifier/page.admin.ts +0 -48
- package/dist/templates/next-app/config/Identifier/page.executor.ts +0 -272
- package/dist/templates/next-app/config/Identifier/page.identifiter.ts +0 -39
- package/dist/templates/next-app/config/Identifier/page.jsonStorage.ts +0 -72
- package/dist/templates/next-app/config/Identifier/page.request.ts +0 -182
- package/dist/templates/next-app/src/base/cases/ChatAction.ts +0 -21
- package/dist/templates/next-app/src/base/cases/FocusBarAction.ts +0 -36
- package/dist/templates/next-app/src/base/cases/RequestState.ts +0 -20
- package/dist/templates/next-app/src/base/port/AdminPageInterface.ts +0 -85
- package/dist/templates/next-app/src/base/port/AsyncStateInterface.ts +0 -7
- package/dist/templates/next-app/src/base/services/AdminUserService.ts +0 -45
- package/dist/templates/next-app/src/uikit/components/ChatRoot.tsx +0 -17
- package/dist/templates/next-app/src/uikit/components/chat/ChatActionInterface.ts +0 -30
- package/dist/templates/next-app/src/uikit/components/chat/ChatFocusBar.tsx +0 -65
- package/dist/templates/next-app/src/uikit/components/chat/ChatMessages.tsx +0 -59
- package/dist/templates/next-app/src/uikit/components/chat/ChatWrap.tsx +0 -28
- package/dist/templates/next-app/src/uikit/components/chat/FocusBarActionInterface.ts +0 -19
- package/dist/templates/next-app/src/uikit/hook/useMountedClient.ts +0 -17
- package/dist/templates/next-app/src/uikit/hook/useStore.ts +0 -15
- package/dist/templates/react-app/__tests__/__mocks__/I18nService.ts +0 -13
- package/dist/templates/react-app/__tests__/src/App.test.tsx +0 -139
- package/dist/templates/react-app/config/Identifier/page.identifiter.ts +0 -39
- package/dist/templates/react-app/config/i18n.ts +0 -15
- package/dist/templates/react-app/docs/en/project-structure.md +0 -434
- package/dist/templates/react-app/docs/zh/project-structure.md +0 -434
- package/dist/templates/react-app/src/base/cases/RequestState.ts +0 -20
- package/dist/templates/react-app/src/base/port/AsyncStateInterface.ts +0 -7
- package/dist/templates/react-app/src/uikit/hooks/useDocumentTitle.ts +0 -15
- package/dist/templates/react-app/src/uikit/hooks/useStore.ts +0 -15
|
@@ -3,163 +3,157 @@
|
|
|
3
3
|
* @localZh 登录
|
|
4
4
|
* @localEn Login
|
|
5
5
|
*/
|
|
6
|
-
export const 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 = '
|
|
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 = '
|
|
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 = '
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
159
|
+
export const PAGE_LOGIN_CREATE_ACCOUNT2 = 'page_login:create_account2';
|
package/dist/templates/next-app/config/Identifier/{page.register.ts → pages/page.register.ts}
RENAMED
|
@@ -3,166 +3,167 @@
|
|
|
3
3
|
* @localZh 创建账号
|
|
4
4
|
* @localEn Create Account
|
|
5
5
|
*/
|
|
6
|
-
export const 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 = '
|
|
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 = '
|
|
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 = '
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
114
|
-
'
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
19
|
-
getStartedTitle: i18nKeys.
|
|
20
|
-
getStartedDescription: i18nKeys.
|
|
21
|
-
getStartedButton: i18nKeys.
|
|
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
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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:
|
|
14
|
-
description:
|
|
15
|
-
content:
|
|
16
|
-
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:
|
|
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:
|
|
27
|
-
description:
|
|
28
|
-
content:
|
|
29
|
-
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
|
-
|
|
32
|
-
|
|
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
|
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { COMMON_I18N_KEY_INVALID } from '@config/Identifier';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 用于校验 i18n 键的格式
|
|
6
|
+
*
|
|
7
|
+
* 冒号分隔命名空间和键
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```
|
|
11
|
+
* "namespace:key1"
|
|
12
|
+
* "namespace:key_2"
|
|
13
|
+
* "namespace:key_2__3"
|
|
14
|
+
* "namespace_1:key_2__3__4"
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export const i18nKeySchema = z
|
|
18
|
+
.string()
|
|
19
|
+
.regex(
|
|
20
|
+
/^[a-zA-Z][a-zA-Z0-9_-]*:[a-zA-Z][a-zA-Z0-9_-]*$/,
|
|
21
|
+
COMMON_I18N_KEY_INVALID
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
export type I18nKeySchema = z.infer<typeof i18nKeySchema>;
|
|
25
|
+
|
|
26
|
+
export function splitI18nKey(source: string): {
|
|
27
|
+
namespace: string;
|
|
28
|
+
key: string;
|
|
29
|
+
} {
|
|
30
|
+
const [namespace, key] = source.split(':');
|
|
31
|
+
return { namespace, key };
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function joinI18nKey(namespace: string, ...key: string[]): string {
|
|
35
|
+
return `${namespace}:${key.join('__')}`;
|
|
36
|
+
}
|