@qlover/create-app 0.7.6 → 0.7.8

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 (104) hide show
  1. package/CHANGELOG.md +328 -0
  2. package/dist/index.cjs +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/templates/next-app/.env.template +22 -0
  5. package/dist/templates/next-app/.prettierignore +58 -0
  6. package/dist/templates/next-app/README.md +36 -0
  7. package/dist/templates/next-app/build/generateLocales.ts +25 -0
  8. package/dist/templates/next-app/config/IOCIdentifier.ts +58 -0
  9. package/dist/templates/next-app/config/Identifier/common.error.ts +41 -0
  10. package/dist/templates/next-app/config/Identifier/common.ts +62 -0
  11. package/dist/templates/next-app/config/Identifier/index.ts +10 -0
  12. package/dist/templates/next-app/config/Identifier/page.about.ts +181 -0
  13. package/dist/templates/next-app/config/Identifier/page.executor.ts +272 -0
  14. package/dist/templates/next-app/config/Identifier/page.home.ts +63 -0
  15. package/dist/templates/next-app/config/Identifier/page.identifiter.ts +39 -0
  16. package/dist/templates/next-app/config/Identifier/page.jsonStorage.ts +72 -0
  17. package/dist/templates/next-app/config/Identifier/page.login.ts +165 -0
  18. package/dist/templates/next-app/config/Identifier/page.register.ts +147 -0
  19. package/dist/templates/next-app/config/Identifier/page.request.ts +182 -0
  20. package/dist/templates/next-app/config/common.ts +34 -0
  21. package/dist/templates/next-app/config/i18n/PageI18nInterface.ts +51 -0
  22. package/dist/templates/next-app/config/i18n/i18nConfig.ts +12 -0
  23. package/dist/templates/next-app/config/i18n/index.ts +3 -0
  24. package/dist/templates/next-app/config/i18n/loginI18n.ts +42 -0
  25. package/dist/templates/next-app/config/theme.ts +23 -0
  26. package/dist/templates/next-app/docs/env.md +94 -0
  27. package/dist/templates/next-app/eslint.config.mjs +181 -0
  28. package/dist/templates/next-app/next.config.ts +21 -0
  29. package/dist/templates/next-app/package.json +58 -0
  30. package/dist/templates/next-app/postcss.config.mjs +5 -0
  31. package/dist/templates/next-app/public/file.svg +1 -0
  32. package/dist/templates/next-app/public/globe.svg +1 -0
  33. package/dist/templates/next-app/public/locales/en.json +184 -0
  34. package/dist/templates/next-app/public/locales/zh.json +184 -0
  35. package/dist/templates/next-app/public/next.svg +1 -0
  36. package/dist/templates/next-app/public/vercel.svg +1 -0
  37. package/dist/templates/next-app/public/window.svg +1 -0
  38. package/dist/templates/next-app/src/app/[locale]/favicon.ico +0 -0
  39. package/dist/templates/next-app/src/app/[locale]/layout.tsx +32 -0
  40. package/dist/templates/next-app/src/app/[locale]/login/FeatureItem.tsx +13 -0
  41. package/dist/templates/next-app/src/app/[locale]/login/LoginForm.tsx +114 -0
  42. package/dist/templates/next-app/src/app/[locale]/login/page.tsx +86 -0
  43. package/dist/templates/next-app/src/app/[locale]/not-found.tsx +24 -0
  44. package/dist/templates/next-app/src/app/[locale]/page.tsx +119 -0
  45. package/dist/templates/next-app/src/base/cases/AppConfig.ts +15 -0
  46. package/dist/templates/next-app/src/base/cases/DialogHandler.ts +92 -0
  47. package/dist/templates/next-app/src/base/cases/InversifyContainer.ts +33 -0
  48. package/dist/templates/next-app/src/base/cases/NavigateBridge.ts +16 -0
  49. package/dist/templates/next-app/src/base/cases/PageParams.ts +74 -0
  50. package/dist/templates/next-app/src/base/cases/RouterService.ts +35 -0
  51. package/dist/templates/next-app/src/base/cases/ServerAuth.ts +17 -0
  52. package/dist/templates/next-app/src/base/cases/ServerErrorHandler.ts +27 -0
  53. package/dist/templates/next-app/src/base/port/I18nServiceInterface.ts +25 -0
  54. package/dist/templates/next-app/src/base/port/IOCInterface.ts +24 -0
  55. package/dist/templates/next-app/src/base/port/ParamsHandlerInterface.ts +11 -0
  56. package/dist/templates/next-app/src/base/port/RouterInterface.ts +11 -0
  57. package/dist/templates/next-app/src/base/port/ServerAuthInterface.ts +3 -0
  58. package/dist/templates/next-app/src/base/port/ServerInterface.ts +12 -0
  59. package/dist/templates/next-app/src/base/port/UserServiceInterface.ts +11 -0
  60. package/dist/templates/next-app/src/base/services/I18nService.ts +115 -0
  61. package/dist/templates/next-app/src/base/services/UserService.ts +23 -0
  62. package/dist/templates/next-app/src/base/types/PageProps.ts +9 -0
  63. package/dist/templates/next-app/src/core/bootstraps/BootstrapClient.ts +61 -0
  64. package/dist/templates/next-app/src/core/bootstraps/BootstrapServer.ts +78 -0
  65. package/dist/templates/next-app/src/core/bootstraps/BootstrapsRegistry.ts +47 -0
  66. package/dist/templates/next-app/src/core/bootstraps/IocIdentifierTest.ts +26 -0
  67. package/dist/templates/next-app/src/core/bootstraps/PrintBootstrap.ts +18 -0
  68. package/dist/templates/next-app/src/core/clientIoc/ClientIOC.ts +37 -0
  69. package/dist/templates/next-app/src/core/clientIoc/ClientIOCRegister.ts +97 -0
  70. package/dist/templates/next-app/src/core/globals.ts +24 -0
  71. package/dist/templates/next-app/src/core/serverIoc/ServerIOC.ts +52 -0
  72. package/dist/templates/next-app/src/core/serverIoc/ServerIOCRegister.ts +63 -0
  73. package/dist/templates/next-app/src/i18n/request.ts +21 -0
  74. package/dist/templates/next-app/src/i18n/routing.ts +30 -0
  75. package/dist/templates/next-app/src/middleware.ts +25 -0
  76. package/dist/templates/next-app/src/styles/css/antd-themes/_default.css +239 -0
  77. package/dist/templates/next-app/src/styles/css/antd-themes/dark.css +178 -0
  78. package/dist/templates/next-app/src/styles/css/antd-themes/index.css +3 -0
  79. package/dist/templates/next-app/src/styles/css/antd-themes/no-context.css +34 -0
  80. package/dist/templates/next-app/src/styles/css/antd-themes/pink.css +204 -0
  81. package/dist/templates/next-app/src/styles/css/index.css +6 -0
  82. package/dist/templates/next-app/src/styles/css/page.css +19 -0
  83. package/dist/templates/next-app/src/styles/css/tailwind.css +5 -0
  84. package/dist/templates/next-app/src/styles/css/themes/_default.css +29 -0
  85. package/dist/templates/next-app/src/styles/css/themes/dark.css +29 -0
  86. package/dist/templates/next-app/src/styles/css/themes/index.css +3 -0
  87. package/dist/templates/next-app/src/styles/css/themes/pink.css +29 -0
  88. package/dist/templates/next-app/src/styles/css/zIndex.css +9 -0
  89. package/dist/templates/next-app/src/uikit/components/BaseHeader.tsx +47 -0
  90. package/dist/templates/next-app/src/uikit/components/BootstrapsProvider.tsx +37 -0
  91. package/dist/templates/next-app/src/uikit/components/ComboProvider.tsx +50 -0
  92. package/dist/templates/next-app/src/uikit/components/LanguageSwitcher.tsx +52 -0
  93. package/dist/templates/next-app/src/uikit/components/LocaleLink.tsx +51 -0
  94. package/dist/templates/next-app/src/uikit/components/LogoutButton.tsx +34 -0
  95. package/dist/templates/next-app/src/uikit/components/NextIntlProvider.tsx +21 -0
  96. package/dist/templates/next-app/src/uikit/components/ThemeSwitcher.tsx +99 -0
  97. package/dist/templates/next-app/src/uikit/context/IOCContext.ts +13 -0
  98. package/dist/templates/next-app/src/uikit/hook/useI18nInterface.ts +28 -0
  99. package/dist/templates/next-app/src/uikit/hook/useIOC.ts +37 -0
  100. package/dist/templates/next-app/src/uikit/hook/useMountedClient.ts +11 -0
  101. package/dist/templates/next-app/src/uikit/hook/useStore.ts +15 -0
  102. package/dist/templates/next-app/tailwind.config.ts +8 -0
  103. package/dist/templates/next-app/tsconfig.json +36 -0
  104. package/package.json +1 -1
