mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-19 09:33:53 +00:00
- 将 WebView 调整到编辑器右侧 - 添加 ChatHeader 组件,实现会话下拉菜单 - 替换模态框为紧凑型下拉菜单 - 更新会话切换逻辑,显示当前标题 - 清理旧的会话选择器样式 基于 Claude Code v2.0.43 UI 分析实现。
5.8 KiB
5.8 KiB
Tailwind CSS v4 集成完成
完成时间: 2025-11-18 状态: ✅ 已成功引入并修复,所有样式正常工作
✅ 已完成的工作
1. 安装依赖 ✅
npm install -D tailwindcss@latest postcss@latest autoprefixer@latest @tailwindcss/postcss
安装的包:
tailwindcssv4.1.17 - Tailwind CSS 核心postcss- CSS 处理器autoprefixer- 自动添加浏览器前缀@tailwindcss/postcss- Tailwind v4 的 PostCSS 插件
2. 配置文件 ✅
A. postcss.config.js
export default {
plugins: {
'@tailwindcss/postcss': {},
autoprefixer: {},
},
};
B. src/webview/styles.css (Tailwind v4 配置方式)
重要: Tailwind v4 不再使用 tailwind.config.js,而是使用 CSS 中的 @theme 指令进行配置。
@import 'tailwindcss';
/* Custom VSCode theme utilities */
@theme {
--color-vscode-bg: var(--vscode-editor-background);
--color-vscode-fg: var(--vscode-editor-foreground);
--color-vscode-input-bg: var(--vscode-input-background);
--color-vscode-input-fg: var(--vscode-input-foreground);
--color-vscode-button-bg: var(--vscode-button-background);
--color-vscode-button-fg: var(--vscode-button-foreground);
--color-vscode-button-hover-bg: var(--vscode-button-hoverBackground);
--color-vscode-border: var(--vscode-panel-border);
/* Custom animations */
--animate-float: float 3s ease-in-out infinite;
--animate-dropdownFadeIn: dropdownFadeIn 0.15s ease-out;
}
@keyframes float {
0%,
100% {
transform: translateY(0);
}
50% {
transform: translateY(-10px);
}
}
@keyframes dropdownFadeIn {
0% {
opacity: 0;
transform: translateY(-8px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
3. 更新构建配置 ✅
修改: esbuild.js
添加了 PostCSS 处理,包含错误处理:
const cssInjectPlugin = {
name: 'css-inject',
setup(build) {
build.onLoad({ filter: /\.css$/ }, async (args) => {
const fs = await import('fs');
const path = await import('path');
try {
const cssContent = await fs.promises.readFile(args.path, 'utf8');
// Process CSS through PostCSS (includes Tailwind)
const result = await postcss([tailwindcssPlugin, autoprefixer]).process(
cssContent,
{ from: args.path },
);
return {
contents: `
const style = document.createElement('style');
style.textContent = ${JSON.stringify(result.css)};
document.head.appendChild(style);
`,
loader: 'js',
};
} catch (error) {
console.error(`[CSS Plugin] Error processing ${args.path}:`, error);
throw error;
}
});
},
};
🎯 如何使用 Tailwind v4
1. 使用 VSCode 主题颜色
在 @theme 中已经定义了 VSCode 颜色变量:
// 背景色
<div className="bg-vscode-bg">...</div>
// 前景色(文字)
<div className="text-vscode-fg">...</div>
// 输入框样式
<input className="bg-vscode-input-bg text-vscode-input-fg" />
// 按钮样式
<button className="bg-vscode-button-bg text-vscode-button-fg hover:bg-vscode-button-hover-bg">
Click me
</button>
// 边框
<div className="border border-vscode-border">...</div>
2. 使用自定义动画
// Float 动画
<div className="animate-float">...</div>
// Dropdown 淡入动画
<div className="animate-dropdownFadeIn">...</div>
3. 常用 Tailwind 类
| CSS 属性 | Tailwind 类 | 示例 |
|---|---|---|
display: flex |
flex |
className="flex" |
flex-direction: column |
flex-col |
className="flex-col" |
align-items: center |
items-center |
className="items-center" |
justify-content: center |
justify-center |
className="justify-center" |
padding: 16px |
p-4 |
className="p-4" |
gap: 16px |
gap-4 |
className="gap-4" |
📝 已转换的组件
1. WelcomeScreen ✅
- 移除了
WelcomeScreen.css(~120 行) - 完全使用 Tailwind utility classes
2. ChatInput ✅
- 移除了
ChatInput.css(~130 行) - 简化组件结构,使用 Tailwind
3. ChatHeader ✅
- 移除了
ChatHeader.css(~245 行) - 复杂下拉菜单完全用 Tailwind 实现
总计减少: ~500 行传统 CSS 代码
🔧 问题修复记录
问题: 样式全部失效
原因: Tailwind v4 不再支持 tailwind.config.js 中的 theme.extend 配置方式,自定义颜色和动画没有被生成。
解决方案:
- 移除
tailwind.config.js - 在
styles.css中使用@theme指令定义自定义变量 - 使用
@import "tailwindcss"代替@tailwind指令
验证:
- ✅ 所有 CSS 文件正确注入 (styles.css, App.css, PlanDisplay.css)
- ✅ 自定义颜色类正确生成 (
bg-vscode-bg,text-vscode-fg等) - ✅ 自定义动画正确生成 (
animate-float,animate-dropdownFadeIn) - ✅ VSCode 主题变量正确映射
✅ 验证
# 构建通过
npm run build:dev
✅ TypeScript 编译通过 (有已知错误但不影响 WebView)
✅ esbuild 构建成功(包含 Tailwind CSS v4)
✅ 所有自定义 Tailwind 类正确生成
📚 参考资源
文档版本: v2.0 更新时间: 2025-11-18 状态: ✅ Tailwind CSS v4 已成功集成,所有样式正常工作