@qilitt-mickey/vue3-temp-skill 1.1.10 → 1.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qilitt-mickey/vue3-temp-skill",
3
- "version": "1.1.10",
3
+ "version": "1.1.11",
4
4
  "description": "Vue 3 企业级中后台项目开发规范技能包 — core-kernel 架构、按需功能模块",
5
5
  "bin": {
6
6
  "vue3-temp-skill": "./bin/cli.js"
@@ -256,13 +256,12 @@ function handleSizeChange(size: number) {
256
256
  <div class="flex flex-end">
257
257
  <el-button
258
258
  type="primary"
259
- size="small"
260
259
  :loading="loading"
261
260
  @click="pagination.currentPage = 1; pagination.pageSize = 10; onSearch()"
262
261
  >
263
262
  {{ $t("查询") }}
264
263
  </el-button>
265
- <el-button size="small" @click="reset">
264
+ <el-button @click="reset">
266
265
  {{ $t("重置") }}
267
266
  </el-button>
268
267
  <el-button
@@ -297,7 +296,7 @@ function handleSizeChange(size: number) {
297
296
  <span class="truncate font-size-16 font-bold">{{ $t("展示列表") }}</span>
298
297
  </template>
299
298
  <template #buttons>
300
- <el-button type="primary" size="small" v-auth="['admin']">
299
+ <el-button type="primary" v-auth="['admin']">
301
300
  {{ $t("新增") }}
302
301
  </el-button>
303
302
  </template>
@@ -351,7 +350,7 @@ function handleSizeChange(size: number) {
351
350
 
352
351
  ## 四之二、样式契约(所有生成代码必须遵循)
353
352
 
354
- > 本节是**生成任何页面/组件代码时的样式真相源**:尺寸、间距、边距、颜色、组件档位全部按此执行。后期设计类 Skill(如 ui-ux-pro-max / project-style-design)产出设计规范后,规范经 `design-system` 模块落到 `design-tokens.scss`;此后生成代码只准引用令牌,本节约束依然生效。
353
+ > 本节是**生成任何页面/组件代码时的样式真相源**:尺寸、间距、边距、颜色、组件档位全部按此执行。任意上游设计类 Skill 产出规范后,经 `design-system` 模块归一化并**修改**项目 `design-tokens.scss`(默认值来自 Vue 模版,不由本 Skill 写死);此后生成代码只准引用令牌,本节约束依然生效。
355
354
 
356
355
  ### 1. UnoCSS 类名形态(写错 = 样式静默失效)
357
356
 
@@ -379,7 +378,8 @@ function handleSizeChange(size: number) {
379
378
  | 主色与梯度 | `--el-color-primary`(及 `-light-3/5/7/9`、`-dark-2`) |
380
379
  | 状态色 | `--el-color-success` / `warning` / `danger` / `info` |
381
380
  | 表格表头 | `--vts-table-header-bg` / `--vts-table-header-text`(el-table 与 vxe 共用) |
382
- | 弹窗背景 | `--vts-dialog-bg`(支持 `--ds-dialog-bg` 覆写) |
381
+ | 弹窗背景 | `--vts-dialog-bg` `--ds-dialog-bg`(主题渐变:`primary-bg component-bg`) |
382
+ | 弹窗内边距 | `--dialog-header-padding` / `--dialog-body-padding` / `--message-box-content-padding` / `--dialog-footer-padding` |
383
383
 
384
384
  Canvas / 图谱 / 连线库等**必须传具体色值字符串**的场景,用统一工具从运行时读取变量,禁止把十六进制写死在业务代码里:
385
385
 
@@ -396,8 +396,9 @@ edge: { type: "line", style: { stroke: getCssVar("--el-color-primary-light-5", "
396
396
 
397
397
  | 场景 | 档位 | 说明 |
398
398
  |---|---|---|
399
- | 查询区按钮(查询/重置/展开收起) | `size="small"` | inline 查询区配套 |
400
- | `ReTableBar` 工具栏按钮(新增/导入/导出/删除) | `size="small"` | 列表页工具栏统一 small |
399
+ | **查询区 `el-form`(含输入/选择/按钮)** | **default(不写 size)** | 中号 32px,与 `--control-height` / `--el-component-size` 一致;**禁止**只给按钮写 `small` 而表单走 default |
400
+ | 查询区按钮(查询/重置/展开收起) | 随 `el-form` 继承 | **禁止**单独写 `size="small"` 导致与输入框档位不一致 |
401
+ | `ReTableBar` 工具栏按钮(新增/导入/导出/删除) | default(不写 size) | 列表页工具栏与查询区同档(中号) |
401
402
  | 表格 | `:size="size"`(`ReTableBar` 插槽透出) | **禁止写死**,密度切换由用户控制 |
402
403
  | 分页 | `RePagination :size="size"` | 跟随表格密度 |
403
404
  | 弹窗内表单 | default(不写 size)+ `label-width="96px"` | `ReDialog` / `ReDialogResize` 内表单 |
@@ -94,7 +94,11 @@ tags: [design-system, design-tokens, antd, semi, arco, vuetify, findesign, eleme
94
94
  ```
95
95
  4. 读 `public/platform-config.json` 的 `EpThemeColor` 当前值,与回执主色比对。
96
96
 
97
- ### Step 2 写入令牌层 `src/styles/design-tokens.scss`
97
+ ### Step 2 修改/写入令牌层 `src/styles/design-tokens.scss`
98
+
99
+ > **新模版(vue3-web-temp ≥ 已内置令牌文件)**:`design-tokens.scss` **已存在** → **只修改令牌值**(四段结构保持不动),**禁止**整文件覆盖重写或从空项目「生成」一份新的。适配流程 = **改数据 + 改执行层**,不是「新建令牌文件」。
100
+ >
101
+ > **旧项目/无该文件**:才允许按下方结构**新建**唯一一份 `design-tokens.scss`。
98
102
 
99
103
  结构固定为四段:用户可自定义 → 规范语义别名 → 模版桥接令牌 → Element Plus 映射。
100
104
 
@@ -162,7 +166,7 @@ tags: [design-system, design-tokens, antd, semi, arco, vuetify, findesign, eleme
162
166
  --vts-scrollbar-thumb-hover: var(--el-text-color-secondary);
163
167
  --vts-autofill-bg: var(--el-bg-color);
164
168
  --vts-autofill-text: var(--el-text-color-primary);
165
- --ds-dialog-bg: var(--el-bg-color-overlay); /* 接管 --vts-dialog-bg:弹窗背景按规范走浮层色 */
169
+ --ds-dialog-bg: linear-gradient(to bottom, var(--primary-bg), var(--component-bg)); /* 弹窗/MessageBox 背景;index.scss 桥接 --vts-dialog-bg */
166
170
 
167
171
  /* —— Element Plus 变量映射(必配,含主色兜底) —— */
168
172
  --el-color-primary: var(--brand-primary); /* 兜底:JS 运行时 setEpThemeColor 生效前的首屏主色 */
@@ -307,12 +311,13 @@ tags: [design-system, design-tokens, antd, semi, arco, vuetify, findesign, eleme
307
311
 
308
312
  /* —— 弹窗 / 抽屉 / 消息盒 —— */
309
313
  .el-dialog, .el-message-box { padding: 0; font-size: var(--font-size-base); border-radius: var(--radius-lg); }
310
- .el-dialog__header, .el-message-box__header { padding: 16px 24px; margin-right: 0; }
314
+ .el-dialog__header, .el-message-box__header { padding: var(--dialog-header-padding); margin-right: 0; }
311
315
  .el-dialog__title, .el-message-box__title { font-size: var(--font-size-lg); font-weight: var(--font-weight-semibold); }
312
- .el-dialog__body, .el-message-box__content { padding: 24px; font-size: var(--font-size-base); line-height: var(--line-height); }
313
- .el-dialog__footer, .el-message-box__btns { padding: var(--vts-space-md, 16px) 24px; }
314
- .el-drawer__header { padding: var(--vts-space-md, 16px) 24px; margin-bottom: 0; font-size: var(--font-size-lg); }
315
- .el-drawer__body { padding: var(--vts-space-md, 16px) 24px; }
316
+ .el-dialog__body { padding: var(--dialog-body-padding); font-size: var(--font-size-base); line-height: var(--line-height); }
317
+ .el-message-box__content { padding: var(--message-box-content-padding); font-size: var(--font-size-base); line-height: var(--line-height); }
318
+ .el-dialog__footer, .el-message-box__btns { padding: var(--dialog-footer-padding); }
319
+ .el-drawer__header { padding: var(--dialog-header-padding); margin-bottom: 0; font-size: var(--font-size-lg); }
320
+ .el-drawer__body { padding: var(--dialog-footer-padding); }
316
321
 
317
322
  /* —— 下拉 / 弹出选项 —— */
318
323
  .el-dropdown-menu__item { padding: 0 var(--vts-space-md, 16px); font-size: var(--font-size-base); line-height: var(--control-height); }
@@ -378,7 +383,9 @@ tags: [design-system, design-tokens, antd, semi, arco, vuetify, findesign, eleme
378
383
  | `theme.scss` | 侧栏配色 | 追加/覆盖与规范匹配的 `html[data-theme]` 块:`--vts-theme-menu-active-before` → 规范主色;菜单底/悬浮按规范形态(AntD Pro 浅色用 `light`,深色用 `default` `#001529`) |
379
384
  | `index.scss` | 壳变量 | `--vts-bar-height`(导航高,AntD Pro 56px)、`--vts-margin`(内容边距)、`--vts-dialog-bg`(已变量化,由桥接令牌 `--ds-dialog-bg` 接管);改后回归验证列表页 `calc(100vh - ...)` |
380
385
  | `platform-config.json` | 顶栏高度 | `HeaderHeight` 与规范一致(如 AntD Pro 56) |
381
- | `sidebar.scss` | 侧栏几何 | 宽度走 `--sidebar-width`;菜单项高度走令牌层 EP 映射(`--el-menu-item-height`) |
386
+ | `sidebar.scss` | 侧栏几何 | 宽度走 `--sidebar-width` / `--sidebar-collapsed-width`;菜单项高度走 `--el-menu-item-height`(**禁止**用 `--vts-bar-height`);Logo 区 scroll 高度随 `--header-height` + `--sidebar-collapse-bar-height` 重算 |
387
+ | `layout/components/lay-tag` | 页签栏高度 | 走 `--vts-tabs-height`(桥接 `--tabs-height`) |
388
+ | `layout/components/lay-navbar` 等 | 顶栏内容区 | 行高/高度跟随 `--vts-bar-height`,禁止残留 `h-38` 等旧模版裸值 |
382
389
 
383
390
  4. 暗黑模式:在 `dark.scss` 内为新增令牌补暗色覆盖(`--vts-table-header-bg`、`--vts-message-bg`、`--vts-dialog-bg` 等),遵守 `layout-theme` 第三节规则。
384
391
 
@@ -404,7 +411,7 @@ height: \d+px、padding: \d+px、font-size: \d+px、行内 style="...颜色 hex"
404
411
  - [ ] 表格:表头底色/文字色/字重符合规范
405
412
  - [ ] 卡片内边距:`.el-card__body` = 规范值(AntD 24px),不再是 5px
406
413
  - [ ] 表单标签:computed font-weight 为规范值(AntD/Semi = 400,非 700)
407
- - [ ] 弹窗:无渐变蓝底,背景为规范底色,圆角符合规范
414
+ - [ ] 弹窗:`--ds-dialog-bg` 为 **主题色轻渐变**(`primary-bg → component-bg`),非写死蓝渐变;`ElMessageBox` 内容区用 `--message-box-content-padding`(比 `el-dialog` body 更紧凑)
408
415
  - [ ] 暗黑模式下无白底黑字残留(切换 `html.dark` 验证)
409
416
  - [ ] 第四节冲突清单全部处理完毕(逐条回填)
410
417
  - [ ] Step 7 存量扫描已执行且结果已输出
@@ -438,7 +445,7 @@ height: \d+px、padding: \d+px、font-size: \d+px、行内 style="...颜色 hex"
438
445
  | 8 | `element-plus.scss` | `.el-table__header th` 色 `#8c8f90` + 底 `#f2f9fc` | 表头不跟随规范 | 已变量化 `--vts-table-header-*` | 改 `--vts-table-header-text/bg` |
439
446
  | 9 | `element-plus.scss` | `.row-added/#e6f4ff`、`.row-modified/#fff7e6`、`.row-deleted/#f5f5f5` | 行变更色脱离规范且无暗色适配 | 已变量化 `--vts-row-*-bg` | 改 `--vts-row-*-bg` 令牌 |
440
447
  | 10 | `element-plus.scss` | `.vts-message` 背景 `white`、文字 `#000000d9` | 暗黑/规范底失效 | 已变量化 `--vts-message-bg/text` | 改 `var(--vts-message-bg/text)` |
441
- | 11 | `index.scss` / `dark.scss` | `--vts-dialog-bg: linear-gradient(to bottom, #e5f3fe, #fefefe)`(dark: `rgb(36 37 37)`) | **所有弹窗强制渐变蓝底** | 已变量化 `var(--ds-dialog-bg, 原值)`,桥接令牌 `--ds-dialog-bg` 自动接管 | 旧项目把亮/暗两处定义改为 `var(--ds-dialog-bg, 原值)` |
448
+ | 11 | `index.scss` / `dark.scss` | 旧默认 `--vts-dialog-bg: linear-gradient(#e5f3fe, #fefefe)`(写死蓝) | 弹窗背景应**跟随主题主色** | 已变量化:`--ds-dialog-bg: linear-gradient(var(--primary-bg), var(--component-bg))`;上游有 `--primary-bg` 则直接映射 | 旧项目改 `design-tokens` 的 `--ds-dialog-bg`,勿再写死 hex 渐变 |
442
449
  | 12 | `theme.scss` | 8 套侧栏配色(激活条 `#4091f7` 等) | 激活指示条非规范主色 | 主题库保留 | 追加规范匹配的 `html[data-theme]` 块覆盖 `--vts-theme-menu-active-before` |
443
450
  | 13 | `useApp.ts` | `epThemeColor` 缺省 `#409EFF` | EP 出厂蓝 ≠ 规范主色 | 不改代码 | 改 `platform-config.json` 的 `EpThemeColor`(Step 6) |
444
451
  | 14 | `index.scss` | `--vts-bar-height: 38px`、`--vts-margin: 8px` | 与规范导航高度(AntD Pro 56px)不一致 | 令牌可覆盖 | 令牌层覆盖并回归验证列表页 `calc(100vh - ...)`;默认保持不变标注差异 |
@@ -519,16 +526,97 @@ height: \d+px、padding: \d+px、font-size: \d+px、行内 style="...颜色 hex"
519
526
  当用户要求「把上游设计技能的稿子/令牌落到项目」:
520
527
 
521
528
  1. 先输出识别回执(规范 = 稿子所用系统;不在预设内则标 `custom`,按 1.3)。
522
- 2. 按 7.2 归一化后,把「用户可自定义」区块的令牌值写入 `design-tokens.scss`。
523
- 3. 若上游产出含组件视觉(HTML 原型/设计稿)→ 以其为基准微调 `element-plus.scss` 几何段的差异项。
524
- 4. 上游产出里的业务配色(状态色、图表系列)按 `layout-theme` 第八节映射为 `--vts-*` 语义变量。
525
- 5. 原型与项目出现视觉差异时:先对比两侧令牌值是否一致(含命名映射是否漏项),再查第四节冲突清单是否漏处理,最后查 Step 7 存量裸值。
529
+ 2. 按 7.2 / 7.5.2 归一化后,**修改**项目已有 `design-tokens.scss` 对应字段(有上游则覆盖,无则保留模版默认)。
530
+ 3. **7.5 壳层执行清单** grep 执行层,确认仍引用令牌、无裸 px 残留。
531
+ 4. 若上游产出含组件视觉(HTML 原型/设计稿)→ 以其为基准微调 `element-plus.scss` 几何段的差异项。
532
+ 5. 上游产出里的业务配色(状态色、图表系列)按 `layout-theme` 第八节映射为 `--vts-*` 语义变量。
533
+ 6. 原型与项目出现视觉差异时:先对比两侧令牌值是否一致(含命名映射是否漏项),再查第四节冲突清单是否漏处理,最后查 Step 7 存量裸值。
526
534
 
527
535
  ### 7.4 约束
528
536
 
529
537
  - 本模块与上游技能**解耦**:上游技能更名/替换不影响本协议,只需重新定位产出物。
530
538
  - 禁止在本文档或生成代码中硬编码上游技能名作为流程前提;提及仅作举例。
531
539
  - 上游只给视觉稿没给令牌时,从稿子的 computed 样式/标注反推令牌,并在回执中注明"反推"项。
540
+ - **默认值归属**:布局壳层的默认像素/色值由 **Vue 模版项目** `src/styles/design-tokens.scss` 定义;本 Skill **不得**自造一套「规范默认表」写进文档或代码。
541
+
542
+ ### 7.5 壳层执行清单(模版接线 · 值随上游动态覆盖)
543
+
544
+ > **职责边界**
545
+ > - **Vue 模版**(`vue3-web-temp`):在 `design-tokens.scss` 提供壳层令牌**字段与默认值**;`sidebar.scss` / `layout/**` / `index.scss` 用 `var(--token)` **接线**。
546
+ > - **本 Skill**:不写死任何上游设计技能的像素/色值;流程 = **读上游产出(7.1)→ 归一化(7.2 / 7.5.2)→ 修改项目已有 `design-tokens.scss` 对应字段 → grep 执行层确认仍引用令牌**。
547
+ > - **无上游产出**:保留模版默认值,或仅按用户口述 / 内置预设改令牌;禁止 Skill 文档里另写默认表替代模版。
548
+
549
+ #### 7.5.1 壳层令牌接线表(结构固定 · 值读模版或上游)
550
+
551
+ 适配前先 **read 业务项目** `src/styles/design-tokens.scss` 的「布局壳层」段,以文件内现有字段为准;下表只描述**接线关系**,**不含默认像素**。
552
+
553
+ | 模版标准令牌(`design-tokens.scss`) | 执行层消费位置(grep 确认仍用 `var()`,勿裸 px) |
554
+ |---|---|
555
+ | `--ds-dialog-bg` / `--primary-bg` | `design-tokens.scss` → `index.scss` `--vts-dialog-bg` → `.el-dialog` / `.el-message-box` background |
556
+ | `--dialog-header-padding` / `--dialog-body-padding` / `--message-box-content-padding` / `--dialog-footer-padding` | `element-plus.scss` 弹窗/MessageBox 各区块 padding |
557
+ | `--header-padding-x` | `index.scss` → `--vts-header-padding-x`;`lay-navbar` `padding-inline` |
558
+ | `--header-height` | `index.scss` → `--vts-bar-height`;`lay-navbar`;`SidebarLogo`;`ReHeaderPage`;`sidebar.scss` `.horizontal-header` |
559
+ | `--tabs-height` | `index.scss` → `--vts-tabs-height`;`layout/components/lay-tag/index.vue` |
560
+ | `--layout-header-offset` / `--layout-header-offset-no-tabs` | `index.scss` → `--vts-layout-header-offset*`;`lay-content/index.vue` `padding-top` |
561
+ | `--sidebar-width` / `--sidebar-collapsed-width` | `sidebar.scss` `$sideBarWidth`、`.sidebar-container`、`.hideSidebar` |
562
+ | `--sidebar-collapse-bar-height` | `SidebarLeftCollapse.vue`;`sidebar.scss` scroll 区 `calc(100% - …)` |
563
+ | `--el-menu-item-height` | `sidebar.scss` `.sidebar-container .el-menu` 及菜单项(**禁止**与 `--header-height` 混用) |
564
+
565
+ **值来源优先级**(写入 `design-tokens.scss` 时):
566
+
567
+ 1. 上游设计技能产出 → 7.2 / 7.5.2 归一化后**覆盖**对应字段
568
+ 2. 用户口述 / 内置预设 Step 2 → 覆盖
569
+ 3. 以上皆无 → **保留模版文件现有值**,不在 Skill 或回复中自造默认表
570
+
571
+ **命名纪律(违反即 bug)**:
572
+
573
+ | 令牌 | 只允许用于 | 禁止用于 |
574
+ |---|---|---|
575
+ | `--vts-bar-height` / `--header-height` | 顶栏、Logo 区、水平导航、面包屑行 | 侧栏菜单项、子菜单 title |
576
+ | `--el-menu-item-height` | 侧栏/垂直菜单项、子菜单 title | 顶栏、页签栏 |
577
+ | `--vts-tabs-height` / `--tabs-height` | 多标签页签栏 | 菜单、表单控件 |
578
+
579
+ #### 7.5.2 布局壳层:7.2 归一化补充(上游别名 → 模版字段名)
580
+
581
+ 上游产出可能是 CSS 变量、JSON、规范表格或标注文字;按**语义**映射到模版已有字段,**禁止**在 Skill 里写死某套设计规范的固定数值。
582
+
583
+ | 模版标准令牌 | 常见上游别名(按实际产出识别,非穷举) |
584
+ |---|---|
585
+ | `--primary-bg` / `--brand-primary` | 主色浅底 / primaryBg / colorPrimaryBg → 参与 `--ds-dialog-bg` 渐变顶色 |
586
+ | `--header-padding-x` | 顶栏左右内边距 / headerPaddingX / 标注「Header padding ××px」 |
587
+ | `--header-height` | 顶栏高度 / navbarHeight / `--layout-header-height` / 标注「Header ××px」 |
588
+ | `--tabs-height` | 页签栏高度 / tabsHeight / multiTabHeight |
589
+ | `--sidebar-width` | 侧栏展开宽度 / siderWidth / menuWidth |
590
+ | `--sidebar-collapsed-width` | 侧栏收起宽度 / collapsedWidth |
591
+ | `--el-menu-item-height` | 菜单项行高 / menuItemHeight / navItemHeight |
592
+ | `--sidebar-collapse-bar-height` | 侧栏折叠条高度 / collapseTriggerHeight |
593
+
594
+ #### 7.5.3 壳层令牌变更后的连锁巡检(按令牌名,不写死像素)
595
+
596
+ 任一壳层令牌被上游或用户覆盖后,**grep 执行层**确认无裸值残留:
597
+
598
+ 1. `design-tokens.scss`:被改字段;若 `--layout-header-offset*` 依赖 header/tabs,确认仍正确派生
599
+ 2. `index.scss`:桥接 `--vts-bar-height` / `--vts-tabs-height` / `--vts-layout-header-offset*` 仍指向源令牌
600
+ 3. `SidebarLogo.vue`、`lay-navbar`:高度/行高仍 `var(--vts-bar-height)` 或等价引用
601
+ 4. `sidebar.scss`:`calc(100% - var(--header-height) - var(--sidebar-collapse-bar-height))`,禁止写死 px 组合
602
+ 5. `lay-content/index.vue`:`padding-top: var(--vts-layout-header-offset)`,禁止写死旧顶栏组合
603
+ 6. DevTools:顶栏 computed = **当前** `--header-height`;菜单项 = **当前** `--el-menu-item-height`(两者须不同)
604
+
605
+ #### 7.5.4 EP 菜单变量纪律
606
+
607
+ `.sidebar-container .el-menu` 上写 `--el-menu-item-height: <与 design-tokens 一致>`,**禁止** `--el-menu-item-height: var(--el-menu-item-height, …)` 自引用(EP 回退默认 56px)。
608
+
609
+ #### 7.5.5 查询区尺寸(core-kernel 黄金样板)
610
+
611
+ 列表页查询区 **`el-form` 不写 size**(default 中号,32px),查询/工具栏按钮随表单继承;**禁止**查询区单独写 `size="small"` 导致输入框与按钮档位不一致。
612
+
613
+ #### 7.5.6 适配完成验证(Step 8 补充)
614
+
615
+ - [ ] 已 read 项目 `design-tokens.scss`;回执区分「上游覆盖项 / 保留模版默认项」
616
+ - [ ] 主内容区 `padding-top` = 当前 `--layout-header-offset`(或桥接 `--vts-layout-header-offset`)
617
+ - [ ] 顶栏 / 页签 / 侧栏 / 菜单项 computed 尺寸 = 当前对应令牌值
618
+ - [ ] 执行层 grep 无壳层裸 px 残留(EP 菜单根上的具体 px 须与 `--el-menu-item-height` 一致)
619
+ - [ ] 查询区 input 与 button 高度一致(small 档)
532
620
 
533
621
  ---
534
622
 
@@ -539,10 +627,14 @@ height: \d+px、padding: \d+px、font-size: \d+px、行内 style="...颜色 hex"
539
627
  - **命名漂移/重复建层**:适配文件建成 `tokens.scss`,或另起 `semi-controls.scss` 之类的几何重写层与 `element-plus.scss` 并存——新增文件只允许 `design-tokens.scss`,几何重写一律并入 `element-plus.scss`。
540
628
  - **冲突清单假完成**:声称「已全部处理」,实际 `reset.scss` 的 body 字体(不带 !important 的那条)与 `label { font-weight: 700 }` 原封未动——grep 时漏掉了不带 !important 的关键词。
541
629
  - **靠加载顺序压盖**:几何重写独立成文件、指望 `@use` 顺序盖过模版覆盖层,顺序一错样式静默失效——已改为并入 `element-plus.scss`,从根上消除顺序问题。
542
- - 弹窗仍是渐变蓝底(忘改 `--vts-dialog-bg`)。
630
+ - 弹窗仍是**写死蓝渐变**或纯白底(未设 `--ds-dialog-bg` / `--primary-bg` 主题渐变链)。
631
+ - 把 `ElMessageBox` 与 `el-dialog` 共用 `--dialog-body-padding`(24px)导致确认框空白过大——须用 `--message-box-content-padding`(16px 24px)。
543
632
  - 改了 `platform-config.json` 主色但没提醒清 localStorage → 老访客看到的还是旧色。
544
633
  - 业务页面里又写 `.el-input { height: 36px }` 之类的裸值覆盖 → 换规范时需要逐页改,违反规则 1~2。
545
634
  - 换规范时连业务组件样式一起改(说明令牌层抽象失败)。
546
635
  - 暗黑模式不适配新令牌,切 dark 后表头/行变更色刺眼。
547
- - **固化上游技能名**:流程里写死"必须先用 project-style-design",换个同类技能就不会衔接——正确做法是按第七节协议只认产出物。
636
+ - **固化上游技能名**:流程里写死某设计技能名或把其规范表抄进 Skill 文档——正确做法是 7.1 只认产出物、7.5 只认模版接线表。
637
+ - **Skill 自造默认值**:在 Skill 文档或适配回复里写「顶栏 64px / 侧栏 208px」等默认表,替代 read 模版 `design-tokens.scss`——默认值只能来自模版文件或上游产出。
548
638
  - **预设硬套**:把不在五大预设内的规范强行归入最接近的预设,或假设上游令牌名与本模块标准名一致而不做归一化映射。
639
+ - **只写令牌层、不执行壳层(最常见结合事故)**:改了 `--header-height` 等壳层令牌,但 `sidebar.scss` / `layout/` 仍用旧裸值或**误把 `--vts-bar-height` 套到菜单项** → 侧栏行高暴涨、折叠错位。见 **7.5 壳层执行清单**。
640
+ - **EP 菜单变量自引用**:`.el-menu { --el-menu-item-height: var(--el-menu-item-height, 40px) }` → 无效值,EP 回退默认 56px。须在 `.sidebar-container .el-menu` 写与 `--el-menu-item-height` 一致的具体值。
@@ -21,7 +21,8 @@ tags: [vue3, layout, theme, dark-mode, css-variables, design-tokens, element-plu
21
21
  │ --vts-switch-off-color Switch 关闭态颜色 │
22
22
  │ --vts-bar-height 导航条高度 │
23
23
  │ --vts-margin 内容区边距 │
24
- │ --vts-dialog-bg 弹窗背景(支持渐变)
24
+ │ --vts-dialog-bg 弹窗背景(`--ds-dialog-bg` 主题渐变,index.scss 桥接)
25
+ │ --dialog-*-padding 弹窗/MessageBox 分区内边距(design-tokens 定义) │
25
26
  ├─────────────────────────────────────────────────────────┤
26
27
  │ 第二层:侧边栏主题变量(html[data-theme]) │
27
28
  │ --vts-theme-menu-bg 菜单背景色 │
@@ -188,6 +189,19 @@ html.dark {
188
189
  | `p-16` / `m-16` | 16px | 大间距 |
189
190
  | `p-20` / `m-20` | 20px | 区块间距 |
190
191
 
192
+ ### 4.1.1 弹窗 / MessageBox(design-tokens 定义 · element-plus.scss 执行)
193
+
194
+ | 令牌 | 默认语义 | 消费位置 |
195
+ |------|---------|---------|
196
+ | `--dialog-header-padding` | 16px 24px | `.el-dialog__header` / `.el-message-box__header` |
197
+ | `--dialog-body-padding` | 24px | `.el-dialog__body`(表单弹窗) |
198
+ | `--message-box-content-padding` | 16px 24px | `.el-message-box__content`(确认框,**比 dialog body 更紧凑**) |
199
+ | `--dialog-footer-padding` | 16px 24px | `.el-dialog__footer` / `.el-message-box__btns` |
200
+ | `--primary-bg` | 主色浅底(上游设计技能常提供) | 渐变顶色 |
201
+ | `--ds-dialog-bg` | `linear-gradient(primary-bg → component-bg)` | `index.scss` → `--vts-dialog-bg` → `.el-dialog` / `.el-message-box` |
202
+
203
+ > **禁止**写死 `#e5f3fe → #fefefe` 蓝渐变;换主题时只改 `--primary-bg` / `--brand-primary`,渐变自动跟随。暗黑模式在 `dark.scss` 用 `color-mix` 覆写 `--primary-bg` 后同样生效。
204
+
191
205
  ### 4.2 字号
192
206
 
193
207
  UnoCSS `theme.fontSize` 已显式定义为 px 值(避免被 `presetRemToPx` 转换):