File contents UI组件规范
适用场景
基于设计系统,定义可复用的UI组件规范,确保组件在不同场景下的一致性和完整性。
组件设计原则
完整性 :考虑所有状态(默认、悬停、按下、聚焦、禁用、加载、错误)
一致性 :同类组件使用相同的设计语言
可访问性 :支持键盘导航、屏幕阅读器
响应式 :适配不同屏幕尺寸
基础组件规范
1. 按钮 (Button)
变体
变体
用途
视觉特征
Primary
主要操作(每个区域最多1个)
实心,品牌色背景,白色文字
Secondary
次要操作
描边,透明背景,品牌色文字
Ghost
低优先级操作
无边框,透明背景,灰色文字
Danger
危险操作(删除、清空)
实心,红色背景,白色文字
Link
文本链接
无背景,品牌色文字,下划线
尺寸
尺寸
高度
内边距
字号
圆角
最小宽度
sm
32px
12px 16px
14px
6px
64px
md
40px
12px 20px
16px
8px
80px
lg
48px
16px 24px
16px
8px
96px
状态
状态
Primary 背景
Primary 文字
边框
其他
默认
Primary
White
-
-
悬停
Primary-hover
White
-
cursor: pointer
按下
Primary-active
White
-
transform: scale(0.98)
聚焦
Primary
White
2px Primary 外发光
outline
禁用
Gray-200
Gray-400
-
cursor: not-allowed, opacity: 0.6
加载
Primary
-
-
显示 spinner,文字隐藏
图标按钮
属性
值
尺寸
32px / 40px / 48px(正方形)
图标大小
16px / 20px / 24px
圆角
radius-md 或 radius-full(圆形)
代码示例
// 主按钮
<Button variant="primary" size="md">确认</Button>
// 次要按钮
<Button variant="secondary" size="md">取消</Button>
// 危险按钮
<Button variant="danger" size="md">删除</Button>
// 禁用状态
<Button variant="primary" size="md" disabled>确认</Button>
// 加载状态
<Button variant="primary" size="md" loading>提交中</Button>
// 带图标
<Button variant="primary" size="md" icon={<IconCheck />}>保存</Button>
// 图标按钮
<IconButton variant="ghost" size="md" icon={<IconClose />} />
2. 输入框 (Input)
尺寸
尺寸
高度
内边距
字号
圆角
sm
32px
8px 12px
14px
6px
md
40px
10px 14px
16px
8px
lg
48px
12px 16px
16px
8px
状态
状态
边框颜色
背景色
其他
默认
Gray-300
White
-
悬停
Gray-400
White
-
聚焦
Primary
White
2px Primary 外发光
错误
Error
White
显示错误提示
禁用
Gray-200
Gray-50
cursor: not-allowed
只读
Gray-200
Gray-50
-
组成部分
┌─────────────────────────────────────────┐
│ [图标] [输入内容] [清除按钮] │
└─────────────────────────────────────────┘
前缀 输入区域 后缀
前缀 :图标、文字(如"https://")
输入区域 :用户输入的内容
后缀 :清除按钮、单位(如"元")、操作按钮
变体
变体
说明
Text
单行文本输入
Textarea
多行文本输入
Password
密码输入(带显示/隐藏切换)
Number
数字输入(带增减按钮)
Search
搜索输入(带搜索图标和清除按钮)
代码示例
// 基础输入框
<Input placeholder="请输入用户名" />
// 带标签
<Input label="用户名" placeholder="请输入用户名" />
// 带前缀图标
<Input prefix={<IconUser />} placeholder="请输入用户名" />
// 带后缀清除按钮
<Input clearable placeholder="请输入关键词" />
// 错误状态
<Input error="用户名不能为空" />
// 禁用状态
<Input disabled value="已禁用" />
// 多行文本
<Textarea rows={4} placeholder="请输入描述" />
// 密码输入
<Input type="password" placeholder="请输入密码" />
// 搜索输入
<Input type="search" placeholder="搜索..." />
3. 选择器 (Select)
尺寸
与Input保持一致(sm / md / lg)
状态
与Input保持一致
下拉菜单
属性
值
最大高度
256px(超出滚动)
背景
White
阴影
shadow-lg
圆角
radius-md
选项高度
40px
选项内边距
10px 14px
选项状态
状态
背景色
文字颜色
默认
White
Gray-700
悬停
Gray-50
Gray-900
选中
Primary-light
Primary
禁用
White
Gray-400
4. 复选框 (Checkbox)
尺寸
尺寸
大小
勾选图标
sm
16px
12px
md
20px
14px
lg
24px
16px
状态
状态
边框
背景
勾选图标
未选中
Gray-300
White
-
选中
Primary
Primary
White
半选中
Primary
Primary
White(横线)
禁用-未选中
Gray-200
Gray-50
-
禁用-选中
Gray-300
Gray-300
White
5. 单选框 (Radio)
尺寸
与Checkbox保持一致
状态
状态
边框
背景
内圆
未选中
Gray-300
White
-
选中
Primary
White
Primary(8px圆点)
禁用-未选中
Gray-200
Gray-50
-
禁用-选中
Gray-300
Gray-50
Gray-300
6. 开关 (Switch)
尺寸
尺寸
宽度
高度
圆点大小
sm
32px
18px
14px
md
44px
24px
20px
lg
56px
30px
26px
状态
状态
背景
圆点位置
关闭
Gray-300
左侧
开启
Primary
右侧
禁用-关闭
Gray-200
左侧
禁用-开启
Primary(opacity: 0.5)
右侧
7. 卡片 (Card)
规格
属性
值
背景
White
圆角
radius-lg (12px)
阴影
shadow-md
内边距
space-6 (24px)
边框
可选,1px Gray-200
变体
变体
特征
用途
默认
阴影
普通内容卡片
描边
1px Gray-200 边框,无阴影
表单区域
可点击
hover 时阴影加深,cursor: pointer
列表项、导航卡片
可选中
选中时边框变为 Primary
选择卡片
组成部分
┌─────────────────────────────────────┐
│ [图片/图标] │
│ │
│ 标题 │
│ 描述文字 │
│ │
│ [操作按钮] │
└─────────────────────────────────────┘
8. 标签 (Tag)
尺寸
尺寸
高度
内边距
字号
sm
20px
4px 8px
12px
md
24px
6px 10px
14px
lg
28px
8px 12px
14px
变体
变体
背景
文字
边框
默认
Gray-100
Gray-700
-
Primary
Primary-light
Primary
-
Success
Success-light
Success
-
Warning
Warning-light
Warning
-
Error
Error-light
Error
-
描边
White
Gray-700
1px Gray-300
9. 徽章 (Badge)
尺寸
尺寸
大小
字号
sm
16px
10px
md
20px
12px
lg
24px
14px
变体
变体
背景
文字
Primary
Primary
White
Success
Success
White
Warning
Warning
White
Error
Error
White
圆点
纯色圆点,无文字
-
10. 提示框 (Tooltip)
规格
属性
值
背景
Gray-900
文字
White
字号
14px
内边距
6px 12px
圆角
radius-md
最大宽度
320px
箭头大小
6px
位置
top / bottom / left / right
自动调整位置避免溢出
输出要求
在UI设计文档中,应包含以下组件规范章节:
## 5. 组件规范
### 5.1 按钮 (Button)
[变体、尺寸、状态表格 + 代码示例]
### 5.2 输入框 (Input)
[尺寸、状态、变体表格 + 代码示例]
### 5.3 [其他组件...]
[根据具体需求补充]
关键原则
状态完整 :每个组件都要考虑所有状态
一致性 :同类组件使用相同的设计语言
可访问性 :支持键盘导航、屏幕阅读器
文档化 :提供清晰的代码示例
常见误区
❌ 状态不全 :只设计默认状态,忽略悬停、禁用等
❌ 尺寸不统一 :不同组件的尺寸不对齐
❌ 缺少文档 :只有视觉稿,没有规范说明
❌ 不考虑边界 :没有考虑长文本、空状态等边界情况
1 --- 2 name: ui-designer-component-specification 3 description: UI组件规范,定义按钮、输入框、卡片等基础组件的变体、尺寸、状态 4 --- 5 6 # UI组件规范 7 8 ## 适用场景 9 10 基于设计系统,定义可复用的UI组件规范,确保组件在不同场景下的一致性和完整性。 11 12 ## 组件设计原则 13 14 1. **完整性**:考虑所有状态(默认、悬停、按下、聚焦、禁用、加载、错误) 15 2. **一致性**:同类组件使用相同的设计语言 16 3. **可访问性**:支持键盘导航、屏幕阅读器 17 4. **响应式**:适配不同屏幕尺寸 18 19 ## 基础组件规范 20 21 ### 1. 按钮 (Button) 22 23 #### 变体 24 25 | 变体 | 用途 | 视觉特征 | 26 |------|------|----------| 27 | Primary | 主要操作(每个区域最多1个) | 实心,品牌色背景,白色文字 | 28 | Secondary | 次要操作 | 描边,透明背景,品牌色文字 | 29 | Ghost | 低优先级操作 | 无边框,透明背景,灰色文字 | 30 | Danger | 危险操作(删除、清空) | 实心,红色背景,白色文字 | 31 | Link | 文本链接 | 无背景,品牌色文字,下划线 | 32 33 #### 尺寸 34 35 | 尺寸 | 高度 | 内边距 | 字号 | 圆角 | 最小宽度 | 36 |------|------|--------|------|------|----------| 37 | sm | 32px | 12px 16px | 14px | 6px | 64px | 38 | md | 40px | 12px 20px | 16px | 8px | 80px | 39 | lg | 48px | 16px 24px | 16px | 8px | 96px | 40 41 #### 状态 42 43 | 状态 | Primary 背景 | Primary 文字 | 边框 | 其他 | 44 |------|--------------|--------------|------|------| 45 | 默认 | `Primary` | `White` | - | - | 46 | 悬停 | `Primary-hover` | `White` | - | cursor: pointer | 47 | 按下 | `Primary-active` | `White` | - | transform: scale(0.98) | 48 | 聚焦 | `Primary` | `White` | 2px Primary 外发光 | outline | 49 | 禁用 | `Gray-200` | `Gray-400` | - | cursor: not-allowed, opacity: 0.6 | 50 | 加载 | `Primary` | - | - | 显示 spinner,文字隐藏 | 51 52 #### 图标按钮 53 54 | 属性 | 值 | 55 |------|-----| 56 | 尺寸 | 32px / 40px / 48px(正方形) | 57 | 图标大小 | 16px / 20px / 24px | 58 | 圆角 | radius-md 或 radius-full(圆形) | 59 60 #### 代码示例 61 62 ```tsx 63 // 主按钮 64 <Button variant="primary" size="md">确认</Button> 65 66 // 次要按钮 67 <Button variant="secondary" size="md">取消</Button> 68 69 // 危险按钮 70 <Button variant="danger" size="md">删除</Button> 71 72 // 禁用状态 73 <Button variant="primary" size="md" disabled>确认</Button> 74 75 // 加载状态 76 <Button variant="primary" size="md" loading>提交中</Button> 77 78 // 带图标 79 <Button variant="primary" size="md" icon={<IconCheck />}>保存</Button> 80 81 // 图标按钮 82 <IconButton variant="ghost" size="md" icon={<IconClose />} /> 83 ``` 84 85 ### 2. 输入框 (Input) 86 87 #### 尺寸 88 89 | 尺寸 | 高度 | 内边距 | 字号 | 圆角 | 90 |------|------|--------|------|------| 91 | sm | 32px | 8px 12px | 14px | 6px | 92 | md | 40px | 10px 14px | 16px | 8px | 93 | lg | 48px | 12px 16px | 16px | 8px | 94 95 #### 状态 96 97 | 状态 | 边框颜色 | 背景色 | 其他 | 98 |------|----------|--------|------| 99 | 默认 | `Gray-300` | `White` | - | 100 | 悬停 | `Gray-400` | `White` | - | 101 | 聚焦 | `Primary` | `White` | 2px Primary 外发光 | 102 | 错误 | `Error` | `White` | 显示错误提示 | 103 | 禁用 | `Gray-200` | `Gray-50` | cursor: not-allowed | 104 | 只读 | `Gray-200` | `Gray-50` | - | 105 106 #### 组成部分 107 108 ``` 109 ┌─────────────────────────────────────────┐ 110 │ [图标] [输入内容] [清除按钮] │ 111 └─────────────────────────────────────────┘ 112 前缀 输入区域 后缀 113 ``` 114 115 - **前缀**:图标、文字(如"https://") 116 - **输入区域**:用户输入的内容 117 - **后缀**:清除按钮、单位(如"元")、操作按钮 118 119 #### 变体 120 121 | 变体 | 说明 | 122 |------|------| 123 | Text | 单行文本输入 | 124 | Textarea | 多行文本输入 | 125 | Password | 密码输入(带显示/隐藏切换) | 126 | Number | 数字输入(带增减按钮) | 127 | Search | 搜索输入(带搜索图标和清除按钮) | 128 129 #### 代码示例 130 131 ```tsx 132 // 基础输入框 133 <Input placeholder="请输入用户名" /> 134 135 // 带标签 136 <Input label="用户名" placeholder="请输入用户名" /> 137 138 // 带前缀图标 139 <Input prefix={<IconUser />} placeholder="请输入用户名" /> 140 141 // 带后缀清除按钮 142 <Input clearable placeholder="请输入关键词" /> 143 144 // 错误状态 145 <Input error="用户名不能为空" /> 146 147 // 禁用状态 148 <Input disabled value="已禁用" /> 149 150 // 多行文本 151 <Textarea rows={4} placeholder="请输入描述" /> 152 153 // 密码输入 154 <Input type="password" placeholder="请输入密码" /> 155 156 // 搜索输入 157 <Input type="search" placeholder="搜索..." /> 158 ``` 159 160 ### 3. 选择器 (Select) 161 162 #### 尺寸 163 164 与Input保持一致(sm / md / lg) 165 166 #### 状态 167 168 与Input保持一致 169 170 #### 下拉菜单 171 172 | 属性 | 值 | 173 |------|-----| 174 | 最大高度 | 256px(超出滚动) | 175 | 背景 | `White` | 176 | 阴影 | `shadow-lg` | 177 | 圆角 | `radius-md` | 178 | 选项高度 | 40px | 179 | 选项内边距 | 10px 14px | 180 181 #### 选项状态 182 183 | 状态 | 背景色 | 文字颜色 | 184 |------|--------|----------| 185 | 默认 | `White` | `Gray-700` | 186 | 悬停 | `Gray-50` | `Gray-900` | 187 | 选中 | `Primary-light` | `Primary` | 188 | 禁用 | `White` | `Gray-400` | 189 190 ### 4. 复选框 (Checkbox) 191 192 #### 尺寸 193 194 | 尺寸 | 大小 | 勾选图标 | 195 |------|------|----------| 196 | sm | 16px | 12px | 197 | md | 20px | 14px | 198 | lg | 24px | 16px | 199 200 #### 状态 201 202 | 状态 | 边框 | 背景 | 勾选图标 | 203 |------|------|------|----------| 204 | 未选中 | `Gray-300` | `White` | - | 205 | 选中 | `Primary` | `Primary` | `White` | 206 | 半选中 | `Primary` | `Primary` | `White`(横线) | 207 | 禁用-未选中 | `Gray-200` | `Gray-50` | - | 208 | 禁用-选中 | `Gray-300` | `Gray-300` | `White` | 209 210 ### 5. 单选框 (Radio) 211 212 #### 尺寸 213 214 与Checkbox保持一致 215 216 #### 状态 217 218 | 状态 | 边框 | 背景 | 内圆 | 219 |------|------|------|------| 220 | 未选中 | `Gray-300` | `White` | - | 221 | 选中 | `Primary` | `White` | `Primary`(8px圆点) | 222 | 禁用-未选中 | `Gray-200` | `Gray-50` | - | 223 | 禁用-选中 | `Gray-300` | `Gray-50` | `Gray-300` | 224 225 ### 6. 开关 (Switch) 226 227 #### 尺寸 228 229 | 尺寸 | 宽度 | 高度 | 圆点大小 | 230 |------|------|------|----------| 231 | sm | 32px | 18px | 14px | 232 | md | 44px | 24px | 20px | 233 | lg | 56px | 30px | 26px | 234 235 #### 状态 236 237 | 状态 | 背景 | 圆点位置 | 238 |------|------|----------| 239 | 关闭 | `Gray-300` | 左侧 | 240 | 开启 | `Primary` | 右侧 | 241 | 禁用-关闭 | `Gray-200` | 左侧 | 242 | 禁用-开启 | `Primary`(opacity: 0.5) | 右侧 | 243 244 ### 7. 卡片 (Card) 245 246 #### 规格 247 248 | 属性 | 值 | 249 |------|-----| 250 | 背景 | `White` | 251 | 圆角 | `radius-lg` (12px) | 252 | 阴影 | `shadow-md` | 253 | 内边距 | `space-6` (24px) | 254 | 边框 | 可选,1px `Gray-200` | 255 256 #### 变体 257 258 | 变体 | 特征 | 用途 | 259 |------|------|------| 260 | 默认 | 阴影 | 普通内容卡片 | 261 | 描边 | 1px Gray-200 边框,无阴影 | 表单区域 | 262 | 可点击 | hover 时阴影加深,cursor: pointer | 列表项、导航卡片 | 263 | 可选中 | 选中时边框变为 Primary | 选择卡片 | 264 265 #### 组成部分 266 267 ``` 268 ┌─────────────────────────────────────┐ 269 │ [图片/图标] │ 270 │ │ 271 │ 标题 │ 272 │ 描述文字 │ 273 │ │ 274 │ [操作按钮] │ 275 └─────────────────────────────────────┘ 276 ``` 277 278 ### 8. 标签 (Tag) 279 280 #### 尺寸 281 282 | 尺寸 | 高度 | 内边距 | 字号 | 283 |------|------|--------|------| 284 | sm | 20px | 4px 8px | 12px | 285 | md | 24px | 6px 10px | 14px | 286 | lg | 28px | 8px 12px | 14px | 287 288 #### 变体 289 290 | 变体 | 背景 | 文字 | 边框 | 291 |------|------|------|------| 292 | 默认 | `Gray-100` | `Gray-700` | - | 293 | Primary | `Primary-light` | `Primary` | - | 294 | Success | `Success-light` | `Success` | - | 295 | Warning | `Warning-light` | `Warning` | - | 296 | Error | `Error-light` | `Error` | - | 297 | 描边 | `White` | `Gray-700` | 1px `Gray-300` | 298 299 ### 9. 徽章 (Badge) 300 301 #### 尺寸 302 303 | 尺寸 | 大小 | 字号 | 304 |------|------|------| 305 | sm | 16px | 10px | 306 | md | 20px | 12px | 307 | lg | 24px | 14px | 308 309 #### 变体 310 311 | 变体 | 背景 | 文字 | 312 |------|------|------| 313 | Primary | `Primary` | `White` | 314 | Success | `Success` | `White` | 315 | Warning | `Warning` | `White` | 316 | Error | `Error` | `White` | 317 | 圆点 | 纯色圆点,无文字 | - | 318 319 ### 10. 提示框 (Tooltip) 320 321 #### 规格 322 323 | 属性 | 值 | 324 |------|-----| 325 | 背景 | `Gray-900` | 326 | 文字 | `White` | 327 | 字号 | 14px | 328 | 内边距 | 6px 12px | 329 | 圆角 | `radius-md` | 330 | 最大宽度 | 320px | 331 | 箭头大小 | 6px | 332 333 #### 位置 334 335 - top / bottom / left / right 336 - 自动调整位置避免溢出 337 338 ## 输出要求 339 340 在UI设计文档中,应包含以下组件规范章节: 341 342 ```markdown 343 ## 5. 组件规范 344 345 ### 5.1 按钮 (Button) 346 [变体、尺寸、状态表格 + 代码示例] 347 348 ### 5.2 输入框 (Input) 349 [尺寸、状态、变体表格 + 代码示例] 350 351 ### 5.3 [其他组件...] 352 [根据具体需求补充] 353 ``` 354 355 ## 关键原则 356 357 1. **状态完整**:每个组件都要考虑所有状态 358 2. **一致性**:同类组件使用相同的设计语言 359 3. **可访问性**:支持键盘导航、屏幕阅读器 360 4. **文档化**:提供清晰的代码示例 361 362 ## 常见误区 363 364 ❌ **状态不全**:只设计默认状态,忽略悬停、禁用等 365 ❌ **尺寸不统一**:不同组件的尺寸不对齐 366 ❌ **缺少文档**:只有视觉稿,没有规范说明 367 ❌ **不考虑边界**:没有考虑长文本、空状态等边界情况
echovic/boss-skill/tree/main/skill/skills/ui-designer/component-specification commit 09fb75ac25
Frequently asked questions How do I install the UI Designer/component Specification skill? Run npx skillmds@latest add echovic/ui-designer-component-specification in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the UI Designer/component Specification skill do? UI组件规范,定义按钮、输入框、卡片等基础组件的变体、尺寸、状态 It is listed under Web & Frontend on SkillMD.
Is UI Designer/component Specification safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with UI Designer/component Specification? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is UI Designer/component Specification free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published UI Designer/component Specification? echovic (@echovic) published this skill. Their other Agent Skills are listed on their SkillMD profile.