UI 组件库
Claude Code 拥有 144 个 React 组件(389 文件),构成了终端 UI 的完整组件体系。
组件分类
消息组件
处理对话中各种消息的渲染:
| 组件 | 功能 |
|---|---|
Message | 消息容器,区分用户/助手消息 |
MessageContent | 消息内容渲染(文本、代码、列表等) |
ToolCallMessage | 工具调用消息 |
SystemMessage | 系统消息 |
ErrorMessage | 错误消息 |
工具展示组件
展示工具调用的过程和结果:
| 组件 | 功能 |
|---|---|
ToolCall | 工具调用展示容器 |
BashToolView | Shell 命令执行过程 |
FileReadView | 文件读取结果 |
FileEditView | 文件编辑差异 |
SearchResultView | 搜索结果展示 |
AgentView | 子 Agent 运行状态 |
输入组件
处理用户输入:
| 组件 | 功能 |
|---|---|
TextInput | 文本输入框 |
PermissionPrompt | 权限确认提示 |
Autocomplete | 命令自动补全 |
VoiceInput | 语音输入指示器 |
布局组件
页面布局和结构:
| 组件 | 功能 |
|---|---|
StatusBar | 底部状态栏 |
Spinner | 加载动画 |
ProgressBar | 进度条 |
Divider | 分隔线 |
ScrollArea | 滚动区域 |
内容渲染组件
Rich Content 渲染:
| 组件 | 功能 |
|---|---|
CodeBlock | 语法高亮代码块 |
Diff | 代码差异对比 |
Markdown | Markdown 渲染 |
Table | 表格渲染 |
List | 列表渲染 |
React Hooks (104 个)
状态管理 Hooks
useMessages() // 管理消息列表
useTools() // 管理工具状态
usePermission() // 管理权限状态
useTheme() // 主题切换
交互 Hooks
useKeyboard() // 键盘输入处理
useSuggestions() // 命令建议
useAutocomplete() // 自动补全
useFocus() // 焦点管理
数据 Hooks
useConfig() // 配置数据
useHistory() // 历史记录
useCost() // 成本数据
useSession() // 会话状态
组件通信模式
App (根组件)
├── StatusBar ← useSession, useCost
├── MessageList ← useMessages
│ ├── Message
│ │ ├── MessageContent
│ │ └── ToolCallMessage
│ │ └── ToolView (动态选择)
│ └── ...
├── InputArea ← useKeyboard
│ ├── TextInput
│ └── Autocomplete ← useSuggestions
└── PermissionModal ← usePermission
组件间通过 React Context 和 Hooks 共享状态,遵循 React 的单向数据流原则。