Quartz design language

设计基础与主题合同

Quartz 保留可拥有代码的开放性、可靠的交互语义与企业产品需要的状态覆盖, 再用一套克制的材质、节奏和系统偏好形成自己的界面语言。

01

Token 先于装饰

先建立可命名、可替换的语义关系,再决定一个界面看起来如何。

02

材质必须解释层级

透明度只用于浮层与空间分离,不把整页变成失去边界的玻璃。

03

动效说明状态

进入、选择与反馈都要有原因,并服从 reduced motion 或 none。

04

可访问性写进合同

键盘、焦点、语义、强制色与触控尺寸属于组件 API 的基础能力。

Semantic tokens

从四类 Token 建立层级

组件只消费语义 Token,不把一次性的颜色、间距或阴影决定写死在局部实现中。

颜色

--quartz-color-*

用 background、surface、foreground、border 与状态色表达语义层级。

排版

font + line-height

正文保持高可读性;编辑式衬线只承担标题与品牌节奏。

间距

--quartz-density-*

间距与控件高度跟随密度轴,同时保留触控目标的最低尺寸。

圆角与阴影

--quartz-radius-* / --quartz-shadow-*

圆角区分控件与表面,阴影只用于确实发生的空间抬升。

Public ThemeProvider API

四个独立主题轴

下表与公开 ThemeProvider 类型保持一致。每个轴都能单独选择系统偏好或显式值。

Quartz ThemeProvider 的公开可选值
属性公开值
themelight · dark · system
densitycompact · default · comfortable
motionsystem · reduced · none
transparencysystem · reduced · none

Choosing axes

让系统偏好与产品语境共同决定

密度怎么选

default 适合大多数产品;compact 用于高频桌面数据工作;comfortable 给低频任务更多呼吸空间,但不要缩小触控目标。

动效怎么选

system 跟随操作系统;reduced 保留必要状态反馈;none 关闭非必要动画并让状态立即到达终点。

透明度怎么选

system 跟随用户偏好;reduced 降低环境光干扰;none 使用完全实色表面。文字对比不能依赖背景模糊。

Material recipe

一层清晰边界,两层环境光

Quartz 的半透明材质只用于需要强调空间关系的局部表面,并且在透明度关闭、 强制色或不支持模糊的环境中退回清晰实色。

Quartz materialClarity over spectacle.
边界负责识别,环境光只负责提示层级。

Accessibility foundation

可访问性检查清单

  • 只用键盘即可到达、操作并离开每个交互区域。
  • 可见焦点不会被粘性页头、浮层或装饰性材质遮挡。
  • 标题、列表、表格与状态反馈使用原生语义和准确名称。
  • 文字与状态不只依赖颜色,强制色模式仍保留可辨识边界。
  • 动效与透明度同时尊重系统偏好和 ThemeProvider 的显式 none。
  • 窄至 320px 时内容仍能重排,触控目标保持可操作尺寸。