# 组件库 ## 一句话概述 **基于 Radix UI 原语和 Tailwind CSS 构建的可复用 UI 组件综合集合,遵循 shadcn/ui 模式,提供一致、可访问和可定制的界面。** --- ## 概述 **位置**: `ccw/frontend/src/components/ui/` **用途**: 为构建 CCW 前端应用程序提供一致的 UI 组件集合。 **技术栈**: - **Radix UI**: 无样式、可访问的组件原语 - **Tailwind CSS**: 带自定义主题的实用优先样式 - **class-variance-authority (CVA)**: 类型安全的变体 props 管理 - **Lucide React**: 一致的图标系统 --- ## 实时演示:组件库展示 :::demo ComponentGallery #ComponentGalleryZh.tsx ::: --- ## 可用组件 ### 表单组件 | 组件 | 描述 | Props | |------|------|------| | [Button](/components/ui/button) | 可点击的操作按钮,带变体和尺寸 | `variant`, `size`, `asChild` | | [Input](/components/ui/input) | 文本输入字段 | `error` | | [Textarea](/components/ui/textarea) | 多行文本输入 | `error` | | [Select](/components/ui/select) | 下拉选择(Radix) | Select 组件 | | [Checkbox](/components/ui/checkbox) | 布尔复选框(Radix) | `checked`, `onCheckedChange` | | [Switch](/components/ui/switch) | 切换开关 | `checked`, `onCheckedChange` | ### 布局组件 | 组件 | 描述 | Props | |------|------|------| | [Card](/components/ui/card) | 带标题/脚注的内容容器 | 嵌套组件 | | [Separator](/components/ui/separator) | 视觉分隔符 | `orientation` | | [ScrollArea](/components/ui/scroll-area) | 自定义滚动条容器 | - | ### 反馈组件 | 组件 | 描述 | Props | |------|------|------| | [Badge](/components/ui/badge) | 状态指示器标签 | `variant` | | [Progress](/components/ui/progress) | 进度条 | `value` | | [Alert](/components/ui/alert) | 通知消息 | `variant` | | [Toast](/components/ui/toast) | 临时通知(Radix) | Toast 组件 | ### 导航组件 | 组件 | 描述 | Props | |------|------|------| | [Tabs](/components/ui/tabs) | 标签页导航(Radix) | Tabs 组件 | | [TabsNavigation](/components/ui/tabs-navigation) | 自定义标签栏 | `tabs`, `value`, `onValueChange` | | [Breadcrumb](/components/ui/breadcrumb) | 导航面包屑 | Breadcrumb 组件 | ### 叠加层组件 | 组件 | 描述 | Props | |------|------|------| | [Dialog](/components/ui/dialog) | 模态对话框(Radix) | `open`, `onOpenChange` | | [Drawer](/components/ui/drawer) | 侧边面板(Radix) | `open`, `onOpenChange` | | [Dropdown Menu](/components/ui/dropdown) | 上下文菜单(Radix) | Dropdown 组件 | | [Popover](/components/ui/popover) | 浮动内容(Radix) | `open`, `onOpenChange` | | [Tooltip](/components/ui/tooltip) | 悬停工具提示(Radix) | `content` | | [AlertDialog](/components/ui/alert-dialog) | 确认对话框(Radix) | Dialog 组件 | ### 展开组件 | 组件 | 描述 | Props | |------|------|------| | [Collapsible](/components/ui/collapsible) | 展开/折叠内容(Radix) | `open`, `onOpenChange` | | [Accordion](/components/ui/accordion) | 可折叠部分(Radix) | Accordion 组件 | --- ## 按钮变体 Button 组件通过 CVA(class-variance-authority)支持 8 种变体: | 变体 | 用途 | 预览 | |---------|----------|--------| | `default` | 主要操作 | 默认 | | `destructive` | 危险操作 | 危险 | | `outline` | 次要操作 | 轮廓 | | `secondary` | 较少强调 | 次要 | | `ghost` | 微妙操作 | 幽灵 | | `link` | 文本链接 | 链接 | | `gradient` | 特色操作 | 渐变 | | `gradientPrimary` | 主要渐变 | 主要 | ### 按钮尺寸 | 尺寸 | 高度 | 内边距 | |------|--------|---------| | `sm` | 36px | 水平 12px | | `default` | 40px | 水平 16px | | `lg` | 44px | 水平 32px | | `icon` | 40px | 正方形(仅图标) | --- ## 徽章变体 Badge 组件支持 9 种变体,用于不同的状态类型: | 变体 | 用途 | 颜色 | |---------|----------|-------| | `default` | 一般信息 | 主要主题 | | `secondary` | 较少强调 | 次要主题 | | `destructive` | 错误/危险 | 危险主题 | | `outline` | 微妙 | 仅文本颜色 | | `success` | 成功状态 | 绿色 | | `warning` | 警告状态 | 琥珀色 | | `info` | 信息 | 蓝色 | | `review` | 审查状态 | 紫色 | | `gradient` | 特色 | 品牌渐变 | --- ## 使用示例 ### Button ```tsx import { Button } from '@/components/ui/Button' ``` ### Input with Error State ```tsx import { Input } from '@/components/ui/Input' setName(e.target.value)} /> ``` ### Checkbox ```tsx import { Checkbox } from '@/components/ui/Checkbox' ``` ### Switch ```tsx import { Switch } from '@/components/ui/Switch' 启用功能 ``` ### Card ```tsx import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from '@/components/ui/Card' 卡片标题 简短描述在这里

主要内容放在这里。

``` ### Badge ```tsx import { Badge, badgeVariants } from '@/components/ui/Badge' 已完成 待处理 失败 ``` --- ## 可访问性 所有组件遵循 Radix UI 的可访问性标准: - **键盘导航**:所有交互组件完全可键盘访问 - **ARIA 属性**:正确的角色、状态和属性 - **屏幕阅读器支持**:语义化 HTML 和 ARIA 标签 - **焦点管理**:可见的焦点指示器和逻辑 Tab 顺序 - **颜色对比度**:符合 WCAG AA 标准的颜色组合 ### 键盘快捷键 | 组件 | 按键 | |-----------|-------| | Button | Enter, Space | | Checkbox/Switch | Space 切换 | | Select | Arrow 键,Enter 选择,Esc 关闭 | | Dialog | Esc 关闭 | | Tabs | Arrow 键导航 | | Dropdown | Arrow 键,Enter 选择 | --- ## 相关链接 - [Radix UI Primitives](https://www.radix-ui.com/) - 无头 UI 组件库 - [Tailwind CSS](https://tailwindcss.com/) - 实用优先 CSS 框架 - [shadcn/ui](https://ui.shadcn.com/) - 组件模式参考 - [CVA Documentation](https://cva.style/) - Class Variance Authority