Files
workbuddy_skills/open-design/design-systems/vercel/DESIGN-zh.md
T
admin 5afeb6b78a ④段整套同步(六节 + P/S/F/J + 模板)+ open-design 移到技能根
一、④段整套同步(用户选候选 A)
- 新增 `references/stage-proto-doc/assets/产品文档模板.html`(16 KB/247 行,从备份拷、转 LF)。
- ④段 SKILL.md 换成备份 15:28 那版,并按模板口径改齐:
  · 「产品文档框架」从「四块+一附录」改成**六节** —— 页面结构/功能清单/使用场景/操作流程/
    跨页与界面状态/待确认与偏离;与模板同构,⛔ 不从空白页重写结构。
  · 编号从 R/S/F 改成 **P 页面/S 场景/F 功能/J 二级功能**,各自唯一、按展示顺序通排。
  · 保留旧版有价值的要求:每项功能补齐 做什么/入口在哪/输入边界/异常与恢复;重点功能三处标红;
    横向流程图每步写清页面/功能/操作/完成判据。
  · 完成标准「七节」→「六节」,自查清单同步换掉「需求」那批条目,补模板与配图两条。
  · 路径 `designs/<项目>/` → `docs/pm/<项目>/ui/`(2 处)。
  · 补回本机那条「每份产出文档开头都要有一张图」的引用(指向主 skill,段内不复述)。
- 主 skill 同步:四段结构表④行、④段沿革、画图小节(④段画页面结构图 + 用户路径)。

二、open-design 移到技能根(用户选候选 A)
- `git mv product-planning/references/stage-delivery/assets/open-design → open-design/`(4178 文件)。
- `.gitignore` 白名单加 `!/open-design/` —— 否则移出去就不再纳入版本控制。
- 引用改 11 处:路径形态 `assets/open-design/...` → `<技能根>/open-design/...`;
  「随段携带的自带件」改称「同根技能」;「路径怎么找」那条改成自带件(段内相对路径)与
  同根技能(`<技能根>/<技能名>/`)两类分开写。
- open-design 自己的 ATTRIBUTION.md 两处同步(它现在与 oil-ui-pro 同层)。
- 副作用(有益):命名闸门读数由 2063 降到 225 —— 此前它把 open-design 里 919 个第三方 md
  当成规则一起扫了;现在只扫本包 23 个 md。已确认④段的 H1 与 4a/4b/4c 子步仍在检查范围内。

三、验收
- check_naming.py --ws E:/ProgramData/AIProject/contentm_agent = 通过 225 / 失败 0 / 提示 27。
- 活文件里 `assets/open-design` 残留 0;工作区 CRLF 文件 0。
2026-10-15 21:17:28 +08:00

19 KiB
Raw Blame History

Design System Inspired by Vercel

Category: 开发者工具 前端部署。黑白精准,Geist 字体。

1. Visual Theme & Atmosphere

