feat(harmony): 对齐第一阶段 + 对齐计划文档(差距/分期/验收纪律)

用户:「安排对齐」。

## 先量差距(不靠感觉)

鸿蒙侧的调色板与 WebUI **根本不同**:`#1A73E8`(Google 蓝)vs 品牌 `#2563EB`、
`#333333` vs slate-900 `#0F172A`、`#F5F7FA` vs `#F8FAFC`、`#FF4444` vs red-600…
共 217 处硬编码色值散在 7 个页面里。

功能面:鸿蒙是 收件箱/会话/联系人 三个 tab,**缺 发件箱 / 授权 / 日历 / 管理**,
也没有玻璃悬浮底栏、主题壁纸同步、Composer 共用组件。

## 第一阶段(已完成并可验收)

- `common/Theme.ets` 补齐文字/浅底/语义令牌,页面里的旧调色板**全量替换为令牌**
  (共 203 处),`hvigorw assembleHap` **BUILD SUCCESSFUL**。
- 判据:`cross-client-theme.test.mjs` 新增"鸿蒙页面里不得再出现旧调色板色值"
  (6 条全绿,含扰动自检)。这条防的是**新页面又随手写个"差不多"的颜色** ——
  漂移就是这么开始的,而此前没有任何判据会红。

## 计划文档:docs/HARMONY-ALIGN-PLAN.md

写清两件事,免得每轮重新猜"还差什么":

- **差距表**(逐项,标出"缺页面/交互不同/观感不同"的性质);
- **分期**:P2 发件箱(与收件箱同构,风险最低)→ P3 授权页(备注必须随决策送达模型
  —— WebUI 侧踩过这个坑)→ P4 主题/壁纸同步(服务端"无记录"时以本地为准)
  → P5 玻璃悬浮导航 → P6 日历(最大,单独排)。

## 如实说明

鸿蒙**视觉未验证**:本机 `hdc list targets` 为空、HAP 未签名 ⇒ 只能保证编译通过 +
令牌一致,观感需要设备或签名后由人眼确认。文档里也把这条写进"验收纪律"。
This commit is contained in:
2026-09-14 12:49:40 +08:00
parent cefd96a6a3
commit 5434bc9e4e
10 changed files with 275 additions and 182 deletions

View File

@ -31,6 +31,13 @@ export class Theme {
static readonly navFg: string = '#475569';
static readonly navFgActive: string = '#1E40AF';
/** 文字:主 / 次 / 弱(对应 WebUI 的 slate-900 / slate-500 / slate-400) */
static readonly textPrimary: string = '#0F172A';
static readonly textMuted: string = '#64748B';
static readonly textSubtle: string = '#94A3B8';
/** 品牌蓝的浅底(对应 WebUI 的 blue-50,用于高亮条/选中行) */
static readonly accentSoft: string = '#EFF6FF';
/** 品牌蓝(按钮、链接、焦点环) */
static readonly accent: string = '#2563EB';
static readonly accentFg: string = '#FFFFFF';
@ -38,6 +45,9 @@ export class Theme {
static readonly approve: string = '#15803D';
static readonly danger: string = '#B91C1C';
static readonly dangerBg: string = '#FEF2F2';
/** 成功的浅底(对应 WebUI 的 green-50 / green-700) */
static readonly approveBg: string = '#F0FDF4';
static readonly approveFg: string = '#15803D';
/** 圆角:卡片 14、控件 8(与 WebUI 的 --radius-card / --radius-control 一致) */
static readonly radiusCard: number = 14;