@teamix-evo/skills 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/package.json +2 -2
  2. package/src/teamix-evo-design-opentrek/SKILL.md +210 -42
  3. package/src/teamix-evo-design-opentrek/boundaries.md +3 -3
  4. package/src/teamix-evo-design-opentrek/components.md +41 -40
  5. package/src/teamix-evo-design-opentrek/examples/detail-ai-gateway-1.html +1069 -0
  6. package/src/teamix-evo-design-opentrek/examples/detail-ai-gateway-instance.html +941 -0
  7. package/src/teamix-evo-design-opentrek/examples/detail-page-api-doc.html +906 -0
  8. package/src/teamix-evo-design-opentrek/examples/detail-page-config.html +993 -0
  9. package/src/teamix-evo-design-opentrek/examples/detail-page-monitor.html +1339 -0
  10. package/src/teamix-evo-design-opentrek/examples/detail-page.html +933 -0
  11. package/src/teamix-evo-design-opentrek/examples/settings-page.html +1119 -0
  12. package/src/teamix-evo-design-opentrek/examples/standard-card-list.html +1094 -0
  13. package/src/teamix-evo-design-opentrek/examples/standard-table-list.html +1361 -0
  14. package/src/teamix-evo-design-opentrek/examples/wizard-form-page.html +877 -0
  15. package/src/teamix-evo-design-opentrek/flows.md +85 -12
  16. package/src/teamix-evo-design-opentrek/foundations.md +9 -9
  17. package/src/teamix-evo-design-opentrek/generation-flow.md +15 -3
  18. package/src/teamix-evo-design-opentrek/pages/detail-page/SKILL.md +260 -0
  19. package/src/teamix-evo-design-opentrek/pages/detail-page/patterns/api-doc-detail.md +163 -0
  20. package/src/teamix-evo-design-opentrek/pages/detail-page/patterns/comparison-detail.md +100 -0
  21. package/src/teamix-evo-design-opentrek/pages/detail-page/patterns/monitor-detail.md +190 -0
  22. package/src/teamix-evo-design-opentrek/pages/detail-page/patterns/resource-detail.md +148 -0
  23. package/src/teamix-evo-design-opentrek/pages/form-page/SKILL.md +362 -0
  24. package/src/teamix-evo-design-opentrek/pages/list-page/SKILL.md +286 -0
  25. package/src/teamix-evo-design-opentrek/pages/list-page/_shared/action-column-spec.md +60 -0
  26. package/src/teamix-evo-design-opentrek/pages/list-page/_shared/column-meta-rules.md +117 -0
  27. package/src/teamix-evo-design-opentrek/pages/list-page/_shared/search-combo-spec.md +194 -0
  28. package/src/teamix-evo-design-opentrek/pages/list-page/_shared/state-action-pattern.md +51 -0
  29. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/advanced-filter-list.md +94 -0
  30. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/card-list.md +558 -0
  31. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/drawer-list.md +76 -0
  32. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/expandable-list.md +70 -0
  33. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/l2-sidebar-list.md +73 -0
  34. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/standard-list.md +198 -0
  35. package/src/teamix-evo-design-opentrek/patterns/color-mapping.md +1 -1
  36. package/src/teamix-evo-design-opentrek/patterns/detail-page.md +217 -152
  37. package/src/teamix-evo-design-opentrek/patterns/form-page.md +437 -231
  38. package/src/teamix-evo-design-opentrek/patterns/list-page.md +220 -292
  39. package/src/teamix-evo-design-opentrek/patterns/page-types.md +40 -130
  40. package/src/teamix-evo-design-opentrek/rules/_assets/OP_AGENT RUNTIME.svg +1 -0
  41. package/src/teamix-evo-design-opentrek/rules/_assets/OP_AI GATEWAY.svg +1 -0
  42. package/src/teamix-evo-design-opentrek/rules/_assets/OP_AI STUDIO.svg +1 -0
  43. package/src/teamix-evo-design-opentrek/rules/_assets/OP_DEV-2.svg +1 -0
  44. package/src/teamix-evo-design-opentrek/rules/_assets/OP_LOGO.svg +1 -0
  45. package/src/teamix-evo-design-opentrek/rules/_assets/OP_OPS.svg +1 -0
  46. package/src/teamix-evo-design-opentrek/rules/boundaries.rules.json +3 -3
  47. package/src/teamix-evo-design-opentrek/rules/business-mapping.json +124 -0
  48. package/src/teamix-evo-design-opentrek/rules/common-components.json +924 -0
  49. package/src/teamix-evo-design-opentrek/rules/component-specs.json +1083 -0
  50. package/src/teamix-evo-design-opentrek/rules/design-tokens.css +433 -0
  51. package/src/teamix-evo-design-opentrek/rules/design-tokens.json +2798 -0
  52. package/src/teamix-evo-design-opentrek/rules/layout-rules.json +218 -0
  53. package/src/teamix-evo-design-opentrek/rules/page-flow.json +351 -0
  54. package/src/teamix-evo-design-opentrek/rules/page-frame.json +241 -0
  55. package/src/teamix-evo-design-opentrek/rules/page-header-spec.md +123 -0
  56. package/src/teamix-evo-design-opentrek/rules/page-types.json +206 -0
  57. package/src/teamix-evo-design-opentrek/rules/sidebar-spec.md +217 -0
  58. package/src/teamix-evo-design-opentrek/rules/styling.json +188 -0
  59. package/src/teamix-evo-design-opentrek/rules/token-mapping.md +284 -0
  60. package/src/teamix-evo-design-uni-manager/SKILL.md +1 -1
  61. package/src/teamix-evo-design-uni-manager/boundaries.md +3 -3
  62. package/src/teamix-evo-design-uni-manager/brand.md +1 -1
  63. package/src/teamix-evo-design-uni-manager/components.md +30 -28
  64. package/src/teamix-evo-design-uni-manager/foundations.md +21 -21
  65. package/src/teamix-evo-design-uni-manager/generation-flow.md +3 -1
  66. package/src/teamix-evo-design-uni-manager/patterns/detail-page.md +1 -1
  67. package/src/teamix-evo-design-uni-manager/patterns/form-page.md +18 -18
  68. package/src/teamix-evo-design-uni-manager/patterns/list-page.md +29 -29
  69. package/src/teamix-evo-design-uni-manager/patterns/page-types.md +11 -11
  70. package/src/teamix-evo-design-uni-manager/philosophy.md +1 -1
  71. package/src/teamix-evo-design-uni-manager/rules/boundaries.rules.json +3 -3
  72. package/src/teamix-evo-design-opentrek/patterns/sidebar.md +0 -122
