Files
hms/.claude/skills/design-handoff/defaults/tokens.yml
iven 6151fde7c4 fix(skills): 修复 design-handoff 医生端原型输出质量
- match-tokens: alias 增加值条件映射,支持 doctor/patient variant 自动检测
- parse-prototype: 支持 IosFrame label prop 提取(JSX 属性模式)
- interaction-rules: login-cta 增加 exclude_patterns 避免"立即关注"误报
- tokens.yml: T.pri/T.priL/T.priD alias 改为数组格式,按值匹配 variant

验证: 患者端 T.pri→--tk-pri 确认,医生端 T.pri→--tk-pri.doctor 确认
2026-05-18 01:00:20 +08:00

424 lines
9.3 KiB
YAML
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.
version: 1
updated: "2026-05-17"
# ============================================================================
# Design Token 注册表
# 数据源: apps/miniprogram/src/styles/tokens.scss + variables.scss
# ============================================================================
colors:
# --- 主色系(赤土橙) ---
- token: --tk-pri
value: "#C4623A"
scss_var: "$pri"
role: 主色/赤土橙 accent
- token: --tk-pri-l
value: "#F0DDD4"
scss_var: "$pri-l"
role: 主色浅/赤土浅
- token: --tk-pri-d
value: "#8B3E1F"
scss_var: "$pri-d"
role: 主色深/赤土深
# --- 阴影色(含透明度) ---
- token: --tk-shadow-btn
value: "0 4px 16px rgba(196, 98, 58, 0.3)"
scss_var: "$shadow-btn"
role: 主按钮阴影
- token: --tk-shadow-tab
value: "0 2px 8px rgba(196, 98, 58, 0.25)"
scss_var: "$shadow-tab"
role: 选中Tab阴影
# --- 文字色 ---
- token: --tk-text-secondary
value: "#78716C"
scss_var: "$tx3"
role: 淡文字/辅助文字
# --- 卡片背景 ---
- token: --tk-card-bg
value: "#FFFFFF"
scss_var: "$card"
role: 卡片白底
# --- 医生端覆盖色(.doctor-mode 下自动替换 --tk-pri* ---
- token: --tk-pri.doctor
value: "#3A6B8C"
scss_var: "$doc-pri"
role: 医生端主色/靛蓝
note: 仅在 .doctor-mode 下覆盖 --tk-pri
- token: --tk-pri-l.doctor
value: "#D4E5F0"
scss_var: "$doc-pri-l"
role: 医生端浅色
- token: --tk-pri-d.doctor
value: "#2A4F6A"
scss_var: "$doc-pri-d"
role: 医生端深色
# --- 未映射到 Token 的 SCSS 变量(原型中有但 tokens.scss 未声明为 CSS 变量) ---
unmapped_scss_variables:
- scss_var: "$bg"
value: "#F5F0EB"
role: 页面主背景/温润米底
note: "原型 T.bg 映射目标tokens.scss 未声明为 CSS 变量"
- scss_var: "$tx"
value: "#2D2A26"
role: 主文字色/暖黑
note: "原型 T.tx 映射目标tokens.scss 未声明为 CSS 变量"
- scss_var: "$tx2"
value: "#5A554F"
role: 次文字色/暖灰
note: "原型 T.tx2 近似映射elder-mode 下 --tk-text-secondary 覆盖为此值"
- scss_var: "$bd"
value: "#E8E2DC"
role: 边框色
note: "原型 T.bd 映射目标tokens.scss 未声明为 CSS 变量"
- scss_var: "$bd-l"
value: "#F0EBE5"
role: 浅边框色
- scss_var: "$acc"
value: "#5B7A5E"
role: 鼠尾草绿/成功色
note: "原型中成功色tokens.scss 未声明为 CSS 变量"
- scss_var: "$acc-l"
value: "#E8F0E8"
role: 成功浅色
- scss_var: "$dan"
value: "#B54A4A"
role: 危险色/柔红
note: "原型中危险色tokens.scss 未声明为 CSS 变量"
- scss_var: "$dan-l"
value: "#FDEAEA"
role: 危险浅色
- scss_var: "$wrn"
value: "#C4873A"
role: 警告色/暖琥珀
note: "原型中警告色tokens.scss 未声明为 CSS 变量"
- scss_var: "$wrn-l"
value: "#FFF3E0"
role: 警告浅色
- scss_var: "$surface-alt"
value: "#EDE8E2"
role: 辅助底色
- scss_var: "$wechat"
value: "#07C160"
role: 微信绿
typography:
- token: --tk-font-display
value: "72px"
note: 大屏展示
elder: "80px"
- token: --tk-font-hero
value: "48px"
note: 启动页标题
elder: "56px"
- token: --tk-font-h1
value: "28px"
note: 页面标题 serif bold
elder: "32px"
- token: --tk-font-h2
value: "22px"
note: 副标题、用户名 serif bold
elder: "25px"
- token: --tk-font-body-lg
value: "18px"
note: 按钮文字、section 标题 fontWeight:600
elder: "22px"
- token: --tk-font-body
value: "16px"
note: 正文、输入框、icon 文字(最常用 UI 字号)
elder: "22px"
- token: --tk-font-body-sm
value: "14px"
note: 副文本、描述
elder: "19px"
- token: --tk-font-num
value: "30px"
note: 数值 serif bold
elder: "34px"
- token: --tk-font-num-lg
value: "34px"
note: 大数值
elder: "40px"
- token: --tk-font-cap
value: "13px"
note: 说明文字(第一高频字号)
elder: "18px"
- token: --tk-font-nav
value: "18px"
note: 导航栏标题 serif bold
elder: "22px"
- token: --tk-font-micro
value: "11px"
note: 角标、tag
elder: "17px"
structure:
- token: --tk-line-height
value: "1.5"
elder: "1.7"
spacing:
- token: --tk-gap-2xs
value: "4px"
scss_var: "$sp-2xs"
elder: "6px"
- token: --tk-gap-xs
value: "8px"
scss_var: "$sp-xs"
elder: "12px"
- token: --tk-gap-sm
value: "12px"
scss_var: "$sp-sm"
elder: "16px"
- token: --tk-gap-md
value: "16px"
scss_var: "$sp-md"
elder: "20px"
- token: --tk-section-gap
value: "20px"
scss_var: "$sp-section"
elder: "28px"
- token: --tk-gap-lg
value: "24px"
scss_var: "$sp-lg"
elder: "32px"
- token: --tk-gap-xl
value: "32px"
scss_var: "$sp-xl"
elder: "40px"
- token: --tk-gap-2xl
value: "48px"
scss_var: "$sp-2xl"
elder: "56px"
- token: --tk-page-padding
value: "20px"
elder: "28px"
- token: --tk-card-padding
value: "20px"
elder: "28px"
- token: --tk-card-padding-sm
value: "16px"
elder: "20px"
- token: --tk-card-padding-lg
value: "28px"
elder: "36px"
radius:
- token: --tk-card-radius
value: "16px"
scss_var: "$r"
elder: "20px"
radius_unmapped:
- scss_var: "$r-sm"
value: "12px"
note: "原型 T.rSm 映射目标"
- scss_var: "$r-xs"
value: "8px"
note: "原型 T.rXs 映射目标"
- scss_var: "$r-lg"
value: "20px"
- scss_var: "$r-pill"
value: "999px"
sizing:
- token: --tk-touch-min
value: "48px"
role: 最小触控区
elder: "56px"
- token: --tk-btn-primary-h
value: "52px"
role: 主按钮高度
elder: "60px"
- token: --tk-input-height
value: "56px"
role: 输入框高度
elder: "64px"
- token: --tk-tabbar-space
value: "100px"
role: TabBar 底部安全区
elder: "120px"
feedback:
- token: --tk-touch-feedback-opacity
value: "0.85"
role: 触控反馈透明度
elder: "0.8"
tag:
- token: --tk-tag-font-size
value: "11px"
elder: "13px"
- token: --tk-tag-padding-v
value: "3px"
elder: "5px"
- token: --tk-tag-padding-h
value: "8px"
elder: "12px"
shadow_unmapped:
# tokens.scss 中的 --tk-shadow-btn/tab 是复合值(含偏移+模糊+颜色)
# 以下为 variables.scss 中的其他阴影,未声明为 CSS Token
- scss_var: "$shadow-sm"
value: "0 1px 4px rgba(45, 42, 38, 0.06)"
role: 小阴影
- scss_var: "$shadow-md"
value: "0 2px 12px rgba(45, 42, 38, 0.10)"
role: 中阴影
- scss_var: "$shadow-lg"
value: "0 8px 32px rgba(45, 42, 38, 0.15)"
role: 大阴影
# ============================================================================
# 原型 Key → Token 映射aliases
# 用于设计移交时自动匹配原型属性到实际 Token
# ============================================================================
aliases:
prototype_keys:
T.pri:
- value: "#C4623A"
token: --tk-pri
status: exact_match
variant: patient
- value: "#3A6B8C"
token: --tk-pri.doctor
status: exact_match
variant: doctor
T.priL:
- value: "#F0DDD4"
token: --tk-pri-l
status: exact_match
variant: patient
- value: "#D4E5F0"
token: --tk-pri-l.doctor
status: exact_match
variant: doctor
T.priD:
- value: "#8B3E1F"
token: --tk-pri-d
status: exact_match
variant: patient
- value: "#2A4F6A"
token: --tk-pri-d.doctor
status: exact_match
variant: doctor
T.bg:
token: null
nearest: --tk-card-bg
scss_var: "$bg"
value: "#F5F0EB"
status: unmatched
note: "原型页面背景色tokens.scss 未声明为 CSS 变量,直接用 $bg SCSS 变量"
T.card:
token: --tk-card-bg
status: exact_match
T.surface:
token: --tk-card-bg
status: approximate
note: "原型中 surface ≈ 卡片白底"
T.tx:
token: null
nearest: --tk-text-secondary
scss_var: "$tx"
value: "#2D2A26"
status: unmatched
note: "主文字色tokens.scss 未声明为 CSS 变量,直接用 $tx SCSS 变量"
T.tx2:
token: null
nearest: --tk-text-secondary
scss_var: "$tx2"
value: "#5A554F"
status: unmatched
note: "次文字色tokens.scss 未声明elder-mode 下 --tk-text-secondary 覆盖为此值"
T.tx3:
token: --tk-text-secondary
scss_var: "$tx3"
value: "#78716C"
status: exact_match
T.bd:
token: null
scss_var: "$bd"
value: "#E8E2DC"
status: unmatched
note: "边框色不是圆角tokens.scss 未声明为 CSS 变量"
T.r:
token: --tk-card-radius
scss_var: "$r"
value: "16px"
status: exact_match
T.rSm:
token: null
scss_var: "$r-sm"
value: "12px"
status: unmatched
note: "tokens.scss 未声明,需添加 --tk-radius-sm 或直接用 $r-sm SCSS 变量"
T.rXs:
token: null
scss_var: "$r-xs"
value: "8px"
status: unmatched
note: "tokens.scss 未声明,需添加 --tk-radius-xs 或直接用 $r-xs SCSS 变量"