# 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 替代 `` 或 `