Open Claude UI
Open Claude UI 组件演示

基础原子组件

Open Claude UI 组件演示:按钮、分段控制器、状态灯、确认弹窗、附件磁贴、容器查询工具栏(手册 v1 第二篇)。每个演示附规格和源码出处。

View as Markdown最后更新:

基础原子组件是 Claude 桌面端界面里最底层、复用最多的控件:按钮、分段控制器、状态灯、确认弹窗和附件磁贴。它们的高度、圆角和按压反馈都来自同一套令牌,所以放在一起看最容易对上规格。本页 8 个演示对应手册 v1 第二篇,2.0 的变化标在各节里。

关键数值

项目数值出处
按钮高度阶梯XXS 20 · XS 24 · SM 28 · MD 32 · LG 40pxv1/02 §2.1.1
按钮变体primary / secondary / ghost / danger / brand / onContent / outlinev1/02 §2.1.2
状态灯直径6pxv1/02 §2.3
思考波浪周期1.9sv1/02 §2.3
弹窗宽度sm 400 · md 520 · lg 720pxv1/02 §2.4
附件磁贴7.5rem 正方形v1/02 §2.5

按钮变体

按钮有 7 个变体,区别只在填充和描边,尺寸与按压回弹共用一套规则。

7 个变体:primary / secondary / ghost / danger / brand / onContent / outline。按下有 .cds-btn-squish 回弹。出处:v1/02 §2.1.2 · code-examples/CdsButton.tsx

按钮尺寸与加载态

5 档高度从 20px 到 40px;加载时按钮保留原宽度,只把文字换成转圈,避免布局跳动。

高度阶梯 XXS 20 · XS 24 · SM 28 · MD 32 · LG 40px;icon 32×32。加载态保留宽度、隐藏文字。出处:v1/02 §2.1.1 · code-examples/CdsButton.tsx

组合按钮

把几个按钮拼成一组时,相邻一侧去掉圆角,中间共用一条 1px 分隔线。

组合按钮:相邻按钮去掉内侧圆角,中间 1px 分隔线共用边框。出处:v1/02 §2.1.4

分段控制器

分段控制器用一个滑动的选中块表示当前项,多个实例互不干扰。

滑块 left = 1px + index × (100% − 2px) / total,120ms 吸附。容器 ≤180px(2 项)/ ≤254px(3 项)时文字收起只留图标(按代码:所有项都收起;文档写的是只收未选中项)。拖动虚线框右下角试试。当前:Cowork出处:v1/02 §2.2 · code-examples/SegmentedControl.tsx

状态灯与骨架屏

状态灯、呼吸灯、思考三点和骨架屏扫光是界面里所有“进行中”状态的视觉语言。

ready
running
error
clay
breathe
pulse
Thinking...
thinking
6px 状态灯;陶土呼吸灯;运行脉冲;思考三点波浪 1.9s;骨架屏 105° 斜向扫光。出处:v1/02 §2.3 · v2/03 §3.5 · code-examples/StatusIndicators.tsx

确认弹窗

确认弹窗按 3 档宽度取值,危险操作的确认按钮用 danger 变体。

弹窗宽度阶梯 sm 400 · md 520 · lg 720px;ease-pop 入场;遮罩点击 / Esc 关闭;危险操作用 danger 按钮。出处:v1/02 §2.4 · code-examples/ConfirmationDialog.tsx

附件磁贴与胶囊

附件以正方形磁贴展示,长文件名从中间截断,保留扩展名。

PDF
quarterly….pdf

2.4 MB

TSX
App.tsx

12 KB

MD
notes.md

3 KB

ZIP
design-as….zip

62%

PDFquarterly-finan….pdf2.4 MB
TSXApp.tsx12 KB
磁贴 7.5rem 正方形、同心圆角;右上角浮动移除按钮;长文件名中间截断保留扩展名;大写类型徽标。点 × 可移除。出处:v1/02 §2.5 · code-examples/AttachmentCard.tsx

容器查询工具栏

工具栏按自身容器宽度(@container)收缩,而不是按窗口宽度。

Claude 3.7 SonnetThinking
按容器宽度(@container)而不是窗口宽度压缩间距。拖动右下角改变容器宽度。出处:v1/06 §6.5 · v1/02 §2.2.2 · code-examples/ContainerResponsiveBar.tsx

怎么在项目里使用?

复制 code-examples/ 里对应的文件,并引入 cds-theme.css。例如:

import { CdsButton } from './CdsButton';

<CdsButton variant="primary" size="md">发送</CdsButton>

相关页面

On this page