@lark-apaas/coding-template-vite-react 0.1.12 → 0.1.13

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lark-apaas/coding-template-vite-react",
3
- "version": "0.1.12",
3
+ "version": "0.1.13",
4
4
  "description": "Vite + React client template for miaoda coding",
5
5
  "type": "module",
6
6
  "files": ["template", "hooks"],
@@ -0,0 +1,9 @@
1
+ #!/bin/sh
2
+ # miaoda vite-react: pre-commit — 通用入口,具体门禁内容由 package.json 的 precommit 脚本决定
3
+ # 注册(core.hooksPath=.githooks)由 package.json 的 prepare 脚本在 npm install 时完成,
4
+ # fullstack upgrade 的 activateGitHooks 作为兜底(覆盖 install 早于 git init 的时序)。
5
+ [ "$SKIP_GIT_HOOKS" = "1" ] && exit 0
6
+ if ! npm run precommit; then
7
+ echo "✗ pre-commit: 校验未通过,已阻断提交(绕过:git commit --no-verify 或 SKIP_GIT_HOOKS=1)" >&2
8
+ exit 1
9
+ fi
@@ -1,7 +1,34 @@
1
- import { globalIgnores } from 'eslint/config'
2
- import { eslintPresets } from '@lark-apaas/coding-presets-react'
1
+ import js from '@eslint/js'
2
+ import globals from 'globals'
3
+ import reactHooks from 'eslint-plugin-react-hooks'
4
+ import reactRefresh from 'eslint-plugin-react-refresh'
5
+ import tseslint from 'typescript-eslint'
6
+ import { defineConfig, globalIgnores } from 'eslint/config'
3
7
 
4
- export default [
8
+ export default defineConfig([
5
9
  globalIgnores(['dist', '**/components/ui/**']),
6
- ...eslintPresets.client,
7
- ]
10
+ {
11
+ files: ['**/*.{ts,tsx}'],
12
+ extends: [
13
+ js.configs.recommended,
14
+ tseslint.configs.recommended,
15
+ reactHooks.configs.flat.recommended,
16
+ reactRefresh.configs.vite,
17
+ ],
18
+ languageOptions: {
19
+ ecmaVersion: 2020,
20
+ globals: globals.browser,
21
+ },
22
+ rules: {
23
+ // 关闭仅语法相关、不影响编译和运行时的规则
24
+ 'react-refresh/only-export-components': 'off',
25
+ '@typescript-eslint/no-unused-vars': 'off',
26
+ '@typescript-eslint/no-explicit-any': 'off',
27
+ '@typescript-eslint/no-empty-object-type': 'off',
28
+ '@typescript-eslint/no-require-imports': 'off',
29
+ 'no-empty': 'off',
30
+ 'prefer-const': 'off',
31
+ 'no-unused-labels': 'off',
32
+ },
33
+ },
34
+ ])
@@ -11,7 +11,7 @@
11
11
  "@formkit/auto-animate": "^0.9.0",
12
12
  "@gsap/react": "^2.1.2",
13
13
  "@hookform/resolvers": "^5.2.2",
14
- "@lark-apaas/client-toolkit-lite": "1.1.7-alpha.29",
14
+ "@lark-apaas/client-toolkit-lite": "1.1.7-alpha.27",
15
15
  "@radix-ui/react-accordion": "^1.2.11",
16
16
  "@radix-ui/react-alert-dialog": "^1.1.14",
17
17
  "@radix-ui/react-aspect-ratio": "^1.1.7",
@@ -48,7 +48,7 @@
48
48
  "framer-motion": "^12.38.0",
49
49
  "gsap": "^3.15.0",
50
50
  "input-otp": "^1.4.2",
51
- "lucide-react": "^1.7.0",
51
+ "lucide-react": "0.577.0",
52
52
  "next-themes": "^0.4.6",
53
53
  "react": "^19.2.4",
54
54
  "react-day-picker": "^9.14.0",
@@ -66,14 +66,19 @@
66
66
  "zod": "^4.3.6"
67
67
  },
