设计规范
设计规范
共享颜色、字体、间距、材质和减少动效。
主题变量
月光主题使用蓝色表达主操作,以青色、绿色、橙色、红色和紫色表达不同语义。文字、焦点与控件边界同时提供足够对比度;状态仍需要文字说明。
下表直接读取 packages/ui/src/styles/tokens.css,展示实际浅色与深色值。宿主通过 Provider 切换 data-theme;浮层在同一文档中使用相同变量。
| CSS Token | 浅色 | 深色 |
|---|---|---|
--content | #f5f7fb | #151e30 |
--surface | #ffffff | #202c43 |
--text | #1b2943 | #e8effc |
--text-muted | #526076 | #b7c8ec |
--blue | #415ab0 | #afc6ff |
--green | #0f6d56 | #b0e5cc |
--orange | #995413 | #ffd096 |
--red | #ad3b49 | #ffb7c0 |
--cyan | #146c89 | #8fe3ee |
--purple | #7046a0 | #d4baff |
--radius-control | 10px | 10px |
--radius-panel | 12px | 12px |
--space-control-gap | 8px | 8px |
--r-shell | 22px | 22px |
--r-core | 16px | 16px |
--r-card | 12px | 12px |
--r-field | 10px | 10px |
--r-chip | 7px | 7px |
--shadow-sm | 0 1px 2px var(--shadow-color) | 0 1px 2px var(--shadow-color) |
--shadow-md | 0 8px 24px var(--shadow-color) | 0 8px 24px var(--shadow-color) |
--motion-hover | 140ms | 140ms |
--motion-select | 160ms | 160ms |
--motion-result | 120ms | 120ms |
--motion-panel | 220ms | 220ms |
--motion-wait | 1600ms | 1600ms |
--t-enter | 360ms | 360ms |
--t-exit | 160ms | 160ms |
字体与材质
正文使用 Geist 与中文系统字体回退,路径、快捷键、代码使用 Geist Mono。字体由宿主加载,组件包没有外部字体网络请求。常规控件保留现有紧凑节奏,控件间距为 --space-control-gap;业务面板宽度由各宿主定义。
弹窗采用同心圆角:外壳 --r-shell、内层 --r-core,边距 --shell-pad 为 6px;卡片和输入使用对应半径。阴影、玻璃材质与风险色来自同一套 token,避免在新组件中硬编码第二套主题。
Ant Design Button、Input、Select、Tag 和 Segmented 的配置由 Provider 提供,其他基础组件沿用主题 token。共享样式负责控件外观,工作区尺寸与业务布局由应用 CSS 负责。
动态效果
悬停、选择、反馈、面板和等待分别使用表中的 --motion-* 时长;弹窗进入、退出使用 --t-enter / --t-exit。以 transform 与 opacity 表达层级和反馈,阅读内容保持稳定。
宿主传入 reduceMotion,并考虑系统 prefers-reduced-motion。共享 CSS 将可感知动画缩短到 0.01ms、过渡置零,保留浮层库需要的完成事件。焦点应立即清晰显示,不因等待动效而推迟。