Glaze 是一套面向 AI 产品的紧凑黑白设计系统规则,强调“墨与纸”的视觉语言:以墨色和纸张色为主,灰色以墨的透明度呈现,颜色只用于状态,玻璃质感只出现在一组操作的主操作上,次要操作保持扁平。它要求先使用 Glaze 提供的组件与配方,再编写标记。
用途 Glaze 用于构建或修改项目 UI 的任意屏幕、组件、表单或样式,也用于将已有屏幕迁移到该设计系统。它提供一套封闭的 token 与组件清单,确保界面在明暗主题下保持一致,并避免生成式 UI 常见的“slop”习惯。
主要能力
- 组件优先:使用 Glaze 组件或配方,而非手写标记,因为组件已内置焦点环、状态和玻璃质感。
- 作用域限定:将 Glaze UI 包裹在 className="glaze" 中,并在内部放置 GlazePortalProvider,使菜单、对话框、弹出层和 toast 保留 token。
- 仅用角色化 token:只使用 Glaze 定义的角色,如 text-text-2、bg-paper、border-line-faint,禁止十六进制、任意 px 或 dark: 变体。
- 单一主操作:卡片、页脚、对话框或任何操作组最多一个主按钮(墨色、珊瑚色或绿色玻璃),其余为 variant="secondary" 扁平样式。
- 玻璃仅用于可按压元素:卡片、页眉、徽章、字段、菜单不得使用玻璃质感。
- 禁止阴影:任何地方不得投射阴影,卡片是外壳,覆盖层是带 1px 环的纸张。
- 胶囊控件:所有单行控件(按钮、字段、选择器、标签、分段控件)均为胶囊形。
- 等宽字体缩放:等宽字体设为周围无衬线字体的 0.8 倍,代码块使用 type-code-block,12px。
- 焦点环:每个控件保留 2px 墨色 :focus-visible 环,字段通过加深线条显示焦点。
- 句式规范:使用句子大小写,动作写动词加宾语,不用 emoji,不用破折号。
- 页面外壳:每个屏幕置于 <div className="glaze min-h-dvh bg-page text-text-1"> 中,卡片为 <div className="shell"> 包含 <div className="panel p-3"> 和可选的 <div className="shell-foot">。
- 反 slop 清单:禁止玻璃蔓延、装饰、阴影反射、统计卡片、图标瓷砖、侧边栏、状态点、眉标、大写、emoji、夸张文案、等宽字体角色扮演、假数据、流式效果、滚动显现等。
- 对话框受控:使用 open 和 onOpenChange 打开 Dialog,不要仅在打开时挂载。
使用方式
- 在根布局中,将 "glaze" 类放在 <body> 或 UI 根元素上,并在其中放置 GlazePortalProvider。
- 对于整个屏幕,若 Blocks 中有合适的块,先安装,再替换示例数据和文案。
- 从索引中选择屏幕所需的组件,使用前先获取其页面,了解 props、变体和规则。
- 仅使用这些组件和 Tokens 下的 token 构建,置于带有 "glaze" 类的元素内。
- 暗色模式:在 glaze 元素或任意祖先上放置 data-theme="dark",主题不会自动跟随系统设置。
- 用 Page shell 框定屏幕。若缺少 token 或组件,停止并说明,不要自行发明。
- 迁移已有屏幕时,逐个替换为对应组件,保留行为和文案,删除旧样式。整个应用可运行 migrate-design-system。
- 安装 lint:npx shadcn@latest add https://design.how/r/glaze/lint.json,然后运行 npx eslint -c glaze.eslint.config.mjs .。
- 完成前审查:运行 lint 并修复所有错误,在 390 和 1280 宽度渲染屏幕,对照全局规则和反 slop 清单检查,修复最严重缺陷并再次检查。
适用场景 适用于 AI 产品的界面设计与开发,尤其是需要紧凑、黑白、状态驱动视觉风格的屏幕、组件、表单和样式构建,以及将现有屏幕迁移到 Glaze 设计系统。
限制
- 必须使用 Glaze 组件或配方,不得手写标记。
- 必须将 Glaze UI 包裹在 className="glaze" 与 GlazePortalProvider 中。
- 只能使用 Glaze 定义的角色化 token,禁止原始值。
- 每个操作组最多一个主按钮。
- 玻璃质感仅用于可按压元素。
- 禁止任何阴影。
- 单行控件必须为胶囊形。
- 等宽字体必须为周围无衬线字体的 0.8 倍。
- 必须保留 2px 墨色焦点环。
- 必须使用句子大小写,禁止 emoji 和破折号。
- 暗色模式不自动跟随系统设置。
- 若缺少 token 或组件,必须停止并说明,不得发明。
- 图标仅限指定名称列表,新增需先添加到文件。
- 玻璃和扁平 token 只能通过其类和组件读取,不得按名称读取。
- 具体收费、价格、平台支持等信息暂未提供。