Skip to content

设计令牌

设计令牌(Design Tokens)是 xiaoye-components 视觉体系的基础构建块。整套令牌以 Stripe 设计语言为蓝本(参考 design.hagicode.com 收录的 Stripe DESIGN.md 及其官方亮/暗双 token 目录),采用三层架构,所有组件样式都基于这些 CSS 变量,覆盖它们即可实现全局主题定制。

三层架构

基元层  --xy-{色板}-{阶}     灰/紫/绿/琥珀/红/蓝 六族色板,双主题共享
语义层  --xy-{角色}[-{状态}]  文字、背景、边框、品牌、状态、海拔、层级
刻度层  --xy-{刻度}-{档}     字号、字重、行高、间距、圆角、动效
  • 基元层是原料:只描述"颜色本身",不携带用途,主题切换时不覆写。
  • 语义层是合同:组件只消费语义层,描述"这个位置用什么"。暗色主题只覆写语义层。
  • 刻度层与主题无关:字号、间距、圆角在亮暗主题间共享。

单一事实源是 tokens.csspackages/tokens 的 TS 常量层由 node scripts/generate-tokens.mjs 从它生成。

颜色系统

品牌色

锚点取自 Stripe 官方值:主色 #533afd(stripe purple)、hover #4434d4、激活 #2e2b8c

变量名亮色值用途
--xy-brand#533afd主色:按钮、链接、选中态
--xy-brand-hover#4434d4主色悬停
--xy-brand-active#2e2b8c主色按下
--xy-brand-softrgba(83,58,253,0.07)主色浅底
--xy-brand-soft-hoverrgba(83,58,253,0.12)主色浅底悬停
--xy-brand-border#b9b9f9主色描边(ghost 按钮、选中边框)
--xy-brand-contrast#ffffff主色上的反衬色

暗色主题下品牌色整体提亮为 #665efd / #7a73ff / #533afd(官方暗色目录值),soft 变体改用品牌色 alpha。

状态色

每个状态色都是 {base, hover, active, soft, soft-hover, text} 六件套,命名完全一致:

变量名前缀base(亮色)text(亮色)语义
--xy-success-#15be53#108c3d成功
--xy-warning-#b8862f#7a5320警告(Stripe lemon)
--xy-danger-#ea2261#c81a50危险(Stripe ruby)
--xy-info-#2b91df#2874ad信息

-soft / -soft-hover 使用状态色 alpha(0.12 / 0.2,官方 sanctioned 区间),在任何表面上都能正确混色;-text 用于浅底上的状态文字。

基元色板

六族色板,命名 --xy-{族}-{阶},阶号越大颜色越深:

阶范围锚点(官方值)
--xy-gray-25–950中性灰带海军蓝底色:200 #e5edf5(边框)、500 #64748d(正文)、700 #273951(标签)、950 #061b31(标题)
--xy-purple-50–950品牌紫:600 #533afd、700 #4434d4、950 #1c1e54(brand dark)
--xy-green-50–800成功绿:500 #15be53、600 #108c3d
--xy-amber-50–800柠檬琥珀:400 #d4a04a、600 #9b6829
--xy-red-50–800宝石红:500 #ea2261
--xy-blue-100–800信息蓝:500 #2b91df、600 #2874ad

文字色

变量名亮色值用途
--xy-text-heading#061b31标题(深海军蓝,不用纯黑)
--xy-text-primary#061b31默认正文、控件值
--xy-text-secondary#273951表单标签、次级强调
--xy-text-muted#64748d描述、说明、占位
--xy-text-faint#a3b1c2最弱元数据
--xy-text-disabled#d4dee9禁用态
--xy-text-on-fill#ffffff实色块上的文字(双主题恒白)

背景与边框

背景是严格的亮度阶梯:page < subtle < muted < sunken < container

变量名亮色值用途
--xy-bg-page#f3f7fb页面画布
--xy-bg-subtle#fbfdfe最浅染色面板
--xy-bg-muted#f6f9fc次级面板
--xy-bg-sunken#eef4f9凹陷区:表头、代码块
--xy-bg-container#ffffff卡片、输入框、面板
--xy-bg-raised#ffffff抬升层(亮色靠阴影区分)
--xy-bg-elevated#ffffff弹窗、抽屉
--xy-bg-floating#ffffff浮层面板
--xy-fill-light#f6f9fc控件浅填充
--xy-border#e5edf5默认边框
--xy-border-strong#d4dee9强边框
--xy-border-subtle#eef4f9弱分隔线