68
68
  "devDependencies": {
69
- "@lark-apaas/coding-preset-vite-react": "^1.0.0",
70
- "@lark-apaas/coding-presets-react": "^0.1.0",
69
+ "@eslint/js": "^9",
70
+ "@lark-apaas/coding-preset-vite-react": "^1.0.1",
71
+ "@lark-apaas/coding-presets": "1.0.3-alpha.0",
71
72
  "@types/node": "^24",
72
73
  "@types/react": "^19",
73
74
  "@types/react-dom": "^19",
74
75
  "concurrently": "^9",
75
76
  "eslint": "^9",
77
+ "eslint-plugin-react-hooks": "^7",
78
+ "eslint-plugin-react-refresh": "^0.5",
79
+ "globals": "^17",
76
80
  "typescript": "~5.9",
81
+ "typescript-eslint": "^8",
77
82
  "vite": "^8"
78
83
  }
79
84
  },
@@ -91,6 +96,47 @@
91
96
  "node": ">=6.9.0"
92
97
  }
93
98
  },
99
+ "node_modules/@babel/compat-data": {
100
+ "version": "7.29.7",
101
+ "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.29.7.tgz",
102
+ "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==",
103
+ "dev": true,
104
+ "license": "MIT",
105
+ "engines": {
106
+ "node": ">=6.9.0"
107
+ }
108
+ },
109
+ "node_modules/@babel/core": {
110
+ "version": "7.29.7",
111
+ "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.29.7.tgz",
112
+ "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==",
113
+ "dev": true,
114
+ "license": "MIT",
115
+ "dependencies": {
116
+ "@babel/code-frame": "^7.29.7",
117
+ "@babel/generator": "^7.29.7",
118
+ "@babel/helper-compilation-targets": "^7.29.7",
119
+ "@babel/helper-module-transforms": "^7.29.7",
120
+ "@babel/helpers": "^7.29.7",
121
+ "@babel/parser": "^7.29.7",
122
+ "@babel/template": "^7.29.7",
123
+ "@babel/traverse": "^7.29.7",
124
+ "@babel/types": "^7.29.7",
125
+ "@jridgewell/remapping": "^2.3.5",
126
+ "convert-source-map": "^2.0.0",
127
+ "debug": "^4.1.0",
128
+ "gensync": "^1.0.0-beta.2",
129
+ "json5": "^2.2.3",
130
+ "semver": "^6.3.1"
131
+ },
132
+ "engines": {
133
+ "node": ">=6.9.0"
134
+ },
135
+ "funding": {
136
+ "type": "opencollective",
137
+ "url": "https://opencollective.com/babel"
138
+ }
139
+ },
94
140
  "node_modules/@babel/generator": {
95
141
  "version": "7.29.7",
96
142
  "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.29.7.tgz",
@@ -108,6 +154,23 @@
108
154
  "node": ">=6.9.0"
109
155
  }
110
156
  },
157
+ "node_modules/@babel/helper-compilation-targets": {
158
+ "version": "7.29.7",
159
+ "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz",
160
+ "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==",
161
+ "dev": true,
162
+ "license": "MIT",
163
+ "dependencies": {
164
+ "@babel/compat-data": "^7.29.7",
165
+ "@babel/helper-validator-option": "^7.29.7",
166
+ "browserslist": "^4.24.0",
167
+ "lru-cache": "^5.1.1",
168
+ "semver": "^6.3.1"
169
+ },
170
+ "engines": {
171
+ "node": ">=6.9.0"
172
+ }
173
+ },
111
174
  "node_modules/@babel/helper-globals": {
112
175
  "version": "7.29.7",
113
176
  "resolved": "https://registry.npmmirror.com/@babel/helper-globals/-/helper-globals-7.29.7.tgz",
@@ -118,6 +181,38 @@
118
181
  "node": ">=6.9.0"
119
182
  }
120
183
  },