@@ -0,0 +1,2798 @@
1
+ {
2
+ "version": "7.8.5",
3
+ "description": "设计 Token 规范 v7.8.5(teamix-evo 对齐版)。锁定 TrekClaw v4.1 CSS 变量(HSL 三元组格式)作为底层唯一真相源,颜色 token 命名已迁移为 teamix-evo `--color-*` 前缀(对齐 `@teamix-evo/tokens/variants/opentrek/theme.css` 的 Tailwind v4 @theme 命名)。非颜色 token(spacing / radius / font / shadow / duration / z-index)保持原命名,已与 teamix-evo 一致。legacy 别名(gray-title / gray-bg / data-1–10 / *-aura 等,详见同目录 token-mapping.md)保留原名作为 TODO,待 teamix-evo 后续版本补齐。v7.8.5 变更:Shadow 分区注释同步 v4.1 源的 ContentCard surface 完整说明块(去掉 1px border + 使用 var(--shadow-sm))。",
4
+ "source": {
5
+ "path": "../../design token进展/4.1/迭代/design-tokens.css",
6
+ "docPath": "../../design token进展/4.1/迭代/OP-DesignTokens-V5.md",
7
+ "format": "HSL 三元组(不含 hsl() 包裹),使用方式:hsl(var(--color-token-name))。注意:运行时 @teamix-evo/tokens 的 theme.css 采用 hsl() 包裹后的值格式,实际使用时依赖 Tailwind v4 utility 或 var(--color-*)不需手动 hsl() 包裹;本文件作为 Skill 参考文档保持 TrekClaw 原始 HSL 三元组以便 AI 查询 token 原始色值。",
8
+ "lastSynced": "2026-06-10",
9
+ "cssDelivery": {
10
+ "path": "rules/design-tokens.css",
11
+ "generatedFrom": "本文件(design-tokens.json)",
12
+ "generateCommand": "node design-spec/scripts/generate-tokens-css.mjs",
13
+ "validateCommand": "node design-spec/scripts/validate-json-source.mjs",
14
+ "instruction": "design-tokens.css 为运行时产物,由 JSON 自动生成,禁止手动编辑。生成 HTML 时,将 design-tokens.css 中 :root 块内的全部 CSS 变量定义嵌入页面 <style> 标签;生成 React/TSX 组件时,确保项目已通过 @import 引入该 CSS 文件",
15
+ "htmlMode": "inline in <style> tag",
16
+ "reactMode": "@import './styles/design-tokens.css' in index.css"
17
+ }
18
+ },
19
+ "cssGeneration": {
20
+ "fileHeader": "TrekClaw Design Tokens — v4.1\n源:OP Design Tokens v4.1(tokens-v4.json)\n品牌主色:#0055EE(深蓝 218.6°)\nHSL 格式(不含 hsl() 包裹),使用方式:hsl(var(--token-name))\n更新时间:2026-05-15",
21
+ "wrapper": "@layer base",
22
+ "sections": [
23
+ {
24
+ "id": "brand",
25
+ "comment": "Brand / 主色(#0055EE 深蓝,真实色相 218.6°)\n实测 #0055EE 的 HSL ≈ hsl(218.6, 100%, 46.7%),以实际色值为准。",
26
+ "vars": [
27
+ "--color-primary",
28
+ "--color-primary-foreground",
29
+ "--color-primary-hover",
30
+ "--color-primary-pressed",
31
+ "--color-primary-glow"
32
+ ]
33
+ },
34
+ {
35
+ "id": "accent",
36
+ "comment": "Accent / 辅助色(MasterGuide 提取)\n用途:UI 强调色、图标、标签、次要操作\n排序:蓝 → 紫 → 杏 → 靛 → 绿 → 洋红 → 青 → 橙 → 莓 → 橄榄",
37
+ "vars": [
38
+ "--color-accent-blue",
39
+ "--color-accent-violet",
40
+ "--color-accent-apricot",
41
+ "--color-accent-indigo",
42
+ "--color-accent-green",
43
+ "--color-accent-magenta",
44
+ "--color-accent-turquoise",
45
+ "--color-accent-orange",
46
+ "--color-accent-berry",
47
+ "--color-accent-olive"
48
+ ]
49
+ },
50
+ {
51
+ "id": "gray",
52
+ "comment": "Gray / 灰色完整色阶(v7.4 重构 — 合并整合 + 反白色新增)\n色相统一冷灰调(210°/216°/218°/220°),8 级语义分层",
53
+ "vars": [
54
+ "--color-gray-primary",
55
+ "--color-gray-primary-foreground",
56
+ "--color-gray-secondary-foreground",
57
+ "--color-muted-foreground",
58
+ "--color-gray-disabled",
59
+ "--color-gray-line",
60
+ "--color-gray-sidebar-accent",
61
+ "--color-gray-muted",
62
+ "--color-gray-white"
63
+ ]
64
+ },
65
+ {
66
+ "id": "gray-legacy",
67
+ "comment": "Legacy 别名(保留兼容旧引用,不新增使用)",
68
+ "vars": [
69
+ "--gray-title",
70
+ "--gray-secondary",
71
+ "--gray-tertiary",
72
+ "--gray-border",
73
+ "--gray-fill",
74
+ "--gray-bg-dark",
75
+ "--gray-bg"
76
+ ]
77
+ },
78
+ {
79
+ "id": "semantic",
80
+ "comment": "语义映射(shadcn 标准)",
81
+ "vars": [
82
+ "--color-foreground",
83
+ "--page-title",
84
+ "--color-border",
85
+ "--color-input",
86
+ "--color-ring"
87
+ ]
88
+ },
89
+ {
90
+ "id": "background",
91
+ "comment": "Background",
92
+ "vars": [
93
+ "--color-background",
94
+ "--color-background-dark",
95
+ "--color-background-panel",
96
+ "--background-end"
97
+ ]
98
+ },
99
+ {
100
+ "id": "card-popover",
101
+ "comment": "Card / Popover / Secondary / Accent",
102
+ "vars": [
103
+ "--color-card",
104
+ "--color-card-foreground",
105
+ "--color-popover",
106
+ "--color-popover-foreground",
107
+ "--color-secondary",
108
+ "--color-secondary-foreground",
109
+ "--color-muted",
110
+ "--color-accent",
111
+ "--color-accent-foreground"
112
+ ]
113
+ },
114
+ {
115
+ "id": "success",
116
+ "comment": "Success / 成功色(#16A34A,Tailwind green-600)",
117
+ "vars": [
118
+ "--color-success",
119
+ "--color-success-foreground",
120
+ "--color-success-hover",
121
+ "--color-success-pressed",
122
+ "--color-success-bg",
123
+ "--color-success-border",
124
+ "--success-dark",
125
+ "--success-medium",
126
+ "--success-light",
127
+ "--success-aura"
128
+ ]
129
+ },
130
+ {
131
+ "id": "destructive",
132
+ "comment": "Destructive / 警示色(#DC2626,Tailwind red-600)",
133
+ "vars": [
134
+ "--color-destructive",
135
+ "--color-destructive-foreground",
136
+ "--color-destructive-hover",
137
+ "--color-destructive-pressed",
138
+ "--color-destructive-bg",
139
+ "--color-destructive-border",
140
+ "--destructive-dark",
141
+ "--destructive-light",
142
+ "--destructive-aura"
143
+ ]
144
+ },
145
+ {
146
+ "id": "warning",
147
+ "comment": "Warning / 提醒色(#D97706,Tailwind amber-600)",
148
+ "vars": [
149
+ "--color-warning",
150
+ "--color-warning-foreground",
151
+ "--color-warning-hover",
152
+ "--color-warning-pressed",
153
+ "--color-warning-bg",
154
+ "--color-warning-border",
155
+ "--warning-dark",
156
+ "--warning-light",
157
+ "--warning-aura"
158
+ ]
159
+ },
160
+ {
161
+ "id": "info",
162
+ "comment": "Info / 信息提示色(#2563EB,Tailwind blue-600)",
163
+ "vars": [
164
+ "--color-info",
165
+ "--color-info-foreground",
166
+ "--color-info-hover",
167
+ "--color-info-pressed",
168
+ "--color-info-bg",
169
+ "--color-info-border",
170
+ "--color-info-light",
171
+ "--info-aura"
172
+ ]
173
+ },
174
+ {
175
+ "id": "chart",
176
+ "comment": "图表用色 — 10 色标准组合(MasterGuide 提取)",
177
+ "vars": [
178
+ "--color-chart-1",
179
+ "--color-chart-2",
180
+ "--color-chart-3",
181
+ "--color-chart-4",
182
+ "--color-chart-5",
183
+ "--color-chart-6",
184
+ "--color-chart-7",
185
+ "--color-chart-8",
186
+ "--color-chart-9",
187
+ "--color-chart-10"
188
+ ]
189
+ },
190
+ {
191
+ "id": "chart-legacy",
192
+ "comment": "Legacy 别名(兼容 --data-* 旧命名)",
193
+ "vars": [
194
+ "--data-1",
195
+ "--data-2",
196
+ "--data-3",
197
+ "--data-4",
198
+ "--data-5",
199
+ "--data-6",
200
+ "--data-7",
201
+ "--data-8",
202
+ "--data-9",
203
+ "--data-10"
204
+ ]
205
+ },
206
+ {
207
+ "id": "topbar-sidebar",
208
+ "comment": "顶栏 / 侧边栏",
209
+ "vars": [
210
+ "--color-topbar",
211
+ "--color-topbar-foreground",
212
+ "--color-topbar-divider",
213
+ "--topbar-height",
214
+ "--color-sidebar",
215
+ "--color-sidebar-foreground",
216
+ "--color-sidebar-active",
217
+ "--color-sidebar-active-foreground",
218
+ "--color-sidebar-hover",
219
+ "--color-sidebar-title",
220
+ "--color-sidebar-group",
221
+ "--color-sidebar-item",
222
+ "--color-sidebar-item-muted",
223
+ "--color-sidebar-accent",
224
+ "--color-sidebar-accent-foreground",
225
+ "--color-sidebar-border",
226
+ "--color-sidebar-ring",
227
+ "--color-sidebar-primary",
228
+ "--color-sidebar-primary-foreground",
229
+ "--color-avatar-bg"
230
+ ]
231
+ },
232
+ {
233
+ "id": "sidebar-collapsed",
234
+ "comment": "Sidebar Collapsed State",
235
+ "vars": [
236
+ "--sidebar-collapsed-width",
237
+ "--sidebar-menu-item-height",
238
+ "--sidebar-menu-item-size-collapsed",
239
+ "--sidebar-menu-item-gap-collapsed",
240
+ "--sidebar-header-padding-collapsed",
241
+ "--sidebar-footer-padding-collapsed",
242
+ "--sidebar-flyout-z-index",
243
+ "--sidebar-flyout-min-width",
244
+ "--sidebar-flyout-item-height",
245
+ "--sidebar-centered-axis",
246
+ "--sidebar-expand-icon-size"
247
+ ]
248
+ },
249
+ {
250
+ "id": "type-identifier",
251
+ "comment": "类型标识 - API / MCP",
252
+ "vars": [
253
+ "--color-type-api",
254
+ "--color-type-api-light",
255
+ "--color-type-api-border",
256
+ "--color-type-mcp",
257
+ "--color-type-mcp-light",
258
+ "--color-type-mcp-border"
259
+ ]
260
+ },
261
+ {
262
+ "id": "status",
263
+ "comment": "状态指示点",
264
+ "vars": [
265
+ "--color-status-running",
266
+ "--color-status-stopped",
267
+ "--color-status-error"
268
+ ]
269
+ },
270
+ {
271
+ "id": "terminal",
272
+ "comment": "终端 / 代码块",
273
+ "vars": [
274
+ "--color-terminal",
275
+ "--color-terminal-foreground"
276
+ ]
277
+ },
278
+ {
279
+ "id": "font-family",
280
+ "comment": "Font Family / 字体族(v7.8.4 新增)\nbody 必须使用 var(--font-sans),代码片段使用 var(--font-mono)\n禁止在页面中硬编码 font-family 堆栈",
281
+ "vars": [
282
+ "--font-sans",
283
+ "--font-mono"
284
+ ]
285
+ },
286
+ {
287
+ "id": "typography",
288
+ "comment": "Typography / 字号等级(v4 规则)\nbase=12 / lg=14 / xl=16 / 2xl=18",
289
+ "vars": [
290
+ "--font-size-base",
291
+ "--font-size-lg",
292
+ "--font-size-xl",
293
+ "--font-size-2xl",
294
+ "--font-size-page-header",
295
+ "--font-weight-normal",
296
+ "--font-weight-medium",
297
+ "--font-weight-black",
298
+ "--line-height-input",
299
+ "--line-height-normal",
300
+ "--line-height-dialog-title",
301
+ "--letter-spacing-tight",
302
+ "--letter-spacing-normal"
303
+ ]
304
+ },
305
+ {
306
+ "id": "spacing",
307
+ "comment": "间距(v4 保留项目原值:button-gap=8 / card-gap=16 / page-container-*)",
308
+ "vars": [
309
+ "--gap-xs",
310
+ "--btn-padding-x",
311
+ "--btn-padding-x-sm",
312
+ "--button-gap",
313
+ "--tabs-gap",
314
+ "--card-gap",
315
+ "--page-container-gap",
316
+ "--page-container-padding",
317
+ "--page-container-padding-left",
318
+ "--card-padding-x"
319
+ ]
320
+ },
321
+ {
322
+ "id": "layout-frame",
323
+ "comment": "Layout Frame Width",
324
+ "vars": [
325
+ "--layout-sidebar-width"
326
+ ]
327
+ },
328
+ {
329
+ "id": "table-cell",
330
+ "comment": "Table Cell Padding (v7.5 三层模型)",
331
+ "vars": [
332
+ "--table-cell-padding-x",
333
+ "--table-first-cell-padding-left",
334
+ "--table-last-cell-padding-right"
335
+ ]
336
+ },
337
+ {
338
+ "id": "card-grid",
339
+ "comment": "CardGrid 列宽预设 (v7.2 新增,业务卡片页 minWidth token 化)",
340
+ "vars": [
341
+ "--card-grid-min-compact",
342
+ "--card-grid-min-standard",
343
+ "--card-grid-min-comfortable",
344
+ "--card-grid-min-feature"
345
+ ]
346
+ },
347
+ {
348
+ "id": "page-header",
349
+ "comment": "Page Header",
350
+ "vars": [
351
+ "--page-header-height",
352
+ "--breadcrumb-height"
353
+ ]
354
+ },
355
+ {
356
+ "id": "action-toolbar",
357
+ "comment": "ActionToolbar",
358
+ "vars": [
359
+ "--action-toolbar-search-combo-gap"
360
+ ]
361
+ },
362
+ {
363
+ "id": "radius",
364
+ "comment": "圆角(v4 更新)\nsm=4 / md=8 / lg=12 / xl=16 / full=9999\ndrawer-radius 已移除",
365
+ "vars": [
366
+ "--radius",
367
+ "--radius-sm",
368
+ "--radius-md",
369
+ "--radius-lg",
370
+ "--radius-xl",
371
+ "--radius-full",
372
+ "--card-radius",
373
+ "--input-radius"
374
+ ]
375
+ },
376
+ {
377
+ "id": "input",
378
+ "comment": "Input / 输入框",
379
+ "vars": [
380
+ "--input-height",
381
+ "--input-font-size",
382
+ "--text-font-size",
383
+ "--input-line-height",
384
+ "--input-padding-x",
385
+ "--input-padding-y",
386
+ "--color-input-placeholder",
387
+ "--input-icon-size"
388
+ ]
389
+ },
390
+ {
391
+ "id": "dialog",
392
+ "comment": "Dialog / 弹窗",
393
+ "vars": [
394
+ "--dialog-width-s",
395
+ "--dialog-width-m",
396
+ "--dialog-width-l",
397
+ "--dialog-width-xl",
398
+ "--dialog-header-height",
399
+ "--dialog-footer-height",
400
+ "--dialog-body-padding-x",
401
+ "--dialog-body-padding-y",
402
+ "--shadow-dialog"
403
+ ]
404
+ },
405
+ {
406
+ "id": "drawer",
407
+ "comment": "Drawer / 抽屉",
408
+ "vars": [
409
+ "--drawer-width-s",
410
+ "--drawer-width-m",
411
+ "--drawer-width-l",
412
+ "--drawer-width-xl"
413
+ ]
414
+ },
415
+ {
416
+ "id": "shadow",
417
+ "comment": "Shadow / 阴影等级(v4 新增;v7.6 补充 ContentCard surface 规则)\n----------------------------------------\nv7.6 内容区大卡片容器(ContentCard / G-C024 作为白卡容器使用时)表面规则:\n- 去掉 1px solid border(不使用 --color-gray-line 边框)\n- 使用最弱阴影 var(--shadow-sm) = 0 1px 2px rgba(0,0,0,0.05)\n详见 design-tokens.json · shadowMapping",
418
+ "vars": [
419
+ "--shadow-none",
420
+ "--shadow-sm",
421
+ "--shadow-DEFAULT",
422
+ "--shadow-md",
423
+ "--shadow-lg",
424
+ "--shadow-xl",
425
+ "--shadow-2xl",
426
+ "--shadow-dialog",
427
+ "--shadow-select-content"
428
+ ]
429
+ },
430
+ {
431
+ "id": "animation",
432
+ "comment": "Animation / 动画(v4 新增)",
433
+ "vars": [
434
+ "--duration-fast",
435
+ "--duration-normal",
436
+ "--duration-slow",
437
+ "--duration-slower",
438
+ "--easing-linear",
439
+ "--easing-ease",
440
+ "--easing-ease-in",
441
+ "--easing-ease-out",
442
+ "--easing-ease-in-out"
443
+ ]
444
+ },
445
+ {
446
+ "id": "z-index",
447
+ "comment": "Z-index 层级",
448
+ "vars": [
449
+ "--z-base",
450
+ "--z-dropdown",
451
+ "--z-sticky",
452
+ "--z-overlay",
453
+ "--z-modal",
454
+ "--z-tooltip"
455
+ ]
456
+ },
457
+ {
458
+ "id": "form",
459
+ "comment": "Form Layout / 表单布局",
460
+ "vars": [
461
+ "--form-label-width",
462
+ "--form-control-max-width",
463
+ "--form-row-gap",
464
+ "--form-row-padding-y",
465
+ "--form-description-font-size",
466
+ "--form-required-indicator-margin-left"
467
+ ]
468
+ },
469
+ {
470
+ "id": "pagination",
471
+ "comment": "Pagination / 分页",
472
+ "vars": [
473
+ "--pagination-button-size",
474
+ "--pagination-arrow-icon-size",
475
+ "--pagination-ellipsis-icon-size",
476
+ "--button-sm-height"
477
+ ]
478
+ },
479
+ {
480
+ "id": "stepper",
481
+ "comment": "Stepper / 步进器",
482
+ "vars": [
483
+ "--stepper-button-width",
484
+ "--stepper-button-height",
485
+ "--stepper-input-width",
486
+ "--stepper-input-height"
487
+ ]
488
+ }
489
+ ]
490
+ },
491
+ "grayScale": {
492
+ "description": "灰色完整色阶(v7.4 重构)。色相统一冷灰调(210°/216°/218°/220°),8 级语义分层。重要变更:--gray-border + --color-gray-line 合并为单一 --color-gray-line;--gray-bg-dark + --gray-bg + --gray-fill 合并为 --color-gray-muted;--gray-tertiary 重命名为 --color-muted-foreground;--gray-title 归并到 --color-gray-primary;新增 --color-gray-primary-foreground 与 --color-gray-sidebar-accent。旧变量以 Legacy 别名形式保留,指向新色。使用方式:hsl(var(--gray-*))。",
493
+ "palette": {
494
+ "--color-gray-primary": {
495
+ "hsl": "220 9% 7%",
496
+ "hex": "#101113",
497
+ "usage": "主要文字、大标题、sidebar 激活文字、顶部导航背景"
498
+ },
499
+ "--color-gray-primary-foreground": {
500
+ "hsl": "210 33% 99%",
501
+ "hex": "#FBFCFD",
502
+ "usage": "主题反白色 / 侧边栏反白文字色"
503
+ },
504
+ "--color-gray-secondary-foreground": {
505
+ "hsl": "216 4% 26%",
506
+ "hex": "#414346",
507
+ "usage": "次要文字颜色"
508
+ },
509
+ "--color-muted-foreground": {
510
+ "hsl": "216 2% 45%",
511
+ "hex": "#717376",
512
+ "usage": "弱化文字色(替代旧 --gray-tertiary)"
513
+ },
514
+ "--color-gray-disabled": {
515
+ "hsl": "210 3% 63%",
516
+ "hex": "#9DA0A3",
517
+ "usage": "禁用文字颜色、输入框激活态"
518
+ },
519
+ "--color-gray-line": {
520
+ "hsl": "210 9% 91%",
521
+ "hex": "#E6E8EA",
522
+ "usage": "描边色、分割线、卡片边框(合并旧 --gray-border + --color-gray-line)"
523
+ },
524
+ "--color-gray-sidebar-accent": {
525
+ "hsl": "210 12% 93%",
526
+ "hex": "#ECEEF0",
527
+ "usage": "sidebar 激活态背景"
528
+ },
529
+ "--color-gray-muted": {
530
+ "hsl": "220 18% 97%",
531
+ "hex": "#F5F6F8",
532
+ "usage": "表单禁用态色、目录激活背景色、表头颜色、页面背景、消息填充(合并旧 --gray-bg-dark + --gray-bg + --gray-fill)"
533
+ },
534
+ "--color-gray-white": {
535
+ "hsl": "0 0% 100%",
536
+ "hex": "#FFFFFF",
537
+ "usage": "纯白"
538
+ }
539
+ },
540
+ "legacyAliases": {
541
+ "description": "保留兼容旧变量名,新页面不得使用。迁移完成后可在后续版本移除。",
542
+ "--gray-title": {
543
+ "alias": "--color-gray-primary",
544
+ "hsl": "220 9% 7%",
545
+ "hex": "#101113"
546
+ },
547
+ "--gray-secondary": {
548
+ "alias": "--color-gray-secondary-foreground",
549
+ "hsl": "216 4% 26%",
550
+ "hex": "#414346"
551
+ },
552
+ "--gray-tertiary": {
553
+ "alias": "--color-muted-foreground",
554
+ "hsl": "216 2% 45%",
555
+ "hex": "#717376"
556
+ },
557
+ "--gray-border": {
558
+ "alias": "--color-gray-line",
559
+ "hsl": "210 9% 91%",
560
+ "hex": "#E6E8EA"
561
+ },
562
+ "--gray-fill": {
563
+ "alias": "--color-gray-muted",
564
+ "hsl": "220 18% 97%",
565
+ "hex": "#F5F6F8"
566
+ },
567
+ "--gray-bg-dark": {
568
+ "alias": "--color-gray-muted",
569
+ "hsl": "220 18% 97%",
570
+ "hex": "#F5F6F8"
571
+ },
572
+ "--gray-bg": {
573
+ "alias": "--color-gray-muted",
574
+ "hsl": "220 18% 97%",
575
+ "hex": "#F5F6F8"
576
+ }
577
+ }
578
+ },
579
+ "colorMapping": {
580
+ "description": "语义色名 → TrekClaw CSS 变量映射。生成/翻新页面时必须使用 CSS 变量引用,禁止硬编码色值(F1)。",
581
+ "primary": {
582
+ "var": "--color-primary",
583
+ "fallback": "#0055EE",
584
+ "hsl": "218.6 100% 46.7%",
585
+ "usage": "主按钮、链接、选中态、聚焦态边框、行动点、高亮"
586
+ },
587
+ "primaryForeground": {
588
+ "var": "--color-primary-foreground",
589
+ "fallback": "#FFFFFF",
590
+ "usage": "主色上的前景文字",
591
+ "hsl": "0 0% 100%"
592
+ },
593
+ "primaryHover": {
594
+ "var": "--color-primary-hover",
595
+ "fallback": "#004CD6",
596
+ "hsl": "218.6 100% 42%",
597
+ "usage": "主按钮 hover 态"
598
+ },
599
+ "primaryPressed": {
600
+ "var": "--color-primary-pressed",
601
+ "fallback": "#0044BF",
602
+ "hsl": "218.6 100% 37.5%",
603
+ "usage": "主按钮 pressed 态"
604
+ },
605
+ "success": {
606
+ "var": "--color-success",
607
+ "fallback": "#16A34A",
608
+ "usage": "成功状态、运行中、已开通",
609
+ "hsl": "142 76% 36%"
610
+ },
611
+ "successForeground": {
612
+ "var": "--color-success-foreground",
613
+ "fallback": "#FFFFFF",
614
+ "usage": "成功色上的前景文字",
615
+ "hsl": "0 0% 100%"
616
+ },
617
+ "successHover": {
618
+ "var": "--color-success-hover",
619
+ "fallback": "#15803D",
620
+ "usage": "成功按钮 hover 态",
621
+ "hsl": "142 72% 29%"
622
+ },
623
+ "successBg": {
624
+ "var": "--color-success-bg",
625
+ "fallback": "#ECFDF5",
626
+ "usage": "成功状态背景",
627
+ "hsl": "152 82% 96%"
628
+ },
629
+ "successBorder": {
630
+ "var": "--color-success-border",
631
+ "fallback": "#86EFAC",
632
+ "usage": "成功状态边框",
633
+ "hsl": "142 77% 73%"
634
+ },
635
+ "warning": {
636
+ "var": "--color-warning",
637
+ "fallback": "#D97706",
638
+ "hsl": "40 88% 48%",
639
+ "usage": "警告状态、创建中、停止中"
640
+ },
641
+ "warningForeground": {
642
+ "var": "--color-warning-foreground",
643
+ "fallback": "#FFFFFF",
644
+ "usage": "警告色上的前景文字",
645
+ "hsl": "0 0% 100%"
646
+ },
647
+ "warningHover": {
648
+ "var": "--color-warning-hover",
649
+ "fallback": "#B45309",
650
+ "usage": "警告按钮 hover 态",
651
+ "hsl": "38 85% 40%"
652
+ },
653
+ "warningBg": {
654
+ "var": "--color-warning-bg",
655
+ "fallback": "#FFF3DB",
656
+ "usage": "警告状态背景",
657
+ "hsl": "43 100% 94%"
658
+ },
659
+ "warningBorder": {
660
+ "var": "--color-warning-border",
661
+ "fallback": "#FBBF24",
662
+ "usage": "警告状态边框",
663
+ "hsl": "40 92% 68%"
664
+ },
665
+ "destructive": {
666
+ "var": "--color-destructive",
667
+ "fallback": "#DC2626",
668
+ "usage": "错误状态、已停止、失败、删除操作",
669
+ "hsl": "0 72% 51%"
670
+ },
671
+ "destructiveForeground": {
672
+ "var": "--color-destructive-foreground",
673
+ "fallback": "#FFFFFF",
674
+ "usage": "警示色上的前景文字",
675
+ "hsl": "0 0% 100%"
676
+ },
677
+ "destructiveHover": {
678
+ "var": "--color-destructive-hover",
679
+ "fallback": "#B91C1C",
680
+ "usage": "destructive 按钮 hover 态",
681
+ "hsl": "0 74% 42%"
682
+ },
683
+ "destructiveBg": {
684
+ "var": "--color-destructive-bg",
685
+ "fallback": "#FEF2F2",
686
+ "usage": "错误状态背景",
687
+ "hsl": "0 86% 97%"
688
+ },
689
+ "destructiveBorder": {
690
+ "var": "--color-destructive-border",
691
+ "fallback": "#FCA5A5",
692
+ "usage": "错误状态边框",
693
+ "hsl": "0 93% 82%"
694
+ },
695
+ "info": {
696
+ "var": "--color-info",
697
+ "fallback": "#2563EB",
698
+ "usage": "信息提示、异步操作中",
699
+ "hsl": "221 83% 53%"
700
+ },
701
+ "infoForeground": {
702
+ "var": "--color-info-foreground",
703
+ "fallback": "#FFFFFF",
704
+ "usage": "信息色上的前景文字",
705
+ "hsl": "0 0% 100%"
706
+ },
707
+ "infoBg": {
708
+ "var": "--color-info-bg",
709
+ "fallback": "#EFF6FF",
710
+ "usage": "信息状态背景",
711
+ "hsl": "214 100% 97%"
712
+ },
713
+ "infoBorder": {
714
+ "var": "--color-info-border",
715
+ "fallback": "#93C5FD",
716
+ "usage": "信息状态边框",
717
+ "hsl": "212 96% 78%"
718
+ },
719
+ "muted": {
720
+ "var": "--color-muted-foreground",
721
+ "fallback": "#717376",
722
+ "usage": "弱化文字、辅助文字、标签、提示文字、不可用操作",
723
+ "hsl": "216 2% 45%"
724
+ },
725
+ "textPlaceholder": {
726
+ "var": "--color-input-placeholder",
727
+ "fallback": "#AAAAAA",
728
+ "usage": "占位符、不可用文字",
729
+ "hsl": "0 0% 66.7%"
730
+ },
731
+ "textPrimary": {
732
+ "var": "--color-gray-primary",
733
+ "fallback": "#101113",
734
+ "usage": "主要文字、正文、按钮文字、大标题(v7.4 起合并 textTitle)",
735
+ "hsl": "220 9% 7%"
736
+ },
737
+ "textPrimaryForeground": {
738
+ "var": "--color-gray-primary-foreground",
739
+ "fallback": "#FBFCFD",
740
+ "usage": "主题反白色 / 侧边栏反白文字色",
741
+ "hsl": "210 33% 99%"
742
+ },
743
+ "textPageTitle": {
744
+ "var": "--color-gray-primary",
745
+ "fallback": "#101113",
746
+ "usage": "PageHeader 标题专用色(v7.4 起 → --color-gray-primary)",
747
+ "hsl": "220 9% 7%"
748
+ },
749
+ "textTitle": {
750
+ "var": "--color-gray-primary",
751
+ "fallback": "#101113",
752
+ "usage": "页面标题、弹窗标题、导航背景(v7.4 起 → --color-gray-primary)",
753
+ "hsl": "220 9% 7%"
754
+ },
755
+ "textSecondary": {
756
+ "var": "--color-gray-secondary-foreground",
757
+ "fallback": "#414346",
758
+ "usage": "次要文字、常态页码、描述文字",
759
+ "hsl": "216 4% 26%"
760
+ },
761
+ "textDisabled": {
762
+ "var": "--color-gray-disabled",
763
+ "fallback": "#9DA0A3",
764
+ "usage": "禁用态文字、分组标签文字、输入框激活态",
765
+ "hsl": "210 3% 63%"
766
+ },
767
+ "background": {
768
+ "var": "--color-background",
769
+ "hsl": "220 18% 97%",
770
+ "fallback": "#F5F6F8",
771
+ "usage": "页面级背景",
772
+ "note": "页面背景色与 sidebar 背景色保持一致(v7.4 起 → --color-gray-muted)"
773
+ },
774
+ "card": {
775
+ "var": "--color-card",
776
+ "fallback": "#FFFFFF",
777
+ "usage": "卡片与弹窗背景、输入框背景",
778
+ "hsl": "0 0% 100%"
779
+ },
780
+ "pageBackground": {
781
+ "var": "--color-background",
782
+ "hsl": "220 18% 97%",
783
+ "fallback": "#F5F6F8",
784
+ "usage": "页面级背景",
785
+ "note": "页面背景色与 sidebar 背景色保持一致"
786
+ },
787
+ "border": {
788
+ "var": "--color-gray-line",
789
+ "fallback": "#E6E8EA",
790
+ "usage": "表单输入框边框、描边色(v7.4 起合并旧 --gray-border + --color-gray-line → --color-gray-line)",
791
+ "hsl": "210 9% 91%"
792
+ },
793
+ "borderLight": {
794
+ "var": "--color-gray-line",
795
+ "fallback": "#E6E8EA",
796
+ "usage": "卡片边框、分割线、outline 按钮边框",
797
+ "hsl": "210 9% 91%"
798
+ },
799
+ "borderFocus": {
800
+ "var": "--color-primary",
801
+ "fallback": "#0035F5",
802
+ "usage": "Focus 环、输入框聚焦态边框",
803
+ "hsl": "218.6 100% 46.7%"
804
+ },
805
+ "subtle": {
806
+ "var": "--color-gray-muted",
807
+ "hsl": "220 18% 97%",
808
+ "fallback": "#F5F6F8",
809
+ "usage": "消息填充、hover 背景、导航按钮(v7.4 起 → --color-gray-muted)"
810
+ },
811
+ "subtleDark": {
812
+ "var": "--color-gray-muted",
813
+ "hsl": "220 18% 97%",
814
+ "fallback": "#F5F6F8",
815
+ "usage": "表单禁用背景、输入框 disabled 态(v7.4 起 → --color-gray-muted)"
816
+ },
817
+ "sidebarAccent": {
818
+ "var": "--color-gray-sidebar-accent",
819
+ "hsl": "210 12% 93%",
820
+ "fallback": "#ECEEF0",
821
+ "usage": "sidebar 激活态背景(v7.4 新增,实际使用请参考 sidebarRules.colors.menuItem.active)"
822
+ },
823
+ "white": {
824
+ "var": "--color-gray-white",
825
+ "hsl": "0 0% 100%",
826
+ "fallback": "#FFFFFF",
827
+ "usage": "纯白背景,如批量操作栏、对话框背景"
828
+ },
829
+ "rowHover": {
830
+ "$ref": "#/colorMapping/subtle",
831
+ "usage": "表格行 hover 背景"
832
+ },
833
+ "rowSelected": {
834
+ "$ref": "#/colorMapping/subtle",
835
+ "usage": "表格行 selected 背景"
836
+ },
837
+ "tableHeader": {
838
+ "var": "--color-gray-muted",
839
+ "hsl": "220 18% 97%",
840
+ "fallback": "#F5F6F8",
841
+ "usage": "表头背景色",
842
+ "note": "v7.4 起 --color-gray-muted 与 --color-background、--color-sidebar 保持一致(220 18% 97%)= #F5F6F8"
843
+ },
844
+ "bulkActionBarBg": {
845
+ "value": "#ffffff",
846
+ "usage": "批量操作栏背景色(纯白)"
847
+ },
848
+ "selected": {
849
+ "var": "--color-sidebar-accent",
850
+ "fallback": "#F6FAFF",
851
+ "usage": "表格行选中背景(sidebar 选中态用 --color-sidebar-active,见 sidebarRules.colors.menuItem.active)",
852
+ "hsl": "210 12% 93%"
853
+ },
854
+ "sidebarBg": {
855
+ "var": "--color-sidebar",
856
+ "fallback": "#F5F6F8",
857
+ "usage": "侧边栏背景色(v7.4 起 → --color-gray-muted)",
858
+ "hsl": "220 18% 97%"
859
+ },
860
+ "sidebarForeground": {
861
+ "var": "--color-sidebar-foreground",
862
+ "fallback": "#101113",
863
+ "usage": "侧边栏默认文字色(v7.4 起 → --color-gray-primary)",
864
+ "hsl": "220 9% 7%"
865
+ },
866
+ "sidebarActiveBg": {
867
+ "var": "--color-sidebar-active",
868
+ "fallback": "#ECEEF0",
869
+ "usage": "侧边栏激活态背景色(v7.4 起 → --color-gray-sidebar-accent)",
870
+ "hsl": "210 12% 93%"
871
+ },
872
+ "sidebarActiveFg": {
873
+ "var": "--color-sidebar-active-foreground",
874
+ "fallback": "#101113",
875
+ "usage": "侧边栏激活态文字色(v7.4 起 → --color-gray-primary)",
876
+ "hsl": "220 9% 7%"
877
+ },
878
+ "sidebarHoverBg": {
879
+ "var": "--color-sidebar-hover",
880
+ "fallback": "#F5F6F8",
881
+ "usage": "侧边栏菜单项 hover 背景色(v7.4 起 → --color-gray-muted)",
882
+ "hsl": "220 18% 97%"
883
+ },
884
+ "sidebarTitle": {
885
+ "var": "--color-sidebar-title",
886
+ "fallback": "#101113",
887
+ "usage": "侧边栏标题文字色(v7.4 起 → --color-gray-primary)",
888
+ "hsl": "220 9% 7%"
889
+ },
890
+ "sidebarGroup": {
891
+ "var": "--color-sidebar-group",
892
+ "fallback": "#717376",
893
+ "usage": "侧边栏分组标题文字色(v7.4 起 → --color-muted-foreground)",
894
+ "hsl": "216 2% 45%"
895
+ },
896
+ "sidebarItem": {
897
+ "var": "--color-sidebar-item",
898
+ "fallback": "#101113",
899
+ "usage": "侧边栏菜单项文字色(v7.4 起 → --color-gray-primary)",
900
+ "hsl": "220 9% 7%"
901
+ },
902
+ "sidebarItemMuted": {
903
+ "var": "--color-sidebar-item-muted",
904
+ "fallback": "#414346",
905
+ "usage": "侧边栏次要菜单项文字色(v7.4 起 → --color-gray-secondary-foreground)",
906
+ "hsl": "216 4% 26%"
907
+ },
908
+ "sidebarAccentLegacy": {
909
+ "var": "--color-sidebar-accent",
910
+ "fallback": "#ECEEF0",
911
+ "usage": "shadcn 语义侧边栏强调背景色(v7.4 起与 --color-gray-sidebar-accent 同色)",
912
+ "hsl": "210 12% 93%"
913
+ },
914
+ "sidebarAccentFg": {
915
+ "var": "--color-sidebar-accent-foreground",
916
+ "fallback": "#0055EE",
917
+ "usage": "侧边栏强调文字色(= primary)",
918
+ "hsl": "218.6 100% 46.7%"
919
+ },
920
+ "sidebarBorder": {
921
+ "var": "--color-sidebar-border",
922
+ "fallback": "#E6E8EA",
923
+ "usage": "侧边栏内部分隔线(菜单组间/折叠态边框),v7.4 起 → --color-gray-line;侧边栏容器禁止右侧外边框(详见 sidebarRules.colors.container.border: none)",
924
+ "hsl": "210 9% 91%"
925
+ },
926
+ "sidebarRing": {
927
+ "var": "--color-sidebar-ring",
928
+ "fallback": "#0055EE",
929
+ "usage": "侧边栏焦点环(= primary)",
930
+ "hsl": "218.6 100% 46.7%"
931
+ },
932
+ "sidebarPrimary": {
933
+ "var": "--color-sidebar-primary",
934
+ "fallback": "#0055EE",
935
+ "usage": "侧边栏主色(= primary)",
936
+ "hsl": "218.6 100% 46.7%"
937
+ },
938
+ "sidebarPrimaryFg": {
939
+ "var": "--color-sidebar-primary-foreground",
940
+ "fallback": "#FFFFFF",
941
+ "usage": "侧边栏主色上的文字(白色)",
942
+ "hsl": "0 0% 100%"
943
+ },
944
+ "topbarBg": {
945
+ "var": "--color-topbar",
946
+ "fallback": "#141414",
947
+ "usage": "顶栏背景色",
948
+ "hsl": "0 0% 7.8%"
949
+ },
950
+ "topbarForeground": {
951
+ "var": "--color-topbar-foreground",
952
+ "fallback": "#FFFFFF",
953
+ "usage": "顶栏文字色",
954
+ "hsl": "0 0% 100%"
955
+ },
956
+ "topbarDivider": {
957
+ "var": "--color-topbar-divider",
958
+ "fallback": "#4D4D4D",
959
+ "usage": "顶栏分割线",
960
+ "hsl": "0 0% 30.2%"
961
+ },
962
+ "accent": {
963
+ "var": "--color-accent",
964
+ "hsl": "220 18% 97%",
965
+ "fallback": "#F5F6F8",
966
+ "usage": "shadcn accent 高亮(→ --color-gray-muted)"
967
+ },
968
+ "accentForeground": {
969
+ "var": "--color-accent-foreground",
970
+ "hsl": "220 9% 7%",
971
+ "fallback": "#101113",
972
+ "usage": "shadcn accent 上的前景文字(→ --color-gray-primary)"
973
+ },
974
+ "foreground": {
975
+ "var": "--color-foreground",
976
+ "hsl": "220 9% 7%",
977
+ "fallback": "#101113",
978
+ "usage": "shadcn 主前景文字(→ --color-gray-primary)"
979
+ },
980
+ "pageTitle": {
981
+ "var": "--page-title",
982
+ "hsl": "220 9% 7%",
983
+ "fallback": "#101113",
984
+ "usage": "页面标题色(v7.4 起合并 → --color-gray-primary)"
985
+ },
986
+ "inputBorder": {
987
+ "var": "--color-input",
988
+ "hsl": "210 9% 91%",
989
+ "fallback": "#E6E8EA",
990
+ "usage": "shadcn input 边框色(→ --color-gray-line)"
991
+ },
992
+ "ring": {
993
+ "var": "--color-ring",
994
+ "hsl": "218.6 100% 46.7%",
995
+ "fallback": "#0055EE",
996
+ "usage": "shadcn focus ring(→ --color-primary)"
997
+ },
998
+ "cardForeground": {
999
+ "var": "--color-card-foreground",
1000
+ "hsl": "220 9% 7%",
1001
+ "fallback": "#101113",
1002
+ "usage": "卡片上的前景文字(→ --color-gray-primary)"
1003
+ },
1004
+ "popover": {
1005
+ "var": "--color-popover",
1006
+ "hsl": "0 0% 100%",
1007
+ "fallback": "#FFFFFF",
1008
+ "usage": "浮层(Popover/Dropdown)背景"
1009
+ },
1010
+ "popoverForeground": {
1011
+ "var": "--color-popover-foreground",
1012
+ "hsl": "220 9% 7%",
1013
+ "fallback": "#101113",
1014
+ "usage": "浮层文字色(→ --color-gray-primary)"
1015
+ },
1016
+ "secondary": {
1017
+ "var": "--color-secondary",
1018
+ "hsl": "220 18% 97%",
1019
+ "fallback": "#F5F6F8",
1020
+ "usage": "shadcn secondary 背景(→ --color-gray-muted)"
1021
+ },
1022
+ "secondaryForeground": {
1023
+ "var": "--color-secondary-foreground",
1024
+ "hsl": "220 9% 7%",
1025
+ "fallback": "#101113",
1026
+ "usage": "shadcn secondary 文字(→ --color-gray-primary)"
1027
+ },
1028
+ "mutedSurface": {
1029
+ "var": "--color-muted",
1030
+ "hsl": "220 18% 97%",
1031
+ "fallback": "#F5F6F8",
1032
+ "usage": "shadcn muted 背景(→ --color-gray-muted),区别于 --color-muted-foreground 文字色"
1033
+ },
1034
+ "primaryGlow": {
1035
+ "var": "--color-primary-glow",
1036
+ "hsl": "226.9 100% 68.6%",
1037
+ "fallback": "#5F82FF",
1038
+ "usage": "主色光晕 / 渐变起始(sidebar Gradient)"
1039
+ },
1040
+ "backgroundDark": {
1041
+ "var": "--color-background-dark",
1042
+ "hsl": "216 42.9% 93.1%",
1043
+ "fallback": "#E6ECF5",
1044
+ "usage": "导航经过色(legacy)"
1045
+ },
1046
+ "backgroundEnd": {
1047
+ "var": "--background-end",
1048
+ "hsl": "220 18% 97%",
1049
+ "fallback": "#F5F6F8",
1050
+ "usage": "页面背景渐变结束色(与 --color-background 一致)"
1051
+ },
1052
+ "backgroundPanel": {
1053
+ "var": "--color-background-panel",
1054
+ "hsl": "220 27.3% 97.8%",
1055
+ "fallback": "#F8F9FB",
1056
+ "usage": "画布配置面板背景"
1057
+ },
1058
+ "legacyGrayAliases": {
1059
+ "description": "Legacy 灰色别名(保留兼容旧引用,不新增使用)。映射到 v7.4 重构后的统一灰色变量。",
1060
+ "grayTitle": {
1061
+ "var": "--gray-title",
1062
+ "hsl": "220 9% 7%",
1063
+ "fallback": "#101113",
1064
+ "usage": "→ --color-gray-primary"
1065
+ },
1066
+ "graySecondary": {
1067
+ "var": "--gray-secondary",
1068
+ "hsl": "216 4% 26%",
1069
+ "fallback": "#414346",
1070
+ "usage": "→ --color-gray-secondary-foreground"
1071
+ },
1072
+ "grayTertiary": {
1073
+ "var": "--gray-tertiary",
1074
+ "hsl": "216 2% 45%",
1075
+ "fallback": "#717376",
1076
+ "usage": "→ --color-muted-foreground"
1077
+ },
1078
+ "grayBorder": {
1079
+ "var": "--gray-border",
1080
+ "hsl": "210 9% 91%",
1081
+ "fallback": "#E6E8EA",
1082
+ "usage": "→ --color-gray-line"
1083
+ },
1084
+ "grayFill": {
1085
+ "var": "--gray-fill",
1086
+ "hsl": "220 18% 97%",
1087
+ "fallback": "#F5F6F8",
1088
+ "usage": "→ --color-gray-muted"
1089
+ },
1090
+ "grayBgDark": {
1091
+ "var": "--gray-bg-dark",
1092
+ "hsl": "220 18% 97%",
1093
+ "fallback": "#F5F6F8",
1094
+ "usage": "→ --color-gray-muted"
1095
+ },
1096
+ "grayBg": {
1097
+ "var": "--gray-bg",
1098
+ "hsl": "220 18% 97%",
1099
+ "fallback": "#F5F6F8",
1100
+ "usage": "→ --color-gray-muted"
1101
+ }
1102
+ },
1103
+ "legacyStatusAliases": {
1104
+ "description": "Legacy 状态色别名 / 衍生态(保留兼容旧引用)。",
1105
+ "successDark": {
1106
+ "var": "--success-dark",
1107
+ "hsl": "142 72% 29%",
1108
+ "fallback": "#15803D",
1109
+ "usage": "→ --color-success-hover"
1110
+ },
1111
+ "successMedium": {
1112
+ "var": "--success-medium",
1113
+ "hsl": "142 77% 73%",
1114
+ "fallback": "#86EFAC",
1115
+ "usage": "→ --color-success-border"
1116
+ },
1117
+ "successLight": {
1118
+ "var": "--success-light",
1119
+ "hsl": "152 82% 96%",
1120
+ "fallback": "#ECFDF5",
1121
+ "usage": "→ --color-success-bg"
1122
+ },
1123
+ "successPressed": {
1124
+ "var": "--color-success-pressed",
1125
+ "hsl": "143 60% 24%",
1126
+ "fallback": "#166534",
1127
+ "usage": "成功按钮 pressed 态"
1128
+ },
1129
+ "successAura": {
1130
+ "var": "--success-aura",
1131
+ "rawValue": "0 0 8px rgba(22, 163, 74, 0.25)",
1132
+ "usage": "成功色光晕(box-shadow 用)"
1133
+ },
1134
+ "destructiveDark": {
1135
+ "var": "--destructive-dark",
1136
+ "hsl": "0 74% 42%",
1137
+ "fallback": "#B91C1C",
1138
+ "usage": "→ --color-destructive-hover"
1139
+ },
1140
+ "destructiveLight": {
1141
+ "var": "--destructive-light",
1142
+ "hsl": "0 86% 97%",
1143
+ "fallback": "#FEF2F2",
1144
+ "usage": "→ --color-destructive-bg"
1145
+ },
1146
+ "destructivePressed": {
1147
+ "var": "--color-destructive-pressed",
1148
+ "hsl": "0 70% 35%",
1149
+ "fallback": "#991B1B",
1150
+ "usage": "警示按钮 pressed 态"
1151
+ },
1152
+ "destructiveAura": {
1153
+ "var": "--destructive-aura",
1154
+ "rawValue": "0 0 8px rgba(220, 38, 38, 0.25)",
1155
+ "usage": "警示色光晕(box-shadow 用)"
1156
+ },
1157
+ "warningDark": {
1158
+ "var": "--warning-dark",
1159
+ "hsl": "38 85% 40%",
1160
+ "fallback": "#B45309",
1161
+ "usage": "→ --color-warning-hover"
1162
+ },
1163
+ "warningLight": {
1164
+ "var": "--warning-light",
1165
+ "hsl": "43 100% 94%",
1166
+ "fallback": "#FFF3DB",
1167
+ "usage": "→ --color-warning-bg"
1168
+ },
1169
+ "warningPressed": {
1170
+ "var": "--color-warning-pressed",
1171
+ "hsl": "35 78% 34%",
1172
+ "fallback": "#92400E",
1173
+ "usage": "警告按钮 pressed 态"
1174
+ },
1175
+ "warningAura": {
1176
+ "var": "--warning-aura",
1177
+ "rawValue": "0 0 8px rgba(217, 119, 6, 0.25)",
1178
+ "usage": "警告色光晕(box-shadow 用)"
1179
+ },
1180
+ "infoHover": {
1181
+ "var": "--color-info-hover",
1182
+ "hsl": "224 76% 48%",
1183
+ "fallback": "#1D4ED8",
1184
+ "usage": "信息按钮 hover 态"
1185
+ },
1186
+ "infoPressed": {
1187
+ "var": "--color-info-pressed",
1188
+ "hsl": "226 71% 40%",
1189
+ "fallback": "#1E40AF",
1190
+ "usage": "信息按钮 pressed 态"
1191
+ },
1192
+ "infoLight": {
1193
+ "var": "--color-info-light",
1194
+ "hsl": "213 100% 98.2%",
1195
+ "fallback": "#F6FAFF",
1196
+ "usage": "信息浅色背景(与 sidebar gradient 联动)"
1197
+ },
1198
+ "infoAura": {
1199
+ "var": "--info-aura",
1200
+ "rawValue": "0 0 8px rgba(37, 99, 235, 0.25)",
1201
+ "usage": "信息色光晕(box-shadow 用)"
1202
+ }
1203
+ },
1204
+ "borderShadcn": {
1205
+ "var": "--color-border",
1206
+ "hsl": "210 9% 91%",
1207
+ "fallback": "#E6E8EA",
1208
+ "usage": "shadcn 标准边框 token(→ --color-gray-line),区别于 colorMapping.border 语义引用"
1209
+ }
1210
+ },
1211
+ "glossy": {
1212
+ "description": "TrekClaw 独有:Accent 辅助色 + 图表用 10 色。来源:OP-DesignTokens-V5.md A3/A14/A14。",
1213
+ "accent10": {
1214
+ "description": "10 色辅助强调色,用于图标、标签、次要操作。",
1215
+ "blue": {
1216
+ "var": "--color-accent-blue",
1217
+ "fallback": "#5F99F9",
1218
+ "hsl": "217.4 92.8% 67.5%"
1219
+ },
1220
+ "indigo": {
1221
+ "var": "--color-accent-indigo",
1222
+ "fallback": "#888BFF",
1223
+ "hsl": "238.0 100% 76.7%"
1224
+ },
1225
+ "violet": {
1226
+ "var": "--color-accent-violet",
1227
+ "fallback": "#AB7BFF",
1228
+ "hsl": "261.8 100% 74.1%"
1229
+ },
1230
+ "turquoise": {
1231
+ "var": "--color-accent-turquoise",
1232
+ "fallback": "#33AFA9",
1233
+ "hsl": "186.1 98.9% 37.1%"
1234
+ },
1235
+ "magenta": {
1236
+ "var": "--color-accent-magenta",
1237
+ "fallback": "#DA62DF",
1238
+ "hsl": "297.6 66.1% 62.9%"
1239
+ },
1240
+ "berry": {
1241
+ "var": "--color-accent-berry",
1242
+ "fallback": "#EE6590",
1243
+ "hsl": "341.2 80.1% 66.5%"
1244
+ },
1245
+ "orange": {
1246
+ "var": "--color-accent-orange",
1247
+ "fallback": "#EF702C",
1248
+ "hsl": "21.2 89.9% 64.9%"
1249
+ },
1250
+ "apricot": {
1251
+ "var": "--color-accent-apricot",
1252
+ "fallback": "#CF8A1C",
1253
+ "hsl": "38.1 95.9% 62.0%"
1254
+ },
1255
+ "green": {
1256
+ "var": "--color-accent-green",
1257
+ "fallback": "#4CB36F",
1258
+ "hsl": "140.2 43.7% 52.0%"
1259
+ },
1260
+ "olive": {
1261
+ "var": "--color-accent-olive",
1262
+ "fallback": "#7BAD30",
1263
+ "hsl": "84.1 51.8% 52.0%"
1264
+ }
1265
+ },
1266
+ "chart10": {
1267
+ "1": {
1268
+ "var": "--color-chart-1",
1269
+ "fallback": "#6250F9",
1270
+ "hsl": "246.4 93.4% 64.5%"
1271
+ },
1272
+ "2": {
1273
+ "var": "--color-chart-2",
1274
+ "fallback": "#33AFA9",
1275
+ "hsl": "261.8 100% 74.1%"
1276
+ },
1277
+ "3": {
1278
+ "var": "--color-chart-3",
1279
+ "fallback": "#AE34B4",
1280
+ "hsl": "297.3 56.9% 54.5%"
1281
+ },
1282
+ "4": {
1283
+ "var": "--color-chart-4",
1284
+ "fallback": "#5F99F9",
1285
+ "hsl": "36.1 88.1% 57.1%"
1286
+ },
1287
+ "5": {
1288
+ "var": "--color-chart-5",
1289
+ "fallback": "#9C660D",
1290
+ "hsl": "266.2 77.7% 57.8%"
1291
+ },
1292
+ "6": {
1293
+ "var": "--color-chart-6",
1294
+ "fallback": "#EE6590",
1295
+ "hsl": "140.4 40.4% 50.0%"
1296
+ },
1297
+ "7": {
1298
+ "var": "--color-chart-7",
1299
+ "fallback": "#068580",
1300
+ "hsl": "217.4 68.5% 51.4%"
1301
+ },
1302
+ "8": {
1303
+ "var": "--color-chart-8",
1304
+ "fallback": "#AB7BFF",
1305
+ "hsl": "49.4 65.0% 42.5%"
1306
+ },
1307
+ "9": {
1308
+ "var": "--color-chart-9",
1309
+ "fallback": "#5A8219",
1310
+ "hsl": "207.7 11.0% 53.7%"
1311
+ },
1312
+ "10": {
1313
+ "var": "--color-chart-10",
1314
+ "fallback": "#7C8A96",
1315
+ "hsl": "341.2 80.1% 66.5%"
1316
+ },
1317
+ "description": "图表用 10 色标准组合,11/13 阶交替。"
1318
+ },
1319
+ "chartLegacyAliases": {
1320
+ "1": {
1321
+ "var": "--data-1",
1322
+ "ref": "--color-chart-1",
1323
+ "usage": "→ --color-chart-1"
1324
+ },
1325
+ "2": {
1326
+ "var": "--data-2",
1327
+ "ref": "--color-chart-2",
1328
+ "usage": "→ --color-chart-2"
1329
+ },
1330
+ "3": {
1331
+ "var": "--data-3",
1332
+ "ref": "--color-chart-3",
1333
+ "usage": "→ --color-chart-3"
1334
+ },
1335
+ "4": {
1336
+ "var": "--data-4",
1337
+ "ref": "--color-chart-4",
1338
+ "usage": "→ --color-chart-4"
1339
+ },
1340
+ "5": {
1341
+ "var": "--data-5",
1342
+ "ref": "--color-chart-5",
1343
+ "usage": "→ --color-chart-5"
1344
+ },
1345
+ "6": {
1346
+ "var": "--data-6",
1347
+ "ref": "--color-chart-6",
1348
+ "usage": "→ --color-chart-6"
1349
+ },
1350
+ "7": {
1351
+ "var": "--data-7",
1352
+ "ref": "--color-chart-7",
1353
+ "usage": "→ --color-chart-7"
1354
+ },
1355
+ "8": {
1356
+ "var": "--data-8",
1357
+ "ref": "--color-chart-8",
1358
+ "usage": "→ --color-chart-8"
1359
+ },
1360
+ "9": {
1361
+ "var": "--data-9",
1362
+ "ref": "--color-chart-9",
1363
+ "usage": "→ --color-chart-9"
1364
+ },
1365
+ "10": {
1366
+ "var": "--data-10",
1367
+ "ref": "--color-chart-10",
1368
+ "usage": "→ --color-chart-10"
1369
+ },
1370
+ "description": "Legacy 别名(兼容 --data-* 旧命名)。CSS 端通过 var(--chart-N) 引用。"
1371
+ }
1372
+ },
1373
+ "statusDot": {
1374
+ "description": "状态圆点颜色映射,引用 colorMapping 的语义色。",
1375
+ "mapping": [
1376
+ {
1377
+ "status": "运行中",
1378
+ "semanticColor": "success",
1379
+ "shape": "solid circle 8px"
1380
+ },
1381
+ {
1382
+ "status": "已停止",
1383
+ "semanticColor": "textDisabled",
1384
+ "shape": "solid circle 8px"
1385
+ },
1386
+ {
1387
+ "status": "创建中",
1388
+ "semanticColor": "warning",
1389
+ "shape": "solid circle 8px"
1390
+ },
1391
+ {
1392
+ "status": "释放中",
1393
+ "semanticColor": "destructive",
1394
+ "shape": "solid circle 8px"
1395
+ },
1396
+ {
1397
+ "status": "异步操作",
1398
+ "semanticColor": "info",
1399
+ "shape": "solid circle 8px + animate-pulse"
1400
+ }
1401
+ ]
1402
+ },
1403
+ "table": {
1404
+ "description": "表格专属尺寸与布局 token(颜色引用 colorMapping)。",
1405
+ "checkboxColWidth": "48px",
1406
+ "actionColRightPadding": "8px",
1407
+ "bulkActionBarBorder": "var(--color-border) top-only(仅上边框,无下边框)",
1408
+ "cssVars": {
1409
+ "description": "Table v7.5 三层模型 padding token。",
1410
+ "cellPaddingX": {
1411
+ "var": "--table-cell-padding-x",
1412
+ "value": "12px",
1413
+ "usage": "中间列 td 水平内边距"
1414
+ },
1415
+ "firstCellPaddingLeft": {
1416
+ "var": "--table-first-cell-padding-left",
1417
+ "value": "20px",
1418
+ "usage": "首列 padding-left(额外缩进 20px)"
1419
+ },
1420
+ "lastCellPaddingRight": {
1421
+ "var": "--table-last-cell-padding-right",
1422
+ "value": "20px",
1423
+ "usage": "末列 padding-right(额外缩进 20px)"
1424
+ }
1425
+ }
1426
+ },
1427
+ "navigation": {
1428
+ "topNavHeight": "48px",
1429
+ "topNavBackground": "固定值 #141414(非设计系统 token)",
1430
+ "sidebarWidth": "240px",
1431
+ "sidebarCollapsedWidth": "68px",
1432
+ "tokens": {
1433
+ "topbarHeight": {
1434
+ "var": "--topbar-height",
1435
+ "value": "48px",
1436
+ "usage": "顶栏高度"
1437
+ }
1438
+ }
1439
+ },
1440
+ "shadowMapping": {
1441
+ "description": "阴影等级映射,引用 TrekClaw CSS 变量。v7.6 补充 ContentCard 表面规则:内容区大卡片容器去掉 1px border,使用最弱阴影 sm。",
1442
+ "none": {
1443
+ "var": "--shadow-none",
1444
+ "rawValue": "0 0 #0000",
1445
+ "usage": "无阴影"
1446
+ },
1447
+ "sm": {
1448
+ "var": "--shadow-sm",
1449
+ "rawValue": "0 1px 2px rgba(0,0,0,0.05)",
1450
+ "usage": "按钮、输入框微浮起;v7.6 起作为 ContentCard 白卡容器唯一阴影源(无边框方案的最弱阴影)"
1451
+ },
1452
+ "DEFAULT": {
1453
+ "var": "--shadow-DEFAULT",
1454
+ "rawValue": "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",
1455
+ "usage": "卡片默认阴影(v7.6 起 ContentCard 不再使用,已转为 sm)"
1456
+ },
1457
+ "md": {
1458
+ "var": "--shadow-md",
1459
+ "rawValue": "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
1460
+ "usage": "卡片、面板、Dropdown"
1461
+ },
1462
+ "lg": {
1463
+ "var": "--shadow-lg",
1464
+ "rawValue": "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
1465
+ "usage": "Popover、Toast、右键菜单"
1466
+ },
1467
+ "xl": {
1468
+ "var": "--shadow-xl",
1469
+ "rawValue": "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)",
1470
+ "usage": "Dialog、Sheet、Command Palette"
1471
+ },
1472
+ "2xl": {
1473
+ "var": "--shadow-2xl",
1474
+ "rawValue": "0 25px 50px -12px rgba(0, 0, 0, 0.25)",
1475
+ "usage": "顶层模态、全屏遮罩"
1476
+ },
1477
+ "dialog": {
1478
+ "var": "--shadow-dialog",
1479
+ "usage": "弹窗专属阴影",
1480
+ "value": "0px 12px 48px 0px rgba(0, 0, 0, 0.2)"
1481
+ },
1482
+ "select": {
1483
+ "var": "--shadow-select-content",
1484
+ "rawValue": "0 6px 24px rgba(0,0,0,0.1)",
1485
+ "usage": "Select 弹层阴影"
1486
+ }
1487
+ },
1488
+ "radiusMapping": {
1489
+ "description": "圆角映射,引用 TrekClaw CSS 变量。基准 --radius=16px。",
1490
+ "sm": {
1491
+ "var": "--radius-sm",
1492
+ "value": "4px",
1493
+ "usage": "Badge、Chip、Checkbox、select-item"
1494
+ },
1495
+ "md": {
1496
+ "var": "--radius-md",
1497
+ "value": "8px",
1498
+ "usage": "按钮、输入框、Select trigger、Toggle capsule"
1499
+ },
1500
+ "lg": {
1501
+ "var": "--radius-lg",
1502
+ "value": "12px",
1503
+ "usage": "卡片"
1504
+ },
1505
+ "xl": {
1506
+ "var": "--radius-xl",
1507
+ "value": "16px",
1508
+ "usage": "对话框、大型容器(= --radius)"
1509
+ },
1510
+ "full": {
1511
+ "var": "--radius-full",
1512
+ "value": "9999px",
1513
+ "usage": "完全圆形、药丸标签、Switch handle"
1514
+ },
1515
+ "legacyAliases": {
1516
+ "description": "Legacy 圆角别名(v4 起映射到新圆角)。",
1517
+ "cardRadius": {
1518
+ "var": "--card-radius",
1519
+ "value": "12px",
1520
+ "usage": "→ --radius-lg(卡片圆角,原 8px 已升至 12px)"
1521
+ },
1522
+ "inputRadius": {
1523
+ "var": "--input-radius",
1524
+ "value": "8px",
1525
+ "usage": "→ --radius-md(输入框圆角,原 6px 已升至 8px)"
1526
+ }
1527
+ },
1528
+ "base": {
1529
+ "var": "--radius",
1530
+ "value": "1rem",
1531
+ "usage": "全局基准圆角(= --radius-xl 16px,对话框/大型容器)"
1532
+ }
1533
+ },
1534
+ "animationMapping": {
1535
+ "description": "动画时长/缓动映射,引用 TrekClaw CSS 变量。",
1536
+ "fast": {
1537
+ "var": "--duration-fast",
1538
+ "value": "150ms",
1539
+ "usage": "微交互(hover/focus)"
1540
+ },
1541
+ "normal": {
1542
+ "var": "--duration-normal",
1543
+ "value": "200ms",
1544
+ "usage": "常规过渡(Accordion/Tabs)"
1545
+ },
1546
+ "slow": {
1547
+ "var": "--duration-slow",
1548
+ "value": "300ms",
1549
+ "usage": "面板滑入(Sheet/Dialog)"
1550
+ },
1551
+ "slower": {
1552
+ "var": "--duration-slower",
1553
+ "value": "500ms",
1554
+ "usage": "大型展开动画"
1555
+ },
1556
+ "easing": {
1557
+ "linear": {
1558
+ "var": "--easing-linear",
1559
+ "value": "cubic-bezier(0, 0, 1, 1)"
1560
+ },
1561
+ "ease": {
1562
+ "var": "--easing-ease",
1563
+ "value": "cubic-bezier(0.25, 0.1, 0.25, 1)"
1564
+ },
1565
+ "ease-in": {
1566
+ "var": "--easing-ease-in",
1567
+ "value": "cubic-bezier(0.4, 0, 1, 1)"
1568
+ },
1569
+ "ease-out": {
1570
+ "var": "--easing-ease-out",
1571
+ "value": "cubic-bezier(0, 0, 0.2, 1)"
1572
+ },
1573
+ "ease-in-out": {
1574
+ "var": "--easing-ease-in-out",
1575
+ "value": "cubic-bezier(0.4, 0, 0.2, 1)"
1576
+ }
1577
+ }
1578
+ },
1579
+ "zIndexMapping": {
1580
+ "description": "层级映射,引用 TrekClaw CSS 变量。",
1581
+ "base": {
1582
+ "var": "--z-base",
1583
+ "value": "0"
1584
+ },
1585
+ "dropdown": {
1586
+ "var": "--z-dropdown",
1587
+ "value": 50
1588
+ },
1589
+ "sticky": {
1590
+ "var": "--z-sticky",
1591
+ "value": 100
1592
+ },
1593
+ "overlay": {
1594
+ "var": "--z-overlay",
1595
+ "value": 200
1596
+ },
1597
+ "modal": {
1598
+ "var": "--z-modal",
1599
+ "value": 300
1600
+ },
1601
+ "tooltip": {
1602
+ "var": "--z-tooltip",
1603
+ "value": 500
1604
+ }
1605
+ },
1606
+ "componentDimensions": {
1607
+ "description": "组件精确尺寸。来源:TrekClaw v4.1 CSS + OP-DesignTokens-V5.md C 系列。",
1608
+ "dialog": {
1609
+ "widthS": {
1610
+ "var": "--dialog-width-s",
1611
+ "value": "400px",
1612
+ "usage": "二次确认/极简字段"
1613
+ },
1614
+ "widthM": {
1615
+ "var": "--dialog-width-m",
1616
+ "value": "600px",
1617
+ "usage": "常用弹窗"
1618
+ },
1619
+ "widthL": {
1620
+ "var": "--dialog-width-l",
1621
+ "value": "800px",
1622
+ "usage": "宽表格"
1623
+ },
1624
+ "widthXL": {
1625
+ "var": "--dialog-width-xl",
1626
+ "value": "1000px",
1627
+ "usage": "分栏/超复杂"
1628
+ },
1629
+ "headerHeight": {
1630
+ "var": "--dialog-header-height",
1631
+ "value": "46px"
1632
+ },
1633
+ "footerHeight": {
1634
+ "var": "--dialog-footer-height",
1635
+ "value": "64px"
1636
+ },
1637
+ "bodyPaddingX": {
1638
+ "var": "--dialog-body-padding-x",
1639
+ "value": "20px"
1640
+ },
1641
+ "bodyPaddingY": {
1642
+ "var": "--dialog-body-padding-y",
1643
+ "value": "16px"
1644
+ },
1645
+ "shadow": {
1646
+ "var": "--shadow-dialog",
1647
+ "value": "0px 12px 48px 0px rgba(0, 0, 0, 0.2)"
1648
+ }
1649
+ },
1650
+ "drawer": {
1651
+ "widthS": {
1652
+ "var": "--drawer-width-s",
1653
+ "value": "400px"
1654
+ },
1655
+ "widthM": {
1656
+ "var": "--drawer-width-m",
1657
+ "value": "600px"
1658
+ },
1659
+ "widthL": {
1660
+ "var": "--drawer-width-l",
1661
+ "value": "800px"
1662
+ },
1663
+ "widthXL": {
1664
+ "var": "--drawer-width-xl",
1665
+ "value": "1200px"
1666
+ }
1667
+ },
1668
+ "input": {
1669
+ "height": {
1670
+ "var": "--input-height",
1671
+ "value": "32px"
1672
+ },
1673
+ "fontSize": {
1674
+ "var": "--input-font-size",
1675
+ "value": "12px",
1676
+ "note": "= --font-size-base"
1677
+ },
1678
+ "lineHeight": {
1679
+ "var": "--input-line-height",
1680
+ "value": "18px"
1681
+ },
1682
+ "paddingX": {
1683
+ "var": "--input-padding-x",
1684
+ "value": "8px"
1685
+ },
1686
+ "paddingY": {
1687
+ "var": "--input-padding-y",
1688
+ "value": "7px"
1689
+ },
1690
+ "iconSize": {
1691
+ "var": "--input-icon-size",
1692
+ "value": "16px"
1693
+ },
1694
+ "placeholder": {
1695
+ "var": "--color-input-placeholder",
1696
+ "fallback": "#AAAAAA",
1697
+ "hsl": "0 0% 66.7%"
1698
+ }
1699
+ },
1700
+ "layout": {
1701
+ "sidebarWidth": {
1702
+ "var": "--layout-sidebar-width",
1703
+ "value": "240px"
1704
+ }
1705
+ }
1706
+ },
1707
+ "spacingTokens": {
1708
+ "description": "全局间距体系。TrekClaw 双轨策略:非语义绑定用 Tailwind 标准刻度(4px 基准);语义强绑定场景用 CSS 变量。详见 source.docPath Part A19。",
1709
+ "tailwindScale": {
1710
+ "0": "0px",
1711
+ "1": "4px — 紧凑 padding(icon 与文字间距)",
1712
+ "2": "8px — 表格单元格/Badge",
1713
+ "3": "12px — Drawer/Dialog 区块之间",
1714
+ "4": "16px — 卡片内边距",
1715
+ "5": "20px — 卡片外间距",
1716
+ "6": "24px — 白卡外间距 / 页面容器内边距",
1717
+ "8": "32px — 组件高度基准",
1718
+ "10": "40px — Tab list 高度 / 底部留白",
1719
+ "12": "48px — 顶栏高度",
1720
+ "14": "56px — Drawer header 高",
1721
+ "16": "64px — 页头高度",
1722
+ "20": "80px — 空态底部",
1723
+ "24": "96px — 空态边距",
1724
+ "32": "128px — Hero 区",
1725
+ "description": "Tailwind 标准间距刻度,基准 4px。所有 padding/margin/gap 优先使用此类。",
1726
+ "0.5": "2px — 极小密集(icon inset)",
1727
+ "1.5": "6px — Badge/Chip 左右",
1728
+ "2.5": "10px — 较紧凑容器",
1729
+ "3.5": "14px — 中等 padding"
1730
+ },
1731
+ "semanticVariables": {
1732
+ "description": "语义间距变量。仅用于语义强绑定场景(一处改动、全局同步)。",
1733
+ "gap-xs": {
1734
+ "var": "--gap-xs",
1735
+ "value": "4px",
1736
+ "tailwind": "1",
1737
+ "usage": "Button 内部 icon↔文字间距"
1738
+ },
1739
+ "btn-padding-x": {
1740
+ "var": "--btn-padding-x",
1741
+ "value": "16px",
1742
+ "tailwind": "4",
1743
+ "usage": "按钮水平内边距(默认尺寸 height=32px)"
1744
+ },
1745
+ "btn-padding-x-sm": {
1746
+ "var": "--btn-padding-x-sm",
1747
+ "value": "12px",
1748
+ "tailwind": "3",
1749
+ "usage": "小号按钮水平内边距(卡片内操作等紧凑场景)"
1750
+ },
1751
+ "button-gap": {
1752
+ "var": "--button-gap",
1753
+ "value": "8px",
1754
+ "tailwind": "2",
1755
+ "usage": "操作栏按钮行/筛选器行/分页器间距"
1756
+ },
1757
+ "tabs-gap": {
1758
+ "var": "--tabs-gap",
1759
+ "value": "24px",
1760
+ "tailwind": "6",
1761
+ "usage": "Tabs 标签项之间的水平间距"
1762
+ },
1763
+ "card-gap": {
1764
+ "var": "--card-gap",
1765
+ "value": "16px",
1766
+ "tailwind": "4",
1767
+ "usage": "卡片网格间距/区块之间垂直间距"
1768
+ },
1769
+ "page-container-gap": {
1770
+ "var": "--page-container-gap",
1771
+ "value": "16px",
1772
+ "tailwind": "4",
1773
+ "usage": "白卡外间距同义别名(v7.5 由 20px → 16px)"
1774
+ },
1775
+ "page-container-padding": {
1776
+ "var": "--page-container-padding",
1777
+ "value": "16px",
1778
+ "tailwind": "4",
1779
+ "usage": "白卡外间距(上/右/下)/ PageContainer 内边距(top/right/bottom)(v7.5 由 20px → 16px)"
1780
+ },
1781
+ "page-container-padding-left": {
1782
+ "var": "--page-container-padding-left",
1783
+ "value": "0px",
1784
+ "usage": "主内容区左边缘 → 白卡容器左边缘间距;sidebar 与内容区之间不预留间距,白卡紧贴 sidebar 右侧"
1785
+ },
1786
+ "card-padding-x": {
1787
+ "var": "--card-padding-x",
1788
+ "value": "20px",
1789
+ "tailwind": "5",
1790
+ "usage": "白卡容器(ContentCard)内部左右内边距(v7.5 由 24px → 20px);Card 内所有子组件的唯一外侧呼吸来源。独立于 --page-container-padding(PageContainer 外层间距 16px),两者属不同设计层级,不可混用。"
1791
+ }
1792
+ },
1793
+ "componentSpacing": {
1794
+ "description": "Card 白卡容器内各元素间距规范。PageHeader/ActionToolbar/DataTable/Pagination 垂直排列在 Card 内,使用 gap 或 margin-bottom 控制间距。禁止使用 <hr> / section-divider / border 分割线分隔组件(通过 padding + margin 控制间距)。",
1795
+ "Card.internalGap": "16px (= --card-gap, Card 白卡容器内各区块垂直间距)",
1796
+ "Card.padding": "0 var(--card-padding-x) 【上下 0 / 左右 20px】;**稳定规则**:Card 白卡容器为 Card 内所有子组件提供唯一的左右内边距来源,子组件本身不再重复设置 paddingX。注意:--card-padding-x (20px) 独立于 --page-container-padding (16px),后者为 PageContainer 外层间距。",
1797
+ "Card.surface": {
1798
+ "description": "【v7.6 表面规则】内容区大卡片容器(ContentCard 作为白卡容器使用时)去掉 1px solid border,改用最弱阴影提供表面分层。",
1799
+ "border": "none(禁止使用 1px solid hsl(var(--color-gray-line));v7.5 及之前的 border 定义均废弃)",
1800
+ "boxShadow": "var(--shadow-sm) = 0 1px 2px rgba(0,0,0,0.05)(最弱阴影,唯一允许值)",
1801
+ "borderRadius": "var(--radius-lg) = 12px(保持不变)",
1802
+ "background": "hsl(var(--color-card))(保持不变)",
1803
+ "forbidden": [
1804
+ "禁止 border: 1px solid hsl(var(--color-gray-line))(去线框后不再需要)",
1805
+ "禁止使用 box-shadow: 0 1px 2px rgba(0,0,0,0.04)等硬编码阴影值(一律走 var(--shadow-sm))",
1806
+ "禁止使用 shadow-DEFAULT / shadow-md 等更强阴影(会造成表面过重)",
1807
+ "禁止同时使用 border + shadow(v7.6 为二选一关系,仅保留 shadow)"
1808
+ ],
1809
+ "verification": "Card 外边没有 1px 边框线(DOM Inspector 下 border-width = 0);卡片与背景之间仅靠最弱阴影进行分层;box-shadow computed value = rgba(0,0,0,0.05) 0px 1px 2px 0px。",
1810
+ "appliesTo": [
1811
+ "ListPage 的 .card / .card-wrapper(化身为列表白卡容器)",
1812
+ "DetailPage 的内容区白卡",
1813
+ "DetailPage 的 InfoCard(仅独立 Card 容器模式 A:拥有 background / border-radius 时)跟随主卡应用本规则",
1814
+ "FormPage / WizardFormPage 的主体表单白卡",
1815
+ "任何作为 'PageContainer 直接子节点的内容区大卡片' 使用场景"
1816
+ ],
1817
+ "notAppliesTo": [
1818
+ "浮层类组件:Dropdown / Popover / Select content / Tooltip(仍使用 1px border + 中等阴影)",
1819
+ "业务卡片列表项 (item-card / GenericCard):依然使用 border,不适用本规则",
1820
+ "DetailPage 的 InfoCard(嵌入主卡内的分组区块模式 B:仅采用 padding + border-bottom 分隔)不适用本规则",
1821
+ "shadcn 默认 Card(未作为内容区白卡容器使用时)保留 border + shadow-card 默认行为",
1822
+ "功能性分割线:PageHeader / Tabs / Divider 的 border(属区域分隔,非卡片表面,不被本规则涵盖)"
1823
+ ],
1824
+ "version": "v7.6"
1825
+ },
1826
+ "PageContainer.padding": "16px 16px 16px 0 (上/右/下/左 = --page-container-padding --page-container-padding --page-container-padding --page-container-padding-left;左侧 0 使白卡紧贴 sidebar 右边缘,不预留间距)",
1827
+ "PageHeader.height": "64px",
1828
+ "PageHeader.paddingX": "0 (水平对齐由 Card.paddingX 提供;禁止重复设置)",
1829
+ "ActionToolbar.internalGap": "8px (= --button-gap)",
1830
+ "ActionToolbar.paddingX": "0 (水平对齐由 Card.paddingX 提供;禁止重复设置)",
1831
+ "ActionToolbar.paddingBottom": "16px (= --card-gap)",
1832
+ "ActionToolbar.searchComboGap": "20px(SearchCombo 固定跟随在 .left-actions 后方,与 .left-actions 间距 = 20px,独立于工具栏 gap=8px)",
1833
+ "ActionToolbar.layoutRule": {
1834
+ "structure": ".action-toolbar > [.left-actions, .search-combo, .right-tools](SearchCombo 为工具栏的直接子元素,不再嵌套在 .right-tools 内)",
1835
+ "leftActionsToSearchCombo": "SearchCombo 与 .left-actions 之间 = 20px(使用 margin-left: calc(20px - var(--button-gap)) 在工具栏 gap=8px 上叠加 12px,合计 20px)",
1836
+ "rightTools": ".right-tools 仍然 margin-left: auto,包含刷新 / 设置 等 icon 按钮",
1837
+ "css": [
1838
+ ".action-toolbar { display: flex; align-items: center; gap: var(--button-gap); padding: 0; padding-bottom: var(--card-gap); }",
1839
+ ".action-toolbar .left-actions { display: flex; align-items: center; gap: var(--button-gap); }",
1840
+ ".action-toolbar > .search-combo { margin-left: calc(20px - var(--button-gap)); }",
1841
+ ".action-toolbar .right-tools { margin-left: auto; display: flex; align-items: center; gap: var(--button-gap); }"
1842
+ ],
1843
+ "forbidden": [
1844
+ "禁止将 SearchCombo 放在 .right-tools 内部(会被 margin-left:auto 推到最右,与 .left-actions 间距不可控)",
1845
+ "禁止 SearchCombo 与 .left-actions 间距为 8px(仅 toolbar gap)或其他非 20px 值",
1846
+ "禁止在 .left-actions 内部添加 SearchCombo(会与 .left-actions 内部 gap=8px 混淆)"
1847
+ ],
1848
+ "verification": "SearchCombo 左边缘 X = .left-actions 最后一个按钮右边缘 X + 20px。刷新按钮仍然贴 Card 右缘(X = Card 右缘 - 20px)。"
1849
+ },
1850
+ "DataTable.paddingX": "0 (表格本身不设水平 padding;表格与 Card 外侧边缘的 20px 呼吸由 Card.paddingX 提供)",
1851
+ "DataTable.paddingY": "0 (表格本身贴紧上下元素)",
1852
+ "DataTable.cellPadding": "12px 12px 【上下 12px / 左右 12px】;**分层规则**:th/td 的水平 padding 仅用于列与列之间的内部呼吸(相邻两个 td 的 12+12 = 24px 列间距);**表格与 Card 外侧边缘的呼吸不由 td 提供**",
1853
+ "DataTable.firstLastCellRule": "首列 padding-left = 20px,末列 padding-right = 20px;表格作为密集数据区,享有除 Card.paddingX (20px) 之外的额外 20px 视觉呈息。首列内容 X = Card 外缘 + 20 + 20 = 40px;末列右缘 X = Card 右缘 - 20 - 20 = -40px。CSS:`.data-table th:first-child, .data-table td:first-child { padding-left: 20px; } .data-table th:last-child, .data-table td:last-child { padding-right: 20px; }`",
1854
+ "DataTable.actionColRightPadding": "废弃:末列右侧呼吸由 「Card.paddingRight 20px + td.paddingRight 20px」组合提供,总计40px",
1855
+ "DataTable.horizontalAlignmentRule": {
1856
+ "description": "【Card 内左右对齐稳定规则 - 分层模型 v7.5】水平 padding 职责严格分层:\n - **Card.paddingX (20px)**:提供 Card 外侧边缘 ↔ 非 Table 子组件 (PageHeader / ActionToolbar / BulkActionBar / Pagination) 外缘的外侧呼吸\n - **Table td.paddingX (12px)**:仅提供中间列与列之间的内部呼吸(相邻 td 12+12=24)\n - **Table 首末列 padding-left/right = 20px**:表格作为密集数据区,额外享有 20px 视觉呈息\n重要:表格首列内容 X = Card 外缘 + 40px,与 PageHeader / ActionToolbar / Pagination 起始线不对齐(这是设计预期)。\n其他子组件 (PageHeader / ActionToolbar / BulkActionBar / Pagination) 的 paddingX 为 0,完全由 Card.paddingX 提供外侧呼吸,起始线 X = Card 外缘 + 20px。",
1857
+ "singleSourceOfOuterPadding": "Card.padding (上下 0 / 左右 var(--card-padding-x) = 20px)",
1858
+ "tableInnerColumnGap": "td paddingX = 12px (中间列);首列 padding-left = 20px,末列 padding-right = 20px",
1859
+ "alignmentLines": {
1860
+ "nonTableSubcomponents": "PageHeader / ActionToolbar / BulkActionBar / Pagination 起始线 X = Card 外缘 + 20px",
1861
+ "tableContent": "Table 首列内容 X = Card 外缘 + 40px;Table 末列右缘 X = Card 右缘 - 40px",
1862
+ "note": "两者不在同一起始线上;Table 享有额外 20px 缩进,为密集数据提供视觉呈息"
1863
+ },
1864
+ "forbidden": [
1865
+ "禁止在非 Table 子组件(PageHeader / ActionToolbar / BulkActionBar / Pagination)重复设置 paddingX(会与 Card.paddingX 叠加为 40px)",
1866
+ "禁止 Table 的 td 不设 paddingX(列间会贴紧挨压)",
1867
+ "禁止 Table 首列 padding-left 为 0 / 12 / 16 / 24 等非 20 值(独立于权威 20px 规则,需护栏)",
1868
+ "禁止 Table 末列 padding-right 为非 20 值(同上)",
1869
+ "禁止使用 px-3/4/5/6 等 Tailwind 字面量。Table td 唯一可接受模式:px-3 (12px) 中间列 + first:pl-5 (20px) + last:pr-5 (20px)",
1870
+ "禁止为 Card 以外的中间包裹层(如 .card-scrollable)额外设置 paddingX"
1871
+ ],
1872
+ "verification": "生成后可验证:\n 1. PageHeader 左边缘 X = ActionToolbar 首个控件 X = Pagination 左侧起始 X = Card 左边缘 + 20px\n 2. Table 首列 (checkbox) 内容左边缘 X = Card 左边缘 + 40px(20 + 20)\n 3. Table 末列内容右边缘 X = Card 右边缘 - 40px\n 4. Table 相邻两个中间列内容间距 = 24px(例如「ID」列右边缘 ↔ 「状态」列左边缘)\n任一不一致即为违反。",
1873
+ "visualSideEffect": "thead 背景、tbody tr border-bottom、BulkActionBar 背景、Pagination border-top 不延伸到 Card 左右边缘(Card 左右各保留 20px 白边)。这是设计预期行为。表格首末列内容进一步缩进 20px,总体与 Card 边缘保持 40px 距离。"
1874
+ },
1875
+ "BulkActionBar.paddingX": "0 (水平对齐由 Card.paddingX 提供;禁止重复设置)",
1876
+ "BulkActionBar.paddingY": "12px",
1877
+ "BulkActionBar.background": "#ffffff(纯白)",
1878
+ "BulkActionBar.statsGap": "16px(“已选 x 项”与“共 x 条”之间间距)",
1879
+ "BulkActionBar.statsOrder": "“已选 x 项”在前、“共 x 条”在后;margin-left: auto 推到右侧",
1880
+ "Pagination.paddingX": "0 (水平对齐由 Card.paddingX 提供;禁止重复设置)",
1881
+ "Pagination.paddingY": "12px",
1882
+ "Pagination.topGap": "0 (紧贴 DataTable/BulkActionBar)",
1883
+ "FieldGroup.fieldGap": "16px (= --card-gap)",
1884
+ "CardGrid.gap": "16px (= --card-gap)",
1885
+ "Form.submitBarGap": "8px (= --button-gap)",
1886
+ "Form.itemGap": "16px (= --card-gap)",
1887
+ "Form.groupGap": "24px",
1888
+ "Form.labelContentGap": "24px (左右布局), 4px (上下布局)",
1889
+ "Detail.labelContentGap": "12px (= --gap-md,label 与 value 间距,与 component-specs.json C26.row.gap 一致)",
1890
+ "Detail.multiColumnGap": "64px (多列 DescriptionList 列与列之间的水平间距)",
1891
+ "Detail.groupGap": "24px (分组与分组之间的纵向间距,与 component-specs.json C26.section.sectionGap 对齐)",
1892
+ "Detail.labelSize": "12px (= --font-size-base,说明字段名)",
1893
+ "Detail.contentSize": "12px (= --font-size-base,字段值;v7.6.1 以代码实际与 C26 为准对齐为 12px)",
1894
+ "DescriptionList": {
1895
+ "description": "【v7.6.1 补齐】详情页核心展示组件 DescriptionList 间距与字号的结构化定义。最终精确规格(响应式、交互、边界)以 component-specs.json C26-DescriptionList 为唯一真相源,本段仅记录 spacing/typography 核心 token。",
1896
+ "row": {
1897
+ "height": "36px(含 paddingY)",
1898
+ "paddingY": "8px",
1899
+ "labelValueGap": "12px (= --gap-md;label 与 value 之间)"
1900
+ },
1901
+ "label": {
1902
+ "fontSize": "var(--font-size-base) = 12px",
1903
+ "color": "hsl(var(--color-gray-secondary-foreground))",
1904
+ "fontWeight": "var(--font-weight-normal) = 400",
1905
+ "width": "auto,minWidth=80px,maxWidth=180px"
1906
+ },
1907
+ "value": {
1908
+ "fontSize": "var(--font-size-base) = 12px",
1909
+ "color": "hsl(var(--color-gray-primary))",
1910
+ "fontWeight": "var(--font-weight-normal) = 400"
1911
+ },
1912
+ "section": {
1913
+ "sectionGap": "24px(分组与分组之间的纵向间距,通过后一个 section 的 padding-top 实现)",
1914
+ "titleFontSize": "var(--font-size-lg) = 14px",
1915
+ "titleFontWeight": "600",
1916
+ "titleColor": "hsl(var(--color-gray-primary))",
1917
+ "titleMarginBottom": "12px【分组标题与首行间距】",
1918
+ "borderTopBetween": "1px solid hsl(var(--color-gray-line))(非首个分组)— 属「功能性分组分割线」,不受 v7.6 surface 规则约束"
1919
+ },
1920
+ "columns": {
1921
+ "default": 2,
1922
+ "options": [
1923
+ 2,
1924
+ 3,
1925
+ 4
1926
+ ],
1927
+ "multiColumnGap": "64px(列与列间的水平间距)",
1928
+ "responsive": {
1929
+ ">=1200px": "使用配置列数",
1930
+ "768px-1199px": "最多 2 列",
1931
+ "<768px": "强制 1 列(vertical 布局)"
1932
+ }
1933
+ },
1934
+ "container": {
1935
+ "paddingX": "0【继承 Card 内边距 var(--card-padding-x) = 20px,不重复设置】",
1936
+ "paddingY": "0"
1937
+ },
1938
+ "reference": "component-specs.json C26-DescriptionList(完整规格;含交互与边界约束)、page-rule-examples/detail-page.html(参考实现)、pages/detail-page/SKILL.md §6.5(详情页域间距与表面规范)"
1939
+ },
1940
+ "Page.bottomPadding": "40px",
1941
+ "Sidebar.menuItemHeight": "40px",
1942
+ "Sidebar.l2Indent": "16px"
1943
+ }
1944
+ },
1945
+ "typographyTokens": {
1946
+ "description": "全局字体体系。TrekClaw 4 级字号体系(base=12/lg=14/xl=16/2xl=18)。CSS 变量 --font-sans / --font-mono 为字体族唯一引用方式,禁止在页面中硬编码 font-family 堆栈。",
1947
+ "fontFamily": {
1948
+ "sans": {
1949
+ "var": "--font-sans",
1950
+ "value": "'PingFang SC', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif",
1951
+ "usage": "UI 文字、正文、标题、标签、按钮等所有非代码文本"
1952
+ },
1953
+ "mono": {
1954
+ "var": "--font-mono",
1955
+ "value": "'SF Mono', Monaco, 'Courier New', monospace",
1956
+ "usage": "代码/ID/IP/版本号/实例规格等机器可读标识符"
1957
+ },
1958
+ "cssInstruction": "生成 HTML 时,body 必须使用 font-family: var(--font-sans);代码片段使用 font-family: var(--font-mono)。禁止在任何位置硬编码 font-family 字符串。"
1959
+ },
1960
+ "scale": {
1961
+ "base": {
1962
+ "var": "--font-size-base",
1963
+ "value": "0.75rem",
1964
+ "note": "12px",
1965
+ "name": "text-xs",
1966
+ "usage": "正文/标签/脚注/输入框/表格/Badge/分页/页面副标题",
1967
+ "weight": {
1968
+ "normal": "400"
1969
+ }
1970
+ },
1971
+ "lg": {
1972
+ "var": "--font-size-lg",
1973
+ "value": "0.875rem",
1974
+ "note": "14px",
1975
+ "name": "text-sm",
1976
+ "usage": "强调正文/弹窗标题/抽屉标题/Tab",
1977
+ "weight": {
1978
+ "normal": "400",
1979
+ "medium": "500"
1980
+ }
1981
+ },
1982
+ "xl": {
1983
+ "var": "--font-size-xl",
1984
+ "value": "1rem",
1985
+ "note": "16px",
1986
+ "name": "text-base",
1987
+ "usage": "Sidebar 品牌区文字、小标题、卡片标题、区块标题",
1988
+ "weight": {
1989
+ "medium": "500",
1990
+ "black": "900 (仅 Sidebar 品牌区)"
1991
+ }
1992
+ },
1993
+ "2xl": {
1994
+ "var": "--font-size-2xl",
1995
+ "value": "1.125rem",
1996
+ "note": "18px",
1997
+ "name": "text-lg",
1998
+ "usage": "页面主标题(PageHeader)、概览统计大数字",
1999
+ "weight": {
2000
+ "medium": "500"
2001
+ }
2002
+ },
2003
+ "page-header": {
2004
+ "var": "--font-size-page-header",
2005
+ "value": "1.125rem",
2006
+ "note": "= var(--font-size-2xl) = 18px",
2007
+ "name": "语义别名",
2008
+ "usage": "PageHeader 页面主标题专用字号(映射到 --font-size-2xl)。生成页面时 .page-header-title 必须使用此变量。",
2009
+ "weight": {
2010
+ "medium": "500"
2011
+ }
2012
+ }
2013
+ },
2014
+ "lineHeight": {
2015
+ "input": {
2016
+ "var": "--line-height-input",
2017
+ "value": "1.5",
2018
+ "note": "18px/12px"
2019
+ },
2020
+ "normal": {
2021
+ "var": "--line-height-normal",
2022
+ "value": "1.5"
2023
+ },
2024
+ "dialogTitle": {
2025
+ "var": "--line-height-dialog-title",
2026
+ "value": "1.57",
2027
+ "note": "22px/14px"
2028
+ }
2029
+ },
2030
+ "fontWeight": {
2031
+ "normal": {
2032
+ "var": "--font-weight-normal",
2033
+ "value": "400",
2034
+ "usage": "正文、Tab 常态、表格单元格"
2035
+ },
2036
+ "medium": {
2037
+ "var": "--font-weight-medium",
2038
+ "value": "500",
2039
+ "usage": "标签、导航、Tab 激活、弹窗标题、按钮"
2040
+ },
2041
+ "black": {
2042
+ "var": "--font-weight-black",
2043
+ "value": "900",
2044
+ "usage": "Sidebar 品牌区文字"
2045
+ }
2046
+ },
2047
+ "letterSpacing": {
2048
+ "tight": {
2049
+ "var": "--letter-spacing-tight",
2050
+ "value": "-0.025em"
2051
+ },
2052
+ "normal": {
2053
+ "var": "--letter-spacing-normal",
2054
+ "value": "0em"
2055
+ }
2056
+ },
2057
+ "pageHeaderTitle": {
2058
+ "description": "PageHeader 标题专用字号。18px 不属于主 scale(base/lg/xl/2xl),仅用于 PageHeader 标题。",
2059
+ "fontSize": "18px",
2060
+ "fontWeight": "500 (medium)",
2061
+ "lineHeight": "36px (leading-9)",
2062
+ "color": "var(--gray-title)",
2063
+ "note": "此值独立于 typographyTokens.scale,AI 生成 PageHeader 时必须使用 18px,不得用 --font-size-lg 或 --font-size-xl 替代"
2064
+ },
2065
+ "code": {
2066
+ "usage": "实例ID、IP地址、VPC ID、实例规格等机器可读标识符",
2067
+ "properties": "font-mono, text-sm(14px), text-[hsl(var(--gray-secondary))]"
2068
+ },
2069
+ "truncate": {
2070
+ "usage": "单行文本截断,超出显示省略号",
2071
+ "css": "truncate (overflow-hidden text-ellipsis whitespace-nowrap)",
2072
+ "maxLines": "1 (默认), 2-3 (卡片描述等场景使用 line-clamp)"
2073
+ },
2074
+ "legacyAliases": {
2075
+ "description": "Legacy 排版别名。",
2076
+ "textFontSize": {
2077
+ "var": "--text-font-size",
2078
+ "value": "14px",
2079
+ "usage": "→ --font-size-lg(强调正文 legacy 别名)"
2080
+ }
2081
+ }
2082
+ },
2083
+ "layoutTokens": {
2084
+ "description": "响应式断点与布局模式体系",
2085
+ "breakpoints": {
2086
+ "DesktopXL": {
2087
+ "min": "1920px",
2088
+ "behavior": "导航展开,完整布局"
2089
+ },
2090
+ "Desktop": {
2091
+ "min": "1200px",
2092
+ "max": "1919px",
2093
+ "behavior": "导航可收起,完整布局"
2094
+ },
2095
+ "Tablet": {
2096
+ "min": "768px",
2097
+ "max": "1199px",
2098
+ "behavior": "导航覆盖式/横滚,表格横滚"
2099
+ },
2100
+ "Mobile": {
2101
+ "max": "767px",
2102
+ "behavior": "不推荐,提示使用桌面端"
2103
+ }
2104
+ },
2105
+ "layoutModes": {
2106
+ "SINGLE_COL": "单列布局,PageContainer 直接包含内容,无 Sidebar",
2107
+ "TWO_COL": "双列布局,Sidebar(240px 固定) + PageContainer(自适应)",
2108
+ "GRID": "网格布局,卡片/统计卡片使用 grid auto-fill/auto-fit"
2109
+ },
2110
+ "responsiveTable": {
2111
+ "fixedLeft": "选择框 + ID/名称列固定在左侧",
2112
+ "fixedRight": "操作列固定在右侧",
2113
+ "scrollable": "中间列支持横向滚动",
2114
+ "priorityHide": "视口受限时按列优先级从右向左隐藏"
2115
+ }
2116
+ },
2117
+ "sidebarRules": {
2118
+ "description": "Sidebar 组件统一规范 — AI 生成页面时必须引用以下规则,禁止硬编码色值或宽度。其他文件(page-frame.json / common-components.json / 子技能)应引用本规则,避免分散和冲突。",
2119
+ "width": {
2120
+ "expanded": {
2121
+ "var": "--layout-sidebar-width",
2122
+ "value": "240px",
2123
+ "usage": "侧边栏展开状态默认宽度"
2124
+ },
2125
+ "collapsed": {
2126
+ "var": "--sidebar-collapsed-width",
2127
+ "value": "68px",
2128
+ "usage": "侧边栏收起状态宽度(仅显示图标)"
2129
+ }
2130
+ },
2131
+ "layout": {
2132
+ "position": "fixed",
2133
+ "top": "0",
2134
+ "left": "0",
2135
+ "bottom": "0",
2136
+ "zIndex": "100",
2137
+ "mainContentOffset": "margin-left: var(--layout-sidebar-width)(主内容区补偿,非 flex)",
2138
+ "usage": "Sidebar 使用 fixed 定位,主内容区通过 margin-left 补偿宽度。禁止使用 flex 布局排列 Sidebar 和主内容区。"
2139
+ },
2140
+ "structure": {
2141
+ "description": "Sidebar 内部 HTML 结构规范。支持 2 级 / 3 级两种结构变体;菜单项必须用 ul > li > a 包裹,禁止扁平化(直接 a 挂在 nav/div 下)。",
2142
+ "variants": {
2143
+ "threeLevel": {
2144
+ "description": "3 级结构(默认):分组标题 + 主菜单 + 子菜单。适用信息架构需要 3 层归类的场景(顶层按业务域分组、中层主导航、底层细分功能)。",
2145
+ "levels": [
2146
+ "sidebar-group-label(分组标题)",
2147
+ "sidebar-menu-item(主菜单)",
2148
+ "sidebar-sub-menu > sidebar-menu-item(子菜单)"
2149
+ ],
2150
+ "hierarchy": [
2151
+ "aside.sidebar",
2152
+ "├─ div.sidebar-header(品牌区)",
2153
+ "├─ div.sidebar-content(滚动容器)",
2154
+ "│ ├─ div.sidebar-group-label(分组标题,可重复)",
2155
+ "│ ├─ ul.sidebar-menu",
2156
+ "│ │ └─ li > a.sidebar-menu-item(主菜单项)",
2157
+ "│ ├─ ul.sidebar-sub-menu(可选,主菜单展开后显示)",
2158
+ "│ │ └─ li > a.sidebar-menu-item(子菜单项)",
2159
+ "│ └─ … 更多分组",
2160
+ "├─ div.sidebar-divider(Footer 分隔线)",
2161
+ "└─ div.sidebar-footer",
2162
+ " ├─ div.sidebar-avatar",
2163
+ " ├─ span.sidebar-username",
2164
+ " └─ button.sidebar-more"
2165
+ ]
2166
+ },
2167
+ "twoLevel": {
2168
+ "description": "2 级结构(新增):主菜单 + 子菜单,无分组标题。适用信息架构只有 2 层归类的场景(顶层主导航、底层细分功能,无需分组标题归类)。",
2169
+ "levels": [
2170
+ "sidebar-menu-item(主菜单)",
2171
+ "sidebar-sub-menu > sidebar-menu-item(子菜单,可选)"
2172
+ ],
2173
+ "hierarchy": [
2174
+ "aside.sidebar",
2175
+ "├─ div.sidebar-header(品牌区)",
2176
+ "├─ div.sidebar-content(滚动容器)",
2177
+ "│ ├─ ul.sidebar-menu(单一菜单容器,无分组标题)",
2178
+ "│ │ ├─ li > a.sidebar-menu-item(主菜单项,可重复)",
2179
+ "│ │ └─ li > ul.sidebar-sub-menu(可选,主菜单展开后显示)",
2180
+ "│ │ └─ li > a.sidebar-menu-item(子菜单项)",
2181
+ "├─ div.sidebar-divider(Footer 分隔线)",
2182
+ "└─ div.sidebar-footer",
2183
+ " ├─ div.sidebar-avatar",
2184
+ " ├─ span.sidebar-username",
2185
+ " └─ button.sidebar-more"
2186
+ ],
2187
+ "differenceFromThreeLevel": "禁止出现 div.sidebar-group-label;所有主菜单项放入同一个 ul.sidebar-menu,主菜单项之间间距由 li 自身 padding 提供(不再依赖 group-label margin-top:16px)。",
2188
+ "textAlignment": {
2189
+ "description": "子菜单文字与主菜单文字 x 坐标上下对齐(同一列),不再以退格表现层级,层级关系由展开箭头 / 字号减小 / 背景色表现。",
2190
+ "calculation": "主菜单文字 x = ul.sidebar-menu padding-left(8) + a.sidebar-menu-item padding-left(12) + .item-icon 宽(16) + gap var(--button-gap)(8) = 44px(从 sidebar-content 内边缘起算)。子菜单文字需同样为 44px。",
2191
+ "implementation": [
2192
+ ".sidebar-menu > li > .sidebar-sub-menu { padding-left: 0; } — sub-menu 不再额外加左 padding",
2193
+ ".sidebar-sub-menu .sidebar-menu-item { padding-left: 36px; } — 36px = 12 + 16 + 8,代替主菜单的 padding+icon+gap 宽度",
2194
+ "子菜单项本身不需要 .item-icon(仅文字)"
2195
+ ],
2196
+ "forbidden": "禁止给子菜单项加 .item-icon;禁止使子菜单文字起点低于主菜单文字起点 x(隐藏层级关系)或高于主菜单(反直觉)。"
2197
+ }
2198
+ }
2199
+ },
2200
+ "selectionGuide": {
2201
+ "principle": "以信息架构层级深度为准,与菜单项个数无关。",
2202
+ "useThreeLevel": "信息架构需要 3 层归类:分组标题(业务域 / 模块归类)→ 主菜单 → 子菜单。当主菜单项之间需要语义化分组时使用。",
2203
+ "useTwoLevel": "信息架构只需 2 层归类:主菜单 → 子菜单。当主菜单项处于同一语义层级、无需上层分组归类时使用。"
2204
+ },
2205
+ "forbidden": [
2206
+ "禁止扁平化结构(直接 a 标签挂在 nav/div 下,无 ul > li 包裹)",
2207
+ "禁止 Sidebar 整体使用 flex 布局(改用 fixed 定位)",
2208
+ "禁止省略 sidebar-content 滚动容器(sidebar-header 固定,footer 固定在底部)",
2209
+ "twoLevel 变体下禁止出现 sidebar-group-label",
2210
+ "只有一级功能、无子菜单的菜单项禁止出现 expand-icon 与 data-toggle:expand-icon 仅出现在有 sidebar-sub-menu 的主菜单项上"
2211
+ ]
2212
+ },
2213
+ "collapseBehavior": {
2214
+ "description": "收起态行为规则。收起后 sidebar 宽度缩为 68px,所有元素居中对齐于 34px 中轴线。",
2215
+ "width": "68px (= --sidebar-collapsed-width)",
2216
+ "overflow": "visible(容器级别 overflow: visible 以支持 flyout 浮层溢出;滚动能力下移到 .sidebar-content 的 overflow-y: auto / overflow-x: hidden)",
2217
+ "visible": "仅显示图标,隐藏所有文字(label / group title / count / expand-icon)",
2218
+ "transition": "width var(--duration-normal) var(--easing-ease)",
2219
+ "selectedIndicator": "收起态通过灰色背景 var(--color-sidebar-active) 区分,不显示高亮条",
2220
+ "menuItem": {
2221
+ "size": "40x40px",
2222
+ "borderRadius": "var(--radius-md) (8px)",
2223
+ "centering": "li { display: flex; justify-content: center } 使 40px item 居中于 68px sidebar 的 34px 中轴线",
2224
+ "gap": "0(覆盖基础 gap: var(--button-gap),消除隐形文字节点产生的 flex 间距偏移)",
2225
+ "flexShrink": "0(防止弹性压缩)",
2226
+ "selector": ".sidebar.collapsed .sidebar-menu > li > a.sidebar-menu-item(精确作用域,不泄漏到 flyout 内的菜单项)",
2227
+ "textHiding": "li > a { font-size: 0 } + li > a > .item-icon { font-size: var(--font-size-lg) }",
2228
+ "iconMargin": "0(覆盖展开态的 item-icon margin)"
2229
+ },
2230
+ "menu": {
2231
+ "padding": "0(移除展开态的 0 8px,配合 li justify-content: center 实现居中)",
2232
+ "gap": "2px(继承基础 sidebar-menu 的 gap: 2px)"
2233
+ },
2234
+ "divider": {
2235
+ "margin": "0 14px(宽度 = 68 - 14*2 = 40px,与菜单项等宽对齐)"
2236
+ },
2237
+ "header": {
2238
+ "padding": "0 12px",
2239
+ "justifyContent": "center",
2240
+ "logo": {
2241
+ "collapsed": "显示折叠态 Logo(30x30px),隐藏展开态品牌 Logo",
2242
+ "hoverInteraction": "hover Logo 区域时隐藏折叠 Logo、显示展开 icon(14x14px,#717376)",
2243
+ "clickAction": "点击 Logo 区域展开 sidebar(移除 collapsed class)",
2244
+ "expandIcon": {
2245
+ "size": "14x14px",
2246
+ "color": "#717376",
2247
+ "viewBox": "正方形裁剪(如 380 160 680 680),确保在固定像素容器中不变形"
2248
+ }
2249
+ },
2250
+ "collapseBtn": "display: none(收起态隐藏折叠按钮)"
2251
+ },
2252
+ "footer": {
2253
+ "padding": "12px 10px 16px",
2254
+ "justifyContent": "center",
2255
+ "hidden": "username / moreButton 隐藏,仅保留 avatar 居中"
2256
+ },
2257
+ "collapseButton": {
2258
+ "size": "14x14px",
2259
+ "color": "#717376",
2260
+ "position": "margin-left: auto(展开态靠右对齐)",
2261
+ "note": "展开态和收起态的 icon 尺寸与颜色保持一致"
2262
+ },
2263
+ "flyout": {
2264
+ "description": "收起态 hover 菜单项时,在右侧弹出子菜单浮层",
2265
+ "trigger": "li:hover > .sidebar-flyout { display: block }",
2266
+ "position": "absolute; left: 100%; top: 0(紧贴 sidebar 右边缘)",
2267
+ "minWidth": "160px",
2268
+ "padding": "4px",
2269
+ "background": "hsl(var(--color-card))",
2270
+ "border": "1px solid hsl(var(--color-gray-line))",
2271
+ "borderRadius": "var(--radius-md)",
2272
+ "boxShadow": "0 4px 12px rgba(0,0,0,0.08)",
2273
+ "zIndex": 200,
2274
+ "menuItem": {
2275
+ "height": "36px",
2276
+ "padding": "0 12px",
2277
+ "fontSize": "var(--font-size-base)",
2278
+ "fontWeight": "var(--font-weight-normal)",
2279
+ "color": "hsl(var(--color-gray-primary))",
2280
+ "borderRadius": "var(--radius-sm)",
2281
+ "hoverBg": "hsl(var(--gray-fill))"
2282
+ }
2283
+ },
2284
+ "alignment": {
2285
+ "description": "68px 收起态中轴对齐规则:所有可见元素的视觉中心对齐于 x = 34px",
2286
+ "header": "padding: 0 12px + justify-content: center → 30px Logo 居中于 34px",
2287
+ "menuItem": "li justify-content: center → 40px item 居中于 34px",
2288
+ "divider": "margin: 0 14px → 40px divider 居中于 34px",
2289
+ "footer": "padding: 12px 10px 16px + justify-content: center → 28px avatar 居中于 34px"
2290
+ }
2291
+ },
2292
+ "colors": {
2293
+ "container": {
2294
+ "background": "var(--color-sidebar)",
2295
+ "border": "none",
2296
+ "note": "Sidebar 整体无任何外边框(右侧外边框、品牌区底部边框)。与内容区通过背景色差区分边界。"
2297
+ },
2298
+ "navGroup": {
2299
+ "text": "var(--color-sidebar-group)",
2300
+ "usage": "分组标题文字,小写大写混排"
2301
+ },
2302
+ "menuItem": {
2303
+ "default": {
2304
+ "text": "var(--color-sidebar-item-muted)",
2305
+ "background": "transparent",
2306
+ "note": "默认态文字颜色为 muted(灰色),不是 item(黑色)"
2307
+ },
2308
+ "hover": {
2309
+ "text": "var(--color-sidebar-item)",
2310
+ "background": "var(--color-sidebar-hover)"
2311
+ },
2312
+ "active": {
2313
+ "text": "var(--color-sidebar-active-foreground)",
2314
+ "background": "var(--color-sidebar-active)",
2315
+ "indicator": "无高亮条,仅通过灰色背景 var(--color-sidebar-active) 区分选中态"
2316
+ },
2317
+ "disabled": {
2318
+ "text": "var(--color-sidebar-item-muted)",
2319
+ "background": "transparent"
2320
+ }
2321
+ },
2322
+ "icon": {
2323
+ "default": "var(--color-sidebar-item-muted)",
2324
+ "active": "var(--color-sidebar-active-foreground)",
2325
+ "note": "默认态图标也应为 muted,激活态为白色"
2326
+ }
2327
+ },
2328
+ "menuItemStyle": {
2329
+ "description": "菜单项样式规范。禁止扁平样式。",
2330
+ "padding": "0 12px",
2331
+ "height": "40px (= --menuItemHeight)",
2332
+ "gap": "8px (= --button-gap)",
2333
+ "borderRadius": "8px (= --radius-md,药丸形圆角,非直角)",
2334
+ "fontSize": "14px (= --font-size-lg)",
2335
+ "fontWeight": "500 (= --font-weight-medium)",
2336
+ "iconSize": "16px (= --input-icon-size)",
2337
+ "activeState": {
2338
+ "implementation": "background: hsl(var(--color-sidebar-active)),禁止使用 border-left / ::before / 高亮条",
2339
+ "paddingLeft": "12px(保持与 padding 一致,无需补偿)",
2340
+ "forbidden": "border-left / ::before 伪元素 / 高亮条实现(仅用灰色背景区分)"
2341
+ }
2342
+ },
2343
+ "sidebarFooter": {
2344
+ "description": "Sidebar 底部区域。包含用户头像、用户名、更多按钮。固定在底部,不参与滚动。",
2345
+ "styles": {
2346
+ "flexShrink": "0",
2347
+ "display": "flex",
2348
+ "alignItems": "center",
2349
+ "gap": "8px"
2350
+ },
2351
+ "divider": {
2352
+ "styles": {
2353
+ "height": "1px",
2354
+ "background": "hsl(var(--color-sidebar-border))",
2355
+ "margin": "0 12px",
2356
+ "flexShrink": "0"
2357
+ }
2358
+ },
2359
+ "padding": "12px 12px 16px 24px",
2360
+ "avatar": {
2361
+ "size": "28px",
2362
+ "borderRadius": "50%",
2363
+ "styles": {
2364
+ "width": "28px",
2365
+ "height": "28px",
2366
+ "borderRadius": "50%",
2367
+ "display": "flex",
2368
+ "alignItems": "center",
2369
+ "justifyContent": "center",
2370
+ "flexShrink": "0",
2371
+ "fontSize": "var(--font-size-base)",
2372
+ "fontWeight": "600",
2373
+ "overflow": "hidden"
2374
+ }
2375
+ },
2376
+ "username": {
2377
+ "styles": {
2378
+ "flex": "1",
2379
+ "fontSize": "var(--font-size-lg)",
2380
+ "fontWeight": "var(--font-weight-medium)",
2381
+ "color": "var(--color-sidebar-item)",
2382
+ "overflow": "hidden",
2383
+ "textOverflow": "ellipsis",
2384
+ "whiteSpace": "nowrap"
2385
+ }
2386
+ },
2387
+ "moreButton": {
2388
+ "size": "28px",
2389
+ "icon": "垂直三点(ellipsis-vertical)",
2390
+ "styles": {
2391
+ "width": "28px",
2392
+ "height": "28px",
2393
+ "borderRadius": "var(--radius-sm)",
2394
+ "border": "none",
2395
+ "background": "transparent",
2396
+ "display": "flex",
2397
+ "alignItems": "center",
2398
+ "justifyContent": "center",
2399
+ "color": "var(--gray-tertiary)",
2400
+ "cursor": "pointer",
2401
+ "transition": "color var(--duration-fast), background var(--duration-fast)"
2402
+ },
2403
+ "hoverState": {
2404
+ "color": "var(--color-gray-primary)",
2405
+ "background": "var(--gray-fill)"
2406
+ }
2407
+ },
2408
+ "collapsedState": {
2409
+ "padding": "12px 10px 16px",
2410
+ "justifyContent": "center",
2411
+ "hidden": [
2412
+ "username",
2413
+ "moreButton"
2414
+ ],
2415
+ "visible": [
2416
+ "avatar"
2417
+ ],
2418
+ "note": "收起态详细规范见 collapseBehavior.footer"
2419
+ }
2420
+ },
2421
+ "behavior": {
2422
+ "menuItemHeight": "40px",
2423
+ "l2Indent": "16px",
2424
+ "responsiveBreakpoint": "768px 以下折叠为 Overlay 抽屉模式"
2425
+ },
2426
+ "sidebarHeader": {
2427
+ "description": "Sidebar 顶部品牌区域,替代原 TopNavigation 的 Logo+ProductName。与菜单区背景色一致(--color-sidebar),无分割线分隔。",
2428
+ "styles": {
2429
+ "height": "56px",
2430
+ "padding": "0 16px",
2431
+ "display": "flex",
2432
+ "alignItems": "center",
2433
+ "gap": "4px (= --gap-xs,Logo 与品牌文字间距)",
2434
+ "flexShrink": "0",
2435
+ "forbidden": "flex-grow / overflow / border-bottom"
2436
+ },
2437
+ "logo": {
2438
+ "size": "20x20px",
2439
+ "styles": {
2440
+ "width": "20px",
2441
+ "height": "20px",
2442
+ "flexShrink": "0",
2443
+ "padding": "4px",
2444
+ "display": "flex",
2445
+ "alignItems": "center",
2446
+ "justifyContent": "center"
2447
+ },
2448
+ "gap": "4px (= --gap-xs,Logo 与品牌文字间距)"
2449
+ },
2450
+ "productName": {
2451
+ "fontSize": "var(--font-size-xl)",
2452
+ "fontWeight": "900 (= --font-weight-black)",
2453
+ "color": "var(--color-sidebar-foreground)",
2454
+ "letterSpacing": "var(--letter-spacing-tight)",
2455
+ "styles": {
2456
+ "lineHeight": "1",
2457
+ "whiteSpace": "nowrap"
2458
+ }
2459
+ },
2460
+ "forbidden": [
2461
+ "border-bottom(禁止底部边框/分割线)",
2462
+ "box-shadow(禁止底部阴影)"
2463
+ ],
2464
+ "collapsedState": {
2465
+ "padding": "0 12px",
2466
+ "justifyContent": "center",
2467
+ "note": "收起态详细规范见 collapseBehavior.header"
2468
+ }
2469
+ },
2470
+ "sidebarContent": {
2471
+ "description": "Sidebar 菜单滚动容器。位于 header 与 footer 之间,承载所有分组和菜单项。",
2472
+ "styles": {
2473
+ "flex": "1",
2474
+ "flexShrink": "0",
2475
+ "overflowY": "auto",
2476
+ "padding": "12px 0"
2477
+ },
2478
+ "groupLabel": {
2479
+ "styles": {
2480
+ "padding": "0 16px",
2481
+ "height": "26px",
2482
+ "lineHeight": "26px",
2483
+ "fontSize": "var(--font-size-base)",
2484
+ "fontWeight": "var(--font-weight-normal)",
2485
+ "color": "var(--color-sidebar-group)"
2486
+ },
2487
+ "spacing": "非首个分组时 margin-top: 16px"
2488
+ },
2489
+ "menu": {
2490
+ "listStyle": "none",
2491
+ "padding": "0 8px",
2492
+ "note": "ul.sidebar-menu,菜单项用 li > a 包裹"
2493
+ }
2494
+ },
2495
+ "typography": {
2496
+ "description": "Sidebar 字体体系。所有文字引用本层规则,禁止硬编码字号。",
2497
+ "productName": {
2498
+ "fontSize": "var(--font-size-xl) (16px)",
2499
+ "fontWeight": "900 (= --font-weight-black)",
2500
+ "color": "var(--color-sidebar-foreground)",
2501
+ "letterSpacing": "var(--letter-spacing-tight)"
2502
+ },
2503
+ "navGroup": {
2504
+ "fontSize": "var(--font-size-base) (12px)",
2505
+ "fontWeight": "400 (= --font-weight-normal)",
2506
+ "color": "var(--color-sidebar-group)",
2507
+ "height": "26px"
2508
+ },
2509
+ "menuItem": {
2510
+ "fontSize": "var(--font-size-lg) (14px)",
2511
+ "fontWeight": "500 (= --font-weight-medium)",
2512
+ "colorDefault": "var(--color-sidebar-item-muted)",
2513
+ "colorHover": "var(--color-sidebar-item)",
2514
+ "colorActive": "var(--color-sidebar-active-foreground)"
2515
+ },
2516
+ "footer": {
2517
+ "username": {
2518
+ "fontSize": "var(--font-size-lg) (14px)",
2519
+ "fontWeight": "500 (= --font-weight-medium)",
2520
+ "color": "var(--color-sidebar-item)",
2521
+ "truncate": true
2522
+ },
2523
+ "avatarText": {
2524
+ "fontSize": "var(--font-size-base) (12px)",
2525
+ "fontWeight": "600",
2526
+ "color": "var(--color-gray-primary)"
2527
+ }
2528
+ }
2529
+ },
2530
+ "cssVars": {
2531
+ "description": "由本规则映射出的 CSS 变量条目(用于 cssGeneration 派生 + 反向核验)。",
2532
+ "layoutSidebarWidth": {
2533
+ "var": "--layout-sidebar-width",
2534
+ "value": "240px",
2535
+ "usage": "L1 Sidebar 展开态宽度"
2536
+ },
2537
+ "avatarBg": {
2538
+ "var": "--color-avatar-bg",
2539
+ "hsl": "216 11.1% 91.2%",
2540
+ "fallback": "#E3E5E8",
2541
+ "usage": "Sidebar 头像背景色"
2542
+ }
2543
+ },
2544
+ "collapsedTokens": {
2545
+ "description": "Sidebar 收起态专用 token(68px 收起态、flyout 浮层、菜单项尺寸等)。",
2546
+ "sidebarCollapsedWidth": {
2547
+ "var": "--sidebar-collapsed-width",
2548
+ "value": "68px",
2549
+ "usage": "收起态侧边栏宽度"
2550
+ },
2551
+ "sidebarMenuItemHeight": {
2552
+ "var": "--sidebar-menu-item-height",
2553
+ "value": "40px",
2554
+ "usage": "菜单项高度(展开/收起共用)"
2555
+ },
2556
+ "sidebarMenuItemSizeCollapsed": {
2557
+ "var": "--sidebar-menu-item-size-collapsed",
2558
+ "value": "40px",
2559
+ "usage": "收起态菜单项正方形尺寸"
2560
+ },
2561
+ "sidebarMenuItemGapCollapsed": {
2562
+ "var": "--sidebar-menu-item-gap-collapsed",
2563
+ "value": "0px",
2564
+ "usage": "收起态菜单项内部 gap(消除隐形文字节点的 flex 间距)"
2565
+ },
2566
+ "sidebarHeaderPaddingCollapsed": {
2567
+ "var": "--sidebar-header-padding-collapsed",
2568
+ "value": "0 12px",
2569
+ "usage": "收起态品牌区 padding"
2570
+ },
2571
+ "sidebarFooterPaddingCollapsed": {
2572
+ "var": "--sidebar-footer-padding-collapsed",
2573
+ "value": "12px 10px 16px",
2574
+ "usage": "收起态底部 padding"
2575
+ },
2576
+ "sidebarFlyoutZIndex": {
2577
+ "var": "--sidebar-flyout-z-index",
2578
+ "value": "200",
2579
+ "usage": "Flyout 浮层 z-index"
2580
+ },
2581
+ "sidebarFlyoutMinWidth": {
2582
+ "var": "--sidebar-flyout-min-width",
2583
+ "value": "160px",
2584
+ "usage": "Flyout 浮层最小宽度"
2585
+ },
2586
+ "sidebarFlyoutItemHeight": {
2587
+ "var": "--sidebar-flyout-item-height",
2588
+ "value": "36px",
2589
+ "usage": "Flyout 浮层菜单项高度"
2590
+ },
2591
+ "sidebarCenteredAxis": {
2592
+ "var": "--sidebar-centered-axis",
2593
+ "value": "34px",
2594
+ "usage": "收起态视觉中轴(68/2 = 34px)"
2595
+ },
2596
+ "sidebarExpandIconSize": {
2597
+ "var": "--sidebar-expand-icon-size",
2598
+ "value": "14px",
2599
+ "usage": "展开/折叠按钮图标尺寸"
2600
+ }
2601
+ }
2602
+ },
2603
+ "typeIdentifierTokens": {
2604
+ "description": "类型标识色(API / MCP)。用于资源类型 Badge / 标签。",
2605
+ "api": {
2606
+ "var": "--color-type-api",
2607
+ "hsl": "221 83% 53%",
2608
+ "fallback": "#2563EB",
2609
+ "usage": "API 类型主色"
2610
+ },
2611
+ "apiLight": {
2612
+ "var": "--color-type-api-light",
2613
+ "hsl": "214 100% 92%",
2614
+ "fallback": "#D6E8FF",
2615
+ "usage": "API 类型浅底"
2616
+ },
2617
+ "apiBorder": {
2618
+ "var": "--color-type-api-border",
2619
+ "hsl": "213 97% 87%",
2620
+ "fallback": "#BFDBFE",
2621
+ "usage": "API 类型边框"
2622
+ },
2623
+ "mcp": {
2624
+ "var": "--color-type-mcp",
2625
+ "hsl": "271 81% 56%",
2626
+ "fallback": "#9333EA",
2627
+ "usage": "MCP 类型主色"
2628
+ },
2629
+ "mcpLight": {
2630
+ "var": "--color-type-mcp-light",
2631
+ "hsl": "264 77% 95%",
2632
+ "fallback": "#F0E8FC",
2633
+ "usage": "MCP 类型浅底"
2634
+ },
2635
+ "mcpBorder": {
2636
+ "var": "--color-type-mcp-border",
2637
+ "hsl": "269 100% 92%",
2638
+ "fallback": "#E9D5FF",
2639
+ "usage": "MCP 类型边框"
2640
+ }
2641
+ },
2642
+ "statusTokens": {
2643
+ "description": "状态指示点颜色(Running / Stopped / Error)。",
2644
+ "running": {
2645
+ "var": "--color-status-running",
2646
+ "hsl": "142 76% 36%",
2647
+ "fallback": "#16A34A",
2648
+ "usage": "运行中(→ --color-success)"
2649
+ },
2650
+ "stopped": {
2651
+ "var": "--color-status-stopped",
2652
+ "hsl": "222 7.6% 74.1%",
2653
+ "fallback": "#BABCBF",
2654
+ "usage": "已停止(→ --color-gray-disabled 同色系)"
2655
+ },
2656
+ "error": {
2657
+ "var": "--color-status-error",
2658
+ "hsl": "0 72% 51%",
2659
+ "fallback": "#DC2626",
2660
+ "usage": "错误(→ --color-destructive)"
2661
+ }
2662
+ },
2663
+ "terminalTokens": {
2664
+ "description": "终端 / 代码块颜色。",
2665
+ "background": {
2666
+ "var": "--color-terminal",
2667
+ "hsl": "222 47% 11%",
2668
+ "fallback": "#0F172A",
2669
+ "usage": "终端背景"
2670
+ },
2671
+ "foreground": {
2672
+ "var": "--color-terminal-foreground",
2673
+ "hsl": "142 69% 58%",
2674
+ "fallback": "#4ADE80",
2675
+ "usage": "终端前景(绿色字符)"
2676
+ }
2677
+ },
2678
+ "cardGridTokens": {
2679
+ "description": "CardGrid 列宽预设(v7.2 业务卡片页 minWidth token 化)。",
2680
+ "compact": {
2681
+ "var": "--card-grid-min-compact",
2682
+ "value": "240px",
2683
+ "usage": "iconStyle=avatar + density=minimal"
2684
+ },
2685
+ "standard": {
2686
+ "var": "--card-grid-min-standard",
2687
+ "value": "300px",
2688
+ "usage": "iconStyle=avatar + density=standard(默认)"
2689
+ },
2690
+ "comfortable": {
2691
+ "var": "--card-grid-min-comfortable",
2692
+ "value": "320px",
2693
+ "usage": "iconStyle=tile + density=standard"
2694
+ },
2695
+ "feature": {
2696
+ "var": "--card-grid-min-feature",
2697
+ "value": "360px",
2698
+ "usage": "iconStyle=avatar + density=complex"
2699
+ }
2700
+ },
2701
+ "pageHeaderTokens": {
2702
+ "description": "PageHeader / Breadcrumb / ActionToolbar 布局 token。",
2703
+ "pageHeaderHeight": {
2704
+ "var": "--page-header-height",
2705
+ "value": "64px",
2706
+ "usage": "PageHeader 高度"
2707
+ },
2708
+ "breadcrumbHeight": {
2709
+ "var": "--breadcrumb-height",
2710
+ "value": "64px",
2711
+ "usage": "Breadcrumb 高度"
2712
+ },
2713
+ "actionToolbarSearchComboGap": {
2714
+ "var": "--action-toolbar-search-combo-gap",
2715
+ "value": "20px",
2716
+ "usage": "ActionToolbar 中 SearchCombo 与 .left-actions 间距"
2717
+ }
2718
+ },
2719
+ "formTokens": {
2720
+ "description": "Form 表单布局 token。详见 component-specs.json C-Form。",
2721
+ "labelWidth": {
2722
+ "var": "--form-label-width",
2723
+ "value": "140px",
2724
+ "usage": "左右布局下 label 列宽度"
2725
+ },
2726
+ "controlMaxWidth": {
2727
+ "var": "--form-control-max-width",
2728
+ "value": "400px",
2729
+ "usage": "表单控件最大宽度"
2730
+ },
2731
+ "rowGap": {
2732
+ "var": "--form-row-gap",
2733
+ "value": "24px",
2734
+ "usage": "表单分组间距"
2735
+ },
2736
+ "rowPaddingY": {
2737
+ "var": "--form-row-padding-y",
2738
+ "value": "12px",
2739
+ "usage": "表单行垂直内边距"
2740
+ },
2741
+ "descriptionFontSize": {
2742
+ "var": "--form-description-font-size",
2743
+ "value": "13px",
2744
+ "usage": "表单描述文字字号"
2745
+ },
2746
+ "requiredIndicatorMarginLeft": {
2747
+ "var": "--form-required-indicator-margin-left",
2748
+ "value": "2px",
2749
+ "usage": "必填星号与 label 间距"
2750
+ }
2751
+ },
2752
+ "paginationTokens": {
2753
+ "description": "Pagination 分页组件尺寸 token。",
2754
+ "buttonSize": {
2755
+ "var": "--pagination-button-size",
2756
+ "value": "32px",
2757
+ "usage": "分页按钮正方形尺寸"
2758
+ },
2759
+ "arrowIconSize": {
2760
+ "var": "--pagination-arrow-icon-size",
2761
+ "value": "20px",
2762
+ "usage": "左右翻页箭头图标尺寸"
2763
+ },
2764
+ "ellipsisIconSize": {
2765
+ "var": "--pagination-ellipsis-icon-size",
2766
+ "value": "16px",
2767
+ "usage": "省略号图标尺寸"
2768
+ },
2769
+ "buttonSmHeight": {
2770
+ "var": "--button-sm-height",
2771
+ "value": "28px",
2772
+ "usage": "小号按钮高度(分页/紧凑场景共用)"
2773
+ }
2774
+ },
2775
+ "stepperTokens": {
2776
+ "description": "Stepper 步进器组件尺寸 token。",
2777
+ "buttonWidth": {
2778
+ "var": "--stepper-button-width",
2779
+ "value": "32px",
2780
+ "usage": "加减按钮宽度"
2781
+ },
2782
+ "buttonHeight": {
2783
+ "var": "--stepper-button-height",
2784
+ "value": "36px",
2785
+ "usage": "加减按钮高度"
2786
+ },
2787
+ "inputWidth": {
2788
+ "var": "--stepper-input-width",
2789
+ "value": "60px",
2790
+ "usage": "数值输入框宽度"
2791
+ },
2792
+ "inputHeight": {
2793
+ "var": "--stepper-input-height",
2794
+ "value": "36px",
2795
+ "usage": "数值输入框高度"
2796
+ }
2797
+ }
2798
+ }