暗色主题下背景切换为靛黑阶梯(页面底 #0e0f2e,官方暗色值),边框切换为白色透明度阶梯(rgba(255,255,255,0.06/0.1/0.18))。

焦点与遮罩

变量名亮色值用途
--xy-focus-ring-colorrgba(83,58,253,0.14)焦点环颜色
--xy-focus-border#533afd聚焦边框
--xy-overlay-colorrgba(6,27,49,0.5)模态遮罩

海拔系统(阴影)

采用 Stripe 五级海拔,0 最弱、4 最强。命名即层级,不再有 card/popup/modal 别名冗余:

变量名亮色值用途
--xy-shadow-00 1px 2px rgba(6,27,49,0.06)发丝级:开关滑块、微型浮起
--xy-shadow-10 3px 6px rgba(23,23,23,0.06)氛围:卡片静置、hover 提示
--xy-shadow-20 15px 35px rgba(23,23,23,0.08)标准:内容面板、悬浮卡片
--xy-shadow-3双层蓝调阴影抬升:下拉、弹出层
--xy-shadow-4双层深蓝阴影最强:模态、浮窗

L3/L4 是 Stripe 标志性的蓝调多层阴影rgba(50,50,93,…) + rgba(0,0,0,…)),深度带品牌氛围。暗色主题下五级全部转为黑色主导。

层级系统(z-index)

单调递增的层级阶梯(修复了旧体系 dropdown 高于 modal 的倒挂)。运行时浮层(dialog/drawer/message 等)由 useOverlayStack 从 2000 起分配,始终高于 CSS 层:

变量名用途
--xy-z-normal1常规堆叠
--xy-z-raised10徽标、角标
--xy-z-sticky100吸顶、粘性表头、affix
--xy-z-dropdown1000下拉面板
--xy-z-modal1100模态层
--xy-z-toast1200消息通知
--xy-z-tooltip1300文字提示
--xy-z-max1400CSS 层顶

间距系统

基于 8px 基准网格(Stripe spacing 基准),7 级:

变量名使用场景
--xy-space-14px紧凑元素内边距
--xy-space-28px小组件间距
--xy-space-312px表单字段间距
--xy-space-416px卡片内边距(最常用)
--xy-space-520px区块间距
--xy-space-624px大区块间距
--xy-space-732px页面级间距

字体系统

变量名默认值说明
--xy-font-family-base系统栈(含 PingFang SC / Microsoft YaHei)基础字体族
--xy-font-family-codeSF Mono / Source Code Pro 等宽栈代码字体
--xy-font-size-2xs11px徽标角标
--xy-font-size-xs12px辅助信息
--xy-font-size-sm13px说明文字
--xy-font-size-md14px默认正文
--xy-font-size-lg16px大号正文
--xy-font-size-xl20px组件标题
--xy-font-size-2xl26px页面标题
--xy-font-size-3xl32px展示标题
--xy-font-size-4xl48px营销级大标题
--xy-font-weight-light300展示型文字(Stripe 双轨制)
--xy-font-weight-regular400控件默认
--xy-font-weight-medium500强调
--xy-font-weight-semibold600标题
--xy-line-height-tight1.2标题行高
--xy-line-height1.5全局行高

圆角系统

Stripe 刻度:标准 4px 是绝对主力(按钮、输入框、徽标),克制不花哨,整族无坍缩:

变量名使用场景
--xy-radius-xs2px微圆角(标签、分页项、面包屑)
--xy-radius-sm3px小型元素(菜单项、页签)
--xy-radius-md4px标准(按钮、输入框、徽标——Stripe 主力档)
--xy-radius-lg6px大交互区(卡片、导航、弹出面板)
--xy-radius-xl8px重点容器(对话框)
--xy-radius-pill999px胶囊(标签、头像,表单控件按需选用)

动效

变量名默认值说明
--xy-transition-duration-fast0.15s快速过渡(hover、颜色)
--xy-transition-duration-normal0.25s标准过渡
--xy-transition-duration-slow0.4s慢速过渡(大型浮层)
--xy-transition-timingcubic-bezier(0.4,0,0.2,1)标准缓动
--xy-transition-timing-in / -out进场 / 出场缓动

旧命名兼容层

v1 的旧变量名(--xy-color-primary--xy-text-color-*--xy-bg-color-*--xy-surface-*--xy-shadow-xs/sm/md/lg 等)在 tokens.css 末尾以 @deprecated 兼容层映射到新令牌,存量自定义主题不受影响。兼容层将在下个 major 移除,新代码请使用本页的规范命名。

完整变量定义见源码:tokens.css

主题定制实践(全局覆盖、作用域覆盖、品牌色替换案例)请参考 主题定制指南