184
+ "node_modules/@babel/helper-module-imports": {
185
+ "version": "7.29.7",
186
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz",
187
+ "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==",
188
+ "dev": true,
189
+ "license": "MIT",
190
+ "dependencies": {
191
+ "@babel/traverse": "^7.29.7",
192
+ "@babel/types": "^7.29.7"
193
+ },
194
+ "engines": {
195
+ "node": ">=6.9.0"
196
+ }
197
+ },
198
+ "node_modules/@babel/helper-module-transforms": {
199
+ "version": "7.29.7",
200
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz",
201
+ "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==",
202
+ "dev": true,
203
+ "license": "MIT",
204
+ "dependencies": {
205
+ "@babel/helper-module-imports": "^7.29.7",
206
+ "@babel/helper-validator-identifier": "^7.29.7",
207
+ "@babel/traverse": "^7.29.7"
208
+ },
209
+ "engines": {
210
+ "node": ">=6.9.0"
211
+ },
212
+ "peerDependencies": {
213
+ "@babel/core": "^7.0.0"
214
+ }
215
+ },
121
216
  "node_modules/@babel/helper-string-parser": {
122
217
  "version": "7.29.7",
123
218
  "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
@@ -137,6 +232,30 @@
137
232
  "node": ">=6.9.0"
138
233
  }
139
234
  },
235
+ "node_modules/@babel/helper-validator-option": {
236
+ "version": "7.29.7",
237
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz",
238
+ "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==",
239
+ "dev": true,
240
+ "license": "MIT",
241
+ "engines": {
242
+ "node": ">=6.9.0"
243
+ }
244
+ },
245
+ "node_modules/@babel/helpers": {
246
+ "version": "7.29.7",
247
+ "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.29.7.tgz",
248
+ "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==",
249
+ "dev": true,
250
+ "license": "MIT",
251
+ "dependencies": {
252
+ "@babel/template": "^7.29.7",
253
+ "@babel/types": "^7.29.7"
254
+ },
255
+ "engines": {
256
+ "node": ">=6.9.0"
257
+ }
258
+ },
140
259
  "node_modules/@babel/parser": {
141
260
  "version": "7.29.7",
142
261
  "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.7.tgz",
@@ -835,9 +954,9 @@
835
954
  }
836
955
  },
837
956
  "node_modules/@lark-apaas/client-toolkit-lite": {
838
- "version": "1.1.7-alpha.29",
839
- "resolved": "https://registry.npmmirror.com/@lark-apaas/client-toolkit-lite/-/client-toolkit-lite-1.1.7-alpha.29.tgz",
840
- "integrity": "sha512-jgv3yGmHzL0MgwNsCTFNh5rFe9JeD4BTf6DM3eXFeq8FV6eUhKbs+GD4txm/ETXXXvADU4yPxsbnKu9Qv3Y6dg==",
957
+ "version": "1.1.7-alpha.27",
958
+ "resolved": "https://registry.npmmirror.com/@lark-apaas/client-toolkit-lite/-/client-toolkit-lite-1.1.7-alpha.27.tgz",
959
+ "integrity": "sha512-NpEaFg/E1DdctwmBnZWNJjpzOYaFG8qEV6L2bMwyxDMWOxrsw3tkdEjnzwo8MDK+9KOWtfU0TNaaQN5Bm3K4Gg==",
841
960
  "license": "MIT",
842
961
  "dependencies": {
843
962
  "@lark-apaas/client-capability": "0.1.7-alpha.2",
@@ -845,13 +964,18 @@
845
964
  "@lark-apaas/internal-slardar": "^0.0.3",
846
965
  "@lark-apaas/miaoda-inspector": "^1.0.23",
847
966
  "@lark-apaas/observable-web": "^1.0.6",
967
+ "@radix-ui/react-avatar": "^1.0.4",
848
968
  "@radix-ui/react-dialog": "^1.0.5",
849
969
  "@radix-ui/react-popover": "^1.0.7",
970
+ "@radix-ui/react-slot": "^1.0.2",
971
+ "@radix-ui/react-tooltip": "^1.0.7",
850
972
  "axios": "^1.12.2",
851
973
  "blueimp-md5": "^2.10.0",
974
+ "class-variance-authority": "^0.7.1",
852
975
  "clsx": "^2.0.1",
853
976
  "crypto-js": "^3.1.9-1",
854
977
  "lodash": "^4.17.21",
978
+ "lucide-react": "^0.400.0",
855
979
  "penpal": "^6.2.2",
856
980
  "stacktrace-js": "^2.0.2",
857
981
  "tailwind-merge": "^2.0.0"
@@ -866,6 +990,15 @@
866
990
  "react-router-dom": "^6.0.0 || ^7.0.0"
867
991
  }
868
992
  },
