Files
one_divine_lot/docs/04-迭代记录/10-UI主题适配/技术实现方案.md
T
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

44 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 技术实现方案: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 系,可接受;
- **fallback**`var(--xxx, <原色>)` 提供兜底,宿主 token 缺失时视觉不变(更安全)。