一套变量,两种光线。
下面的按钮、输入框、卡片和表格只引用 --color-* 语义变量。切换主题只是改写 <html data-theme>,组件 CSS 一行不动;你的选择会写进 localStorage,刷新后依旧生效。
- 语义 token / 套
- —
- 原始色阶
- —
- 主题
- 2套
- 最低正文对比度
- —
- 组件 CSS 硬编码色值
- —
01 · Buttons
按钮Button
六种变体、三种尺寸和完整的交互状态。背景、文字、描边都来自语义 token;点一下“变体”一行的按钮,会提示它引用了哪些变量。
--color-accent--color-accent-hover--color-on-accent--color-accent-soft--color-danger--color-focus
02 · Inputs
输入Form controls
聚焦时描边切到 --color-accent,外圈用 --color-focus-ring;校验失败整体换成 danger 系列。试着把服务名改成表格里已有的 payment-gateway。
--color-input-bg--color-border-strong--color-focus-ring--color-text-subtle--color-track--color-knob
03 · Cards
卡片Card
数据卡片、内容卡片和消息卡片共用 --color-surface、--color-border 与阴影 token。“团队版”卡片给自己设了相反的 data-theme,同一套变量在子树里局部换成另一套主题。
--color-surface--color-border--shadow-md--color-accent-subtle--color-success-soft--color-danger-soft
支付网关 v3 重构
拆分结算与对账链路,统一接入鉴权与限流中间件。
林知夏
设计系统负责人
平台体验组 · 杭州
为 5–200 人的产品团队准备,设计稿与代码共用同一套 token。
- 无限项目与成员
- light / dark 双主题同步
- 导出 CSS 变量与 JSON
- SSO 与审计日志
局部主题:data-theme="dark"
消息中心
v2.5 预告:新增 6 个 token
表格密度与焦点外圈将独立成变量。
部署成功
payment-gateway 已上线华东生产环境。
CPU 配额告警
search-indexer 连续 15 分钟高于 80%。
构建失败
media-transcoder 有 2 个测试未通过。
04 · Table
表格Data table
可搜索、筛选、排序、分页和多选。悬停行用 --color-hover,选中行用 --color-accent-subtle,状态徽标来自四组状态色。按 / 直接搜索。
--color-surface-sunken--color-hover--color-accent-subtle--color-success-soft--color-warning-soft--color-info-soft
| 区域 | 操作 |
|---|
05 · Tokens
Token 参考light ↔ dark
每格左半是 light、右半是 dark:两块颜色是同一个变量在不同 data-theme 子树里的求值结果,色值和引用关系直接从页面样式表读取。“当前”标出正在使用的一半,格内数字是 WCAG 对比度。
原始色板→ 语义 token→ 组件
原始色板 Primitives
圆点 = 当前主题的语义 token 正在引用的色阶,切换主题时会移动
尺度 Scales
圆角、字号、间距两套主题共用;阴影属于语义层,深色主题下更深更实。
圆角 --radius-*
阴影 --shadow-*
字号 --text-*
2xl 28xl 20lg 16md 14sm 13xs 12