993
+ "node_modules/@lark-apaas/client-toolkit-lite/node_modules/lucide-react": {
994
+ "version": "0.400.0",
995
+ "resolved": "https://registry.npmmirror.com/lucide-react/-/lucide-react-0.400.0.tgz",
996
+ "integrity": "sha512-rpp7pFHh3Xd93KHixNgB0SqThMHpYNzsGUu69UaQbSZ75Q/J3m5t6EhKyMT3m4w2WOxmJ2mY0tD3vebnXqQryQ==",
997
+ "license": "ISC",
998
+ "peerDependencies": {
999
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
1000
+ }
1001
+ },
869
1002
  "node_modules/@lark-apaas/client-toolkit-lite/node_modules/tailwind-merge": {
870
1003
  "version": "2.6.1",
871
1004
  "resolved": "https://registry.npmmirror.com/tailwind-merge/-/tailwind-merge-2.6.1.tgz",
@@ -877,9 +1010,9 @@
877
1010
  }
878
1011
  },
879
1012
  "node_modules/@lark-apaas/coding-preset-vite-react": {
880
- "version": "1.0.0",
881
- "resolved": "https://registry.npmmirror.com/@lark-apaas/coding-preset-vite-react/-/coding-preset-vite-react-1.0.0.tgz",
882
- "integrity": "sha512-GsNf8dlupjmNfgqcDxk2xSJqU4kirlx1hqDPNJvPtpTJ/y94fe1WgeBe9I5247dqRzGLZbrmTrYdMqz/ggL6dA==",
1013
+ "version": "1.0.1",
1014
+ "resolved": "https://registry.npmmirror.com/@lark-apaas/coding-preset-vite-react/-/coding-preset-vite-react-1.0.1.tgz",
1015
+ "integrity": "sha512-kCxLe/wH4WYmkPbimSbNAX3lGvi97z0a6NtvQkg8xVR4Dd/ULaAvKVJG2AgFJ/6OYItm8iR9ek1bpuTb6FEd1g==",
883
1016
  "dev": true,
884
1017
  "license": "MIT",
885
1018
  "dependencies": {
@@ -942,10 +1075,10 @@
942
1075
  "tslib": "2.3.0"
943
1076
  }
944
1077
  },
945
- "node_modules/@lark-apaas/coding-presets-react": {
946
- "version": "0.1.0",
947
- "resolved": "https://registry.npmmirror.com/@lark-apaas/coding-presets-react/-/coding-presets-react-0.1.0.tgz",
948
- "integrity": "sha512-sYAhoNgCfG7krT1QW1ylgTpv9gAER5cvdU6JOYT2V2li4zfuRQXG9BBcBABZy14PChQuk4nHqBI9shI53pPKoQ==",
1078
+ "node_modules/@lark-apaas/coding-presets": {
1079
+ "version": "1.0.3-alpha.0",
1080
+ "resolved": "https://registry.npmmirror.com/@lark-apaas/coding-presets/-/coding-presets-1.0.3-alpha.0.tgz",
1081
+ "integrity": "sha512-c87xAZc+TFrg6pWHL0I67zxxYxmhWm4TIRIBc04Zr0csPPS6nCTmHgd9oOqZ+weoYr91N+0LodmHy5SD0zxfng==",
949
1082
  "dev": true,
950
1083
  "license": "MIT",
951
1084
  "dependencies": {
@@ -962,7 +1095,7 @@
962
1095
  "eslint": "^9.0.0"
963
1096
  }
964
1097
  },
965
- "node_modules/@lark-apaas/coding-presets-react/node_modules/eslint-plugin-react-hooks": {
1098
+ "node_modules/@lark-apaas/coding-presets/node_modules/eslint-plugin-react-hooks": {
966
1099
  "version": "5.2.0",
967
1100
  "resolved": "https://registry.npmmirror.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz",
968
1101
  "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==",
@@ -975,7 +1108,7 @@
975
1108
  "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
976
1109
  }
977
1110
  },
978
- "node_modules/@lark-apaas/coding-presets-react/node_modules/globals": {
1111
+ "node_modules/@lark-apaas/coding-presets/node_modules/globals": {
979
1112
  "version": "16.5.0",
980
1113
  "resolved": "https://registry.npmmirror.com/globals/-/globals-16.5.0.tgz",
981
1114
  "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==",
@@ -5096,6 +5229,13 @@
5096
5229
  "url": "https://github.com/open-cli-tools/concurrently?sponsor=1"
5097
5230
  }
5098
5231
  },
5232
+ "node_modules/convert-source-map": {
5233
+ "version": "2.0.0",
5234
+ "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz",
5235
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
5236
+ "dev": true,
5237
+ "license": "MIT"
5238
+ },
5099
5239
  "node_modules/cookie": {
5100
5240
  "version": "1.1.1",
5101
5241
  "resolved": "https://registry.npmmirror.com/cookie/-/cookie-1.1.1.tgz",
@@ -6060,6 +6200,36 @@
6060
6200
  "ms": "^2.1.1"
6061
6201
  }
6062
6202
  },
