@qilitt-mickey/vue3-temp-skill 1.1.35 → 1.1.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -36
- package/SKILL.md +11 -19
- package/bin/cli.js +19 -65
- package/dist/mapping-type.d.ts +33 -0
- package/dist/theme-vars.js +62 -0
- package/dist/theme-vars.ts +113 -0
- package/dist/theme.css +73 -0
- package/mapping/basic/color.json +35 -0
- package/mapping/basic/radius.json +17 -0
- package/mapping/basic/semantic-values.json +72 -0
- package/mapping/basic/spacing.json +21 -0
- package/mapping/basic/typography.json +21 -0
- package/mapping/component/button.json +59 -0
- package/mapping/component/input.json +39 -0
- package/mapping/component/overlay.json +63 -0
- package/mapping/component/table.json +42 -0
- package/mapping/layout/breakpoint.json +20 -0
- package/mapping/layout/shell-geometry.json +26 -0
- package/mapping/scenes/admin/content.json +112 -0
- package/mapping/scenes/admin/layout.json +331 -0
- package/package.json +8 -4
- package/parser/fixtures/changeset-legacy.json +11 -0
- package/parser/fixtures/changeset-neg1.json +17 -0
- package/parser/fixtures/changeset-neg2.json +10 -0
- package/parser/fixtures/changeset-neg3.json +22 -0
- package/parser/fixtures/changeset-pos.json +43 -0
- package/parser/generator.js +178 -0
- package/parser/index.js +553 -0
- package/parser/loader.js +66 -0
- package/parser/override.js +119 -0
- package/parser/regression.js +137 -0
- package/parser/validator.js +137 -0
- package/parser/watch.js +103 -0
- package/references/code-quality.md +24 -23
- package/references/core-kernel.md +2 -4
- package/references/crud-pages.md +18 -290
- package/references/data-mapping.md +229 -229
- package/references/data-screen.md +102 -102
- package/references/design-apply.md +177 -0
- package/references/flowchart-g6.md +260 -260
- package/references/form-advanced.md +1 -1
- package/references/graph-relation.md +1 -1
- package/references/layout-theme.md +513 -520
- package/references/qrcode-barcode.md +117 -117
- package/references/workflow-bpmn.md +214 -214
- package/scripts/check.mjs +84 -90
- package/scripts/cli.mjs +115 -120
- package/scripts/match.py +134 -134
- package/scripts/modules.json +109 -103
- package/scripts/validate.mjs +106 -106
- package/references/design-handoff.md +0 -767
- package/references/design-system.md +0 -142
- package/references/design-verify.md +0 -469
- package/scripts/check.cmd +0 -9
- package/scripts/field-schema-audit.mjs +0 -246
- package/scripts/handoff.mjs +0 -474
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "全局原子层 · 圆角令牌映射。radius 为设计侧抽象字段;token 为项目实现令牌(design-tokens.scss :root,并桥接 EP --el-border-radius-*)。",
|
|
3
|
+
"meta": {
|
|
4
|
+
"layer": "basic",
|
|
5
|
+
"domain": "radius",
|
|
6
|
+
"version": "1.0.0",
|
|
7
|
+
"scene": "global",
|
|
8
|
+
"tech_stack": "vue3 + element-plus + vue3-web-temp"
|
|
9
|
+
},
|
|
10
|
+
"tokens": {
|
|
11
|
+
"radius_sm": { "token": "--radius-sm → --border-radius-sm", "type": "size", "default": "4px", "desc": "小控件圆角(Tag/小按钮)", "el_bridge": "--el-border-radius-small" },
|
|
12
|
+
"radius_base": { "token": "--radius-base → --border-radius-base", "type": "size", "default": "6px", "desc": "标准控件圆角(按钮/输入框)", "el_bridge": "--el-border-radius-base" },
|
|
13
|
+
"radius_lg": { "token": "--radius-lg → --border-radius-lg", "type": "size", "default": "8px", "desc": "卡片级圆角", "el_bridge": null },
|
|
14
|
+
"dialog_radius": { "token": "--dialog-border-radius", "type": "size", "default": "10px", "desc": "弹窗圆角(出厂 ReDialog 观感)", "el_bridge": null },
|
|
15
|
+
"switch_radius": { "token": "--switch-border-radius", "type": "size", "default": "10px", "desc": "开关圆角", "el_bridge": null }
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "全局原子层 · 语义值译表(设计侧语义值 → 精确值)。设计侧 style/global 的值用语义名(如 钴蓝-5)时,parser 与 AI 施工按本表翻译为精确值。aliases 同时收录中文名(规范输出)与英文 token 名(cobalt-5,兼容拼写),两种写法等价。数据源:设计侧 skill page-specs/design-tokens.md §2-§5b(v1.0 对齐)。功能色五套主题同值,各主题各列一份便于按主题整体切换。",
|
|
3
|
+
"meta": {
|
|
4
|
+
"layer": "basic",
|
|
5
|
+
"domain": "semantic_values",
|
|
6
|
+
"version": "1.0.0",
|
|
7
|
+
"scene": "global",
|
|
8
|
+
"tech_stack": "vue3 + element-plus + vue3-web-temp"
|
|
9
|
+
},
|
|
10
|
+
"themes": {
|
|
11
|
+
"$comment": "每套主题的语义值全集。level 1-10 为主色渐变(5 = 品牌主色)。",
|
|
12
|
+
"cobalt": {
|
|
13
|
+
"label": "钴蓝",
|
|
14
|
+
"values": {
|
|
15
|
+
"钴蓝-1": "#E8F0FF", "钴蓝-2": "#C5D5FF", "钴蓝-3": "#8FB0FF", "钴蓝-4": "#407BFF",
|
|
16
|
+
"钴蓝-5": "#245BFF", "钴蓝-6": "#1546E0", "钴蓝-7": "#1546C9", "钴蓝-8": "#1239A8",
|
|
17
|
+
"钴蓝-9": "#0D2A7F", "钴蓝-10": "#081952",
|
|
18
|
+
"成功色": "#52C41A", "错误色": "#FF4D4F", "警告色": "#FAAD14", "信息色": "#245BFF", "链接色": "#245BFF"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"emerald": {
|
|
22
|
+
"label": "翠蓝",
|
|
23
|
+
"values": {
|
|
24
|
+
"翠蓝-1": "#E6FFFC", "翠蓝-2": "#B3F5EF", "翠蓝-3": "#7FE8E0", "翠蓝-4": "#33CFCE",
|
|
25
|
+
"翠蓝-5": "#00A8B5", "翠蓝-6": "#008F9C", "翠蓝-7": "#007A89", "翠蓝-8": "#005A6E",
|
|
26
|
+
"翠蓝-9": "#003F55", "翠蓝-10": "#002838",
|
|
27
|
+
"成功色": "#52C41A", "错误色": "#FF4D4F", "警告色": "#FAAD14", "信息色": "#00A8B5", "链接色": "#00A8B5"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"peacock": {
|
|
31
|
+
"label": "孔雀绿",
|
|
32
|
+
"values": {
|
|
33
|
+
"孔雀绿-1": "#E6FFF8", "孔雀绿-2": "#B3F5E3", "孔雀绿-3": "#7FE8CC", "孔雀绿-4": "#33D4A8",
|
|
34
|
+
"孔雀绿-5": "#009A7A", "孔雀绿-6": "#008566", "孔雀绿-7": "#006E55", "孔雀绿-8": "#005240",
|
|
35
|
+
"孔雀绿-9": "#003A2E", "孔雀绿-10": "#00261E",
|
|
36
|
+
"成功色": "#52C41A", "错误色": "#FF4D4F", "警告色": "#FAAD14", "信息色": "#009A7A", "链接色": "#009A7A"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"tangerine": {
|
|
40
|
+
"label": "橘橙",
|
|
41
|
+
"values": {
|
|
42
|
+
"橘橙-1": "#FFF3E6", "橘橙-2": "#FFDFC0", "橘橙-3": "#FFC080", "橘橙-4": "#FF9333",
|
|
43
|
+
"橘橙-5": "#FF6A00", "橘橙-6": "#E55A00", "橘橙-7": "#C44E00", "橘橙-8": "#9A3D00",
|
|
44
|
+
"橘橙-9": "#7A3000", "橘橙-10": "#522000",
|
|
45
|
+
"成功色": "#52C41A", "错误色": "#FF4D4F", "警告色": "#FAAD14", "信息色": "#FF6A00", "链接色": "#FF6A00"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"dawn": {
|
|
49
|
+
"label": "拂晓蓝",
|
|
50
|
+
"values": {
|
|
51
|
+
"拂晓蓝-1": "#E6F7FF", "拂晓蓝-2": "#BAE7FF", "拂晓蓝-3": "#91D5FF", "拂晓蓝-4": "#69C0FF",
|
|
52
|
+
"拂晓蓝-5": "#40A9FF", "拂晓蓝-6": "#1890FF", "拂晓蓝-7": "#096DD9", "拂晓蓝-8": "#0050B3",
|
|
53
|
+
"拂晓蓝-9": "#003A8C", "拂晓蓝-10": "#002766",
|
|
54
|
+
"成功色": "#52C41A", "错误色": "#FF4D4F", "警告色": "#FAAD14", "信息色": "#1890FF", "链接色": "#1890FF"
|
|
55
|
+
},
|
|
56
|
+
"$note": "拂晓蓝品牌主色为 L6 #1890FF(Ant Design 原生),与其他主题 L5=主色不同;输出 拂晓蓝-6 或 品牌主色 均可命中"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"neutral_aliases": {
|
|
60
|
+
"$comment": "主题无关的通用语义值(不属任何一套主题,任意主题下等值)。",
|
|
61
|
+
"values": {
|
|
62
|
+
"品牌主色": "$theme.5",
|
|
63
|
+
"品牌悬停色": "$theme.4",
|
|
64
|
+
"品牌点击色": "$theme.6"
|
|
65
|
+
},
|
|
66
|
+
"$note": "$theme.N 为占位:多套主题混用时 parser 无法消歧——AI 施工前须确认当次变更集的主題(global.brand_primary 或 notes 申报);单主题变更集按其主题取 N 级值(拂晓蓝取 N+1,主色在 6)"
|
|
67
|
+
},
|
|
68
|
+
"usage": {
|
|
69
|
+
"parser": "match 时对 style/global 值做查表:命中本表 → 输出精确值;hex(#开头)→ 透传;未命中且非 hex → 记入字段级待补充并提示「非法定义语义值」",
|
|
70
|
+
"design_side": "官方 5 套主题一律语义值(中文名规范,如 钴蓝-5;英文 cobalt-5 兼容);库外颜色走临时主题 hex + notes 申报"
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "全局原子层 · 间距令牌映射。spacing 为设计侧抽象字段;token 为项目实现令牌(design-tokens.scss :root)。注意 UnoCSS presetRemToPx(baseFontSize:4) 下工具类数字即 px。",
|
|
3
|
+
"meta": {
|
|
4
|
+
"layer": "basic",
|
|
5
|
+
"domain": "spacing",
|
|
6
|
+
"version": "1.0.0",
|
|
7
|
+
"scene": "global",
|
|
8
|
+
"tech_stack": "vue3 + element-plus + vue3-web-temp"
|
|
9
|
+
},
|
|
10
|
+
"tokens": {
|
|
11
|
+
"space_unit": { "token": "--space-unit", "type": "size", "default": "4px", "desc": "间距基准单位" },
|
|
12
|
+
"spacing_sm": { "token": "--spacing-sm", "type": "size", "default": "8px", "desc": "小间距(桥接 --vts-space-xs)" },
|
|
13
|
+
"spacing_md": { "token": "--spacing-md", "type": "size", "default": "16px", "desc": "中间距" },
|
|
14
|
+
"spacing_lg": { "token": "--spacing-lg", "type": "size", "default": "24px", "desc": "大间距" },
|
|
15
|
+
"content_padding": { "token": "--layout-content-padding → --vts-margin", "type": "size", "default": "8px", "desc": "内容区内边距(出厂 8,设计规范常 24)" },
|
|
16
|
+
"card_padding": { "token": "--card-padding → --vts-card-padding", "type": "size", "default": "24px", "desc": "卡片内边距" },
|
|
17
|
+
"control_padding_x": { "token": "--control-padding-x", "type": "size", "default": "12px", "desc": "控件水平内边距" },
|
|
18
|
+
"button_padding_x": { "token": "--button-padding-x", "type": "size", "default": "15px", "desc": "按钮水平内边距" },
|
|
19
|
+
"header_padding_x": { "token": "--header-padding-x", "type": "size", "default": "16px", "desc": "顶栏水平内边距" }
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "全局原子层 · 字体令牌映射。typography 为设计侧抽象字段;token 为项目实现令牌(design-tokens.scss :root,桥接 EP --el-font-*)。字号超 5 档需设计侧自证场景(展示型页面除外)。",
|
|
3
|
+
"meta": {
|
|
4
|
+
"layer": "basic",
|
|
5
|
+
"domain": "typography",
|
|
6
|
+
"version": "1.0.0",
|
|
7
|
+
"scene": "global",
|
|
8
|
+
"tech_stack": "vue3 + element-plus + vue3-web-temp"
|
|
9
|
+
},
|
|
10
|
+
"tokens": {
|
|
11
|
+
"font_family": { "token": "--font-family → --el-font-family", "type": "font-family", "default": "系统栈(PingFang SC / Microsoft YaHei 等)", "desc": "全局字体族" },
|
|
12
|
+
"font_size_sm": { "token": "--font-size-sm → --el-font-size-small", "type": "size", "default": "12px", "desc": "辅助/标注字号" },
|
|
13
|
+
"font_size_base": { "token": "--font-size-base → --el-font-size-base", "type": "size", "default": "14px", "desc": "正文字号" },
|
|
14
|
+
"font_size_lg": { "token": "--font-size-lg → --el-font-size-large", "type": "size", "default": "16px", "desc": "小标题字号" },
|
|
15
|
+
"font_size_xl": { "token": "--font-size-xl → --el-font-size-extra-large", "type": "size", "default": "20px", "desc": "卡片/页面标题字号" },
|
|
16
|
+
"font_weight_regular": { "token": "--font-weight-regular → --el-font-weight-primary", "type": "number", "default": 400, "desc": "常规字重" },
|
|
17
|
+
"font_weight_medium": { "token": "--font-weight-medium", "type": "number", "default": 500, "desc": "中字重(激活态文字)" },
|
|
18
|
+
"font_weight_semibold": { "token": "--font-weight-semibold", "type": "number", "default": 600, "desc": "标题字重" },
|
|
19
|
+
"line_height": { "token": "--line-height", "type": "ratio", "default": 1.5715, "desc": "全局行高比" }
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "全局原子层 · 按钮组件映射(EP 原生)。css_vars 优先走 EP 官方变量;custom_style_map 为兜底。作用域 :root(全局组件)。",
|
|
3
|
+
"meta": {
|
|
4
|
+
"layer": "basic",
|
|
5
|
+
"domain": "component_button",
|
|
6
|
+
"version": "1.0.0",
|
|
7
|
+
"scene": "global",
|
|
8
|
+
"tech_stack": "vue3 + element-plus"
|
|
9
|
+
},
|
|
10
|
+
"mappings": {
|
|
11
|
+
"component.button.primary": {
|
|
12
|
+
"type": "global_component",
|
|
13
|
+
"component": "ElButton",
|
|
14
|
+
"default_props": { "type": "primary" },
|
|
15
|
+
"style_scope": ":root",
|
|
16
|
+
"css_vars": {
|
|
17
|
+
"bg_color": "--el-button-primary-bg-color",
|
|
18
|
+
"text_color": "--el-button-primary-text-color",
|
|
19
|
+
"border_color": "--el-button-primary-border-color",
|
|
20
|
+
"hover_bg_color": "--el-button-primary-hover-bg-color",
|
|
21
|
+
"active_bg_color": "--el-button-primary-active-bg-color",
|
|
22
|
+
"disabled_bg_color": "--el-button-primary-disabled-bg-color"
|
|
23
|
+
},
|
|
24
|
+
"custom_style_map": {
|
|
25
|
+
"font_weight": "font-weight",
|
|
26
|
+
"padding_x": "padding-inline",
|
|
27
|
+
"shadow": "box-shadow"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"component.button.default": {
|
|
31
|
+
"type": "global_component",
|
|
32
|
+
"component": "ElButton",
|
|
33
|
+
"default_props": { "type": "default" },
|
|
34
|
+
"style_scope": ":root",
|
|
35
|
+
"css_vars": {
|
|
36
|
+
"bg_color": "--el-button-bg-color",
|
|
37
|
+
"text_color": "--el-button-text-color",
|
|
38
|
+
"border_color": "--el-button-border-color",
|
|
39
|
+
"hover_bg_color": "--el-button-hover-bg-color",
|
|
40
|
+
"hover_text_color": "--el-button-hover-text-color",
|
|
41
|
+
"hover_border_color": "--el-button-hover-border-color"
|
|
42
|
+
},
|
|
43
|
+
"custom_style_map": {
|
|
44
|
+
"font_weight": "font-weight",
|
|
45
|
+
"padding_x": "padding-inline"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"component.button.height": {
|
|
49
|
+
"type": "global_token",
|
|
50
|
+
"style_scope": ":root",
|
|
51
|
+
"css_vars": {
|
|
52
|
+
"size_sm": "--el-component-size-small",
|
|
53
|
+
"size_base": "--el-component-size",
|
|
54
|
+
"size_lg": "--el-component-size-large"
|
|
55
|
+
},
|
|
56
|
+
"custom_style_map": {}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "全局原子层 · 输入类组件映射(EP 原生:input/select/datepicker 等输入族共用)。",
|
|
3
|
+
"meta": {
|
|
4
|
+
"layer": "basic",
|
|
5
|
+
"domain": "component_input",
|
|
6
|
+
"version": "1.0.0",
|
|
7
|
+
"scene": "global",
|
|
8
|
+
"tech_stack": "vue3 + element-plus"
|
|
9
|
+
},
|
|
10
|
+
"mappings": {
|
|
11
|
+
"component.input.base": {
|
|
12
|
+
"type": "global_component",
|
|
13
|
+
"component": "ElInput",
|
|
14
|
+
"style_scope": ":root",
|
|
15
|
+
"css_vars": {
|
|
16
|
+
"bg_color": "--el-input-bg-color",
|
|
17
|
+
"text_color": "--el-input-text-color",
|
|
18
|
+
"border_color": "--el-input-border-color",
|
|
19
|
+
"hover_border_color": "--el-input-hover-border-color",
|
|
20
|
+
"focus_border_color": "--el-input-focus-border-color",
|
|
21
|
+
"placeholder_color": "--el-input-placeholder-color"
|
|
22
|
+
},
|
|
23
|
+
"custom_style_map": {
|
|
24
|
+
"radius": "border-radius",
|
|
25
|
+
"height": "height"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"component.input.height": {
|
|
29
|
+
"type": "global_token",
|
|
30
|
+
"style_scope": ":root",
|
|
31
|
+
"css_vars": {
|
|
32
|
+
"size_sm": "--el-component-size-small",
|
|
33
|
+
"size_base": "--el-component-size",
|
|
34
|
+
"size_lg": "--el-component-size-large"
|
|
35
|
+
},
|
|
36
|
+
"custom_style_map": {}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "全局原子层 · 弹窗/抽屉/分页等通用组件映射。",
|
|
3
|
+
"meta": {
|
|
4
|
+
"layer": "basic",
|
|
5
|
+
"domain": "component_overlay",
|
|
6
|
+
"version": "1.0.0",
|
|
7
|
+
"scene": "global",
|
|
8
|
+
"tech_stack": "vue3 + element-plus"
|
|
9
|
+
},
|
|
10
|
+
"mappings": {
|
|
11
|
+
"component.modal.base": {
|
|
12
|
+
"type": "global_component",
|
|
13
|
+
"component": "ElDialog / ReDialog",
|
|
14
|
+
"style_scope": ":root",
|
|
15
|
+
"css_vars": {
|
|
16
|
+
"radius": "--dialog-border-radius",
|
|
17
|
+
"header_height": "--dialog-header-height",
|
|
18
|
+
"footer_height": "--dialog-footer-height",
|
|
19
|
+
"body_padding": "--dialog-body-padding"
|
|
20
|
+
},
|
|
21
|
+
"custom_style_map": {
|
|
22
|
+
"bg": "background",
|
|
23
|
+
"shadow": "box-shadow"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"component.drawer.base": {
|
|
27
|
+
"type": "global_component",
|
|
28
|
+
"component": "ElDrawer",
|
|
29
|
+
"style_scope": ":root",
|
|
30
|
+
"css_vars": {
|
|
31
|
+
"bg_color": "--el-drawer-bg-color"
|
|
32
|
+
},
|
|
33
|
+
"custom_style_map": {
|
|
34
|
+
"padding": "padding"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"component.card.base": {
|
|
38
|
+
"type": "global_component",
|
|
39
|
+
"component": "ElCard",
|
|
40
|
+
"style_scope": ":root",
|
|
41
|
+
"css_vars": {
|
|
42
|
+
"bg_color": "--el-card-bg-color",
|
|
43
|
+
"border_color": "--el-card-border-color",
|
|
44
|
+
"border_radius": "--el-card-border-radius",
|
|
45
|
+
"padding": "--el-card-padding"
|
|
46
|
+
},
|
|
47
|
+
"custom_style_map": {
|
|
48
|
+
"shadow": "box-shadow"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"component.pagination.base": {
|
|
52
|
+
"type": "global_component",
|
|
53
|
+
"component": "ElPagination",
|
|
54
|
+
"style_scope": ":root",
|
|
55
|
+
"css_vars": {
|
|
56
|
+
"button_bg_color": "--el-pagination-bg-color",
|
|
57
|
+
"button_hover_color": "--el-pagination-button-hover-color",
|
|
58
|
+
"hover_color": "--el-pagination-hover-color"
|
|
59
|
+
},
|
|
60
|
+
"custom_style_map": {}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "全局原子层 · 表格组件映射(EP 原生 el-table + 项目 element-plus.scss 表头变量化 --vts-table-header-*)。",
|
|
3
|
+
"meta": {
|
|
4
|
+
"layer": "basic",
|
|
5
|
+
"domain": "component_table",
|
|
6
|
+
"version": "1.0.0",
|
|
7
|
+
"scene": "global",
|
|
8
|
+
"tech_stack": "vue3 + element-plus"
|
|
9
|
+
},
|
|
10
|
+
"mappings": {
|
|
11
|
+
"component.table.base": {
|
|
12
|
+
"type": "global_component",
|
|
13
|
+
"component": "ElTable",
|
|
14
|
+
"style_scope": ":root",
|
|
15
|
+
"css_vars": {
|
|
16
|
+
"header_bg": "--el-table-header-bg-color",
|
|
17
|
+
"header_text_color": "--el-table-header-text-color",
|
|
18
|
+
"row_hover_bg": "--el-table-row-hover-bg-color",
|
|
19
|
+
"border_color": "--el-table-border-color",
|
|
20
|
+
"text_color": "--el-table-text-color",
|
|
21
|
+
"bg_color": "--el-table-bg-color",
|
|
22
|
+
"tr_bg_color": "--el-table-tr-bg-color",
|
|
23
|
+
"expanded_row_bg_color": "--el-table-expanded-cell-bg-color",
|
|
24
|
+
"fixed_box_shadow": "--el-table-fixed-box-shadow"
|
|
25
|
+
},
|
|
26
|
+
"custom_style_map": {
|
|
27
|
+
"header_border_bottom": "border-bottom",
|
|
28
|
+
"header_font_weight": "font-weight"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"component.table.header_ext": {
|
|
32
|
+
"type": "global_token",
|
|
33
|
+
"style_scope": ":root",
|
|
34
|
+
"$note": "项目扩展表头令牌(element-plus.scss 消费),与 --el-table-header-* 并存",
|
|
35
|
+
"css_vars": {
|
|
36
|
+
"vts_header_bg": "--vts-table-header-bg",
|
|
37
|
+
"vts_header_text": "--vts-table-header-text"
|
|
38
|
+
},
|
|
39
|
+
"custom_style_map": {}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "布局规则 · 断点映射。项目断点由 useResizeObserver(layout/index.vue)与 UnoCSS presetWind3 决定,映射为设计侧抽象断点字段。",
|
|
3
|
+
"meta": {
|
|
4
|
+
"layer": "layout",
|
|
5
|
+
"domain": "breakpoint",
|
|
6
|
+
"version": "1.0.0",
|
|
7
|
+
"scene": "global",
|
|
8
|
+
"tech_stack": "vue3 + element-plus + vue3-web-temp"
|
|
9
|
+
},
|
|
10
|
+
"tokens": {
|
|
11
|
+
"bp_mobile": { "value": 760, "type": "breakpoint", "unit": "px", "desc": "≤760 判定移动端:隐藏侧栏,强制 vertical", "hook": "useResizeObserver → toggle('mobile')" },
|
|
12
|
+
"bp_collapse": { "value": 990, "type": "breakpoint", "unit": "px", "desc": "760~990 折叠侧栏", "hook": "useResizeObserver → toggle('desktop', false)" },
|
|
13
|
+
"bp_expand": { "value": 990, "type": "breakpoint", "unit": "px", "desc": ">990 展开侧栏(非点击折叠态)", "hook": "useResizeObserver → toggle('desktop', true)" },
|
|
14
|
+
"unocss_sm": { "value": 640, "type": "breakpoint", "unit": "px", "desc": "UnoCSS sm 断点(presetWind3)" },
|
|
15
|
+
"unocss_md": { "value": 768, "type": "breakpoint", "unit": "px", "desc": "UnoCSS md 断点" },
|
|
16
|
+
"unocss_lg": { "value": 1024, "type": "breakpoint", "unit": "px", "desc": "UnoCSS lg 断点" },
|
|
17
|
+
"unocss_xl": { "value": 1280, "type": "breakpoint", "unit": "px", "desc": "UnoCSS xl 断点" }
|
|
18
|
+
},
|
|
19
|
+
"$note": "断点值为只读事实映射:设计侧应适配上述断点输出响应式意图;修改断点属于模板行为变更,不在主题变更集范围内。"
|
|
20
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "布局规则 · 壳层几何令牌映射(admin 场景标准布局:vertical/horizontal/mix 三模式共用)。设计侧输出 layout_geometry.* 抽象字段或对 layout.* 语义 ID 的 style.width/height 即可转换。header 顶栏(navbar)、tabs 页签栏、sidebar 侧栏、content 内容区。",
|
|
3
|
+
"meta": {
|
|
4
|
+
"layer": "layout",
|
|
5
|
+
"domain": "shell_geometry",
|
|
6
|
+
"version": "1.0.0",
|
|
7
|
+
"scene": "admin",
|
|
8
|
+
"tech_stack": "vue3 + element-plus + vue3-web-temp"
|
|
9
|
+
},
|
|
10
|
+
"tokens": {
|
|
11
|
+
"header_height": { "token": "--header-height → --vts-bar-height", "type": "size", "default": "48px", "desc": "顶栏高度;改后壳层 padding-top 自动跟随(--layout-header-offset)" },
|
|
12
|
+
"tabs_height": { "token": "--tabs-height → --vts-tabs-height", "type": "size", "default": "32px", "desc": "多标签页签栏高度(≠ EP 内容区 Tabs --tabs-item-height)" },
|
|
13
|
+
"sidebar_width": { "token": "--sidebar-width", "type": "size", "default": "208px", "desc": "侧栏展开宽度(sidebar.scss mixin 三布局共用)" },
|
|
14
|
+
"sidebar_collapsed_width": { "token": "--sidebar-collapsed-width", "type": "size", "default": "64px", "desc": "侧栏折叠宽度" },
|
|
15
|
+
"sidebar_collapse_bar_height": { "token": "--sidebar-collapse-bar-height", "type": "size", "default": "40px", "desc": "侧栏底部折叠条高度" },
|
|
16
|
+
"layout_footer_height": { "token": "--layout-footer-height", "type": "size", "default": "48px", "desc": "页脚高度" },
|
|
17
|
+
"tabs_item_height": { "token": "--tabs-item-height", "type": "size", "default": "46px", "desc": "EP 内容区 Tabs 项高(非壳层页签)" },
|
|
18
|
+
"menu_item_height": { "token": "--el-menu-item-height", "type": "size", "default": "40px", "desc": "侧栏菜单项高度" }
|
|
19
|
+
},
|
|
20
|
+
"layout_modes": {
|
|
21
|
+
"$comment": "标准布局枚举:现有三模式即标准布局(platform-config.json Layout 字段)。变体/定制布局按 V3.0 §五 分级派生。",
|
|
22
|
+
"vertical": { "desc": "侧边导航(出厂默认)", "switch": "platform-config.json Layout=vertical", "sidebar": true },
|
|
23
|
+
"horizontal": { "desc": "顶部导航(菜单入顶栏)", "switch": "Layout=horizontal", "sidebar": false },
|
|
24
|
+
"mix": { "desc": "混合(一级菜单侧栏 + 二级顶部)", "switch": "Layout=mix", "sidebar": true }
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "admin 场景 · 内容区功能点位映射。admin.content.container 为壳层高度模式通道(源码实证,lay-content/index.vue);其余 6 条为页面构图点位:类名为 vue3-temp-skill crud-pages.md L1-L9 标准样板约定,样式规则与令牌已落地(element-plus.scss 消费 design-tokens.scss L235-251 构图令牌,dark.scss 消费 vts-filter-area),存量表格 demo(views/table/{base,treeTable,vxe-table})已对齐样板;pagination 为 Element Plus 实证类(RePagination 根节点即 el-pagination,无自定义语义类)。",
|
|
3
|
+
"meta": {
|
|
4
|
+
"layer": "scene",
|
|
5
|
+
"scene": "admin",
|
|
6
|
+
"domain": "content",
|
|
7
|
+
"version": "1.0.0",
|
|
8
|
+
"tech_stack": "vue3 + element-plus + vue3-web-temp"
|
|
9
|
+
},
|
|
10
|
+
"mappings": {
|
|
11
|
+
"admin.content.container": {
|
|
12
|
+
"type": "element",
|
|
13
|
+
"selector": ".main-content[data-content-mode='fixed'], .main-content[data-content-mode='scroll'], .main-content:has(.vts-page-card), .main-content:has(.vts-page-fill)",
|
|
14
|
+
"file": "src/layout/components/lay-content/index.vue(高度模式显式通道 data-content-mode 优先,:has() 钩子类自动探测兜底)",
|
|
15
|
+
"style_scope": ":global(壳层样式,非 scoped 页面样式)",
|
|
16
|
+
"css_vars": {
|
|
17
|
+
"content_padding": "--vts-margin",
|
|
18
|
+
"header_offset": "--vts-layout-header-offset",
|
|
19
|
+
"header_offset_no_tabs": "--vts-layout-header-offset-no-tabs",
|
|
20
|
+
"tabs_height": "--vts-tabs-height"
|
|
21
|
+
},
|
|
22
|
+
"custom_style_map": {},
|
|
23
|
+
"forms": {
|
|
24
|
+
"mode": ["fixed", "scroll", "auto"]
|
|
25
|
+
},
|
|
26
|
+
"modes": {
|
|
27
|
+
"fixed": "data-content-mode='fixed':display:flex; flex:1 1 auto; height:100%; min-height:0; overflow:hidden(收回 el-scrollbar__view/.grow 祖先链)",
|
|
28
|
+
"scroll": "data-content-mode='scroll':flex:0 0 auto; min-height:100%; overflow:visible(整页滚动)",
|
|
29
|
+
"auto": ":has(.vts-page-card|.vts-page-fill) 自动定高;未标记且无钩子类 → 滚动页(向后兼容)"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"admin.content.page_header": {
|
|
33
|
+
"type": "element",
|
|
34
|
+
"selector": ".vts-page-header",
|
|
35
|
+
"file": "业务 views(crud-pages L1 样板)",
|
|
36
|
+
"style_scope": ".vts-page-card",
|
|
37
|
+
"css_vars": {
|
|
38
|
+
"margin_bottom": "--page-header-margin",
|
|
39
|
+
"title_size": "--page-title-size",
|
|
40
|
+
"title_weight": "--page-title-weight",
|
|
41
|
+
"desc_size": "--page-desc-size",
|
|
42
|
+
"desc_color": "--page-desc-color",
|
|
43
|
+
"actions_gap": "--page-header-actions-gap"
|
|
44
|
+
},
|
|
45
|
+
"custom_style_map": {}
|
|
46
|
+
},
|
|
47
|
+
"admin.content.filter_area": {
|
|
48
|
+
"type": "element",
|
|
49
|
+
"selector": ".vts-filter-area",
|
|
50
|
+
"file": "crud-pages.md L3 约定 + src/styles/element-plus.scss(消费 design-tokens.scss 构图令牌);存量 demo 已对齐:views/table/{base,treeTable,vxe-table}",
|
|
51
|
+
"style_scope": ".vts-page-card",
|
|
52
|
+
"css_vars": {
|
|
53
|
+
"radius": "--filter-area-radius",
|
|
54
|
+
"padding_y": "--filter-area-padding-y",
|
|
55
|
+
"padding_x": "--filter-area-padding-x",
|
|
56
|
+
"margin_bottom": "--filter-area-margin-bottom",
|
|
57
|
+
"bg": "--filter-area-bg",
|
|
58
|
+
"border_bottom": "--filter-area-border-bottom"
|
|
59
|
+
},
|
|
60
|
+
"custom_style_map": {}
|
|
61
|
+
},
|
|
62
|
+
"admin.content.table.operation_bar": {
|
|
63
|
+
"type": "element",
|
|
64
|
+
"selector": ".vts-action-bar",
|
|
65
|
+
"file": "业务 views(crud-pages 操作栏 / ReTableBar)",
|
|
66
|
+
"style_scope": ".vts-page-card",
|
|
67
|
+
"css_vars": {
|
|
68
|
+
"gap": "--action-bar-gap",
|
|
69
|
+
"padding_y": "--action-bar-padding-y"
|
|
70
|
+
},
|
|
71
|
+
"custom_style_map": {}
|
|
72
|
+
},
|
|
73
|
+
"admin.content.table.area": {
|
|
74
|
+
"type": "component",
|
|
75
|
+
"component": "ElTable(useTableSearch tableHeight 定高)",
|
|
76
|
+
"selector": ".vts-table-area",
|
|
77
|
+
"file": "crud-pages.md L3 约定 + src/styles/element-plus.scss(flex 定高链 + 圆角令牌);存量 demo 已对齐:views/table/{base,treeTable,vxe-table}",
|
|
78
|
+
"style_scope": ".vts-page-card",
|
|
79
|
+
"css_vars": {
|
|
80
|
+
"radius": "--table-area-border-radius",
|
|
81
|
+
"header_bg": "--el-table-header-bg-color",
|
|
82
|
+
"header_text": "--el-table-header-text-color",
|
|
83
|
+
"row_hover_bg": "--el-table-row-hover-bg-color"
|
|
84
|
+
},
|
|
85
|
+
"custom_style_map": {}
|
|
86
|
+
},
|
|
87
|
+
"admin.content.pagination": {
|
|
88
|
+
"type": "component",
|
|
89
|
+
"component": "RePagination",
|
|
90
|
+
"selector": ".vts-page-card .el-pagination",
|
|
91
|
+
"file": "src/components/RePagination/src/pagination.vue(根节点 el-pagination,无自定义语义类;style_scope 前缀 .vts-page-card 保证只命中卡片内分页)",
|
|
92
|
+
"style_scope": ".vts-page-card",
|
|
93
|
+
"css_vars": {
|
|
94
|
+
"button_hover_color": "--el-pagination-button-hover-color",
|
|
95
|
+
"hover_color": "--el-pagination-hover-color",
|
|
96
|
+
"active_bg": "--pagination-active-bg",
|
|
97
|
+
"active_color": "--pagination-active-color"
|
|
98
|
+
},
|
|
99
|
+
"custom_style_map": {}
|
|
100
|
+
},
|
|
101
|
+
"admin.content.empty_state": {
|
|
102
|
+
"type": "element",
|
|
103
|
+
"selector": ".vts-page-card .el-empty",
|
|
104
|
+
"file": "业务 views(Element Plus el-empty 空态,EP 原生类,全局生效)",
|
|
105
|
+
"style_scope": ".vts-page-card",
|
|
106
|
+
"css_vars": {
|
|
107
|
+
"padding": "--empty-state-padding"
|
|
108
|
+
},
|
|
109
|
+
"custom_style_map": {}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|