@@ -0,0 +1,42 @@
1
+ import * as i18nKeys from '../Identifier/page.login';
2
+
3
+ /**
4
+ * Login page i18n interface
5
+ *
6
+ * @description
7
+ * - welcome: welcome message
8
+ */
9
+ export type LoginI18nInterface = typeof loginI18n;
10
+
11
+ export const loginI18n = Object.freeze({
12
+ // basic meta properties
13
+ title: i18nKeys.PAGE_LOGIN_TITLE,
14
+ description: i18nKeys.PAGE_LOGIN_DESCRIPTION,
15
+ content: i18nKeys.PAGE_LOGIN_CONTENT,
16
+ keywords: i18nKeys.PAGE_LOGIN_KEYWORDS,
17
+
18
+ // login page
19
+ welcome: i18nKeys.LOGIN_WELCOME,
20
+ subtitle: i18nKeys.LOGIN_SUBTITLE,
21
+ feature_ai_paths: i18nKeys.LOGIN_FEATURE_AI_PATHS,
22
+ feature_smart_recommendations: i18nKeys.LOGIN_FEATURE_SMART_RECOMMENDATIONS,
23
+ feature_progress_tracking: i18nKeys.LOGIN_FEATURE_PROGRESS_TRACKING,
24
+
25
+ // login form
26
+ emailRequired: i18nKeys.LOGIN_EMAIL_REQUIRED,
27
+ email: i18nKeys.LOGIN_EMAIL,
28
+ emailTitle: i18nKeys.LOGIN_EMAIL_TITLE,
29
+ passwordRequired: i18nKeys.LOGIN_PASSWORD_REQUIRED,
30
+ password: i18nKeys.LOGIN_PASSWORD,
31
+ passwordTitle: i18nKeys.LOGIN_PASSWORD_TITLE,
32
+ forgotPasswordTitle: i18nKeys.LOGIN_FORGOT_PASSWORD_TITLE,
33
+ forgotPassword: i18nKeys.LOGIN_FORGOT_PASSWORD,
34
+ buttonTitle: i18nKeys.LOGIN_BUTTON_TITLE,
35
+ button: i18nKeys.LOGIN_BUTTON,
36
+ continueWith: i18nKeys.LOGIN_CONTINUE_WITH,
37
+ withGoogleTitle: i18nKeys.LOGIN_WITH_GOOGLE_TITLE,
38
+ withGoogle: i18nKeys.LOGIN_WITH_GOOGLE,
39
+ noAccount: i18nKeys.LOGIN_NO_ACCOUNT,
40
+ createAccountTitle: i18nKeys.LOGIN_CREATE_ACCOUNT_TITLE,
41
+ createAccount: i18nKeys.LOGIN_CREATE_ACCOUNT
42
+ });
@@ -0,0 +1,23 @@
1
+ import type { ThemeConfig } from 'antd';
2
+
3
+ /**
4
+ * @type {import('@qlover/corekit-bridge').ThemeConfig}
5
+ */
6
+ export const themeConfig = {
7
+ domAttribute: 'data-theme',
8
+ defaultTheme: 'system',
9
+ target: 'html',
10
+ supportedThemes: ['light', 'dark', 'pink'],
11
+ storageKey: 'fe_theme',
12
+ init: true,
13
+ prioritizeStore: true,
14
+
15
+ antdTheme: {
16
+ cssVar: {
17
+ key: 'fe-theme',
18
+ prefix: 'fe'
19
+ }
20
+ } as ThemeConfig
21
+ } as const;
22
+
23
+ export type CommonThemeConfig = typeof themeConfig;
@@ -0,0 +1,94 @@
1
+ # 环境配置指南
2
+
3
+ 本项目使用 Next.js 内置的环境变量系统来管理不同环境的配置。
4
+
5
+ ## 环境文件
6
+
7
+ 项目支持以下环境配置文件:
8
+
9
+ - `.env` - 默认环境配置,适用于所有环境
10
+ - `.env.local` - 本地环境配置,会覆盖 `.env`(不应提交到版本控制)
11
+ - `.env.development` - 开发环境配置
12
+ - `.env.production` - 生产环境配置
13
+ - `.env.test` - 测试环境配置
14
+
15
+ 加载优先级(从高到低):
16
+
17
+ 1. `.env.local`
18
+ 2. `.env.[environment]`
19
+ 3. `.env`
20
+
21
+ ## 使用方法
22
+
23
+ 1. 复制 `.env.template` 创建对应环境的配置文件:
24
+
25
+ ```bash
26
+ # 开发环境
27
+ cp .env.template .env.development
28
+
29
+ # 生产环境
30
+ cp .env.template .env.production
31
+
32
+ # 测试环境
33
+ cp .env.template .env.test
34
+ ```
35
+
36
+ 2. 修改对应环境的配置文件内容
37
+
38
+ 3. 启动应用时指定环境:
39
+
40
+ ```bash
41
+ # 开发环境
42
+ APP_ENV=development npm run dev
43
+
44
+ # 生产环境
45
+ APP_ENV=production npm run build
46
+ APP_ENV=production npm run start
47
+
48
+ # 测试环境
49
+ APP_ENV=test npm run test
50
+ ```
51
+
52
+ ## 在代码中使用环境变量
53
+
54
+ 1. 服务端和客户端都可访问的变量:
55
+
56
+ ```typescript
57
+ // 在 .env 文件中定义
58
+ PUBLIC_API_URL=http://api.example.com
59
+
60
+ // 在代码中使用
61
+ console.log(process.env.PUBLIC_API_URL)
62
+ ```
63
+
64
+ 2. 仅服务端可访问的变量:
65
+
66
+ ```typescript
67
+ // 在 .env 文件中定义(以 PRIVATE_ 开头)
68
+ PRIVATE_API_KEY = secret_key;
69
+
70
+ // 在服务端代码中使用
71
+ console.log(process.env.PRIVATE_API_KEY);
72
+ ```
73
+
74
+ 3. 使用运行时配置:
75
+
76
+ ```typescript
77
+ import getConfig from 'next/config';
78
+
79
+ const { serverRuntimeConfig, publicRuntimeConfig } = getConfig();
80
+
81
+ // 服务端配置
82
+ console.log(serverRuntimeConfig.mySecret);
83
+
84
+ // 公共配置
85
+ console.log(publicRuntimeConfig.appEnv);
86
+ ```
87
+
88
+ ## 注意事项
89
+
90
+ 1. 不要将包含敏感信息的 `.env` 文件提交到版本控制
91
+ 2. 确保 `.env.local` 和 `*.env` 文件在 `.gitignore` 中
92
+ 3. 使用 `.env.template` 作为配置模板
93
+ 4. 环境变量命名推荐使用大写字母和下划线
94
+ 5. 在 CI/CD 中使用环境变量时,直接在平台中配置,不要使用 .env 文件
@@ -0,0 +1,181 @@
1
+ import { dirname } from 'path';
2
+ import { fileURLToPath } from 'url';
3
+ import { FlatCompat } from '@eslint/eslintrc';
4
+ import importPlugin from 'eslint-plugin-import';
5
+ import prettierPlugin from 'eslint-plugin-prettier';
6
+ import unusedImports from 'eslint-plugin-unused-imports';
7
+ import qloverEslint from '@qlover/eslint-plugin';
8
+
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = dirname(__filename);
11
+
12
+ const compat = new FlatCompat({ baseDirectory: __dirname });
13
+
14
+ const eslintConfig = [
15
+ ...compat.extends(
16
+ 'next/core-web-vitals',
17
+ 'next/typescript',
18
+ 'plugin:import/recommended',
19
+ 'plugin:import/typescript',
20
+ 'plugin:prettier/recommended' // 添加 prettier 推荐配置
21
+ ),
22
+ {
23
+ ignores: [
24
+ // dependencies
25
+ 'node_modules/**',
26
+ '.pnp/**',
27
+ '.pnp.js',
28
+
29
+ // testing
30
+ 'coverage/**',
31
+ 'test-results/**',
32
+
33
+ // next.js
34
+ '.next/**',
35
+ 'out/**',
36
+ 'build/**',
37
+ 'dist/**',
38
+
39
+ // misc
40
+ '*.pem',
41
+
42
+ // debug
43
+ 'npm-debug.log*',
44
+ 'yarn-debug.log*',
45
+ 'yarn-error.log*',
46
+
47
+ // env files
48
+ '.env*',
49
+
50
+ // vercel
51
+ '.vercel/**',
52
+
53
+ // typescript
54
+ '*.tsbuildinfo',
55
+ 'next-env.d.ts',
56
+
57
+ // cache
58
+ '.cache/**',
59
+ '.eslintcache',
60
+
61
+ // IDE
62
+ '.idea/**',
63
+ '.vscode/**',
64
+
65
+ // package manager
66
+ 'package-lock.json',
67
+ 'yarn.lock',
68
+ 'pnpm-lock.yaml',
69
+
70
+ // config files
71
+ '*.config.js',
72
+ '*.config.mjs',
73
+ '*.config.cjs',
74
+ 'postcss.config.*',
75
+ 'tailwind.config.*',
76
+ 'next.config.*',
77
+ 'jest.config.*',
78
+ 'babel.config.*',
79
+
80
+ // static assets
81
+ 'public/**',
82
+ '**/*.min.js',
83
+ '**/*.bundle.js',
84
+ '**/vendor/**',
85
+
86
+ // generated files
87
+ 'coverage/**',
88
+ '.nyc_output/**',
89
+ 'storybook-static/**'
90
+ ]
91
+ },
92
+ {
93
+ plugins: {
94
+ 'unused-imports': unusedImports,
95
+ import: importPlugin,
96
+ prettier: prettierPlugin,
97
+ '@qlover-eslint': qloverEslint
98
+ },
99
+ rules: {
100
+ '@qlover-eslint/ts-class-method-return': 'error',
101
+ '@qlover-eslint/require-root-testid': 'error',
102
+ // 禁用原始的 no-unused-vars,使用 unused-imports 的规则替代
103
+ '@typescript-eslint/no-unused-vars': 'off',
104
+ // 强制使用 import type 导入类型
105
+ '@typescript-eslint/consistent-type-imports': [
106
+ 'error',
107
+ {
108
+ prefer: 'type-imports',
109
+ disallowTypeAnnotations: true,
110
+ fixStyle: 'separate-type-imports'
111
+ }
112
+ ],
113
+ // 检查未使用的导入
114
+ 'unused-imports/no-unused-imports': 'error',
115
+ // 检查未使用的变量,但允许以下划线开头的变量
116
+ 'unused-imports/no-unused-vars': [
117
+ 'error',
118
+ {
119
+ vars: 'all',
120
+ varsIgnorePattern: '^_',
121
+ args: 'after-used',
122
+ argsIgnorePattern: '^_'
123
+ }
124
+ ],
125
+ // import 语句排序规则
126
+ 'import/order': [
127
+ 'error',
128
+ {
129
+ groups: [
130
+ 'builtin', // Node.js 内置模块
131
+ 'external', // 第三方模块
132
+ 'internal', // 内部模块(使用 alias 的导入)
133
+ ['parent', 'sibling'], // 父级和同级模块
134
+ 'index', // 当前目录下的模块
135
+ 'object', // 对象导入
136
+ 'type' // 类型导入
137
+ ],
138
+ pathGroups: [
139
+ {
140
+ pattern: '@/**',
141
+ group: 'internal',
142
+ position: 'after'
143
+ }
144
+ ],
145
+ // "newlines-between": "always", // 不同组之间空一行
146
+ alphabetize: {
147
+ order: 'asc', // 按字母顺序排序
148
+ caseInsensitive: true // 排序时忽略大小写
149
+ }
150
+ }
151
+ ],
152
+ // Prettier 配置
153
+ 'prettier/prettier': [
154
+ 'error',
155
+ {
156
+ singleQuote: true,
157
+ trailingComma: 'none',
158
+ endOfLine: 'lf'
159
+ }
160
+ ],
161
+ // 默认禁用 export default
162
+ 'import/no-default-export': 'error',
163
+ }
164
+ },
165
+ // 为特定文件允许 default export
166
+ {
167
+ files: [
168
+ 'src/app/**/page.tsx',
169
+ 'src/app/**/layout.tsx',
170
+ 'src/app/**/not-found.tsx',
171
+ 'src/i18n/request.ts',
172
+ 'src/middleware.ts',
173
+ '**/*.config.*'
174
+ ],
175
+ rules: {
176
+ 'import/no-default-export': 'off'
177
+ }
178
+ }
179
+ ];
180
+
181
+ export default eslintConfig;
@@ -0,0 +1,21 @@
1
+ import createNextIntlPlugin from 'next-intl/plugin';
2
+ import { generateLocales } from './build/generateLocales';
3
+ import type { NextConfig } from 'next';
4
+
5
+ const withNextIntl = createNextIntlPlugin();
6
+
7
+ // 在构建开始时生成本地化文件
8
+ generateLocales().catch((error) => {
9
+ console.error('Failed to generate locales:', error);
10
+ });
11
+
12
+ const nextConfig: NextConfig = {
13
+ turbopack: {
14
+ root: __dirname // 明确指定根目录
15
+ },
16
+ env: {
17
+ APP_ENV: process.env.APP_ENV
18
+ }
19
+ };
20
+
21
+ export default withNextIntl(nextConfig);
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "next-app",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "dev": "cross-env APP_ENV=localhost next dev --turbopack",
7
+ "dev:staging": "cross-env APP_ENV=staging next dev --turbopack",
8
+ "dev:prod": "cross-env APP_ENV=production next dev --turbopack",
9
+ "build": "cross-env APP_ENV=localhost next build --turbopack",
10
+ "build:staging": "cross-env APP_ENV=staging next build --turbopack",
11
+ "build:prod": "cross-env APP_ENV=production next build --turbopack",
12
+ "start": "next start",
13
+ "lint": "eslint .",
14
+ "lint:fix": "eslint . --ext .ts,.tsx --fix",
15
+ "format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,css,scss,md}\"",
16
+ "format:check": "prettier --check \"**/*.{js,jsx,ts,tsx,json,css,scss,md}\"",
17
+ "fix": "npm run lint:fix && npm run format"
18
+ },
19
+ "dependencies": {
20
+ "@ant-design/icons": "^6.0.0",
21
+ "@ant-design/nextjs-registry": "^1.1.0",
22
+ "@ant-design/v5-patch-for-react-19": "^1.0.3",
23
+ "@brain-toolkit/antd-theme-override": "^0.0.3",
24
+ "@brain-toolkit/bridge": "^0.0.1",
25
+ "@qlover/corekit-bridge": "^1.6.4",
26
+ "@qlover/fe-corekit": "^2.1.0",
27
+ "@qlover/slice-store-react": "^1.4.1",
28
+ "antd": "^5.27.1",
29
+ "clsx": "^2.1.1",
30
+ "inversify": "^7.8.1",
31
+ "lodash": "^4.17.21",
32
+ "next": "15.5.0",
33
+ "next-intl": "^4.3.5",
34
+ "next-themes": "^0.4.6",
35
+ "react": "19.1.0",
36
+ "react-dom": "19.1.0"
37
+ },
38
+ "devDependencies": {
39
+ "@brain-toolkit/ts2locales": "^0.2.3",
40
+ "@eslint/eslintrc": "^3",
41
+ "@tailwindcss/postcss": "^4",
42
+ "@types/lodash": "^4.17.20",
43
+ "@types/node": "^20",
44
+ "@types/react": "^19",
45
+ "@types/react-dom": "^19",
46
+ "@qlover/eslint-plugin": "latest",
47
+ "cross-env": "^7.0.3",
48
+ "eslint": "^9",
49
+ "eslint-config-next": "15.5.0",
50
+ "eslint-config-prettier": "^10.1.8",
51
+ "eslint-plugin-import": "^2.32.0",
52
+ "eslint-plugin-prettier": "^5.5.4",
53
+ "eslint-plugin-unused-imports": "^4.2.0",
54
+ "prettier": "^3.6.2",
55
+ "tailwindcss": "^4",
56
+ "typescript": "^5"
57
+ }
58
+ }
@@ -0,0 +1,5 @@
1
+ const config = {
2
+ plugins: ["@tailwindcss/postcss"],
3
+ };
4
+
5
+ export default config;
@@ -0,0 +1 @@
1
+ <svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g clip-path="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.27 14.1a6.5 6.5 0 0 0 3.67-3.45q-1.24.21-2.7.34-.31 1.83-.97 3.1M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.48-1.52a7 7 0 0 1-.96 0H7.5a4 4 0 0 1-.84-1.32q-.38-.89-.63-2.08a40 40 0 0 0 3.92 0q-.25 1.2-.63 2.08a4 4 0 0 1-.84 1.31zm2.94-4.76q1.66-.15 2.95-.43a7 7 0 0 0 0-2.58q-1.3-.27-2.95-.43a18 18 0 0 1 0 3.44m-1.27-3.54a17 17 0 0 1 0 3.64 39 39 0 0 1-4.3 0 17 17 0 0 1 0-3.64 39 39 0 0 1 4.3 0m1.1-1.17q1.45.13 2.69.34a6.5 6.5 0 0 0-3.67-3.44q.65 1.26.98 3.1M8.48 1.5l.01.02q.41.37.84 1.31.38.89.63 2.08a40 40 0 0 0-3.92 0q.25-1.2.63-2.08a4 4 0 0 1 .85-1.32 7 7 0 0 1 .96 0m-2.75.4a6.5 6.5 0 0 0-3.67 3.44 29 29 0 0 1 2.7-.34q.31-1.83.97-3.1M4.58 6.28q-1.66.16-2.95.43a7 7 0 0 0 0 2.58q1.3.27 2.95.43a18 18 0 0 1 0-3.44m.17 4.71q-1.45-.12-2.69-.34a6.5 6.5 0 0 0 3.67 3.44q-.65-1.27-.98-3.1" fill="#666"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg>
@@ -0,0 +1,184 @@
1
+ {
2
+ "err__local__no__user__token": "Local no user token",
3
+ "err__global__no__window": "Global no window",
4
+ "err__within__page__provider": "Must be used in PageProvider",
5
+ "err__response__no__token": "Response not token value",
6
+ "err__not__found__component": "Not found component",
7
+ "header__theme__default": "Default Theme",
8
+ "header__theme__dark": "Dark Theme",
9
+ "header__theme__pink": "Pink Theme",
10
+ "auth__logout__dialog__title": "Logout",
11
+ "auth__logout__dialog__content": "Are you sure you want to logout?",
12
+ "page__404__title": "404 Page Not Found",
13
+ "page__404__description": "404 Page Description",
14
+ "page__500__title": "500 Page Error",
15
+ "page__500__description": "500 Page Description",
16
+ "page__about__title": "About",
17
+ "page__about__description": "Learn more about our project and team information",
18
+ "about__message__test": "This is a test message",
19
+ "about__notification__title": "Notification Title",
20
+ "about__notification__description": "This is a test notification",
21
+ "about__button__message": "Show Message",
22
+ "about__button__message2": "Static Message",
23
+ "about__button__notification": "Show Notification",
24
+ "about__button__notification2": "Static Notification",
25
+ "about__tooltip__text": "This is a tooltip text",
26
+ "about__button__tooltip": "Hover to show Tooltip",
27
+ "about__modal__title": "Modal Example",
28
+ "about__modal__content": "This is modal content",
29
+ "about__button__modal": "Show Modal",
30
+ "about__drawer__title": "Drawer Example",
31
+ "about__drawer__content": "This is drawer content",
32
+ "about__button__drawer": "Show Drawer",
33
+ "about__popover__content": "This is a popover card",
34
+ "about__popover__title": "Popover Title",
35
+ "about__button__popover": "Show Popover",
36
+ "about__popconfirm__title": "Confirmation",
37
+ "about__popconfirm__description": "Are you sure you want to perform this action?",
38
+ "about__button__popconfirm": "Show Popconfirm",
39
+ "about__alert__message": "This is a warning alert",
40
+ "about__ok__text": "OK",
41
+ "about__cancel__text": "Cancel",
42
+ "page__executor__title": "Executor Examples",
43
+ "page__executor__description": "A powerful task executor supporting multiple task types and state management",
44
+ "page__error_identifier__title": "Error Identifier",
45
+ "page__executor__main_title": "Executor",
46
+ "page__executor__test_plugin__title": "Test Plugin",
47
+ "page__executor__task__status__pending": "Pending",
48
+ "page__executor__task__status__running": "Running",
49
+ "page__executor__task__status__completed": "Completed",
50
+ "page__executor__task__status__failed": "Failed",
51
+ "page__executor__task__type__data_sync": "Data Sync",
52
+ "page__executor__task__type__report": "Report Generation",
53
+ "page__executor__task__type__maintenance": "System Maintenance",
54
+ "page__executor__task__type__backup": "Backup",
55
+ "page__executor__task__duration__unit": "minutes",
56
+ "page__executor__task__start": "Start",
57
+ "page__executor__task__stop": "Stop",
58
+ "page__executor__task__success": "Task %{name} executed successfully",
59
+ "page__executor__task__failure": "Task %{name} execution failed",
60
+ "page__executor__plugin__test__success": "Plugin test successful",
61
+ "page__executor__plugin__test__failure": "Plugin test failed",
62
+ "page__executor__custom_task__url_required": "Please enter URL",
63
+ "page__executor__custom_task__name": "Custom Task %{method} %{url}",
64
+ "page__executor__create_task__title": "Create Custom Task",
65
+ "page__executor__create_button": "Create",
66
+ "page__executor__enter_url": "Enter URL",
67
+ "page__executor__task_list__title": "Task List",
68
+ "page__executor__task_stats__total": "Total Tasks",
69
+ "page__executor__task_stats__running": "Running",
70
+ "page__executor__task_stats__completed": "Completed",
71
+ "page__executor__task_stats__failed": "Failed",
72
+ "page__executor__task_history__title": "Execution History",
73
+ "page__executor__help__title": "Need Help?",
74
+ "page__executor__help__description": "Having issues? Check our task execution guide or contact support",
75
+ "page__executor__view_guide": "View Guide",
76
+ "page__executor__contact_support": "Contact Support",
77
+ "page__executor__request__timeout": "Request Timeout",
78
+ "page__home__title": "Home",
79
+ "page__home__description": "A modern frontend utility library collection providing various practical tools and components",
80
+ "home__welcome": "Welcome to the home page",
81
+ "home__description": "A modern frontend utility library collection providing various practical tools and components",
82
+ "page__error__identifier__description": "Error identifier usage and examples",
83
+ "home__explore": "Explore",
84
+ "home__get_started__title": "Ready to Get Started?",
85
+ "home__get_started__description": "Join us and discover the power of our utilities",
86
+ "home__get_started__button": "Get Started Now",
87
+ "page__error__identifier__main_title": "Error Identifier",
88
+ "page__error__identifier__source_description": "Identifier From: '@config/Identifier/error'",
89
+ "page__error__identifier__help__title": "Need Help?",
90
+ "page__error__identifier__help__description": "If you encounter any issues while using error identifiers, please contact our support team",
91
+ "page__error__identifier__contact_support": "Contact Support",
92
+ "page__jsonstorage__title": "JSONStorage Page",
93
+ "page__jsonstorage__description": "Use JSONStorage for data storage and management",
94
+ "page__jsonstorage__main_title": "JSONStorage Demo",
95
+ "page__jsonstorage__permanent_title": "Permanent Storage Test",
96
+ "page__jsonstorage__expire_title": "Expire Time Test",
97
+ "page__jsonstorage__timeout_title": "Request Timeout Setting",
98
+ "page__jsonstorage__format_title": "Test key: ${key}, Random value range: ${min}~${max}",
99
+ "page__jsonstorage__set_random": "Set Random Value",
100
+ "page__jsonstorage__current_value": "Current Value",
101
+ "page__jsonstorage__set_expire": "Set Random Value (with expire time)",
102
+ "page__jsonstorage__ms": "ms",
103
+ "page__login__title": "Login",
104
+ "page__login__description": "Login Page Description",
105
+ "login__title": "Login",
106
+ "login__email": "Email",
107
+ "login__username": "Username",
108
+ "login__password": "Password",
109
+ "login__login": "Login",
110
+ "login__welcome": "Welcome to the future of learning",
111
+ "login__subtitle": "Unlock personalized AI-powered learning experiences designed to accelerate your knowledge journey__",
112
+ "login__forgot_password": "Forgot your password?",
113
+ "login__continue_with": "or continue with",
114
+ "login__with_google": "Sign in with Google",
115
+ "login__no_account": "Don't have an account?",
116
+ "login__create_account": "Create one here",
117
+ "login__email_required": "Please input your email!",
118
+ "login__password_required": "Please input your password!",
119
+ "login__feature__ai_paths": "AI-powered personalized learning paths",
120
+ "login__feature__smart_recommendations": "Smart content recommendations",
121
+ "login__feature__progress_tracking": "Real-time progress tracking",
122
+ "login__email__title": "Enter email",
123
+ "login__password__title": "Enter password",
124
+ "login__forgot_password__title": "Reset password",
125
+ "login__button__title": "Sign in to account",
126
+ "login__with_google__title": "Sign in with Google account",
127
+ "login__create_account__title": "Create new account",
128
+ "page__register__title": "Create Account",
129
+ "page__register__description": "Create Account Page Description",
130
+ "register__title": "Create Account",
131
+ "register__subtitle": "Start your learning journey",
132
+ "register__username": "Username",
133
+ "register__username_required": "Please input your username!",
134
+ "register__email": "Email",
135
+ "register__email_required": "Please input your email!",
136
+ "register__password": "Password",
137
+ "register__password_required": "Please input your password!",
138
+ "register__confirm_password": "Confirm Password",
139
+ "register__confirm_password_required": "Please confirm your password!",
140
+ "register__password_mismatch": "The passwords you entered don't match!",
141
+ "register__button": "Register",
142
+ "register__terms_prefix": "By registering, you agree to our",
143
+ "register__terms_link": "Terms of Service",
144
+ "register__terms_and": "and",
145
+ "register__privacy_link": "Privacy Policy",
146
+ "register__have_account": "Already have an account?",
147
+ "register__login_link": "Sign in",
148
+ "register__feature__personalized": "Personalized Learning Experience",
149
+ "register__feature__support": "Expert Support and Guidance",
150
+ "register__feature__community": "Active Learning Community",
151
+ "register__terms_required": "Please agree to the Terms of Service and Privacy Policy",
152
+ "page__request__title": "Request Examples",
153
+ "page__request__description": "Demonstrate various request examples and usage",
154
+ "request__requestTimeout": "Request Timeout",
155
+ "request__helloResult": "Hello result is",
156
+ "request__helloError": "Hello error is",
157
+ "request__ipInfoResult": "IpInfo result is",
158
+ "request__ipInfo": "IpInfo",
159
+ "request__randomUser": "RandomUser",
160
+ "request__loading": "Loading______",
161
+ "request__randomUserResult": "RandomUser result is",
162
+ "request__randomUserError": "RandomUser error is",
163
+ "request__triggerAbortRequest": "Trigger Abort Request",
164
+ "request__stopAbortRequest": "Stop Abort Request",
165
+ "request__abortRequestResult": "Abort Request Result",
166
+ "request__abortRequestError": "Abort Request Error",
167
+ "page__request__timeout": "Request Timeout",
168
+ "page__request__hello__title": "AI API: Hello",
169
+ "page__request__hello__description": "Functional API using FetchURLPlugin, RequestCommonPlugin, ApiMockPlugin, RequestLogger plugins",
170
+ "page__request__hello__button": "Hello",
171
+ "page__request__ip_info__title": "FeApi: IP Information",
172
+ "page__request__ip_info__description": "RequestScheduler class API using FetchURLPlugin, RequestCommonPlugin, RequestLogger, ApiPickDataPlugin plugins, where ApiPickDataPlugin can flatten return types to data field",
173
+ "page__request__random_user__title": "UserApi: Random User",
174
+ "page__request__random_user__description": "RequestTransaction class API using FetchURLPlugin, RequestCommonPlugin, ApiMockPlugin, FetchAbortPlugin, RequestLogger, ApiCatchPlugin plugins, where FetchAbortPlugin can abort requests, ApiCatchPlugin can unify caught errors to apiCatchResult field",
175
+ "page__request__api_catch__title": "UserApi: Api Catch Result",
176
+ "page__request__abort__title": "UserApi: Abort Request",
177
+ "page__request__trigger_abort": "Trigger Abort Request",
178
+ "page__request__stop_abort": "Stop Abort Request",
179
+ "page__request__trigger_api_catch": "Trigger API Catch Result",
180
+ "page__request__stop_api_catch": "Stop API Catch Result",
181
+ "page__login__content": "Login Page Content",
182
+ "page__login__keywords": "Login Page Keywords",
183
+ "err__server__auth__error": "Server auth error"
184
+ }