6203
+ "node_modules/eslint-plugin-react-hooks": {
6204
+ "version": "7.1.1",
6205
+ "resolved": "https://registry.npmmirror.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz",
6206
+ "integrity": "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==",
6207
+ "dev": true,
6208
+ "license": "MIT",
6209
+ "dependencies": {
6210
+ "@babel/core": "^7.24.4",
6211
+ "@babel/parser": "^7.24.4",
6212
+ "hermes-parser": "^0.25.1",
6213
+ "zod": "^3.25.0 || ^4.0.0",
6214
+ "zod-validation-error": "^3.5.0 || ^4.0.0"
6215
+ },
6216
+ "engines": {
6217
+ "node": ">=18"
6218
+ },
6219
+ "peerDependencies": {
6220
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0"
6221
+ }
6222
+ },
6223
+ "node_modules/eslint-plugin-react-refresh": {
6224
+ "version": "0.5.2",
6225
+ "resolved": "https://registry.npmmirror.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.5.2.tgz",
6226
+ "integrity": "sha512-hmgTH57GfzoTFjVN0yBwTggnsVUF2tcqi7RJZHqi9lIezSs4eFyAMktA68YD4r5kNw1mxyY4dmkyoFDb3FIqrA==",
6227
+ "dev": true,
6228
+ "license": "MIT",
6229
+ "peerDependencies": {
6230
+ "eslint": "^9 || ^10"
6231
+ }
6232
+ },
6063
6233
  "node_modules/eslint-scope": {
6064
6234
  "version": "8.4.0",
6065
6235
  "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-8.4.0.tgz",
@@ -6551,6 +6721,16 @@
6551
6721
  "node": ">= 0.4"
6552
6722
  }
6553
6723
  },
6724
+ "node_modules/gensync": {
6725
+ "version": "1.0.0-beta.2",
6726
+ "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
6727
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
6728
+ "dev": true,
6729
+ "license": "MIT",
6730
+ "engines": {
6731
+ "node": ">=6.9.0"
6732
+ }
6733
+ },
6554
6734
  "node_modules/get-caller-file": {
6555
6735
  "version": "2.0.5",
6556
6736
  "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
@@ -6717,6 +6897,19 @@
6717
6897
  "which": "bin/which"
6718
6898
  }
6719
6899
  },
6900
+ "node_modules/globals": {
6901
+ "version": "17.6.0",
6902
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-17.6.0.tgz",
6903
+ "integrity": "sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==",
6904
+ "dev": true,
6905
+ "license": "MIT",
6906
+ "engines": {
6907
+ "node": ">=18"
6908
+ },
6909
+ "funding": {
6910
+ "url": "https://github.com/sponsors/sindresorhus"
6911
+ }
6912
+ },
6720
6913
  "node_modules/globalthis": {
6721
6914
  "version": "1.0.4",
6722
6915
  "resolved": "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.4.tgz",
@@ -6903,6 +7096,23 @@
6903
7096
  "node": ">= 0.4"
6904
7097
  }
6905
7098
  },
