news 2026/9/19 13:44:00

Open Design 设计系统实践:复刻 Discord 暗色语音社区风格的完整设计 Token 指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Open Design 设计系统实践:复刻 Discord 暗色语音社区风格的完整设计 Token 指南

Open Design 设计系统实践:复刻 Discord 暗色语音社区风格的完整设计 Token 指南

【免费下载链接】open-design🎨 Best DeepSeek Harness Design Plugin. The open-source Claude Design alternative. 🖥️ Local-first desktop app. 🖼️ Your coding agent becomes the design engine: prototypes, landing pages, dashboards, slides, images & video — real files, HTML/PDF/PPTX/MP4 export. 🤖 Claude Code / Codex / Cursor / DeepSeek Harness / OpenCode & 20+ CLIs via BYOK.项目地址: https://gitcode.com/gh_mirrors/opend/open-design

本指南以 Open Design 仓库内置的 Discord 设计系统包(法语版 DESIGN-fr.md)为骨架,系统拆解"暗色优先 + Blurple 单点强调"的语音社区产品设计语言,并结合仓库中的 tokens.css、design-tokens.json 与 manifest.json 给出源码级 token 契约。读完你不仅能复刻 Discord 风格的暗色聊天界面(三阶暗色表面、gg sans 排版体系、状态点语言、头像圆角形变动效),还能理解 Open Design 设计系统包从DESIGN.md文字规范到可运行 CSS 变量的完整落地链路。

1. 包结构与"文字规范 → 可执行 Token"的落地链路

Open Design 将每个品牌设计系统封装为design-systems/<brand>/下的标准包。Discord 包的目录布局(见 manifest.json 的files字段):

  • DESIGN.md:品牌的权威设计散文(即本文主体内容的英文原件);
  • tokens.css:已编译的权威 token 变量(源码真相,其余产物均由它派生);
  • design-tokens.json:从tokens.css+ source/token-contract.report.json 派生的机器可读 token 清单;
  • tailwind-v4.css:Tailwind v4@theme映射(只引用tokens.css,不得独立重定义值);
  • components.html/components.manifest.json:组件夹具与可重建缓存;
  • preview/:静态预览页(colors.html、typography.html、spacing.html);
  • USAGE.md:面向 Agent 的使用守则;
  • source/:导入证据(evidence.mdtokens.source.jsontoken-contract.report.json)。

根据 source/evidence.md,该包是基于 Open Design 精选捆绑夹具的 Design System 2.0 回填,并未声称重新抓取上游品牌仓库——因此文章中的数值均以仓库内文件为准。

在 design-tokens.json 的合约摘要中,该包共声明56 个 token,全部有源码背书(sourceBackedTokens: 56),分层为:A1-identity 8 个、A1-structure 18 个、A2 26 个、B-slot 4 个,整体评分 100、等级excellent。这与 design-systems/_schema/AGENTS.md 中定义的"四层 token 模型"一一对应:A1 由品牌决定(缺失即守卫失败)、A2 带默认值、B-slot 可用var(--sibling)别名折叠——Discord 包的--surface-warm--fg-2--meta--border-soft正是 4 个 B-slot 成员。

2. 视觉主题与氛围:暗色优先的三阶深度

