@lark-apaas/client-toolkit-lite 1.1.7-alpha.23 → 1.1.7-alpha.25

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/README.md CHANGED
@@ -19,13 +19,14 @@ npm install react react-dom react-router-dom @tanstack/react-query
19
19
  ### 1. 使用 AppContainer
20
20
 
21
21
  `AppContainer` 是应用根容器,内部集成:
22
- - **全局样式** — 自动导入主题样式(theme-layer / tailwind-theme / override / font-family),无需手动 import CSS
23
22
  - **Safety** — 生产环境「妙搭构建」安全标识
24
23
  - **QueryProvider** — React Query 数据管理
25
24
  - **useAppInfo** — 自动同步 document title / favicon / OG meta
26
25
  - **Tea 埋点** — 生产环境自动上报页面访问事件
27
26
  - **Runtime** — React DevTools Hook + Axios CSRF 全局注入(防重复)
28
27
 
28
+ > 主题样式**不自动注入**,需在应用入口手动 import,详见下一节。
29
+
29
30
  ```tsx
30
31
  // App.tsx
31
32
  import { AppContainer } from '@lark-apaas/client-toolkit-lite';
@@ -53,6 +54,53 @@ import { QueryProvider } from '@lark-apaas/client-toolkit-lite';
53
54
  <QueryProvider>{children}</QueryProvider>
54
55
  ```
55
56
 
57
+ ### 2. 导入样式
58
+
59
+ 主题样式包含 4 个片段:`theme-layer`(layer 顺序声明)/ `tailwind-theme`(色板变量 + `.dark` 模式)/ `override`(base 兜底)/ `font-family`(Lark 字体)。聚合入口需手动 import:
60
+
61
+ ```ts
62
+ // main.ts / main.tsx
63
+ import '@lark-apaas/client-toolkit-lite/styles.css';
64
+ ```
65
+
66
+ #### Tailwind v4 source 扫描
67
+
68
+ lite 的 `Drawer` / `Popover` / `ErrorRender` 等组件使用了 Tailwind class,由于 v4 默认不扫描 `node_modules`,需要在你自己的主 css 里显式声明 source(否则这些组件会没有视觉):
69
+
70
+ ```css
71
+ /* 你的 main.css */
72
+ @import 'tailwindcss';
73
+ @import '@lark-apaas/client-toolkit-lite/styles.css';
74
+
75
+ /* 路径相对于这个 css 文件所在位置 */
76
+ @source "../node_modules/@lark-apaas/client-toolkit-lite/dist";
77
+ ```
78
+
79
+ #### shadcn 语义变量(按需补)
80
+
81
+ `override.css` 和 `Drawer` / `Popover` 用了 `--background` / `--foreground` / `--border` / `--ring` / `--popover` / `--popover-foreground` / `--muted-foreground` 等 shadcn 风格语义变量。lite 内置色板(`tailwind-theme.css`)**只提供 `--color-*` 全色板**,不包含这些语义变量 —— 需要你在自己的 css 里按业务主题补上:
82
+
83
+ ```css
84
+ :root {
85
+ --background: var(--color-neutral-00);
86
+ --foreground: var(--color-neutral-950);
87
+ --border: var(--color-neutral-300);
88
+ --ring: var(--color-blue-500);
89
+ --popover: var(--color-neutral-00);
90
+ --popover-foreground: var(--color-neutral-950);
91
+ --muted-foreground: var(--color-neutral-700);
92
+ }
93
+ ```
94
+
95
+ #### 按需导入子片段
96
+
97
+ 只要色板或字体时可单独 import:
98
+
99
+ ```ts
100
+ import '@lark-apaas/client-toolkit-lite/styles/tailwind-theme.css';
101
+ import '@lark-apaas/client-toolkit-lite/styles/font-family.css';
102
+ ```
103
+
56
104
  ### 3. Hooks
57
105
 
58
106
  #### useAppInfo