7099
+ "node_modules/hermes-estree": {
7100
+ "version": "0.25.1",
7101
+ "resolved": "https://registry.npmmirror.com/hermes-estree/-/hermes-estree-0.25.1.tgz",
7102
+ "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==",
7103
+ "dev": true,
7104
+ "license": "MIT"
7105
+ },
7106
+ "node_modules/hermes-parser": {
7107
+ "version": "0.25.1",
7108
+ "resolved": "https://registry.npmmirror.com/hermes-parser/-/hermes-parser-0.25.1.tgz",
7109
+ "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==",
7110
+ "dev": true,
7111
+ "license": "MIT",
7112
+ "dependencies": {
7113
+ "hermes-estree": "0.25.1"
7114
+ }
7115
+ },
6906
7116
  "node_modules/hookified": {
6907
7117
  "version": "1.15.1",
6908
7118
  "resolved": "https://registry.npmmirror.com/hookified/-/hookified-1.15.1.tgz",
@@ -7642,6 +7852,19 @@
7642
7852
  "devOptional": true,
7643
7853
  "license": "MIT"
7644
7854
  },
7855
+ "node_modules/json5": {
7856
+ "version": "2.2.3",
7857
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
7858
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
7859
+ "dev": true,
7860
+ "license": "MIT",
7861
+ "bin": {
7862
+ "json5": "lib/cli.js"
7863
+ },
7864
+ "engines": {
7865
+ "node": ">=6"
7866
+ }
7867
+ },
7645
7868
  "node_modules/jsonfile": {
7646
7869
  "version": "6.2.1",
7647
7870
  "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.2.1.tgz",
@@ -8031,10 +8254,20 @@
8031
8254
  "tslib": "^2.0.3"
8032
8255
  }
8033
8256
  },
8257
+ "node_modules/lru-cache": {
8258
+ "version": "5.1.1",
8259
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
8260
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
8261
+ "dev": true,
8262
+ "license": "ISC",
8263
+ "dependencies": {
8264
+ "yallist": "^3.0.2"
8265
+ }
8266
+ },
8034
8267
  "node_modules/lucide-react": {
8035
- "version": "1.17.0",
8036
- "resolved": "https://registry.npmmirror.com/lucide-react/-/lucide-react-1.17.0.tgz",
8037
- "integrity": "sha512-9FA9evdox/JQL5PT57fdA1x/yg8T7knJ98+zjTL3UfKza6pflQUUh3XtaQIHKvnsJw1lmsEyHVlt5jchYxOQ5w==",
8268
+ "version": "0.577.0",
8269
+ "resolved": "https://registry.npmmirror.com/lucide-react/-/lucide-react-0.577.0.tgz",
8270
+ "integrity": "sha512-4LjoFv2eEPwYDPg/CUdBJQSDfPyzXCRrVW1X7jrx/trgxnxkHFjnVZINbzvzxjN70dxychOfg+FTYwBiS3pQ5A==",
8038
8271
  "license": "ISC",
8039
8272
  "peerDependencies": {
8040
8273
  "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
@@ -11267,6 +11500,13 @@
11267
11500
  "node": ">=10"
11268
11501
  }
11269
11502
  },
11503
+ "node_modules/yallist": {
11504
+ "version": "3.1.1",
11505
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
11506
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
11507
+ "dev": true,
11508
+ "license": "ISC"
11509
+ },
11270
11510
  "node_modules/yaml": {
11271
11511
  "version": "2.9.0",
11272
11512
  "resolved": "https://registry.npmmirror.com/yaml/-/yaml-2.9.0.tgz",
@@ -11350,6 +11590,19 @@
11350
11590
  "url": "https://github.com/sponsors/colinhacks"
11351
11591
  }
11352
11592
  },
11593
+ "node_modules/zod-validation-error": {
11594
+ "version": "4.0.2",
11595
+ "resolved": "https://registry.npmmirror.com/zod-validation-error/-/zod-validation-error-4.0.2.tgz",
11596
+ "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==",
11597
+ "dev": true,
11598
+ "license": "MIT",
11599
+ "engines": {
11600
+ "node": ">=18.0.0"
11601
+ },
11602
+ "peerDependencies": {
11603
+ "zod": "^3.25.0 || ^4.0.0"
11604
+ }
11605
+ },
11353
11606
  "node_modules/zone.js": {
11354
11607
  "version": "0.16.2",
11355
11608
  "resolved": "https://registry.npmmirror.com/zone.js/-/zone.js-0.16.2.tgz",
@@ -8,7 +8,9 @@
8
8
  "build": "bash scripts/build.sh",
9
9
  "typecheck": "tsc -p tsconfig.app.json",
10
10
  "lint": "concurrently npm:typecheck npm:lint:eslint",
11
- "lint:eslint": "eslint src"
11
+ "lint:eslint": "eslint src",
12
+ "precommit": "npm run lint",
13
+ "prepare": "node scripts/setup-git-hooks.mjs"
12
14
  },