Discord 产品为晚间、团战与群组语音场景而设计,因此整体表面暗色优先。默认画布是Background Primary(深色主题#1e1f22、浅色主题#313338),聊天列叠加在略亮或略暗的色阶上,用以区分频道、子区与侧栏。

核心特征(继承自原文档第 1 节):

  • 暗色表面三阶深度:#1e1f22(最深的服务器列表轨道)→#2b2d31(频道侧边栏)→#313338(聊天表面);
  • Blurple#5865f2是聊天表面唯一的饱和强调色,仅用于品牌标识、主 CTA、提及与"你"的 affordance;
  • 全部文本使用gg sans(Discord 自研的 Whitney 替代字体),友好、几何、中性;
  • 圆角方形服务器头像(16px 圆角)悬停时变为正圆;
  • 聊天行距紧凑(消息组间 4–8px),侧栏内边距宽裕;
  • 状态点:绿=在线、黄=空闲、红=勿扰、灰=离线;
  • 对齐像素网格的 1px 分隔线,采用低透明度偏白。

该"三句品牌身份"在 tokens.css 的文件头注释中被原样固化,并落到具体的 token 绑定:--bg#313338(聊天表面),--surface#2b2d31--surface-warm#1e1f22(最深层服务器轨道)。圆角语言"圆润但不至于圆球软糯"也映射为半径阶梯:卡片 8px、输入框 4px、状态徽章与标签用全药丸。

3. 色彩调色板与 Token 角色映射

原文档第 2 节完整定义了 Discord 配色,以下是完整继承并对照 tokens.css 的 token 映射。

Primary 主色系

角色色值token 绑定
Blurple(品牌主色 / 主 CTA / 提及高亮)#5865f2--accent
Blurple Hover(悬停/激活)#4752c4--accent-hover
Blurple Soft(旧版 Blurple,营销次级强调)#7289da(保留在文档语义层)

--accent-on#ffffff(Blurple 上的文本色);--accent-activecolor-mix(in oklab, var(--accent), black 14%)动态计算,按下态无需再写死色值。

Surface 表面(深色主题为默认)

角色色值token 绑定层级
Background Tertiary(服务器列表轨道,最深)#1e1f22--surface-warmB-slot
Background Secondary(频道/设置侧边栏)#2b2d31--surfaceA1-identity
Background Primary(聊天表面/消息列)#313338--bgA1-identity
Background Floating(浮层/提示/自动补全)#111214(文档语义层)
Background Modifier Hover(行悬停叠加)rgba(78, 80, 88, 0.3)
Background Modifier Selected(活动行)rgba(78, 80, 88, 0.6)

Surface 表面(浅色主题)

角色色值说明
Light Bg Primary#ffffff浅色聊天表面
Light Bg Secondary#f2f3f5浅色侧边栏
Light Bg Tertiary#e3e5e8最深的浅色表面

Text 文本

角色色值token 绑定
Header Primary(频道头/弹窗标题)#f2f3f5--fg-2(B-slot)
Header Secondary(弱化标题)#b5bac1(语义层)
Text Normal(正文,比纯白略冷)#dbdee1--fg
Text Muted(时间戳/服务器名/元数据)#949ba4--muted
Text Link(消息内超链接,天蓝,区别于 Blurple)#00a8fc(语义层)
Channels Default(侧边栏未激活频道名)#80848e--meta(B-slot)

Status 状态与语义色

角色色值token 绑定
Status Online(在线点/成功态)#23a55a--success
Status Idle(空闲/离开)#f0b232--warn
Status DND(勿扰,兼作破坏性红)#f23f43--danger
Status Streaming("直播中"紫色)#593695(语义层)
Status Offline(离线灰)#80848e复用--meta
Mention Highlight(@提及行浅 Blurple 泛光)rgba(88, 101, 242, 0.1)(语义层)

Border 边框与分隔线

角色色值token 绑定
Background Modifier Accent(深色标准分隔线)rgba(255, 255, 255, 0.06)--border
Border Subtle(卡片实线分隔)#3f4147--border-soft(B-slot)

值得注意的源码细节:Discord 的深色表面以"亮度阶梯 + 半透明白色边框"作为深度信号,而非投影——见 tokens.css 的 Elevation 组:--elev-flat: none--elev-ring: 0 0 0 1px var(--border)--elev-raised也仅叠加 1px 白色微光描边。

4. 排版体系:gg sans 与"用字重分层而非用颜色分层"

字体族(继承原文档第 3 节)

  • 正文 / UI / 标题:gg sans,回退"Helvetica Neue", Helvetica, Arial, sans-serif(tokens.css 中--font-display--font-body同值);
  • Display(旧版 Whitney):Whitney,回退gg sans
  • 代码 / 等宽:"gg mono",回退Consolas, Andale Mono, Courier New, Courier, monospace--font-mono)。

层级阶梯

