# Claude Code UI 还原实现
## 概述
本文档记录了如何将 Claude Code VSCode 扩展的 Webview UI 设计还原到我们的 Qwen Code VSCode IDE Companion 项目中。
## 分析的源 HTML 结构
从 Claude Code VSCode 扩展的 webview HTML 中,我们识别出以下关键组件:
### 1. 顶部导航栏 (`.he`)
- **Past Conversations** 按钮 (`.E`) - 带下拉箭头的会话列表按钮
- **New Session** 按钮 (`.j`) - 创建新会话的加号按钮
- 使用了 ghost button 风格,hover 时有背景色变化
### 2. 中间内容区域
- **空状态界面** - 当没有消息时显示
- Qwen Logo (SVG)
- 欢迎文本:"What to do first? Ask about this codebase or we can start writing code."
- 横幅提示:"Prefer the Terminal experience? Switch back in Settings."
### 3. 底部输入区域 (`.u`)
- **可编辑的 contenteditable div** - 替代传统的 textarea
- placeholder: "Ask Claude to edit…"
- 支持多行输入
- **操作按钮行** (`.ri`)
- "Ask before edits" 按钮 (`.l`) - 编辑模式选择
- Thinking 开关按钮 (`.H.ni`)
- 命令菜单按钮
- 发送按钮 (`.r`)
## 实现的组件
### 1. EmptyState 组件
**文件**: `src/webview/components/EmptyState.tsx`, `EmptyState.css`
**功能**:
- 显示 Qwen Logo (使用现有的 SVG)
- 显示欢迎文本
- 显示横幅提示(可关闭)
- 响应式布局
**关键样式**:
```css
.empty-state {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
padding: 40px 20px;
}
```
### 2. 更新的 Header
**改动**: `src/webview/App.tsx`, `App.css`
**变更**:
- 将 select 下拉框改为 "Past Conversations" 按钮
- 按钮样式遵循 Claude Code 的 ghost button 设计
- 使用 flex 布局,左对齐按钮,右侧 spacer,最右侧新建按钮
**类名**:
- `.header-conversations-button` - 会话列表按钮
- `.header-spacer` - flex spacer
- `.new-session-header-button` - 新建会话按钮
### 3. 重新设计的输入表单
**改动**: `src/webview/App.tsx`, `App.css`
**变更**:
- 使用 `contenteditable` div 替代 `` 或 `