13
15
  "dependencies": {
14
16
  "@hookform/resolvers": "^5.2.2",
@@ -38,7 +40,7 @@
38
40
  "@radix-ui/react-toggle": "^1.1.9",
39
41
  "@radix-ui/react-toggle-group": "^1.1.10",
40
42
  "@radix-ui/react-tooltip": "^1.1.18",
41
- "@lark-apaas/client-toolkit-lite": "1.1.7-alpha.29",
43
+ "@lark-apaas/client-toolkit-lite": "1.1.7-alpha.27",
42
44
  "@formkit/auto-animate": "^0.9.0",
43
45
  "@gsap/react": "^2.1.2",
44
46
  "framer-motion": "^12.38.0",
@@ -51,7 +53,7 @@
51
53
  "echarts-for-react": "~3.0.2",
52
54
  "embla-carousel-react": "^8.6.0",
53
55
  "input-otp": "^1.4.2",
54
- "lucide-react": "^1.7.0",
56
+ "lucide-react": "0.577.0",
55
57
  "next-themes": "^0.4.6",
56
58
  "react": "^19.2.4",
57
59
  "react-day-picker": "^9.14.0",
@@ -69,14 +71,19 @@
69
71
  "zod": "^4.3.6"
70
72
  },
71
73
  "devDependencies": {
74
+ "@eslint/js": "^9",
72
75
  "@types/node": "^24",
73
76
  "@types/react": "^19",
74
77
  "@types/react-dom": "^19",
75
- "@lark-apaas/coding-presets-react": "^0.1.0",
76
- "@lark-apaas/coding-preset-vite-react": "^1.0.0",
78
+ "@lark-apaas/coding-presets": "1.0.3-alpha.0",
79
+ "@lark-apaas/coding-preset-vite-react": "^1.0.1",
77
80
  "concurrently": "^9",
78
81
  "eslint": "^9",
82
+ "eslint-plugin-react-hooks": "^7",
83
+ "eslint-plugin-react-refresh": "^0.5",
84
+ "globals": "^17",
79
85
  "typescript": "~5.9",
86
+ "typescript-eslint": "^8",
80
87
  "vite": "^8"
81
88
  }
82
89
  }
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * 注册项目内置 git pre-commit 钩子:core.hooksPath -> .githooks。
4
+ * 由 package.json 的 prepare 脚本在 npm install 时调用(此时 git 通常已就绪)。
5
+ * 走原生 git config,无第三方依赖;非 git 环境(CI 构建 / smoke 临时目录)静默跳过,绝不阻断 install。
6
+ */
7
+ import { existsSync, chmodSync } from 'node:fs';
8
+ import { execFileSync } from 'node:child_process';
9
+
10
+ // 仅当当前目录就是 git 仓库根时才注册,避免污染外层仓库
11
+ if (!existsSync('.git') || !existsSync('.githooks/pre-commit')) {
12
+ process.exit(0);
13
+ }
14
+
15
+ try {
16
+ chmodSync('.githooks/pre-commit', 0o755); // 兜底任何丢 +x 的分发链路
17
+ execFileSync('git', ['config', 'core.hooksPath', '.githooks'], { stdio: 'ignore' });
18
+ } catch {
19
+ // git 未安装或任何异常:忽略,不阻断 npm install
20
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "extends": "@lark-apaas/coding-presets-react/lib/tsconfig/tsconfig.app.json",
2
+ "extends": "@lark-apaas/coding-presets/lib/tsconfig/tsconfig.app.json",
3
3
  "compilerOptions": {
4
4
  "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
5
5
  "baseUrl": ".",