openyida 2026.9.19 → 2026.9.21
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 +4 -4
- package/lib/app/application-style.js +69 -0
- package/lib/app/create-form/args.js +37 -12
- package/lib/app/create-form/batch.js +32 -5
- package/lib/app/create-form.js +94 -57
- package/lib/app/form-field-validator.js +0 -36
- package/lib/app/services/form-compiler.js +0 -2
- package/lib/app/theme-from-design.js +40 -14
- package/lib/app/update-app.js +63 -13
- package/lib/core/command-manifest.js +81 -25
- package/lib/core/locales/en.js +20 -3
- package/lib/core/locales/zh.js +20 -3
- package/lib/core/sample.js +36 -14
- package/lib/design/document.js +1 -0
- package/lib/design-plan/confirmation.js +13 -0
- package/lib/design-plan/design-plan.js +44 -2
- package/lib/design-plan/entry-navigation.js +10 -2
- package/lib/design-plan/init.js +16 -9
- package/lib/design-plan/materialize.js +85 -45
- package/lib/design-plan/normalize.js +13 -14
- package/lib/design-plan/parallel.js +62 -13
- package/lib/design-plan/patch.js +21 -7
- package/lib/design-plan/rebase.js +60 -0
- package/lib/design-plan/themes.js +16 -1
- package/lib/design-plan/validate.js +16 -1
- package/lib/design-plan/visual-policy.js +29 -4
- package/lib/samples/openyida-scaffold/canvas-form-drawer.canvas.jsx +3 -3
- package/lib/samples/openyida-scaffold/canvas-nav/mixed.jsx +6 -4
- package/lib/samples/openyida-scaffold/canvas-nav/shared.jsx +5 -5
- package/lib/samples/openyida-scaffold/canvas-nav/side.jsx +1 -2
- package/lib/samples/openyida-scaffold/canvas-nav/sidebar.jsx +1 -1
- package/lib/samples/openyida-scaffold/canvas-nav/top.jsx +5 -4
- package/package.json +1 -1
- package/yida-skills/SKILL.md +2 -2
- package/yida-skills/references/official-example-schema-patterns.md +1 -1
- package/yida-skills/references/yida-api.md +4 -0
- package/yida-skills/skills/yida-app/SKILL.md +15 -4
- package/yida-skills/skills/yida-app/references/entry-navigation.md +11 -9
- package/yida-skills/skills/yida-app/workflow/plan/step-4-deliver.md +1 -1
- package/yida-skills/skills/yida-app/workflow/plan/workflow.md +11 -4
- package/yida-skills/skills/yida-app/workflow/step-2-design.md +3 -3
- package/yida-skills/skills/yida-app/workflow/step-3-create-or-reuse-app.md +2 -2
- package/yida-skills/skills/yida-app/workflow/step-8-publish-navigation.md +3 -3
- package/yida-skills/skills/yida-app/workflow/step-9-output-finish.md +3 -2
- package/yida-skills/skills/yida-canvas-custom-page/SKILL.md +2 -2
- package/yida-skills/skills/yida-canvas-custom-page/references/canvas-style-implementation-guide.md +1 -1
- package/yida-skills/skills/yida-canvas-custom-page/references/canvas-theme-provider.md +1 -1
- package/yida-skills/skills/yida-canvas-custom-page/references/data-bridge-guide.md +140 -1
- package/yida-skills/skills/yida-canvas-custom-page/references/navigation-and-entry-guide.md +1 -1
- package/yida-skills/skills/yida-canvas-custom-page/scripts/canvas-theme-provider.template.jsx +1 -1
- package/yida-skills/skills/yida-canvas-data-binding/SKILL.md +7 -0
- package/yida-skills/skills/yida-create-form-page/SKILL.md +34 -43
- package/yida-skills/skills/yida-create-form-page/references/advanced-form-modes.md +5 -5
- package/yida-skills/skills/yida-create-form-page/references/association-form-field.md +4 -4
- package/yida-skills/skills/yida-create-form-page/references/batch-forms.md +2 -2
- package/yida-skills/skills/yida-create-form-page/references/field-definition-guide.md +4 -16
- package/yida-skills/skills/yida-create-form-page/references/form-field-properties.md +14 -37
- package/yida-skills/skills/yida-design/SKILL.md +7 -5
- package/yida-skills/skills/yida-design/references/application-style-library.md +93 -0
- package/yida-skills/skills/yida-design/references/application-theme-consistency.md +48 -7
- package/yida-skills/skills/yida-design/references/ask-human-interaction-contract.md +1 -1
- package/yida-skills/skills/yida-design/references/native-form-styles.md +208 -0
- package/yida-skills/skills/yida-design/references/navigation-decision.md +6 -4
- package/yida-skills/skills/yida-design/references/theme/app-custom-theme-template.css +110 -1
- package/yida-skills/skills/yida-design/references/theme/application-style-recipes.css +58 -0
- package/yida-skills/skills/yida-design/references/theme-selection.md +12 -11
- package/yida-skills/skills/yida-design/references/visual-decision-engine.md +1 -1
- package/yida-skills/skills/yida-design/scripts/validate_design_themes.py +49 -6
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/SKILL.md +13 -3
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/references/build-plan-compact-schema.md +6 -2
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/references/build-plan-schema.md +5 -3
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/references/visual-design.md +3 -1
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/references/visual-theme-selection.md +22 -23
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/scripts/render_build_plan.py +2 -0
- package/yida-skills/skills/yida-design/templates/application-styles.json +398 -0
- package/yida-skills/skills/yida-design/templates/design-themes/README.md +15 -10
- package/yida-skills/skills/yida-design/templates/design-themes/app-amber/app_theme.css +748 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-amber/design.md +274 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-amber/form-layout.json +15 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-editorial/app_theme.css +748 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-editorial/design.md +274 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-editorial/form-layout.json +14 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-executive/app_theme.css +748 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-executive/design.md +274 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-executive/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-finance/app_theme.css +748 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-finance/design.md +274 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-finance/form-layout.json +14 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-glass/app_theme.css +748 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-glass/design.md +274 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-glass/form-layout.json +14 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-graphite/app_theme.css +748 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-graphite/design.md +274 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-graphite/form-layout.json +14 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-line/app_theme.css +748 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-line/design.md +274 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-line/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-neon/app_theme.css +748 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-neon/design.md +274 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-neon/form-layout.json +14 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-nordic/app_theme.css +754 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-nordic/design.md +279 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-nordic/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-paper/app_theme.css +748 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-paper/design.md +274 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-paper/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-platinum/app_theme.css +748 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-platinum/design.md +274 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-platinum/form-layout.json +14 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-plum/app_theme.css +748 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-plum/design.md +274 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-plum/form-layout.json +14 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-pop/app_theme.css +758 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-pop/design.md +281 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-pop/form-layout.json +14 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-sage/app_theme.css +748 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-sage/design.md +274 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-sage/form-layout.json +14 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-teal/app_theme.css +748 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-teal/design.md +274 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-teal/form-layout.json +14 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-terminal/app_theme.css +754 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-terminal/design.md +279 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-terminal/form-layout.json +14 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-ticket/app_theme.css +752 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-ticket/design.md +278 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-ticket/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-wire/app_theme.css +748 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-wire/design.md +274 -0
- package/yida-skills/skills/yida-design/templates/design-themes/app-wire/form-layout.json +14 -0
- package/yida-skills/skills/yida-design/templates/design-themes/basic-tokens.json +2 -1
- package/yida-skills/skills/yida-design/templates/design-themes/dark-inset-hairline/app_theme.css +690 -0
- package/yida-skills/skills/yida-design/templates/design-themes/{dark-inset-hairline.md → dark-inset-hairline/design.md} +107 -58
- package/yida-skills/skills/yida-design/templates/design-themes/dark-inset-hairline/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/dark-rail-fine-lines/app_theme.css +691 -0
- package/yida-skills/skills/yida-design/templates/design-themes/{dark-rail-fine-lines.md → dark-rail-fine-lines/design.md} +106 -50
- package/yida-skills/skills/yida-design/templates/design-themes/dark-rail-fine-lines/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/dark-rail-signal-panels/app_theme.css +696 -0
- package/yida-skills/skills/yida-design/templates/design-themes/{dark-rail-signal-panels.md → dark-rail-signal-panels/design.md} +66 -12
- package/yida-skills/skills/yida-design/templates/design-themes/dark-rail-signal-panels/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/free-creative/app_theme.css +689 -0
- package/yida-skills/skills/yida-design/templates/design-themes/free-creative/design.md +238 -0
- package/yida-skills/skills/yida-design/templates/design-themes/free-creative/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/graphite-bevel-grid/app_theme.css +692 -0
- package/yida-skills/skills/yida-design/templates/design-themes/{graphite-bevel-grid.md → graphite-bevel-grid/design.md} +64 -10
- package/yida-skills/skills/yida-design/templates/design-themes/graphite-bevel-grid/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/hairline-shared-bands/app_theme.css +691 -0
- package/yida-skills/skills/yida-design/templates/design-themes/{hairline-shared-bands.md → hairline-shared-bands/design.md} +66 -12
- package/yida-skills/skills/yida-design/templates/design-themes/hairline-shared-bands/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/hairline-soft-blocks/app_theme.css +691 -0
- package/yida-skills/skills/yida-design/templates/design-themes/{hairline-soft-blocks.md → hairline-soft-blocks/design.md} +61 -9
- package/yida-skills/skills/yida-design/templates/design-themes/hairline-soft-blocks/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/index.json +399 -31
- package/yida-skills/skills/yida-design/templates/design-themes/ink-glow-soft-panels/app_theme.css +701 -0
- package/yida-skills/skills/yida-design/templates/design-themes/{ink-glow-soft-panels.md → ink-glow-soft-panels/design.md} +62 -8
- package/yida-skills/skills/yida-design/templates/design-themes/ink-glow-soft-panels/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/inset-frame-pixel-rhythm/app_theme.css +691 -0
- package/yida-skills/skills/yida-design/templates/design-themes/{inset-frame-pixel-rhythm.md → inset-frame-pixel-rhythm/design.md} +63 -9
- package/yida-skills/skills/yida-design/templates/design-themes/inset-frame-pixel-rhythm/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/outlined-texture-duotone/app_theme.css +698 -0
- package/yida-skills/skills/yida-design/templates/design-themes/{outlined-texture-duotone.md → outlined-texture-duotone/design.md} +66 -12
- package/yida-skills/skills/yida-design/templates/design-themes/outlined-texture-duotone/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/soft-inset-surfaces/app_theme.css +691 -0
- package/yida-skills/skills/yida-design/templates/design-themes/{soft-inset-surfaces.md → soft-inset-surfaces/design.md} +63 -11
- package/yida-skills/skills/yida-design/templates/design-themes/soft-inset-surfaces/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/soft-outline-rhythm/app_theme.css +690 -0
- package/yida-skills/skills/yida-design/templates/design-themes/{soft-outline-rhythm.md → soft-outline-rhythm/design.md} +64 -26
- package/yida-skills/skills/yida-design/templates/design-themes/soft-outline-rhythm/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/soft-rail-bold-band/app_theme.css +698 -0
- package/yida-skills/skills/yida-design/templates/design-themes/{soft-rail-bold-band.md → soft-rail-bold-band/design.md} +103 -49
- package/yida-skills/skills/yida-design/templates/design-themes/soft-rail-bold-band/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/soft-spectral-panels/app_theme.css +692 -0
- package/yida-skills/skills/yida-design/templates/design-themes/{soft-spectral-panels.md → soft-spectral-panels/design.md} +67 -13
- package/yida-skills/skills/yida-design/templates/design-themes/soft-spectral-panels/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/warm-canvas-contrast-panels/app_theme.css +711 -0
- package/yida-skills/skills/yida-design/templates/design-themes/{warm-canvas-contrast-panels.md → warm-canvas-contrast-panels/design.md} +64 -10
- package/yida-skills/skills/yida-design/templates/design-themes/warm-canvas-contrast-panels/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/design-themes/warm-rail-muted-panels/app_theme.css +692 -0
- package/yida-skills/skills/yida-design/templates/design-themes/{warm-rail-muted-panels.md → warm-rail-muted-panels/design.md} +102 -50
- package/yida-skills/skills/yida-design/templates/design-themes/warm-rail-muted-panels/form-layout.json +13 -0
- package/yida-skills/skills/yida-design/templates/navigation-styles.json +769 -0
- package/yida-skills/skills/yida-design/workflow/output-design.md +9 -6
- package/yida-skills/skills/yida-design/workflow/step-2-theme-system.md +12 -4
- package/yida-skills/skills/yida-design/workflow/step-6-handoff.md +1 -1
- package/yida-skills/skills/yida-form-permission/SKILL.md +6 -0
- package/yida-skills/skills/yida-nav-shell/SKILL.md +1 -1
- package/yida-skills/skills/yida-nav-shell/references/nav-shell-patterns.md +6 -0
- package/yida-skills/skills/yida-page-config/SKILL.md +9 -0
- package/yida-skills/skills/yida-prd/SKILL.md +1 -0
- package/yida-skills/skills/yida-prd/workflow/output-prd.md +2 -2
- package/yida-skills/skills/yida-prd/workflow/step-2-information-architecture.md +1 -1
- package/yida-skills/skills/yida-requirement-analysis/references/experience-groups.md +45 -9
- package/yida-skills/skills/yida-requirement-analysis/references/handoff.md +5 -5
- package/yida-skills/skills/yida-requirement-analysis/workflow/prepare-brief.md +17 -4
- package/yida-skills/skills-index.json +2 -2
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
## 用途
|
|
4
4
|
|
|
5
5
|
- 用户已说明想要的风格,就按要求设计。
|
|
6
|
-
-
|
|
6
|
+
- Plan 没有明确完整风格时,读取本文,准备三套配色、表面层次和组件样式方案供用户选择。
|
|
7
7
|
- 用户选界面风格,AI 负责匹配实现用的主题模板。
|
|
8
8
|
|
|
9
9
|
## 核心关系
|
|
@@ -11,15 +11,16 @@
|
|
|
11
11
|
```text
|
|
12
12
|
应用场景与视觉证据
|
|
13
13
|
→ AI 定义项目视觉方向
|
|
14
|
-
→
|
|
14
|
+
→ 选择命名模板,或自由创意独立推演
|
|
15
15
|
→ 用户选择一套完整方向
|
|
16
|
-
→
|
|
16
|
+
→ 风格、配色和主题选择;导航结构沿用业务规划
|
|
17
|
+
→ 命名模板的导航明暗由模板派生;自由创意明确设计导航明暗
|
|
17
18
|
→ CLI 读取所选完整模板并生成 design.md
|
|
18
19
|
```
|
|
19
20
|
|
|
20
|
-
先按[设计方向比较](../../../references/theme-selection.md#设计方向比较)
|
|
21
|
+
先按[设计方向比较](../../../references/theme-selection.md#设计方向比较)根据项目需求发展风格,可匹配主题索引中的模板,也可独立推演。按[应用风格与自由创意](../../../references/application-style-library.md)交付。
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
应用编排先根据业务需求确定导航结构。视觉设计沿用该结果,设计各页面共用的配色、背景、圆角和组件样式;命名模板的导航明暗采用模板 `navTheme`;自由创意由项目设计明确填写。页面内容、布局和操作顺序按业务规划执行。
|
|
23
24
|
|
|
24
25
|
主色按所选主题的公式推导,其他颜色沿用主题。已选方向承诺的画布、卡片、填充、字体或辅助色与模板不同时,将具体差异写入 `visualStyle.tokens`,不等待用户逐个指定色值。`description` 和 `colorStrategy.usage` 只说明用途,不会被编译成配色。按 [共用主题规则](../../../references/application-theme-consistency.md) 完成变量后再交接页面;渐变和图片按公共输出契约处理。Fast 与 Plan 使用相同规则。
|
|
25
26
|
|
|
@@ -29,7 +30,7 @@
|
|
|
29
30
|
|
|
30
31
|
## 候选结构与约束
|
|
31
32
|
|
|
32
|
-
|
|
33
|
+
生成三项选择:两个具体视觉方向,加一项“自由创意:根据业务重新推演”。用户已明确风格时直接沿用,无需重选。具体方向包含:
|
|
33
34
|
|
|
34
35
|
```json
|
|
35
36
|
{
|
|
@@ -39,8 +40,7 @@
|
|
|
39
40
|
"themeId": "<有效索引记录,仅内部>",
|
|
40
41
|
"primaryColor": "#6F4E37",
|
|
41
42
|
"primaryColorName": "暖咖啡棕",
|
|
42
|
-
"
|
|
43
|
-
"navigationTone": "dark",
|
|
43
|
+
"contentTone": "light",
|
|
44
44
|
"recommendationReason": "适合需要持续查看关系历史和推进状态的日常工作。"
|
|
45
45
|
}
|
|
46
46
|
```
|
|
@@ -49,12 +49,12 @@
|
|
|
49
49
|
|
|
50
50
|
1. 第一项为推荐项。
|
|
51
51
|
2. `directionLabel`、`description` 和 `recommendationReason` 由 AI 根据项目的用户、任务和界面效果编写。
|
|
52
|
-
3. `themeId`
|
|
53
|
-
4.
|
|
54
|
-
5.
|
|
52
|
+
3. `themeId` 必须来自索引,两个模板方向绑定不同记录,自由创意使用 catalog.creativeOption;模板路径由索引在选择后确定性补齐。
|
|
53
|
+
4. 模板候选保持已确认的导航结构,但不输出 `navigationTone`。候选可以通过不同主题呈现深色或浅色导航差异,这个差异来自主题模板,而不是 AI 单独填写字段;优先至少两项视觉维度不同。用户约束固定的部分保持不变。
|
|
54
|
+
5. 配色依据品牌素材、用户偏好和实际使用场景选择,并写清理由。用户明确菜单明暗时,将其作为主题筛选条件;用户未明确时不推导菜单明暗。
|
|
55
55
|
6. 用户明确品牌色时保留该颜色,通过主题基底、材质和组件表达形成差异。
|
|
56
|
-
7.
|
|
57
|
-
8.
|
|
56
|
+
7. 项目色彩和已确定的导航结构可覆盖模板对应输入;导航明暗不得覆盖模板 `navTheme`。用户导航明暗要求或表面层级、形状语言、组件机制等核心视觉特征与模板冲突时必须换一个基底。
|
|
57
|
+
8. 方案缺少匹配模板时走自由创意,填写独立设计决策和 Token。自由创意的导航明暗由项目设计决定,写入 navigationStyle.tone;内容与导航按[主题明暗双轴](../../../references/application-style-library.md#主题明暗双轴)分别设计。
|
|
58
58
|
|
|
59
59
|
平台导航沿用 `navigationType` 对应的顶部、侧边或 L 型布局。自定义导航由视觉设计细化顶部、侧边等菜单样式,按该入口已确定的配置范围实施。
|
|
60
60
|
|
|
@@ -92,9 +92,9 @@
|
|
|
92
92
|
"description": "<second.description> <second.recommendationReason>"
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
|
-
"value": "
|
|
96
|
-
"label": "
|
|
97
|
-
"description": "
|
|
95
|
+
"value": "free-creative",
|
|
96
|
+
"label": "自由创意",
|
|
97
|
+
"description": "根据这项业务重新推演构图、材质和表单布局,不从现成模板选取。"
|
|
98
98
|
}
|
|
99
99
|
],
|
|
100
100
|
"allowCustom": true,
|
|
@@ -123,9 +123,8 @@
|
|
|
123
123
|
},
|
|
124
124
|
"navigationStyle": {
|
|
125
125
|
"structure": "side",
|
|
126
|
-
"tone": "dark",
|
|
127
126
|
"source": "user_selected",
|
|
128
|
-
"selectionReason": "
|
|
127
|
+
"selectionReason": "持续工作场景需要稳定的侧边入口;导航明暗由所选主题模板确定。"
|
|
129
128
|
}
|
|
130
129
|
},
|
|
131
130
|
"internal": {
|
|
@@ -138,18 +137,18 @@
|
|
|
138
137
|
}
|
|
139
138
|
```
|
|
140
139
|
|
|
141
|
-
`build-plan.json` 保存选中方案;完整候选保留在 `ask_human`
|
|
140
|
+
`build-plan.json` 保存选中方案;完整候选保留在 `ask_human` 问答历史中。命名模板由 CLI 补入 `navigationStyle.tone` 和 `toneSource=theme_derived`;自由创意在 visual.json 中明确编写 tone=light|dark,CLI 标记 toneSource=project_defined,后续可通过 patch 修改该 tone。上例只展示选择事实,已选方向需要的画布、字体、辅助色等差异还须写入同级 `tokens`,见 [共用主题示例](../../../references/application-theme-consistency.md#先把风格落到变量)。
|
|
142
141
|
|
|
143
142
|
## 直接选择与自定义输入
|
|
144
143
|
|
|
145
|
-
-
|
|
146
|
-
-
|
|
144
|
+
- 只有用户已明确完整视觉风格、指定现有主题,或要求严格继承可信品牌/模板时,AI 才直接匹配一个有效基底并写入,`source=user_explicit | material_extracted`。单独的主题色、导航结构或导航明暗只作为候选约束,不视为已给出完整风格;导航明暗也不另存为可覆盖模板的输入。
|
|
145
|
+
- 用户在三套候选中明确采用推荐方案时,选择第一项,`source=user_selected`。
|
|
147
146
|
- 用户自由描述新方向时,先匹配核心视觉特征最近且不违反硬约束的模板。能够匹配则记录原文为 `customText` 并写入项目覆盖项。
|
|
148
|
-
-
|
|
147
|
+
- 所有模板都不支持时,沿用自由创意选项,从已确认业务独立推演并继续规划。
|
|
149
148
|
|
|
150
149
|
## 运行时读取边界
|
|
151
150
|
|
|
152
151
|
- Step 2 读取本规则和主题索引中的精简风格摘要,不读取候选模板全文。
|
|
153
152
|
- 候选阶段只提供方向名称、配色与体验说明。
|
|
154
|
-
-
|
|
153
|
+
- 用户选择后保存选中方向、内部主题绑定、导航结构和实现该方向所需的 token 差异;CLI 从模板读取导航明暗。
|
|
155
154
|
- 用户确认主题后,规划时读取 CLI 返回的主题上下文;CLI 仅按已确认的 selectedTheme.themeId 读取选中的完整模板生成文档。
|
package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/scripts/render_build_plan.py
CHANGED
|
@@ -941,6 +941,8 @@ def render_execution(data: dict[str, Any]) -> str:
|
|
|
941
941
|
hidden_pages = execution.get("pageNavigation") or []
|
|
942
942
|
if hidden_pages:
|
|
943
943
|
parts += ["<h3>页面导航</h3>", table(["页面", "平台页面导航"], [[item.get("name"), "隐藏" if item.get("isRenderNav") is False else "显示"] for item in hidden_pages])]
|
|
944
|
+
if execution.get("entryModeSummary"):
|
|
945
|
+
parts += ["<h3>系统怎么使用</h3>", f'<p>{esc(execution["entryModeSummary"])}</p>']
|
|
944
946
|
for entry in (execution.get("entryRecommendation") or {}).get("entries", []):
|
|
945
947
|
rows = []
|
|
946
948
|
|
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "app-wire",
|
|
4
|
+
"label": "精密线框",
|
|
5
|
+
"ink": "#242826",
|
|
6
|
+
"canvas": "#f7f8f6",
|
|
7
|
+
"surface": "#ffffff",
|
|
8
|
+
"border": "#c0c6c2",
|
|
9
|
+
"radius": 2,
|
|
10
|
+
"height": 38,
|
|
11
|
+
"width": 940,
|
|
12
|
+
"padding": 28,
|
|
13
|
+
"gap": 18,
|
|
14
|
+
"columns": "6:6",
|
|
15
|
+
"intro": "顶端编号标题与标尺式章节",
|
|
16
|
+
"composition": "横向工具带与精确双列工作区",
|
|
17
|
+
"material": "细线框、浅网格、平面无阴影",
|
|
18
|
+
"scenario": "适合研发、资产与审计。",
|
|
19
|
+
"accent": "#242826",
|
|
20
|
+
"background": "repeating-linear-gradient(0deg, transparent 0 23px, rgba(36,40,38,.045) 23px 24px), repeating-linear-gradient(90deg, transparent 0 23px, rgba(36,40,38,.045) 23px 24px)"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "app-paper",
|
|
24
|
+
"label": "奶油手账",
|
|
25
|
+
"ink": "#745338",
|
|
26
|
+
"canvas": "#e9dfcd",
|
|
27
|
+
"surface": "#fffaf0",
|
|
28
|
+
"border": "#b49a76",
|
|
29
|
+
"radius": 8,
|
|
30
|
+
"height": 44,
|
|
31
|
+
"width": 690,
|
|
32
|
+
"padding": 42,
|
|
33
|
+
"gap": 30,
|
|
34
|
+
"columns": "12",
|
|
35
|
+
"intro": "纸页顶部题签与短说明",
|
|
36
|
+
"composition": "窄幅纵向阅读与按日期组织的清单",
|
|
37
|
+
"material": "暖纸面、虚线章节、柔和纸张阴影",
|
|
38
|
+
"scenario": "适合服务登记、档案与内容策划。",
|
|
39
|
+
"accent": "#745338",
|
|
40
|
+
"headingFont": "Georgia, 'Songti SC', serif",
|
|
41
|
+
"headingSize": 44,
|
|
42
|
+
"rule": "dashed",
|
|
43
|
+
"shadow": "0 4px 12px rgba(116,83,56,.10)",
|
|
44
|
+
"background": "repeating-linear-gradient(0deg, transparent 0 31px, rgba(116,83,56,.04) 31px 32px)"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "app-sage",
|
|
48
|
+
"label": "植物浮雕",
|
|
49
|
+
"ink": "#345b49",
|
|
50
|
+
"canvas": "#dce7df",
|
|
51
|
+
"surface": "#eaf1ea",
|
|
52
|
+
"border": "#bfcebf",
|
|
53
|
+
"radius": 16,
|
|
54
|
+
"height": 46,
|
|
55
|
+
"width": 900,
|
|
56
|
+
"padding": 40,
|
|
57
|
+
"gap": 30,
|
|
58
|
+
"columns": "6:6",
|
|
59
|
+
"intro": "低对比色块介绍与圆弧分组",
|
|
60
|
+
"composition": "宽松双列、纵向状态清单与柔和分区",
|
|
61
|
+
"material": "柔绿表面、轻内凹、圆润控件",
|
|
62
|
+
"scenario": "适合健康服务、员工关怀与资源协作。",
|
|
63
|
+
"accent": "#345b49",
|
|
64
|
+
"shadow": "inset 0 1px 2px rgba(52,91,73,.10)"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "app-pop",
|
|
68
|
+
"label": "波普印刷",
|
|
69
|
+
"ink": "#211c21",
|
|
70
|
+
"canvas": "#ffde59",
|
|
71
|
+
"surface": "#fffdf6",
|
|
72
|
+
"border": "#211c21",
|
|
73
|
+
"radius": 0,
|
|
74
|
+
"height": 46,
|
|
75
|
+
"width": 1000,
|
|
76
|
+
"padding": 32,
|
|
77
|
+
"gap": 26,
|
|
78
|
+
"columns": "8:4",
|
|
79
|
+
"intro": "大字印刷标题与偏置章号",
|
|
80
|
+
"composition": "不对称二比一工作区与粗线信息带",
|
|
81
|
+
"material": "方角、粗墨线、硬偏移阴影",
|
|
82
|
+
"scenario": "适合活动执行、创意制作与品牌运营。",
|
|
83
|
+
"accent": "#211c21",
|
|
84
|
+
"stroke": 3,
|
|
85
|
+
"shadow": "4px 4px 0 #211c21",
|
|
86
|
+
"headingSize": 44
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "app-neon",
|
|
90
|
+
"label": "午夜霓虹",
|
|
91
|
+
"ink": "#b4f5f1",
|
|
92
|
+
"canvas": "#080f21",
|
|
93
|
+
"surface": "#111b31",
|
|
94
|
+
"border": "#356274",
|
|
95
|
+
"radius": 10,
|
|
96
|
+
"height": 44,
|
|
97
|
+
"width": 1040,
|
|
98
|
+
"padding": 32,
|
|
99
|
+
"gap": 22,
|
|
100
|
+
"columns": "6:6",
|
|
101
|
+
"intro": "小号技术编号与发光横线",
|
|
102
|
+
"composition": "横向监控总览与双列任务区",
|
|
103
|
+
"material": "深海蓝层次、局部青色微光",
|
|
104
|
+
"scenario": "适合明确要求暗色的技术值守。",
|
|
105
|
+
"accent": "#b4f5f1",
|
|
106
|
+
"contentTone": "dark",
|
|
107
|
+
"navTheme": "dark",
|
|
108
|
+
"background": "radial-gradient(ellipse at 10% 0%, rgba(80,205,210,.14), transparent 55%), radial-gradient(ellipse at 90% 100%, rgba(139,93,228,.12), transparent 55%)"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "app-line",
|
|
112
|
+
"label": "极简下划线",
|
|
113
|
+
"ink": "#242323",
|
|
114
|
+
"canvas": "#f2f1ee",
|
|
115
|
+
"surface": "#ffffff",
|
|
116
|
+
"border": "#aaa5a0",
|
|
117
|
+
"radius": 0,
|
|
118
|
+
"height": 48,
|
|
119
|
+
"width": 680,
|
|
120
|
+
"padding": 48,
|
|
121
|
+
"gap": 38,
|
|
122
|
+
"columns": "12",
|
|
123
|
+
"intro": "纯文字标题与短红色侧线",
|
|
124
|
+
"composition": "窄幅单列、连续正文与留白章节",
|
|
125
|
+
"material": "无浮起卡片、平面纸白、强调下划线",
|
|
126
|
+
"scenario": "适合申请、访谈与简洁审批。",
|
|
127
|
+
"accent": "#242323"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"id": "app-glass",
|
|
131
|
+
"label": "雾面玻璃",
|
|
132
|
+
"ink": "#45345f",
|
|
133
|
+
"canvas": "#e5dff2",
|
|
134
|
+
"surface": "#f9f7fd",
|
|
135
|
+
"border": "#c8bfd6",
|
|
136
|
+
"radius": 20,
|
|
137
|
+
"height": 48,
|
|
138
|
+
"width": 880,
|
|
139
|
+
"padding": 40,
|
|
140
|
+
"gap": 28,
|
|
141
|
+
"columns": "6:6",
|
|
142
|
+
"intro": "轻透标题面与辅助说明",
|
|
143
|
+
"composition": "流动双列、层叠摘要与留白工作区",
|
|
144
|
+
"material": "雾紫衬底、柔边和低强度漫射阴影",
|
|
145
|
+
"scenario": "适合服务门户与体验反馈。",
|
|
146
|
+
"accent": "#45345f",
|
|
147
|
+
"shadow": "0 10px 32px rgba(69,52,95,.12)",
|
|
148
|
+
"background": "radial-gradient(ellipse at 5% 20%, rgba(159,209,220,.35), transparent 60%), radial-gradient(ellipse at 90% 70%, rgba(179,145,223,.3), transparent 60%)"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"id": "app-ticket",
|
|
152
|
+
"label": "复古票据",
|
|
153
|
+
"ink": "#733c26",
|
|
154
|
+
"canvas": "#b96b49",
|
|
155
|
+
"surface": "#fff2d5",
|
|
156
|
+
"border": "#a7744d",
|
|
157
|
+
"radius": 0,
|
|
158
|
+
"height": 40,
|
|
159
|
+
"width": 660,
|
|
160
|
+
"padding": 28,
|
|
161
|
+
"gap": 16,
|
|
162
|
+
"columns": "12",
|
|
163
|
+
"intro": "票据抬头、单据编号与细密说明",
|
|
164
|
+
"composition": "窄单据纵向排布与对齐的键值清单",
|
|
165
|
+
"material": "暖纸、双分割线、印章式操作",
|
|
166
|
+
"scenario": "适合订单、交付与报销。",
|
|
167
|
+
"accent": "#733c26",
|
|
168
|
+
"rule": "double"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"id": "app-editorial",
|
|
172
|
+
"label": "杂志编辑",
|
|
173
|
+
"ink": "#692e3e",
|
|
174
|
+
"canvas": "#ede7e0",
|
|
175
|
+
"surface": "#fffdf8",
|
|
176
|
+
"border": "#ac8490",
|
|
177
|
+
"radius": 0,
|
|
178
|
+
"height": 44,
|
|
179
|
+
"width": 1100,
|
|
180
|
+
"padding": 40,
|
|
181
|
+
"gap": 28,
|
|
182
|
+
"columns": "6:6",
|
|
183
|
+
"intro": "左侧大衬线标题、导语与右侧章节正文",
|
|
184
|
+
"composition": "非对称编辑栏与跨栏内容摘要",
|
|
185
|
+
"material": "酒红细线、纸白表面、大标题与克制留白",
|
|
186
|
+
"scenario": "适合知识、内容与文化业务。",
|
|
187
|
+
"accent": "#692e3e",
|
|
188
|
+
"rail": true,
|
|
189
|
+
"headingFont": "Georgia, 'Songti SC', serif",
|
|
190
|
+
"headingSize": 44
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"id": "app-terminal",
|
|
194
|
+
"label": "终端像素",
|
|
195
|
+
"ink": "#9fe5ad",
|
|
196
|
+
"canvas": "#0e1813",
|
|
197
|
+
"surface": "#15231a",
|
|
198
|
+
"border": "#558966",
|
|
199
|
+
"radius": 0,
|
|
200
|
+
"height": 40,
|
|
201
|
+
"width": 960,
|
|
202
|
+
"padding": 24,
|
|
203
|
+
"gap": 12,
|
|
204
|
+
"columns": "6:6",
|
|
205
|
+
"intro": "命令行式短标题与流程提示",
|
|
206
|
+
"composition": "紧凑双列与可扫描的日志清单",
|
|
207
|
+
"material": "像素直角、点线边界、等宽排版",
|
|
208
|
+
"scenario": "适合明确要求终端风格的技术工具。",
|
|
209
|
+
"accent": "#9fe5ad",
|
|
210
|
+
"contentTone": "dark",
|
|
211
|
+
"navTheme": "dark",
|
|
212
|
+
"font": "'SFMono-Regular', Consolas, monospace",
|
|
213
|
+
"rule": "dotted"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"id": "app-platinum",
|
|
217
|
+
"label": "铂金商务",
|
|
218
|
+
"ink": "#35434b",
|
|
219
|
+
"canvas": "#eef0ef",
|
|
220
|
+
"surface": "#ffffff",
|
|
221
|
+
"border": "#d1d8d7",
|
|
222
|
+
"radius": 6,
|
|
223
|
+
"height": 38,
|
|
224
|
+
"width": 1000,
|
|
225
|
+
"padding": 36,
|
|
226
|
+
"gap": 24,
|
|
227
|
+
"columns": "6:6",
|
|
228
|
+
"intro": "克制抬头与细线章节",
|
|
229
|
+
"composition": "稳定双列与合同摘要侧栏",
|
|
230
|
+
"material": "铂灰细线、低圆角、均衡留白",
|
|
231
|
+
"scenario": "适合合同、采购与商务审批。",
|
|
232
|
+
"accent": "#35434b"
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"id": "app-executive",
|
|
236
|
+
"label": "墨金行政",
|
|
237
|
+
"ink": "#d9c49a",
|
|
238
|
+
"canvas": "#151919",
|
|
239
|
+
"surface": "#222826",
|
|
240
|
+
"border": "#596054",
|
|
241
|
+
"radius": 4,
|
|
242
|
+
"height": 42,
|
|
243
|
+
"width": 1080,
|
|
244
|
+
"padding": 40,
|
|
245
|
+
"gap": 30,
|
|
246
|
+
"columns": "12",
|
|
247
|
+
"intro": "左侧香槟金衬线标题与用途说明,右侧单列章节",
|
|
248
|
+
"composition": "四分之一介绍栏与四分之三主工作区",
|
|
249
|
+
"material": "墨绿黑表面、金色细节与长横线",
|
|
250
|
+
"scenario": "适合明确要求暗色的战略与高管事项。",
|
|
251
|
+
"accent": "#d9c49a",
|
|
252
|
+
"contentTone": "dark",
|
|
253
|
+
"navTheme": "dark",
|
|
254
|
+
"rail": true,
|
|
255
|
+
"headingFont": "Georgia, 'Songti SC', serif",
|
|
256
|
+
"headingSize": 44,
|
|
257
|
+
"background": "linear-gradient(120deg, rgba(217,196,154,.04), transparent 65%)"
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"id": "app-finance",
|
|
261
|
+
"label": "金融蓝图",
|
|
262
|
+
"ink": "#274e78",
|
|
263
|
+
"canvas": "#edf2f7",
|
|
264
|
+
"surface": "#ffffff",
|
|
265
|
+
"border": "#c4d1df",
|
|
266
|
+
"radius": 4,
|
|
267
|
+
"height": 36,
|
|
268
|
+
"width": 1080,
|
|
269
|
+
"padding": 28,
|
|
270
|
+
"gap": 16,
|
|
271
|
+
"columns": "6:6",
|
|
272
|
+
"intro": "技术抬头与编号章节",
|
|
273
|
+
"composition": "密集双列、水平标签与对齐金额",
|
|
274
|
+
"material": "淡蓝图纸、清晰细边界、低圆角",
|
|
275
|
+
"scenario": "适合预算、风险与资金计划。",
|
|
276
|
+
"accent": "#274e78"
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"id": "app-nordic",
|
|
280
|
+
"label": "北欧云白",
|
|
281
|
+
"ink": "#526361",
|
|
282
|
+
"canvas": "#f2f5f3",
|
|
283
|
+
"surface": "#ffffff",
|
|
284
|
+
"border": "#dce4df",
|
|
285
|
+
"radius": 14,
|
|
286
|
+
"height": 46,
|
|
287
|
+
"width": 720,
|
|
288
|
+
"padding": 52,
|
|
289
|
+
"gap": 36,
|
|
290
|
+
"columns": "12",
|
|
291
|
+
"intro": "简短自然标题与舒展说明",
|
|
292
|
+
"composition": "单列阅读与低密度任务清单",
|
|
293
|
+
"material": "云白表面、柔圆角与大段间距",
|
|
294
|
+
"scenario": "适合员工服务与预约申请。",
|
|
295
|
+
"accent": "#526361"
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"id": "app-teal",
|
|
299
|
+
"label": "青岚运营",
|
|
300
|
+
"ink": "#24665f",
|
|
301
|
+
"canvas": "#edf4f2",
|
|
302
|
+
"surface": "#ffffff",
|
|
303
|
+
"border": "#bfd6d0",
|
|
304
|
+
"radius": 8,
|
|
305
|
+
"height": 40,
|
|
306
|
+
"width": 980,
|
|
307
|
+
"padding": 32,
|
|
308
|
+
"gap": 24,
|
|
309
|
+
"columns": "8:4",
|
|
310
|
+
"intro": "窄色带章节与任务说明",
|
|
311
|
+
"composition": "二比一主次区、任务流与状态摘要条",
|
|
312
|
+
"material": "青绿弱填充、清晰分组、适度圆角",
|
|
313
|
+
"scenario": "适合运营排班、供应与项目协同。",
|
|
314
|
+
"accent": "#24665f"
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"id": "app-amber",
|
|
318
|
+
"label": "琥珀工单",
|
|
319
|
+
"ink": "#805c26",
|
|
320
|
+
"canvas": "#f3f0e9",
|
|
321
|
+
"surface": "#fffefa",
|
|
322
|
+
"border": "#d6cbb8",
|
|
323
|
+
"radius": 3,
|
|
324
|
+
"height": 34,
|
|
325
|
+
"width": 1140,
|
|
326
|
+
"padding": 24,
|
|
327
|
+
"gap": 14,
|
|
328
|
+
"columns": "4:4:4",
|
|
329
|
+
"intro": "工单编号与薄型摘要带",
|
|
330
|
+
"composition": "三列短字段、项目名跨列、子表整行",
|
|
331
|
+
"material": "低圆角、琥珀细边、紧凑清单",
|
|
332
|
+
"scenario": "适合设备工单与现场服务。",
|
|
333
|
+
"accent": "#805c26"
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
"id": "app-graphite",
|
|
337
|
+
"label": "石墨数据",
|
|
338
|
+
"ink": "#c7d4dc",
|
|
339
|
+
"canvas": "#171d23",
|
|
340
|
+
"surface": "#242d35",
|
|
341
|
+
"border": "#485863",
|
|
342
|
+
"radius": 4,
|
|
343
|
+
"height": 36,
|
|
344
|
+
"width": 1100,
|
|
345
|
+
"padding": 24,
|
|
346
|
+
"gap": 10,
|
|
347
|
+
"columns": "6:6",
|
|
348
|
+
"intro": "小标题、信息计数与细行分隔",
|
|
349
|
+
"composition": "密集双列与连续数据表、横向标签",
|
|
350
|
+
"material": "石墨层次、细行线、低圆角",
|
|
351
|
+
"scenario": "适合明确要求暗色的数据运营。",
|
|
352
|
+
"accent": "#c7d4dc",
|
|
353
|
+
"contentTone": "dark",
|
|
354
|
+
"navTheme": "dark"
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
"id": "app-plum",
|
|
358
|
+
"label": "绛紫咨询",
|
|
359
|
+
"ink": "#685167",
|
|
360
|
+
"canvas": "#f2eef1",
|
|
361
|
+
"surface": "#fffdfd",
|
|
362
|
+
"border": "#d8cad5",
|
|
363
|
+
"radius": 10,
|
|
364
|
+
"height": 44,
|
|
365
|
+
"width": 1060,
|
|
366
|
+
"padding": 44,
|
|
367
|
+
"gap": 32,
|
|
368
|
+
"columns": "7:5",
|
|
369
|
+
"intro": "衬线标题、导语与双线章节",
|
|
370
|
+
"composition": "接近三比二的咨询内容与上下文分栏",
|
|
371
|
+
"material": "绛紫细线、柔白表面与舒展阅读",
|
|
372
|
+
"scenario": "适合咨询、客户服务与调研。",
|
|
373
|
+
"accent": "#685167",
|
|
374
|
+
"headingFont": "Georgia, 'Songti SC', serif",
|
|
375
|
+
"headingSize": 44,
|
|
376
|
+
"rule": "double"
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"id": "free-creative",
|
|
380
|
+
"label": "自由创意",
|
|
381
|
+
"ink": "#242424",
|
|
382
|
+
"canvas": "#f6f6f6",
|
|
383
|
+
"surface": "#ffffff",
|
|
384
|
+
"border": "#cccccc",
|
|
385
|
+
"radius": 4,
|
|
386
|
+
"height": 36,
|
|
387
|
+
"width": 1000,
|
|
388
|
+
"padding": 24,
|
|
389
|
+
"gap": 20,
|
|
390
|
+
"columns": "12",
|
|
391
|
+
"intro": "从业务内容自主决定介绍的位置与形态",
|
|
392
|
+
"composition": "从任务频率和内容拓扑推导工作区",
|
|
393
|
+
"material": "从品牌与使用环境自主决定材质",
|
|
394
|
+
"scenario": "不从命名模板选择,必须提交独立推演依据。",
|
|
395
|
+
"accent": "#242424",
|
|
396
|
+
"mode": "creative"
|
|
397
|
+
}
|
|
398
|
+
]
|
|
@@ -5,24 +5,28 @@
|
|
|
5
5
|
## 文件职责
|
|
6
6
|
|
|
7
7
|
- [index.json](index.json) 维护主题 ID、用户可读名称、模板路径和选型摘要,`schemaVersion` 为 `2.0`。
|
|
8
|
-
- `<themeId
|
|
9
|
-
-
|
|
8
|
+
- `<themeId>/design.md` 保存完整 V2 主题模板,是视觉规则和 Token 数值的事实源。
|
|
9
|
+
- 每个主题目录统一包含 `design.md`、`app_theme.css`、`form-layout.json` 三个文件;CSS 保留品牌颜色占位,布局文件提供可填入业务字段的组件结构。
|
|
10
|
+
- [basic-tokens.json](basic-tokens.json) 保存 70 个全局变量及固定值,作为模板校验依据。
|
|
10
11
|
- [validate_design_themes.py](../../scripts/validate_design_themes.py) 校验索引、模板及变量引用。
|
|
11
12
|
|
|
12
13
|
每条索引记录包含以下字段:
|
|
13
14
|
|
|
14
15
|
| 字段 | 维护要求 |
|
|
15
16
|
| --- | --- |
|
|
16
|
-
| `themeId` | 唯一的小写连字符 ID,与模板 frontmatter
|
|
17
|
+
| `themeId` | 唯一的小写连字符 ID,与模板 frontmatter 和主题目录名一致 |
|
|
17
18
|
| `label` | 唯一的用户可读名称 |
|
|
18
|
-
| `templatePath` | `templates/design-themes/<themeId
|
|
19
|
-
| `
|
|
19
|
+
| `templatePath` | `templates/design-themes/<themeId>/design.md`,相对公共 `yida-design` 根目录 |
|
|
20
|
+
| `cssTemplatePath` | `templates/design-themes/<themeId>/app_theme.css` |
|
|
21
|
+
| `formLayoutPath` | `templates/design-themes/<themeId>/form-layout.json` |
|
|
22
|
+
| `legacyTemplatePath` | 已迁移主题的原 Markdown 路径,供历史方案读取;新方案使用 `templatePath` |
|
|
23
|
+
| `styleSummary` | 以“深色/浅色导航,深色/浅色内容界面。”开头,再从模板“风格摘要”精简约 150–250 字;使用自然语言,避免把 `dark` 误解为纯黑色,同时保留外观、核心差异、偏离风险与真实内容适用条件 |
|
|
20
24
|
|
|
21
|
-
|
|
25
|
+
34 个主题入口均采用三文件结构,可通过 `sample yida-design application-style --style-id <themeId>` 导出。一条索引记录对应一个主题目录,所有模板均须登记。修改风格摘要后同步修改索引摘要,不增加原文没有的特征或另一组关键词。`openyida design-plan catalog --json` 返回同一份索引;三种设计入口不得维护平行主题清单。主题不按业务领域或产品形态限制候选资格,具体布局与特色表达由真实内容决定。
|
|
22
26
|
|
|
23
27
|
## V2 模板结构
|
|
24
28
|
|
|
25
|
-
Frontmatter 包含 `name`、`description`、`themeId` 和 `tokens
|
|
29
|
+
Frontmatter 包含 `name`、`description`、`themeId`、`navTheme` 和 `tokens`;`navTheme` 只允许 `light` 或 `dark`,并与主题导航 Token 的实际明暗一致。正文依次包含五个章节:
|
|
26
30
|
|
|
27
31
|
1. 风格摘要
|
|
28
32
|
2. 页面视觉系统
|
|
@@ -34,13 +38,14 @@ Frontmatter 包含 `name`、`description`、`themeId` 和 `tokens`。正文依
|
|
|
34
38
|
|
|
35
39
|
## Token 契约
|
|
36
40
|
|
|
37
|
-
`tokens.application-global` 按 `appearance`(含表面和导航)、`colors`、`typography`、`spacing`、`rounded`、`shadow` 分组,完整定义契约中的
|
|
41
|
+
`tokens.application-global` 按 `appearance`(含表面和导航)、`colors`、`typography`、`spacing`、`rounded`、`shadow` 分组,完整定义契约中的 70 个基础变量;这是最小集合,允许按角色补充变量。`tokens.custom-page` 可为空,也可组织跨页面与组件复用的项目扩展变量,包括材质、布局、字体、动效等。两组均写入主题 CSS 的 `:root`,分组不是运行时隔离作用域,变量前缀不限定为 `--oyd-*`。递归读取以 `--` 开头的标量叶子,分组名不拼入 CSS 变量名。
|
|
38
42
|
|
|
39
43
|
- 字体与间距使用契约固定值;页面标题使用 subhead,表格正文使用 table。
|
|
40
44
|
- 颜色与圆角保留主题差异。Tooltip 固定使用 `#262626` 与 `#FFFFFF`。
|
|
41
45
|
- `--color-white` 和 `--pod-table-cell-color` 通过 `var(--pod-card-bg-color)` 继承内容表面;页面桥接 `--oyd-page-bg` 若存在,使用 `var(--pod-page-bg-color)`。
|
|
42
|
-
-
|
|
46
|
+
- `design.md` 与 `app_theme.css` 中,`--color-brand1-6` 保留 `{{PRIMARY_COLOR}}`,`--color-brand1-1` 保留品牌悬停色的同源生成占位,其他品牌档位也由主色种子推导。`<生成实际色值:…>` 属于推导指令,项目化时替换为实际 CSS 值。先完成项目 `design.md`,再运行 `sample yida-design app-theme --design-file <design.md> --output <app_theme.css>`;该命令会替换导出 CSS 的占位。
|
|
43
47
|
- 变量名在两层及各分组中均唯一;平台基础与项目扩展均在主题中声明,可无环引用,并按实际设计补充变量。声明与正文中的引用必须存在,不得循环引用,不使用后缀缩写或 `*` 通配写法。
|
|
48
|
+
- 原生导航选中项阴影统一由 `--pod-nav-menu-item-selected-shadow` 控制;不需要额外标记的主题显式写 `none`,需要标记的主题写完整 `box-shadow` 值。该值不绑定方向:左、右、下强调线分别使用正水平偏移、负水平偏移、负垂直偏移的 `inset` 阴影。公共 CSS 模板负责消费该变量,主题模板不保存平台 DOM 选择器。
|
|
44
49
|
- 标量可用双引号、单引号或普通 CSS 文本;数字可以不加引号。不使用 YAML 数组、别名、标签或多行标量。
|
|
45
50
|
|
|
46
51
|
## 项目化占位符
|
|
@@ -63,6 +68,6 @@ npm run check:skills
|
|
|
63
68
|
|
|
64
69
|
校验器只依赖 Python 3.9+ 标准库;`check:skills` 自动尝试 `python3`、`python`、Windows 的 `py -3`,找不到可用解释器时明确失败,不能跳过。`check:ci` 已包含 `check:skills`。
|
|
65
70
|
|
|
66
|
-
`check:skills` 还通过 CLI 的公共主题校验检查 `references/theme/app-custom-theme-template.css
|
|
71
|
+
`check:skills` 还通过 CLI 的公共主题校验检查 `references/theme/app-custom-theme-template.css`,包括括号、字符串和注释闭合、品牌色阶及受限内容。主题生成测试检查全部主题的 token 位于顶层 `:root`,并保留白色、灰色导航的变量引用与回退链;不能用正则匹配到变量代替作用域验证。
|
|
67
72
|
|
|
68
73
|
校验覆盖索引与模板一一对应、ID 和路径安全、五章节与四个项目占位符、分组变量声明、固定值、同源关系、未知与循环引用。测试使用真实共享库,并以缺失字段、非法路径、固定值漂移和错误引用等坏样例验证错误能被拦截。
|