Files
kyugao f1e7e785a1 docs(迭代09/10): Tab 设置统一管理 + UI 主题适配 全量文档
迭代09 (R-011 Tab 设置统一管理):
- 需求 R-011 (定稿 Q1-Q5) + 需求池索引
- 计划 PLAN-010 + 迭代09 四件套 (目标/技术方案/验收/复盘)
- 约束: 产品约束-009 / UI约束-003 / 技术约束-014
- UI约束-002 修订: 通用设置→Tab 设置

迭代10 (R-012 UI 适配 DSH 主题):
- 需求 R-012 (定稿: 暂定跟随系统) + 需求池索引
- 计划 PLAN-011 + 迭代10 四件套
- 约束: UI约束-004 (主题适配约定)
2026-09-02 14:01:08 +08:00

2.3 KiB
Raw Permalink Blame History

技术实现方案:10-UI 适配 DSH 主题

迭代编号:10 依据:PLAN-011、R-012

1. 主题机制(已查明)

  • 宿主深色主题挂 body[data-ds-dark-theme]
  • 宿主注入 --dsw-* CSS 变量(定义在宿主 runtime,随 light/dark/system 切换);
  • 插件内联 style 直接引用 var(--dsw-alias-xxx) 即可自动适配。

2. 语义映射(实施基准,来自 R-012)

背景:      #fff(表面) → var(--dsw-alias-bg-layer-1)
遮罩:      rgba(0,0,0,.4) → var(--dsw-alias-bg-mask-1)
hover面:   #f5f5f5 → var(--dsw-alias-interactive-bg-hover)
激活绿底:  #e8f5e9/#f1f8f2 → color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent)
错误红底:  #fdecea → color-mix(in srgb, var(--dsw-alias-state-error-primary) 10%, transparent)
信息蓝底:  #e3f2fd → color-mix(in srgb, var(--dsw-alias-state-business-primary) 10%, transparent)
主文字:    #333/#222 → var(--dsw-alias-label-primary)
次文字:    #555/#666 → var(--dsw-alias-label-secondary)
弱文字:    #888/#999/#aaa → var(--dsw-alias-label-tertiary)
蓝字:      #1565c0 → var(--dsw-alias-state-business-primary)
细线:      #eee → var(--dsw-alias-border-l1)
描边:      #ddd/#ccc → var(--dsw-alias-border-l2)
红(涨/错/删): #d32f2f/#c62828 → var(--dsw-alias-state-error-primary)
绿(跌/成/主): #2e7d32 → var(--dsw-alias-state-success-primary)
实心按钮字: #fff → var(--dsw-alias-button-contrast-fill)

3. 替换细则

  • 替换范围:inline style 对象、模板字符串中的颜色字面量;
  • color-mix(in srgb, var(--xxx) 10%, transparent) 用于需要「淡底 + 文字同色」的提示/激活态;
  • 带透明度的原色(如 rgba(255,215,0,.5) 价格闪动高亮)保留动画语义,改 color-mix(in srgb, var(--dsw-alias-state-warn-primary) 50%, transparent)
  • 注释中色值仅作说明可保留(不影响运行,验收时以无运行色为准);
  • 每文件替换后 node --check 校验 JSX 语法。

4. 风险

  • 语义偏差:个别颜色无法精确定位语义 → 保留原色并在验收清单标注,交老师确认;
  • color-mix 兼容性:现代浏览器(Chrome 111+/Safari 16.2+)支持,DSH 目标为 Chromium 系,可接受;
  • fallbackvar(--xxx, <原色>) 提供兜底,宿主 token 缺失时视觉不变(更安全)。