# DESIGN.md · 插件视觉一致性规范 > 读者是**写 UI 的 Agent/开发者**。目标:任何来源的插件,界面观感与宿主完全一致。 > 规则分两类:**强制**(可机器校验/一眼可辨)与**默认**(无充分理由不得偏离)。 > 契约问题看 [../plugins.md](../plugins.md);本文件只管"长什么样"。 ## 0. 两条铁律 1. **色值只允许来自 token**。任何 `#hex`/`rgb()` 硬编码(规范中列出的除外)都算违规;语义永远用 token 名表达(`text-ink-3` 而不是 `text-gray-400`)。 2. **不发明新组件形态**。先查本文 §4 标准模式;确需新形态时,用 §1 的 token 组合拼装,不引入新色/新圆角/新阴影。 ## 1. Token 表(单一事实源:`peer://assets/tokens.css` = 宿主 beautifului.css) ### 表面(背景) | token | 意图 | |---|---| | `--page` | 页面最底层背景 | | `--surface` | 卡片/面板表面 | | `--inset` | 内嵌区域(输入框底、预览底、代码块底) | | `--hover` / `--hover-2` | 悬停态一级/二级 | ### 文字 | token | 意图 | |---|---| | `--ink` | 主文字(标题、关键值) | | `--ink-2` | 次级文字(正文说明) | | `--ink-3` | 弱化文字(占位、提示、元信息、路径) | ### 边线 | token | 意图 | |---|---| | `--line` | 常规边框(卡片、列表分隔) | | `--line-strong` | 强边框(输入框、可点击描边按钮) | | `--line-soft` | 极弱分隔 | ### 强调与语义 | token | 意图 | |---|---| | `--accent` / `--accent-ink` / `--accent-tint` | 品牌强调(主按钮、选中、链接) | | `--green` / `--green-tint` | 成功/正常 | | `--orange` / `--orange-tint` | 警示 | | `--red` / `--red-tint` | 错误/危险 | ### 阴影(全部是描边式,禁止投影类阴影) `--shadow-hairline`(发丝线)· `--shadow-btn`(按钮)· `--shadow-card`(卡片)· `--shadow-raised`(浮起)· `--shadow-overlay`(弹层)· `--shadow-inset-field`(内嵌输入) ### 动效 `--duration-fast/base/slow`(统一 400ms)+ `--ease-standard`。悬停/切换用 `transition-colors` 即可。 ## 2. 类名词汇(宿主 Tailwind 映射,renderer 组件直接用) 背景 `bg-page / bg-surface / bg-inset / bg-hover / bg-accent / bg-accent/10` · 文字 `text-ink / text-ink-2 / text-ink-3 / text-accent / text-red` · 边框 `border-line / border-line-strong / border-dashed border-line` · 圆角 `rounded-card`(卡片/输入块)`rounded-control`(按钮/输入框/徽标)。 ## 3. 字号与间距(默认) - 字号阶:`10px`(徽标)/ `11px`(辅助按钮)/ `11.5px`(次要按钮、说明)/ `12px`(正文说明) / `12.5px`(行标题/正文)/ `16px`(页面标题)。**不使用其他字号**;行高 `leading-4/5`。 - 间距基数为 4px:卡片内边距 `px-3 py-2.5`,区块间 `space-y-1.5`,小节间 `pt-3`。 - 图标 12–16px,线条风格,`currentColor`。 ## 4. 标准模式(复制即用) ### 设置行(label 左 / 控件右) ```html