Files
qwen-code/packages/vscode-ide-companion/docs-tmp/TAILWIND_INTEGRATION.md
yiliang114 732220e651 wip(vscode-ide-companion): 实现 quick win 功能
- 将 WebView 调整到编辑器右侧
- 添加 ChatHeader 组件,实现会话下拉菜单
- 替换模态框为紧凑型下拉菜单
- 更新会话切换逻辑,显示当前标题
- 清理旧的会话选择器样式
基于 Claude Code v2.0.43 UI 分析实现。
2025-11-19 00:16:45 +08:00

5.8 KiB
Raw Blame History

Tailwind CSS v4 集成完成

完成时间: 2025-11-18 状态: 已成功引入并修复,所有样式正常工作


已完成的工作

1. 安装依赖

npm install -D tailwindcss@latest postcss@latest autoprefixer@latest @tailwindcss/postcss

安装的包:

  • tailwindcss v4.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 配置方式,自定义颜色和动画没有被生成。

解决方案:

  1. 移除 tailwind.config.js
  2. styles.css 中使用 @theme 指令定义自定义变量
  3. 使用 @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 已成功集成,所有样式正常工作