排版、空间与材质
字体角色
| Token | 值 | 用途 |
|---|---|---|
--ref-font-ui | Inter, "SF Pro Text", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif | Shell、表单、表格 |
--ref-font-document | "Source Han Serif SC", "Noto Serif SC", Georgia, serif | 合同、判决书、长文阅读 |
--ref-font-mono | "SFMono-Regular", "JetBrains Mono", Consolas, monospace | 代码、案号、机器标识 |
衬线字体不进入 App Shell、表单和数据表格。金额、日期、统计和案号启用 tabular numbers。
字号与排版
| Token | px | 用途 |
|---|---|---|
--ref-type-100 | 10 | 非关键分组标签,仅桌面 |
--ref-type-200 | 11 | 辅助信息、时间戳 |
--ref-type-300 | 12 | 标签、按钮辅助、状态 |
--ref-type-400 | 13 | Compact 表格正文 |
--ref-type-500 | 14 | 默认 UI 正文 |
--ref-type-600 | 16 | 强调正文、小标题 |
--ref-type-700 | 18 | 区块标题 |
--ref-type-800 | 24 | 页面标题 |
--ref-type-900 | 28 | 关键页面标题 |
--ref-type-1000 | 36 | Identity/营销大标题,业务页少用 |
| Role | Weight | Line Height |
|---|---|---|
| Body | 400 | 1.5 |
| Label / Button | 500 | 1.4 |
| Heading | 600 | 1.25 |
| Strong Heading | 650(可变字体)或 600 | 1.2 |
10px 不得承载操作、错误、正文或关键数据;不使用 300 细字。
Reference 间距
Reference spacing 不被 Theme 或 Density 改写。
| Token | px | Token | px |
|---|---|---|---|
--ref-space-0 | 0 | --ref-space-0-5 | 2 |
--ref-space-1 | 4 | --ref-space-1-5 | 6 |
--ref-space-2 | 8 | --ref-space-3 | 12 |
--ref-space-4 | 16 | --ref-space-5 | 20 |
--ref-space-6 | 24 | --ref-space-8 | 32 |
--ref-space-10 | 40 | --ref-space-12 | 48 |
--ref-space-16 | 64 |
圆角
| Token | px | 用途 |
|---|---|---|
--ref-radius-none | 0 | 连续表格面 |
--ref-radius-control | 4 | Input、Select、Tag、Checkbox |
--ref-radius-panel | 6 | Button、Panel、Card |
--ref-radius-overlay | 8 | Dialog、Sheet、Popover |
--ref-radius-feature | 12 | 少量展示面 |
--ref-radius-full | 9999 | Avatar、圆形图标 |
不使用一个全局半径同比例缩放所有组件,也不把大圆角卡片墙当作默认页面结构。
Elevation
| Token | 值 | 用途 |
|---|---|---|
--sys-elevation-0 | none | 默认工作面,以边界区分 |
--sys-elevation-1 | 0 1px 2px rgb(13 20 26 / 5%) | 静态抬升 |
--sys-elevation-2 | 0 4px 12px rgb(13 20 26 / 8%) | Dropdown、Popover |
--sys-elevation-3 | 0 8px 24px rgb(13 20 26 / 10%), 0 2px 6px rgb(13 20 26 / 6%) | Dialog |
--sys-elevation-sheet | -12px 0 36px rgb(13 20 26 / 14%), -2px 0 8px rgb(13 20 26 / 7%) | 右侧 Sheet |
暗色模式使用中性黑色和独立透明度映射。禁止品牌色阴影、彩色发光和装饰性玻璃。
Motion 与 z-index
| Token | 值 | 用途 |
|---|---|---|
--ref-duration-instant | 0ms | 无动画状态 |
--ref-duration-fast | 120ms | hover、focus、颜色 |
--ref-duration-standard | 180ms | Popover、局部展开 |
--ref-duration-structural | 240ms | Sidebar、Sheet、Dialog |
--ref-ease-out | cubic-bezier(0.16, 1, 0.3, 1) | 进入与响应 |
--ref-ease-standard | cubic-bezier(0.4, 0, 0.2, 1) | 对称变化 |
| base | sticky | dropdown | overlay | dialog | toast | tooltip |
|---|---|---|---|---|---|---|
| 0 | 100 | 400 | 600 | 700 | 800 | 900 |
prefers-reduced-motion 下结构动效降为 instant。业务页面不得创建高于 Tooltip 的局部层级。
全局组件 Token
全局组件 Token 不随密度变化,定义壳层、页面和面板的固定尺寸:
| Token | 值 | 用途 |
|---|---|---|
--cmp-shell-padding-inline | 16px | 应用壳层左右内边距 |
--cmp-page-max-width-standard | 100rem | 标准页面最大宽度 |
--cmp-page-max-width-comfortable | 60rem | 阅读型页面最大宽度 |
--cmp-panel-min-width | 15rem | 多栏面板最小宽度 |
--cmp-panel-default-width | 20rem | 多栏面板默认宽度 |
--cmp-panel-max-width | 30rem | 多栏面板最大宽度 |
--cmp-panel-narrow-min-width | 12.5rem | 窄面板最小宽度 |
Density
Density 有四档:dense、compact、comfortable、spacious。dense 面向高密表格与批量操作桌面场景,spacious 面向触摸与无障碍放大场景。
| Component Semantic | Dense | Compact | Comfortable | Spacious |
|---|---|---|---|---|
--cmp-control-height | 24px | 32px | 40px | 48px |
--cmp-control-font-size | 13px | 14px | 14px | 16px |
--cmp-control-line-height | 16px | 20px | 20px | 24px |
--cmp-table-header-height | 28px | 36px | 44px | 52px |
--cmp-table-row-height | 28px | 36px | 48px | 52px |
--cmp-table-row-height-two-line | 40px | 48px | 60px | 64px |
--cmp-table-cell-padding-x | 6px | 12px | 16px | 20px |
--cmp-table-cell-padding-y | 2px | 6px | 10px | 12px |
--cmp-field-gap | 6px | 12px | 16px | 20px |
--cmp-field-min-width | 144px | 160px | 176px | 192px |
--cmp-section-gap | 8px | 16px | 24px | 32px |
--cmp-workspace-page-padding | 12px | 16px | 20px | 24px |
--cmp-panel-header-height | 36px | 40px | 44px | 48px |
--cmp-panel-header-padding-x | 8px | 12px | 16px | 20px |
--cmp-panel-header-padding-y | 4px | 6px | 8px | 10px |
--cmp-panel-body-padding-x | 8px | 12px | 16px | 20px |
--cmp-panel-body-padding-y | 8px | 12px | 16px | 20px |
--cmp-panel-handle-width | 4px | 4px | 4px | 4px |
--cmp-panel-handle-hit-width | 12px | 12px | 12px | 12px |
--cmp-panel-collapsed-rail-width | 48px | 48px | 48px | 48px |
--cmp-panel-collapse-icon-size | 16px | 16px | 18px | 18px |
Density 覆盖控件、表格、字段、面板和工作区的语义尺寸。它不改字体家族、品牌色、Reference spacing 或页面结构。control-font-size 与 control-line-height 随密度变化,受无障碍 fontScale 轴进一步放大。Dense 档可操作目标仍不得小于 24px,视觉行高与交互热区分开计算。
Button、Input、Select、Table、Query Toolbar 和 Panel 必须直接消费这些 Component Token;仅切换 data-density 属性、但实际几何尺寸不变,不算完成密度适配。
消费示例
表格 primitive 直接读取密度感知的 Component Token。切换根节点 data-density 后,行高、
padding 与字号会同步变化,不需要在组件里维护四套 class:
/* 表格几何值由当前 Density 映射,不读取 Reference spacing。 */.data-cell { min-block-size: var(--cmp-table-row-height); padding: var(--cmp-table-cell-padding-y) var(--cmp-table-cell-padding-x); font-size: var(--cmp-control-font-size); line-height: var(--cmp-control-line-height);}结构动画与抬升使用 System Token。data-reduce-motion=true 或系统减少动效偏好会把 System
时长映射到 instant,业务组件无需另写一份动画分支:
/* Sheet 的尺寸、阴影和动效都由稳定语义角色控制。 */.operation-sheet { inline-size: clamp( var(--cmp-panel-min-width), var(--cmp-panel-default-width), var(--cmp-panel-max-width) ); box-shadow: var(--sys-elevation-sheet); transition-duration: var(--sys-duration-structural);}