角色字体字号字重行高字距说明
Display Herogg sans56px (3.5rem)8001.1-0.02em营销主视觉(--text-4xl/--leading-tight/--tracking-display
Page Headinggg sans24px (1.5rem)7001.25normal设置/个人资料标题(--text-2xl
Channel Namegg sans16px (1rem)6001.25normal#general频道头
Message Bodygg sans16px (1rem)4001.375normal标准聊天文本(--text-base/--leading-body
Usernamegg sans16px (1rem)5001.25normal消息作者
Timestampgg sans12px (0.75rem)5001.25normal"今天 16:32"(--text-xs
Sidebar Channelgg sans16px (1rem)5001.25normal频道列表行
Server Namegg sans16px (1rem)6001.25normal服务器头
Caption / Metagg sans12px (0.75rem)4001.30.02em状态文本、已编辑标记
Code Inlinegg mono0.875em400inheritnormal行内code
Code Blockgg mono14px (0.875rem)4001.5normal三重反引号代码块

完整字号阶梯在 tokens.css 中被规范化为--text-xs(12px) →--text-sm(14px) →--text-base(16px) →--text-lg(18px) →--text-xl(20px) →--text-2xl(24px) →--text-3xl(32px) →--text-4xl(56px),并配有--leading-body: 1.375--leading-tight: 1.10--tracking-display: -0.02em

排版原则

  • 友好几何:gg sans 在 a/g/s 上有圆润末端,替代 Whitney 时保留温暖感且不牺牲小字号可读性;
  • 字重对比优先于颜色对比:层级来自 400→500→600→700→800 的字重阶梯,表面保持中性;
  • 正文永不小于 16px:密度来自行高(1.375),而非缩小字号。

5. 组件样式规格

以下规格完整继承自原文档第 4 节,并对照 tokens.css 的半径/圆角 token(--radius-sm: 4px--radius-md: 8px--radius-lg: 16px--radius-pill: 9999px)。

按钮

  • Primary:背景#5865f2、文本#ffffff、内边距 8px 16px、圆角 4px、悬停#4752c4;用于主 CTA、"继续"、"加入服务器";
  • Secondary:背景#4e5058、文本#ffffff、内边距 8px 16px、圆角 4px、悬停#6d6f78
  • Tertiary / 链接式:背景透明、文本#dbdee1、悬停仅加下划线、背景不变;
  • Danger:背景#da373c、文本#ffffff、悬停#a12d2f

输入框

背景#1e1f22、文本#dbdee1、边框 1px solid#1e1f22、圆角 4px、内边距 10px 12px、聚焦边框#5865f2。焦点态的"光环"在 token 层对应 tokens.css 的--focus-ring: 0 0 0 3px rgba(88, 101, 242, 0.3)——3px 半透明 Blurple 外环,与设计语义完全一致。

服务器头像

  • 尺寸 48×48px;默认圆角 16px(圆角方形),悬停与激活时过渡为 50% 正圆(对应--radius-lg--radius-pill);
  • 激活态:图标列左缘 4px 白色药丸指示条。

状态点

10×10px,3px 边框使用 background-tertiary 色(形成"缺口"效果),定位在头像右下角。

卡片 / Embed

背景#2b2d31(深色)或#f2f3f5(浅色),左侧 4px 实线使用 embed 强调色,圆角 4px,内边距 8px 16px。

提及药丸(Mention Pill)

背景rgba(88, 101, 242, 0.3)、文本#c9cdfb、内边距 0 2px、圆角 3px。

6. 间距与布局:4px 网格与三栏结构

继承原文档第 5 节,并补充 tokens.css 的容器 token:

  • 基础单位 4px,刻度为 4、8、12、16、20、24、32、40(对应--space-1--space-12,见 tokens.css);
  • 服务器轨道:固定 72px 宽;
  • 频道侧边栏:240px 宽;
  • 成员列表:桌面端 240px 宽;
  • 聊天列:流式,最小 380px。

容器层面还定义了--container-max: 1200px,以及响应式沟槽--container-gutter-desktop: 24px--container-gutter-tablet/phone: 16px;区块纵向节奏--section-y-desktop: 80px--section-y-tablet: 48px--section-y-phone: 32px(tokens.css、tokens.css)。

7. 动效规格

继承原文档第 6 节:

  • 时长:悬停 200ms(--motion-base)、头像圆角形变 350ms、气泡提示淡入 80ms(--motion-fast);
  • 缓动:头像形变使用cubic-bezier(0.215, 0.61, 0.355, 1)(起步利落然后稳定);tokens.css 中的通用缓动为--ease-standard: cubic-bezier(0.2, 0, 0, 1)
  • 通知脉冲:未读提及指示器1.4s ease-in-out infinite无限循环。

8. 使用护栏:保持 Discord 产品感觉

继承原文档第 7 节,并结合 USAGE.md 的 Agent 使用守则:

  • 暗色外壳、紧凑密度与 Blurple 动作层级必须成套保留;在浅色营销风格版式上单独使用 Blurple 会破坏 Discord 产品识别度;
  • 高导航密度的表面应围绕"轨道 + 侧边栏 + 聊天列"组织,而不是孤立的装饰卡片;
  • 用圆角方形头像与状态点语言表示人物、服务器或活跃在场状态;
  • Do:严格保留 schema token 名称(保证跨品牌切换可靠);用--accent表达主操作、链接、焦点态与唯一视觉焦点;复用 components.manifest.json 中的组件组;将source/文件视为捆绑夹具回填的审计证据;
  • Avoid:不在复制的:roottoken 块之外使用裸十六进制值;不脱离tokens.css独立重定义 Tailwind 或设计 token 值;不声称存在原始上游源码证据(本包基于精选捆绑夹具);不新增components.htmlDESIGN.md中未体现的组件配方。

9. 落地消费:从 Token 到 Tailwind v4 与预览页

Discord 设计系统包提供了三种可直接消费的落地方式:

  1. 原生 CSS 变量:直接复制 tokens.css 的:root块到你的<style>中,即可获得全部 56 个变量(表面、前景、边框、强调、语义、字体、字号、间距、圆角、阴影、动效、容器);
  2. Tailwind v4:tailwind-v4.css 以@import "./tokens.css"引入源,再在@theme中把--color-*--font-*--text-*--spacing-*--radius-*--shadow-*--duration-*--ease-*--container-*逐一映射到 token 变量——注意该文件是派生产物,必须保持tokens.css为唯一真相源;
  3. 预览与组件夹具:通过 preview/colors.html、preview/typography.html、preview/spacing.html 和 components.html 可视化核对色板、层级与组件渲染是否符合预期。

根据 manifest.json,该包以od-design-system-project/v1schema 发布,importModenormalized,并建议绑定 craft 规范中的 color 与 accessibility-baseline。而 design-systems/_schema/AGENTS.md 说明:这类清单包会受到scripts/check-design-system-manifests.ts等守卫校验(manifest 形状、A2 必需 token、B-slot 必需 token、A2 默认值一致性等),保证每个打包品牌的tokens.css完整、自洽、可被 daemon 与提示词组合管线直接消费——这也解释了为什么每个品牌包都必须显式声明全部共享 token,而不是依赖全局样式表兜底。

10. 小结

Discord 设计系统包的核心可提炼为一条可复用的设计公式:三阶暗色表面(#1e1f22/#2b2d31/#313338)+ 单一饱和强调色 Blurple(#5865f2)+ gg sans 字重分层排版 + 圆角方形头像语言 + 4px 网格三栏布局。在 Open Design 中,这条公式被完整固化为 56 个经过契约校验的 CSS 变量与 Tailwind v4 映射,任何人复制 tokens.css 的:root块即可在原型、落地页或聊天类产品中还原 Discord 的视觉质感——同时通过 USAGE.md 的守则避免破坏其产品识别度。

【免费下载链接】open-design🎨 Best DeepSeek Harness Design Plugin. The open-source Claude Design alternative. 🖥️ Local-first desktop app. 🖼️ Your coding agent becomes the design engine: prototypes, landing pages, dashboards, slides, images & video — real files, HTML/PDF/PPTX/MP4 export. 🤖 Claude Code / Codex / Cursor / DeepSeek Harness / OpenCode & 20+ CLIs via BYOK.项目地址: https://gitcode.com/gh_mirrors/opend/open-design

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 13:41:19

减速器拆装与结构分析:从实操步骤到参数测量

简介&#xff1a;机械拆装及结构分析课件面向机械工程类学生及装备维修技术人员&#xff0c;以减速器拆装为核心&#xff0c;系统讲解其结构原理、拆装步骤与维护要点。课件以JZQ-250型二级展开式圆柱齿轮减速器和教学用单级圆柱齿轮减速器为例&#xff0c;逐一展示箱座、箱盖、…

作者头像 李华
网站建设 2026/9/19 13:41:17

C语言工程化实战:从变频器控制到内存硬件操控

1. 这不是又一本“从入门到放弃”的C语言书——它是一份可执行的工程化学习路线图你点开这个标题&#xff0c;大概率正站在三个岔路口之一&#xff1a;刚买完《C程序设计》教材却卡在第一个printf("Hello, World!");编译失败&#xff1b;在嵌入式公司实习&#xff0c…

作者头像 李华
网站建设 2026/9/19 13:40:05

腾讯滑块验证码collect参数逆向与JSVMP对抗实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/19 13:38:46

PyMuPDF解析儿童英语PDF:从文本提取到教学数据生成

简介&#xff1a;典范英语2A.pdf是一套专为儿童英语启蒙设计的分级阅读材料&#xff0c;聚焦基础词汇积累、核心句型操练与生活化主题表达&#xff0c;适用于小学低段英语课堂拓展或家庭亲子共读。资源以PDF格式单文件交付&#xff08;1个文件&#xff0c;25KB&#xff09;&…

作者头像 李华
网站建设 2026/9/19 13:36:19

CANopen协议从对象字典到伺服使能:一份可落地的教学课件设计

简介&#xff1a;这是一份CANopen协议专业教学PPT课件&#xff0c;面向工业自动化、嵌入式开发及现场总线学习者&#xff0c;系统讲解CANopen在CAN物理层之上的标准化应用层设计思路。资源仅含1个pptx演示文件&#xff0c;共91页&#xff0c;压缩包大小1.71MB&#xff0c;已有1…

作者头像 李华