@@ -0,0 +1,39 @@
1
+ @font-face {
2
+ font-family: LarkChineseQuote;
3
+ font-weight: 300;
4
+ src: local("PingFangSC-Light");
5
+ unicode-range: U+2018, U+2019, U+201A, U+201C, U+201D, U+201E;
6
+ }
7
+
8
+ @font-face {
9
+ font-family: LarkChineseQuote;
10
+ font-weight: 400;
11
+ src: local("PingFangSC-Regular");
12
+ unicode-range: U+2018, U+2019, U+201A, U+201C, U+201D, U+201E;
13
+ }
14
+
15
+ @font-face {
16
+ font-family: LarkChineseQuote;
17
+ font-weight: 500;
18
+ src: local("PingFangSC-Medium");
19
+ unicode-range: U+2018, U+2019, U+201A, U+201C, U+201D, U+201E;
20
+ }
21
+
22
+ @font-face {
23
+ font-family: LarkChineseQuote;
24
+ font-weight: 600;
25
+ src: local("PingFangSC-Semibold");
26
+ unicode-range: U+2018, U+2019, U+201A, U+201C, U+201D, U+201E;
27
+ }
28
+
29
+ @font-face {
30
+ font-family: LarkEmojiFont;
31
+ src: local("Apple Color Emoji"), local("Noto Color Emoji");
32
+ unicode-range: U+1F21A, U+1F250, U+1F237, U+26A0;
33
+ }
34
+
35
+ @font-face {
36
+ font-family: LarkHackSafariFont;
37
+ src: local("Helvetica Neue");
38
+ unicode-range: U+0000;
39
+ }
@@ -0,0 +1,4 @@
1
+ @import './theme-layer.css';
2
+ @import './tailwind-theme.css';
3
+ @import './override.css';
4
+ @import './font-family.css';
@@ -0,0 +1,5 @@
1
+ @source inline('text-{xs,sm,base,lg,xl,2xl,3xl,4xl,5xl,6xl,7xl,8xl,9xl}');
2
+ @source inline('{bg,text,border}-{blue,pink,neutral,red,orange,violet,lime,yellow,green,teal,cyan,indigo,purple,amber,emerald,slate}-{50,{100..900..100},950}');
3
+ @source inline('{bg,text,border}-{blue,pink,neutral,red,orange,violet,lime,yellow,green,teal,cyan,indigo,purple,amber,emerald,slate}');
4
+ @source inline('{bg,text,border}-neutral-{00,1000}');
5
+ @source inline('rounded-{none,sm,md,lg,xl,full}');
@@ -0,0 +1,18 @@
1
+ @layer base {
2
+ * {
3
+ border-color: var(--border);
4
+ outline-color: var(--ring);
5
+ @supports (color: color-mix(in lab, red, red)) {
6
+ outline-color: color-mix(in oklab, var(--ring) 50%, transparent);
7
+ }
8
+ }
9
+ body {
10
+ background-color: var(--background);
11
+ color: var(--foreground);
12
+ }
13
+
14
+ .container {
15
+ margin-left: auto;
16
+ margin-right: auto;
17
+ }
18
+ }
@@ -0,0 +1,361 @@
1
+ @import './inspector.dev.css';
2
+ @layer base {
3
+ :root {
4
+ --color-blue-50: #f0f4ff;
5
+ --color-blue-100: #e0e9ff;
6
+ --color-blue-200: #c2d4ff;
7
+ --color-blue-300: #94b4ff;
8
+ --color-blue-400: #7aa2ff;
9
+ --color-blue-500: #5083fb;
10
+ --color-blue-600: #336df4;
11
+ --color-blue-700: #1456f0;
12
+ --color-blue-800: #0442d2;
13
+ --color-blue-900: #002f9e;
14
+ --color-blue-950: #002270;
15
+
16
+ --color-pink-50: #fef0f8;
17
+ --color-pink-100: #fee2f2;
18
+ --color-pink-200: #f8c4e1;
19
+ --color-pink-300: #f598cc;
20
+ --color-pink-400: #eb78b8;
21
+ --color-pink-500: #df58a5;
22
+ --color-pink-600: #cc398c;
23
+ --color-pink-700: #b82879;
24
+ --color-pink-800: #9d1562;
25
+ --color-pink-900: #730744;
26
+ --color-pink-950: #550c35;
27
+
28
+ --color-neutral-00: #ffffff;
29
+ --color-neutral-50: #f5f6f7;
30
+ --color-neutral-100: #f2f3f5;
31
+ --color-neutral-200: #eff0f1;
32
+ --color-neutral-300: #dee0e3;
33
+ --color-neutral-400: #d0d3d6;
34
+ --color-neutral-500: #bbbfc4;
35
+ --color-neutral-600: #8f959e;
36
+ --color-neutral-650: #51565d;
37
+ --color-neutral-700: #646a73;
38
+ --color-neutral-800: #373c43;
39
+ --color-neutral-900: #2b2f36;
40
+ --color-neutral-950: #1f2329;
41
+ --color-neutral-1000: #000;
42
+
43
+ --color-green-50: #e4fae1;
44
+ --color-green-100: #d0f5ce;
45
+ --color-green-200: #95e599;
46
+ --color-green-300: #5cd168;
47
+ --color-green-400: #35bd4b;
48
+ --color-green-500: #32a645;
49
+ --color-green-600: #258832;
50
+ --color-green-700: #1a7526;
51
+ --color-green-800: #0b6017;
52
+ --color-green-900: #04430c;
53
+ --color-green-950: #022c07;
54
+
55
+ --color-indigo-50: #f2f3fd;
56
+ --color-indigo-100: #e9eafb;
57
+ --color-indigo-200: #cccff9;
58
+ --color-indigo-300: #abb0f2;
59
+ --color-indigo-400: #959bee;
60
+ --color-indigo-500: #757df0;
61
+ --color-indigo-600: #5b65f5;
62
+ --color-indigo-700: #4752e6;
63
+ --color-indigo-800: #333dcc;
64
+ --color-indigo-900: #1e27a4;
65
+ --color-indigo-950: #151b70;
66
+
67
+ --color-lime-50: #f2f8d3;
68
+ --color-lime-100: #e3f0a3;
69
+ --color-lime-200: #c8dd5f;
70
+ --color-lime-300: #a2c10b;
71
+ --color-lime-400: #91ad00;
72
+ --color-lime-500: #7b9207;
73
+ --color-lime-600: #6b7f06;
74
+ --color-lime-700: #5c6d08;
75
+ --color-lime-800: #4a5804;
76
+ --color-lime-900: #333d00;
77
+ --color-lime-950: #262e00;
78
+
79
+ --color-orange-50: #fff3e5;
80
+ --color-orange-100: #fee7cd;
81
+ --color-orange-200: #fec48b;
82
+ --color-orange-300: #ff9d4c;
83
+ --color-orange-400: #ff811a;
84
+ --color-orange-500: #ed6d0c;
85
+ --color-orange-600: #c25705;
86
+ --color-orange-700: #a44904;
87
+ --color-orange-800: #853a05;
88
+ --color-orange-900: #642b02;
89
+ --color-orange-950: #3b1a02;
90
+
91
+ --color-purple-50: #f5f0fe;
92
+ --color-purple-100: #efe6fe;
93
+ --color-purple-200: #dcc9fd;
94
+ --color-purple-300: #c8a9fc;
95
+ --color-purple-400: #b791fa;
96
+ --color-purple-500: #9f6ff1;
97
+ --color-purple-600: #8d55ed;
98
+ --color-purple-700: #7a35f0;
99
+ --color-purple-800: #611fd6;
100
+ --color-purple-900: #4811a6;
101
+ --color-purple-950: #2f0080;
102
+
103
+ --color-red-50: #fef0f0;
104
+ --color-red-100: #fee3e2;
105
+ --color-red-200: #fdc6c4;
106
+ --color-red-300: #f89e9b;
107
+ --color-red-400: #ff7570;
108
+ --color-red-500: #f54a45;
109
+ --color-red-600: #e22e28;
110
+ --color-red-700: #c02a26;
111
+ --color-red-800: #a11c17;
112
+ --color-red-900: #741915;
113
+ --color-red-950: #590603;
114
+
115
+ --color-amber-50: #ffffdb;
116
+ --color-amber-100: #fffca3;
117
+ --color-amber-200: #fff67a;
118
+ --color-amber-300: #fff258;
119
+ --color-amber-400: #ffe928;
120
+ --color-amber-500: #e5ce00;
121
+ --color-amber-600: #c2a800;
122
+ --color-amber-700: #8f7c00;
123
+ --color-amber-800: #5c4f00;
124
+ --color-amber-900: #423700;
125
+ --color-amber-950: #2c2502;
126
+
127
+ --color-teal-50: #e2f8f5;
128
+ --color-teal-100: #c4f2ec;
129
+ --color-teal-200: #6fe8d8;
130
+ --color-teal-300: #33d6c0;
131
+ --color-teal-400: #2dbeab;
132
+ --color-teal-500: #10a893;
133
+ --color-teal-600: #0f8575;
134
+ --color-teal-700: #067062;
135
+ --color-teal-800: #045d51;
136
+ --color-teal-900: #03443b;
137
+ --color-teal-950: #02312a;
138
+
139
+ --color-cyan-50: #e7f8fe;
140
+ --color-cyan-100: #caeffc;
141
+ --color-cyan-200: #97dcfc;
142
+ --color-cyan-300: #3ec3f7;
143
+ --color-cyan-400: #25b0e7;
144
+ --color-cyan-500: #1295ca;
145
+ --color-cyan-600: #047fb0;
146
+ --color-cyan-700: #076a94;
147
+ --color-cyan-800: #0f587a;
148
+ --color-cyan-900: #06415c;
149
+ --color-cyan-950: #072b3d;
150
+
151
+ --color-yellow-50: #fbf4df;
152
+ --color-yellow-100: #faedc2;
153
+ --color-yellow-200: #fcdf7e;
154
+ --color-yellow-300: #fad355;
155
+ --color-yellow-400: #ffc60a;
156
+ --color-yellow-500: #d99904;
157
+ --color-yellow-600: #ad7a03;
158
+ --color-yellow-700: #865b03;
159
+ --color-yellow-800: #6f4a01;
160
+ --color-yellow-900: #573601;
161
+ --color-yellow-950: #382201;
162
+
163
+ --color-violet-50: #fceefc;
164
+ --color-violet-100: #f9e2f9;
165
+ --color-violet-200: #f3c4f3;
166
+ --color-violet-300: #e59ce5;
167
+ --color-violet-400: #de81de;
168
+ --color-violet-500: #cf5ecf;
169
+ --color-violet-600: #bf3dbf;
170
+ --color-violet-700: #a630a6;
171
+ --color-violet-800: #872787;
172
+ --color-violet-900: #6a116a;
173
+ --color-violet-950: #520052;
174
+
175
+ --fontReverse: #fff;
176
+ --bgContentBase: #f8f9fa;
177
+ --bgMask: 0, 0, 0, 0.4;
178
+ --bgTextSelection: 20, 86, 240, 0.3;
179
+ --lineDividerDefault: 31, 35, 41, 0.15;
180
+ --lineDividerModule: 31, 35, 41, 0.15;
181
+ }
182
+
183
+ .dark {
184
+ --color-blue-50: #152340;
185
+ --color-blue-100: #173166;
186
+ --color-blue-200: #194294;
187
+ --color-blue-300: #2655b6;
188
+ --color-blue-400: #275fce;
189
+ --color-blue-500: #3370eb;
190
+ --color-blue-600: #4c88ff;
191
+ --color-blue-700: #75a4ff;
192
+ --color-blue-800: #8fb4ff;
193
+ --color-blue-900: #bdd2ff;
194
+ --color-blue-950: #bdd2ff;
195
+
196
+ --color-pink-50: #3a182b;
197
+ --color-pink-100: #591c3f;
198
+ --color-pink-200: #782b57;
199
+ --color-pink-300: #94386c;
200
+ --color-pink-400: #ab417d;
201
+ --color-pink-500: #c24a8e;
202
+ --color-pink-600: #db5ea4;
203
+ --color-pink-700: #ed77ba;
204
+ --color-pink-800: #fc94cf;
205
+ --color-pink-900: #ffc2e5;
206
+ --color-pink-950: #ffe0f2;
207
+
208
+ --color-neutral-00: #aaa;
209
+ --color-neutral-50: #1a1a1a;
210
+ --color-neutral-100: #292929;
211
+ --color-neutral-200: #373737;
212
+ --color-neutral-300: #434343;
213
+ --color-neutral-400: #505050;
214
+ --color-neutral-500: #5f5f5f;
215
+ --color-neutral-600: #757575;
216
+ --color-neutral-700: #a6a6a6;
217
+ --color-neutral-800: #e0e0e0;
218
+ --color-neutral-900: #e8e8e8;
219
+ --color-neutral-950: #ebebeb;
220
+ --color-neutral-1000: #fff;
221
+
222
+ --color-green-50: #022c07;
223
+ --color-green-100: #04430c;
224
+ --color-green-200: #0b6017;
225
+ --color-green-300: #1a7526;
226
+ --color-green-400: #258832;
227
+ --color-green-500: #32a645;
228
+ --color-green-600: #35bd4b;
229
+ --color-green-700: #5cd168;
230
+ --color-green-800: #95e599;
231
+ --color-green-900: #d0f5ce;
232
+ --color-green-950: #e4fae1;
233
+
234
+ --color-indigo-50: #1e204a;
235
+ --color-indigo-100: #2a2d69;
236
+ --color-indigo-200: #373d90;
237
+ --color-indigo-300: #474fb8;
238
+ --color-indigo-400: #515ad6;
239
+ --color-indigo-500: #5e68e8;
240
+ --color-indigo-600: #7b83f7;
241
+ --color-indigo-700: #9499f7;
242
+ --color-indigo-800: #aaaff8;
243
+ --color-indigo-900: #cdd0f9;
244
+ --color-indigo-950: #e7e9fe;
245
+
246
+ --color-lime-50: #212702;
247
+ --color-lime-100: #303804;
248
+ --color-lime-200: #404c06;
249
+ --color-lime-300: #53610a;
250
+ --color-lime-400: #5f700a;
251
+ --color-lime-500: #6b7f05;
252
+ --color-lime-600: #82990a;
253
+ --color-lime-700: #93af04;
254
+ --color-lime-800: #a6c313;
255
+ --color-lime-900: #c2e12d;
256
+ --color-lime-950: #e3f391;
257
+
258
+ --color-orange-50: #33210b;
259
+ --color-orange-100: #4a2b10;
260
+ --color-orange-200: #683a12;
261
+ --color-orange-300: #8a4a19;
262
+ --color-orange-400: #a15317;
263
+ --color-orange-500: #b85e1a;
264
+ --color-orange-600: #db7018;
265
+ --color-orange-700: #f3871b;
266
+ --color-orange-800: #f89e44;
267
+ --color-orange-900: #fec88b;
268
+ --color-orange-950: #fee7cd;
269
+
270
+ --color-purple-50: #2b194a;
271
+ --color-purple-100: #3f2073;
272
+ --color-purple-200: #5529a3;
273
+ --color-purple-300: #6c39c6;
274
+ --color-purple-400: #7c4ad4;
275
+ --color-purple-500: #8c55ec;
276
+ --color-purple-600: #a575fa;
277
+ --color-purple-700: #b88ffe;
278
+ --color-purple-800: #c5a3ff;
279
+ --color-purple-900: #dbc8fd;
280
+ --color-purple-950: #efe5ff;
281
+
282
+ --color-red-50: #590603;
283
+ --color-red-100: #741915;
284
+ --color-red-200: #a11c17;
285
+ --color-red-300: #c02a26;
286
+ --color-red-400: #e22e28;
287
+ --color-red-500: #f54a45;
288
+ --color-red-600: #ff7570;
289
+ --color-red-700: #f89e9b;
290
+ --color-red-800: #fdc6c4;
291
+ --color-red-900: #fee3e2;
292
+ --color-red-950: #fef0f0;
293
+
294
+ --color-amber-50: #29250a;
295
+ --color-amber-100: #38320c;
296
+ --color-amber-200: #574d01;
297
+ --color-amber-300: #7a6a01;
298
+ --color-amber-400: #9c8702;
299
+ --color-amber-500: #c9b218;
300
+ --color-amber-600: #e5cd17;
301
+ --color-amber-700: #f5df36;
302
+ --color-amber-800: #f7e663;
303
+ --color-amber-900: #faed7a;
304
+ --color-amber-950: #fff59e;
305
+
306
+ --color-teal-50: #132926;
307
+ --color-teal-100: #173b36;
308
+ --color-teal-200: #1d4e47;
309
+ --color-teal-300: #25665e;
310
+ --color-teal-400: #227369;
311
+ --color-teal-500: #198578;
312
+ --color-teal-600: #1fa18f;
313
+ --color-teal-700: #1ab7a1;
314
+ --color-teal-800: #17cfb5;
315
+ --color-teal-900: #65e7d5;
316
+ --color-teal-950: #b7f7ef;
317
+
318
+ --color-cyan-50: #152830;
319
+ --color-cyan-100: #103647;
320
+ --color-cyan-200: #164359;
321
+ --color-cyan-300: #135a78;
322
+ --color-cyan-400: #146c91;
323
+ --color-cyan-500: #1a7fab;
324
+ --color-cyan-600: #1099cc;
325
+ --color-cyan-700: #25b2e5;
326
+ --color-cyan-800: #51c3f0;
327
+ --color-cyan-900: #89dffe;
328
+ --color-cyan-950: #c7f0ff;
329
+
330
+ --color-yellow-50: #30250a;
331
+ --color-yellow-100: #473409;
332
+ --color-yellow-200: #63470f;
333
+ --color-yellow-300: #8a6419;
334
+ --color-yellow-400: #ad7d15;
335
+ --color-yellow-500: #d49b0b;
336
+ --color-yellow-600: #f0b622;
337
+ --color-yellow-700: #fbcb46;
338
+ --color-yellow-800: #fcd456;
339
+ --color-yellow-900: #ffde75;
340
+ --color-yellow-950: #ffeaa3;
341
+
342
+ --color-violet-50: #3b153b;
343
+ --color-violet-100: #541854;
344
+ --color-violet-200: #712871;
345
+ --color-violet-300: #8b378b;
346
+ --color-violet-400: #a43da4;
347
+ --color-violet-500: #b54ab5;
348
+ --color-violet-600: #d661d6;
349
+ --color-violet-700: #e17fe1;
350
+ --color-violet-800: #e99be9;
351
+ --color-violet-900: #f4c3f4;
352
+ --color-violet-950: #fcdffc;
353
+
354
+ --fontReverse: #000;
355
+ --bgContentBase: #121212;
356
+ --bgMask: 0, 0, 0, 0.6;
357
+ --bgTextSelection: 117, 164, 255, 0.3;
358
+ --lineDividerDefault: 207, 207, 207, 0.15;
359
+ --lineDividerModule: 0, 0, 0, 1;
360
+ }
361
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 仅声明 layer 顺序作为兜底,不引 tailwind 引擎也不声明 @source:
3
+ * - 消费者一定自己 `@import 'tailwindcss'`,会重复注入引擎一份 utility 骨架
4
+ * - @source 在 node_modules 下被 v4 默认排除,不能依赖,需要消费者在自己 css 里写
5
+ * `@source "../node_modules/@lark-apaas/client-toolkit-lite/dist";`
6
+ * 这条 @layer 与 tailwind 内部注入的完全一致,CSS 规则首次声明定序,所以放哪先 import 都 ok。
7
+ */
8
+ @layer theme, base, antd, components, utilities;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lark-apaas/client-toolkit-lite",
3
- "version": "1.1.7-alpha.23",
3
+ "version": "1.1.7-alpha.25",
4
4
  "description": "Lightweight client toolkit for Express/Vite tech stack - hooks, utils, and UI components without SDK integrations",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -28,6 +28,16 @@
28
28
  "import": "./dist/index.js",
29
29
  "types": "./dist/index.d.ts",
30
30
  "require": "./dist/index.cjs"
31
+ },
32
+ "./styles.css": {
33
+ "style": "./dist/styles/index.css",
34
+ "import": "./dist/styles/index.css",
35
+ "default": "./dist/styles/index.css"
36
+ },
37
+ "./styles/*": {
38
+ "style": "./dist/styles/*",
39
+ "import": "./dist/styles/*",
40
+ "default": "./dist/styles/*"
31
41
  }
32
42
  },
33
43
  "scripts": {