Vercel 的网站是开发者基础设施"隐于无形"这一命题的视觉论文——一套克制到近乎哲学境界的设计体系。页面以大面积白色(#ffffff)配近黑色(#171717)文字为主调,营造出画廊般的空旷感,每一个元素都以像素为代价争得一席之地。这不是装饰性的极简主义,而是工程原则意义上的极简主义。Geist 设计体系对待界面的方式,如同编译器对待代码——剔除所有多余的标记,直到只剩结构。

定制字体家族 Geist 是整套体系的王冠。Geist Sans 在展示尺寸下采用极强的负字间距(-2.4px 至 -2.88px),所呈现的标题感觉紧凑、急迫、充满工程感——仿佛经过压缩优化的生产代码。在正文尺寸下,字间距有所放松,但几何精准感依然贯穿始终。Geist Mono 作为等宽配套字体,专为代码、终端输出和技术标签而生。两款字体均在全局启用 OpenType "liga"(连字),为排版增添了一层经得起细读的精致感。

Vercel 区别于其他单色设计体系的关键,在于其"阴影即边框"的理念。它并不使用传统 CSS 边框,而是采用 box-shadow: 0px 0px 0px 1px rgba(0,0,0,0.08)——零偏移、零模糊、1px 扩散的阴影,在不影响盒模型的前提下实现类边框效果。这一技术让边框存在于阴影层,从而实现更平滑的过渡、不会被裁剪的圆角,以及比传统边框更轻盈的视觉重量。整个深度体系建立在多值阴影叠加上,每一层各司其职:一层作边框,一层提供柔和的层次感,一层营造环境深度。

关键特征:

  • Geist Sans 在展示尺寸下使用极强负字间距(-2.4px 至 -2.88px)——文字即压缩后的基础设施
  • Geist Mono 用于代码和技术标签,全局启用 OpenType "liga"
  • 阴影即边框技术:box-shadow 0px 0px 0px 1px 取代全局传统边框
  • 多层阴影叠加实现细腻深度(单次声明包含边框 + 层次 + 环境三层)
  • 近纯白画布搭配 #171717 文字——并非纯黑,形成微妙的对比柔和感
  • 工作流专属强调色:Ship 红(#ff5b4f)、Preview 粉(#de1d8d)、Develop 蓝(#0a72ef)
  • 焦点环系统使用 hsla(212, 100%, 48%, 1)——饱和蓝色,确保无障碍可访问性
  • 胶囊徽章(9999px 圆角)配色调背景,用于状态指示

2. Color Palette & Roles

Primary

  • Vercel 黑(#171717):主要文字、标题、深色表面背景。并非纯黑——微微的暖调防止视觉刺激。
  • 纯白(#ffffff):页面背景、卡片表面、深色背景上的按钮文字。
  • 真黑(#000000):次要用途,--geist-console-text-color-default,用于特定控制台/代码场景。

Workflow Accent Colors

  • Ship 红(#ff5b4f):--ship-text,"发布到生产"工作流步骤——温暖、紧迫的珊瑚红。
  • Preview 粉(#de1d8d):--preview-text,预览部署工作流——鲜艳的洋红粉。
  • Develop 蓝(#0a72ef):--develop-text,开发工作流——明亮、聚焦的蓝色。

Console / Code Colors

  • 控制台蓝(#0070f3):--geist-console-text-color-blue,语法高亮蓝色。
  • 控制台紫(#7928ca):--geist-console-text-color-purple,语法高亮紫色。
  • 控制台粉(#eb367f):--geist-console-text-color-pink,语法高亮粉色。

Interactive

  • 链接蓝(#0072f5):主要链接颜色,带下划线装饰。
  • 焦点蓝(hsla(212, 100%, 48%, 1)):--ds-focus-color,交互元素焦点环。
  • 环蓝(rgba(147, 197, 253, 0.5)):--tw-ring-color,Tailwind 环工具类。

Neutral Scale

  • 灰 900(#171717):主要文字、标题、导航文字。
  • 灰 600(#4d4d4d):次要文字、说明文案。
  • 灰 500(#666666):三级文字、静音链接。
  • 灰 400(#808080):占位符文字、禁用状态。
  • 灰 100(#ebebeb):边框、卡片轮廓、分隔线。
  • 灰 50(#fafafa):微妙表面色调、内阴影高光。

Surface & Overlay

  • 遮罩背景(hsla(0, 0%, 98%, 1)):--ds-overlay-backdrop-color,模态框/对话框背景。
  • 选中文字(hsla(0, 0%, 95%, 1)):--geist-selection-text-color,文字选中高亮。
  • 徽章蓝背景(#ebf5ff):胶囊徽章背景,带色调的蓝色表面。
  • 徽章蓝文字(#0068d6):胶囊徽章文字,更深的蓝色以保证可读性。

Shadows & Depth

  • 边框阴影(rgba(0, 0, 0, 0.08) 0px 0px 0px 1px):标志性技法——取代传统边框。
  • 微浮层(rgba(0, 0, 0, 0.04) 0px 2px 2px):卡片的最小悬浮感。
  • 卡片叠层(rgba(0,0,0,0.08) 0px 0px 0px 1px, rgba(0,0,0,0.04) 0px 2px 2px, rgba(0,0,0,0.04) 0px 8px 8px -8px, #fafafa 0px 0px 0px 1px):完整多层卡片阴影。
  • 环形边框(rgb(235, 235, 235) 0px 0px 0px 1px):标签页和图片的浅灰环形边框。

3. Typography Rules

Font Family

  • 主字体:Geist,备用字体:Arial, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol
  • 等宽字体:Geist Mono,备用字体:ui-monospace, SFMono-Regular, Roboto Mono, Menlo, Monaco, Liberation Mono, DejaVu Sans Mono, Courier New
  • OpenType 特性:所有 Geist 文字全局启用 "liga";特定说明文字启用 "tnum" 以对齐数字。

Hierarchy

角色 字体 字号 字重 行高 字间距 备注
展示大标 Geist 48px (3.00rem) 600 1.00–1.17(紧凑) -2.4px 至 -2.88px 最大压缩,视觉冲击力强
区块标题 Geist 40px (2.50rem) 600 1.20(紧凑) -2.4px 功能区块标题
大号副标题 Geist 32px (2.00rem) 600 1.25(紧凑) -1.28px 卡片标题、子区块
副标题 Geist 32px (2.00rem) 400 1.50 -1.28px 较轻的副标题
卡片标题 Geist 24px (1.50rem) 600 1.33 -0.96px 功能卡片
卡片标题(轻) Geist 24px (1.50rem) 500 1.33 -0.96px 次要卡片标题
大号正文 Geist 20px (1.25rem) 400 1.80(宽松) normal 介绍性文字、功能描述
正文 Geist 18px (1.13rem) 400 1.56 normal 标准阅读文字
小号正文 Geist 16px (1.00rem) 400 1.50 normal 标准 UI 文字
中号正文 Geist 16px (1.00rem) 500 1.50 normal 导航、强调文字
半粗正文 Geist 16px (1.00rem) 600 1.50 -0.32px 强调标签、激活状态
按钮/链接 Geist 14px (0.88rem) 500 1.43 normal 按钮、链接、说明文字
小号按钮 Geist 14px (0.88rem) 400 1.00(紧凑) normal 紧凑型按钮
说明文字 Geist 12px (0.75rem) 400–500 1.33 normal 元数据、标签
等宽正文 Geist Mono 16px (1.00rem) 400 1.50 normal 代码块
等宽说明 Geist Mono 13px (0.81rem) 500 1.54 normal 代码标签
等宽小号 Geist Mono 12px (0.75rem) 500 1.00(紧凑) normal text-transform: uppercase,技术标签
微型徽章 Geist 7px (0.44rem) 700 1.00(紧凑) normal text-transform: uppercase,极小徽章

Principles

  • 压缩即身份:Geist Sans 在展示尺寸下使用 -2.4px 至 -2.88px 的字间距——是所有主流设计体系中负字间距最激进的。这使文字呈现出_压缩_感,仿佛为生产环境优化过的代码。字间距随字号减小而逐渐放松:32px 时 -1.28px,24px 时 -0.96px,16px 时 -0.32px,14px 时恢复正常。
  • 连字无处不在:每一处 Geist 文字均启用 OpenType "liga"。连字并非装饰——它是结构性的,创造出更紧密、更高效的字形组合。
  • 三种字重,严格分工:400(正文/阅读)、500(UI/交互)、600(标题/强调)。除极小徽章外不使用粗体(700)。这种窄字重范围通过字号和字间距构建层次感,而非依赖字重。
  • 等宽即身份:大写的 Geist Mono 搭配 "tnum" 或 "liga",充当"开发者控制台"的声音——紧凑的技术标签将营销站与产品连接起来。

4. Component Stylings

Buttons

主要白色按钮(阴影边框)

  • Background: #ffffff
  • Text: #171717
  • Padding: 0px 6px(极小——由内容决定宽度)
  • Radius: 6px(轻微圆角)
  • Shadow: rgb(235, 235, 235) 0px 0px 0px 1px(环形边框)
  • Hover: 背景切换为 var(--ds-gray-1000)(深色)
  • Focus: 2px solid var(--ds-focus-color) 外轮廓 + var(--ds-focus-ring) 阴影
  • 用途:标准次要按钮

主要深色按钮(源自 Geist 体系推断)

  • Background: #171717
  • Text: #ffffff
  • Padding: 8px 16px
  • Radius: 6px
  • 用途:主要行动按钮("Start Deploying"、"Get Started")

胶囊按钮/徽章

  • Background: #ebf5ff(带色调的蓝色)
  • Text: #0068d6
  • Padding: 0px 10px
  • Radius: 9999px(完整胶囊)
  • Font: 12px 字重 500
  • 用途:状态徽章、标签、功能标注

大号胶囊(导航)

  • Background: 透明或 #171717
  • Radius: 64px–100px
  • 用途:标签页导航、区块选择器

Cards & Containers

  • Background: #ffffff
  • 边框:通过阴影实现——rgba(0, 0, 0, 0.08) 0px 0px 0px 1px
  • Radius: 8px(标准),12px(特色/图片卡片)
  • 阴影叠层:rgba(0,0,0,0.08) 0px 0px 0px 1px, rgba(0,0,0,0.04) 0px 2px 2px, #fafafa 0px 0px 0px 1px
  • 图片卡片:1px solid #ebebeb,顶部 12px 圆角
  • Hover:阴影轻微加深

Inputs & Forms

  • 单选框:标准样式,焦点时 var(--ds-gray-200) 背景
  • 焦点阴影:1px 0 0 0 var(--ds-gray-alpha-600)
  • 焦点外轮廓:2px solid var(--ds-focus-color)——统一的蓝色焦点环
  • 边框:通过阴影技术实现,而非传统边框

Navigation

  • 白色背景上的简洁水平导航,吸顶固定
  • Vercel 字标左对齐,262x52px
  • 链接:Geist 14px 字重 500,#171717 文字
  • 激活状态:字重 600 或下划线
  • 行动按钮:深色胶囊按钮("Start Deploying"、"Contact Sales")
  • 移动端:汉堡菜单折叠
  • 产品下拉菜单支持多级展开

Image Treatment

  • 产品截图带 1px solid #ebebeb 边框
  • 顶部圆角图片:12px 12px 0px 0px 圆角
  • 仪表板/代码预览截图主导功能区块
  • 英雄图片后方带柔和渐变背景(多色粉彩)

Distinctive Components

工作流管线

  • 三步水平管线:Develop(开发)→ Preview(预览)→ Ship(发布)
  • 每个步骤有专属强调色:蓝色 → 粉色 → 红色
  • 通过线条/箭头连接
  • Vercel 核心价值主张的视觉隐喻

信任栏/Logo 网格

  • 合作公司 Logo(Perplexity、ChatGPT、Cursor 等)以灰度展示
  • 横向滚动或网格布局
  • 用 #ebebeb 边框轻微分隔

指标卡片

  • 大号数字展示(如"10x faster")
  • Geist 48px 字重 600 展示指标
  • 下方配灰色正文描述
  • 阴影边框卡片容器

5. Layout Principles

Spacing System

  • 基础单位:8px
  • 刻度:1px、2px、3px、4px、5px、6px、8px、10px、12px、14px、16px、32px、36px、40px
  • 显著跳跃:从 16px 直接跳到 32px——主刻度中没有 20px 或 24px

Grid & Container

  • 内容最大宽度:约 1200px
  • 英雄区:居中单列,顶部留有充足 padding
  • 功能区:卡片采用 2–3 列网格
  • 全宽分隔线使用 border-bottom: 1px solid #171717
  • 代码/仪表板截图以全宽或带边框的方式展示

Whitespace Philosophy

  • 画廊式空旷感:区块间有大量垂直留白(80px–120px+)。留白本身即设计——它传达出 Vercel 无需证明、无需掩饰的从容。
  • 文字紧凑,空间宽阔:标题上极强的负字间距与周围充裕的留白形成对位关系。文字密集,而环绕的空间辽阔。
  • 区块节奏:白色区块与白色区块交替——区块间没有颜色变化。分隔依靠边框(阴影边框)和间距来实现。

Border Radius Scale

  • 微型(2px):行内代码片段、小号标签
  • 细微(4px):小型容器
  • 标准(6px):按钮、链接、功能元素
  • 舒适(8px):卡片、列表项
  • 图片(12px):特色卡片、图片容器(顶部圆角)
  • 大号(64px):标签页导航胶囊
  • 超大(100px):大号导航链接
  • 完整胶囊(9999px):徽章、状态胶囊、标签
  • 圆形(50%):菜单切换按钮、头像容器

6. Depth & Elevation

层级 处理方式 用途
平面(Level 0) 无阴影 页面背景、文字块
环形(Level 1) rgba(0,0,0,0.08) 0px 0px 0px 1px 大多数元素的阴影即边框
浅色环形(Level 1b) rgb(235,235,235) 0px 0px 0px 1px 标签页和图片的较浅环形
微卡片(Level 2) 环形 + rgba(0,0,0,0.04) 0px 2px 2px 带最小浮起感的标准卡片
完整卡片(Level 3) 环形 + 微浮 + rgba(0,0,0,0.04) 0px 8px 8px -8px + 内层 #fafafa 环 特色卡片、高亮面板
焦点(无障碍) 2px solid hsla(212, 100%, 48%, 1) 外轮廓 所有交互元素的键盘焦点

阴影哲学:Vercel 拥有现代 Web 设计中可以说是最精妙的阴影体系。它并非以 Material Design 的传统方式用阴影表达高度,而是通过多值阴影叠加,让每一层承担独特的架构职能:一层制造"边框"(0px 扩散,1px),一层添加环境柔和感(2px 模糊),一层处理远距深度(8px 模糊带负扩散),还有一层内层环(#fafafa)形成微妙的高光,让卡片"由内而外地发光"。这种层叠方式使卡片呈现出被精心构建的质感,而非漂浮感。

Decorative Depth

  • 英雄渐变:英雄内容后方柔和的多色粉彩渐变(几乎不可见,营造氛围)
  • 区块边框:主要区块之间用 1px solid #171717(完整深色线)分隔
  • 无背景色变化——深度完全来自阴影叠加与边框对比

7. Do's and Don'ts

Do

  • 在展示尺寸使用带强负字间距的 Geist Sans(48px 时 -2.4px 至 -2.88px)
  • 使用阴影即边框(0px 0px 0px 1px rgba(0,0,0,0.08))而非传统 CSS 边框
  • 在所有 Geist 文字上启用 "liga"——连字是结构性的,不可省略
  • 使用三字重体系:400(正文)、500(UI)、600(标题)
  • 仅在对应的工作流场景中使用工作流强调色(红/粉/蓝)
  • 为卡片使用多层阴影叠加(边框 + 层次 + 环境 + 内层高光)
  • 保持色板的消色差调——从 #171717 到 #ffffff 的灰色系就是整个体系
  • 主要文字用 #171717 而非 #000000——微弱的暖调至关重要

Don't

  • 不要在 Geist Sans 上使用正字间距——永远是负值或零
  • 不要在正文使用字重 700(粗体)——600 是上限,仅用于标题
  • 不要在卡片上使用传统 CSS border——使用阴影边框技术
  • 不要在 UI 主体中引入暖色(橙色、黄色、绿色)
  • 不要将工作流强调色(Ship 红、Preview 粉、Develop 蓝)用于装饰目的
  • 不要使用过重的阴影(不透明度 > 0.1)——该阴影体系的基调是耳语级别
  • 不要增大正文字间距——Geist 本就设计为紧排
  • 不要在主要行动按钮上使用胶囊圆角(9999px)——胶囊只用于徽章/标签
  • 不要省略卡片阴影中的内层 #fafafa 环——正是它造就了整套体系的内发光效果

8. Responsive Behavior

Breakpoints

名称 宽度 关键变化
小屏手机 <400px 紧凑单列,最小 padding
手机 400–600px 标准移动端,堆叠布局
小平板 600–768px 开始出现两列网格
平板 768–1024px 完整卡片网格,扩展 padding
小桌面 1024–1200px 标准桌面布局
桌面 1200–1400px 完整布局,最大内容宽度
大屏桌面 >1400px 居中,充裕边距

Touch Targets

  • 按钮使用舒适的 padding(垂直 8px–16px)
  • 导航链接 14px,间距充足
  • 胶囊徽章水平 padding 10px,满足点击目标需求
  • 移动端菜单切换按钮使用 50% 圆角圆形按钮

Collapsing Strategy

  • 英雄区:展示字号 48px → 按比例缩小,负字间距等比保持
  • 导航:水平链接 + 行动按钮 → 汉堡菜单
  • 功能卡片:三列 → 两列 → 单列堆叠
  • 代码截图:保持宽高比,可能出现横向滚动
  • 信任栏 Logo:网格 → 横向滚动
  • 页脚:多列 → 单列堆叠
  • 区块间距:80px+ → 移动端缩减至 48px

Image Behavior

  • 仪表板截图在各尺寸下保持边框处理
  • 英雄渐变在移动端变得更柔和/简化
  • 产品截图使用响应式图片,保持一致圆角
  • 全宽区块在各端保持边到边的处理方式

9. Agent Prompt Guide

Quick Color Reference

  • 主要行动按钮:Vercel 黑(#171717)
  • 背景:纯白(#ffffff)
  • 标题文字:Vercel 黑(#171717)
  • 正文:灰 600(#4d4d4d)
  • 边框(阴影):rgba(0, 0, 0, 0.08) 0px 0px 0px 1px
  • 链接:链接蓝(#0072f5)
  • 焦点环:焦点蓝(hsla(212, 100%, 48%, 1))

Example Component Prompts

  • "在白色背景上创建英雄区。标题 48px Geist 字重 600,行高 1.00,字间距 -2.4px,颜色 #171717。副标题 20px Geist 字重 400,行高 1.80,颜色 #4d4d4d。深色行动按钮(#171717,6px 圆角,8px 16px padding)和幽灵按钮(白色,阴影边框 rgba(0,0,0,0.08) 0px 0px 0px 1px,6px 圆角)。"
  • "设计一张卡片:白色背景,不使用 CSS border。使用阴影叠层:rgba(0,0,0,0.08) 0px 0px 0px 1px, rgba(0,0,0,0.04) 0px 2px 2px, #fafafa 0px 0px 0px 1px。圆角 8px。标题 24px Geist 字重 600,字间距 -0.96px。正文 16px 字重 400,#4d4d4d。"
  • "创建胶囊徽章:#ebf5ff 背景,#0068d6 文字,9999px 圆角,0px 10px padding,12px Geist 字重 500。"
  • "创建导航:白色吸顶头部。Geist 14px 字重 500 的链接,#171717 文字。右对齐深色胶囊行动按钮 'Start Deploying'。底部阴影边框:rgba(0,0,0,0.08) 0px 0px 0px 1px。"
  • "设计一个展示三步骤的工作流区块:Develop(文字颜色 #0a72ef)、Preview(#de1d8d)、Ship(#ff5b4f)。每个步骤:14px Geist Mono 大写标签 + 24px Geist 字重 600 标题 + 16px 字重 400 描述,颜色 #4d4d4d。"

Iteration Guide

  1. 始终用阴影即边框代替 CSS border——0px 0px 0px 1px rgba(0,0,0,0.08) 是基础
  2. 字间距随字号变化:48px 时 -2.4px,32px 时 -1.28px,24px 时 -0.96px,14px 时恢复正常
  3. 仅使用三种字重:400(阅读)、500(交互)、600(强调)
  4. 颜色是功能性的,非装饰性的——工作流颜色(红/粉/蓝)仅标记管线阶段
  5. 卡片阴影中的内层 #fafafa 环是赋予 Vercel 卡片微妙内发光的关键
  6. 技术标签用 Geist Mono 大写,其余一律用 Geist Sans