diff --git a/packages/ui/README.md b/packages/ui/README.md
index e2df651ed4..880ef82b11 100644
--- a/packages/ui/README.md
+++ b/packages/ui/README.md
@@ -2,54 +2,87 @@
Cherry Studio UI 组件库 - 为 Cherry Studio 设计的 React 组件集合
-## 特性
+## ✨ 特性
-- 🎨 基于 Tailwind CSS 的现代化设计
-- 📦 支持 ESM 和 CJS 格式
-- 🔷 完整的 TypeScript 支持
-- 🚀 可以作为 npm 包发布
-- 🔧 开箱即用的常用 hooks 和工具函数
+- 🎨 **设计系统**: 完整的 CherryStudio 设计令牌(17种颜色 × 11个色阶 + 语义化主题)
+- 🌓 **Dark Mode**: 开箱即用的深色模式支持
+- 🚀 **Tailwind v4**: 基于最新 Tailwind CSS v4 构建
+- 📦 **灵活导入**: 3种样式导入方式,满足不同使用场景
+- 🔷 **TypeScript**: 完整的类型定义和智能提示
+- 🎯 **零冲突**: CSS 变量隔离,不覆盖用户主题
-## 安装
+---
+
+## 🚀 快速开始
+
+### 安装
```bash
-# 安装组件库
npm install @cherrystudio/ui
-
-# 安装必需的 peer dependencies
+# peer dependencies
npm install @heroui/react framer-motion react react-dom tailwindcss
```
-## 配置
+### 三种使用方式
-### 1. Tailwind CSS v4 配置
+根据你的需求选择一种:
-本组件库使用 Tailwind CSS v4,配置方式已改变。在你的主 CSS 文件(如 `src/styles/tailwind.css`)中:
+#### 方式 1:完整主题(推荐给主包)
```css
+/* app.css */
+@import '@cherrystudio/ui/styles/theme.css';
+```
+
+- ✅ 使用标准 Tailwind 类名(`bg-primary`、`bg-red-500`)
+- ✅ 所有颜色使用设计师定义的值
+- ⚠️ 会覆盖 Tailwind 默认颜色
+
+```tsx
+
+```
+
+#### 方式 2:仅变量(推荐给 npm 用户)
+
+```css
+/* app.css */
@import 'tailwindcss';
+@import '@cherrystudio/ui/styles/index.css';
+```
-/* 必须扫描组件库文件以提取类名 */
-@source '../node_modules/@cherrystudio/ui/dist/**/*.{js,mjs}';
+- ✅ 不覆盖你的 Tailwind 主题
+- ✅ 通过 CSS 变量使用(`var(--cs-primary)`)
+- ✅ 你的 `bg-red-500` 不受影响
-/* 你的应用源文件 */
-@source './src/**/*.{js,ts,jsx,tsx}';
+```tsx
+
-/*
- * 如果你的应用直接使用 HeroUI 组件,需要添加:
- * @source '../node_modules/@heroui/theme/dist/**/*.{js,ts,jsx,tsx}';
- * @plugin '@heroui/react/plugin';
- */
+
+ {/* 使用你自己的红色,不受影响 */}
+
+```
-/* 自定义主题配置(可选) */
+#### 方式 3:选择性覆盖
+
+```css
+/* app.css */
+@import 'tailwindcss';
+@import '@cherrystudio/ui/styles/tokens.css';
+
+/* 只使用部分设计系统 */
@theme {
- /* 你的主题扩展 */
+ --color-primary: var(--cs-primary); /* 用 CS 的主色 */
+ --color-red-500: oklch(...); /* 用自己的红色 */
}
```
-注意:Tailwind CSS v4 不再使用 `tailwind.config.js` 文件,所有配置都在 CSS 中完成。
-
-### 2. Provider 配置
+### Provider 配置
在你的 App 根组件中添加 HeroUI Provider:
diff --git a/packages/ui/components.json b/packages/ui/components.json
index 693dcaf364..b5c2f24eff 100644
--- a/packages/ui/components.json
+++ b/packages/ui/components.json
@@ -13,7 +13,7 @@
"tailwind": {
"baseColor": "zinc",
"config": "",
- "css": "src/styles/globals.css",
+ "css": "src/styles/theme.css",
"cssVariables": true,
"prefix": ""
},
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 8ebc28aabf..543a72df86 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -125,9 +125,10 @@
"require": "./dist/utils/index.js",
"default": "./dist/utils/index.js"
},
- "./styles/design-tokens.css": "./src/styles/design-tokens.css",
+ "./styles": "./src/styles/index.css",
+ "./styles/tokens.css": "./src/styles/tokens.css",
"./styles/theme.css": "./src/styles/theme.css",
- "./styles/globals.css": "./src/styles/globals.css"
+ "./styles/index.css": "./src/styles/index.css"
},
"packageManager": "yarn@4.9.1"
}
diff --git a/packages/ui/src/styles/globals.css b/packages/ui/src/styles/globals.css
deleted file mode 100644
index 8b879c1a96..0000000000
--- a/packages/ui/src/styles/globals.css
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * CherryStudio Globals CSS
- *
- * 主包专用:完整样式 + Tailwind 覆盖
- * - 引入 theme.css(包含所有 cs-* 前缀类)
- * - 覆盖 Tailwind 标准命名(bg-primary 等)
- */
-
-@import 'tailwindcss';
-@import 'tw-animate-css';
-@import './theme.css'; /* 已包含 design-tokens.css 和所有 cs-* 工具类 */
-
-@custom-variant dark (&:is(.dark *));
-
-/* ==================== */
-/* 覆盖 Tailwind 标准命名(仅主包使用) */
-/* 注意:cs-* 前缀类已由 theme.css 提供,此处不重复定义 */
-/* ==================== */
-
-@theme {
- /* ==================== */
- /* 语义化颜色(覆盖 Tailwind 标准命名) */
- /* ==================== */
- --color-primary: var(--cs-primary);
- --color-primary-foreground: var(--cs-white);
- --color-destructive: var(--cs-destructive);
- --color-destructive-foreground: var(--cs-white);
- --color-background: var(--cs-background);
- --color-foreground: var(--cs-foreground);
- --color-card: var(--cs-card);
- --color-card-foreground: var(--cs-foreground);
- --color-popover: var(--cs-popover);
- --color-popover-foreground: var(--cs-foreground);
- --color-secondary: var(--cs-secondary);
- --color-secondary-foreground: var(--cs-foreground);
- --color-muted: var(--cs-muted);
- --color-muted-foreground: var(--cs-foreground-secondary);
- --color-accent: var(--cs-accent);
- --color-accent-foreground: var(--cs-foreground);
- --color-border: var(--cs-border);
- --color-input: var(--cs-border);
- --color-ring: var(--cs-ring);
-
- /* 图表颜色 */
- --color-chart-1: var(--cs-blue-500);
- --color-chart-2: var(--cs-emerald-500);
- --color-chart-3: var(--cs-purple-500);
- --color-chart-4: var(--cs-amber-500);
- --color-chart-5: var(--cs-orange-500);
-
- /* 侧边栏 */
- --color-sidebar: var(--cs-sidebar);
- --color-sidebar-foreground: var(--cs-foreground);
- --color-sidebar-primary: var(--cs-primary);
- --color-sidebar-primary-foreground: var(--cs-white);
- --color-sidebar-accent: var(--cs-sidebar-accent);
- --color-sidebar-accent-foreground: var(--cs-foreground);
- --color-sidebar-border: var(--cs-border);
- --color-sidebar-ring: var(--cs-ring);
-
- /* ==================== */
- /* Primitive 颜色(标准命名,覆盖 Tailwind) */
- /* ==================== */
-
- /* Red */
- --color-red-50: var(--cs-red-50);
- --color-red-100: var(--cs-red-100);
- --color-red-200: var(--cs-red-200);
- --color-red-300: var(--cs-red-300);
- --color-red-400: var(--cs-red-400);
- --color-red-500: var(--cs-red-500);
- --color-red-600: var(--cs-red-600);
- --color-red-700: var(--cs-red-700);
- --color-red-800: var(--cs-red-800);
- --color-red-900: var(--cs-red-900);
- --color-red-950: var(--cs-red-950);
-
- /* Lime */
- --color-lime-50: var(--cs-lime-50);
- --color-lime-100: var(--cs-lime-100);
- --color-lime-200: var(--cs-lime-200);
- --color-lime-300: var(--cs-lime-300);
- --color-lime-400: var(--cs-lime-400);
- --color-lime-500: var(--cs-lime-500);
- --color-lime-600: var(--cs-lime-600);
- --color-lime-700: var(--cs-lime-700);
- --color-lime-800: var(--cs-lime-800);
- --color-lime-900: var(--cs-lime-900);
- --color-lime-950: var(--cs-lime-950);
-
- /* Green */
- --color-green-500: var(--cs-green-500);
-
- /* Amber */
- --color-amber-500: var(--cs-amber-500);
-
- /* Blue */
- --color-blue-500: var(--cs-blue-500);
-
- /* Emerald */
- --color-emerald-500: var(--cs-emerald-500);
-
- /* Purple */
- --color-purple-500: var(--cs-purple-500);
-
- /* Orange */
- --color-orange-500: var(--cs-orange-500);
-
- /* Zinc */
- --color-zinc-50: var(--cs-zinc-50);
- --color-zinc-500: var(--cs-zinc-500);
- --color-zinc-900: var(--cs-zinc-900);
-
- /* 其他常用颜色 */
- --color-slate-500: var(--cs-slate-500);
- --color-gray-500: var(--cs-gray-500);
- --color-black: var(--cs-black);
- --color-white: var(--cs-white);
-
- /* ==================== */
- /* Spacing & Radius(标准命名,覆盖 Tailwind) */
- /* ==================== */
-
- --spacing-xs: var(--cs-size-xs);
- --spacing-sm: var(--cs-size-sm);
- --spacing-md: var(--cs-size-md);
- --spacing-lg: var(--cs-size-lg);
- --spacing-xl: var(--cs-size-xl);
- --spacing-2xl: var(--cs-size-2xl);
-
- --radius-xs: var(--cs-radius-xs);
- --radius-sm: var(--cs-radius-sm);
- --radius-md: var(--cs-radius-md);
- --radius-lg: var(--cs-radius-lg);
- --radius-xl: var(--cs-radius-xl);
- --radius-2xl: var(--cs-radius-2xl);
-}
-
-@layer base {
- * {
- @apply border-border outline-ring/50;
- }
- body {
- @apply bg-background text-foreground;
- }
-}
diff --git a/packages/ui/src/styles/index.css b/packages/ui/src/styles/index.css
new file mode 100644
index 0000000000..781a250804
--- /dev/null
+++ b/packages/ui/src/styles/index.css
@@ -0,0 +1,24 @@
+/**
+ * CherryStudio Styles - npm 包入口
+ *
+ * 用途:仅导出 CSS 变量,不生成工具类,不覆盖用户主题
+ * 使用场景:
+ * - npm 用户想使用设计系统的变量,但不想覆盖 Tailwind 默认主题
+ * - 可以通过 var(--cs-primary) 等方式使用
+ * - 不会生成 bg-primary 等工具类(用户自己的 bg-primary 不受影响)
+ *
+ * 示例:
+ * ```css
+ * @import '@cherrystudio/ui/styles/index.css';
+ *
+ * .my-button {
+ * background: var(--cs-primary); // 使用 CS 的品牌色
+ * padding: var(--cs-size-md); // 使用 CS 的间距
+ * }
+ * ```
+ *
+ * 如果想要完整的主题覆盖(生成 bg-primary 等类),请导入:
+ * @import '@cherrystudio/ui/styles/theme.css';
+ */
+
+@import './tokens.css';
diff --git a/packages/ui/src/styles/theme.css b/packages/ui/src/styles/theme.css
index 5c8bfc50f1..c182607c99 100644
--- a/packages/ui/src/styles/theme.css
+++ b/packages/ui/src/styles/theme.css
@@ -1,241 +1,433 @@
/**
- * CherryStudio Theme - 生成 cs-* 前缀工具类
+ * CherryStudio Theme - Tailwind CSS 主题配置
*
- * 用途:
- * - npm 包用户安全导入(不覆盖用户的标准 Tailwind 命名)
- * - UI 库组件内部使用(确保自包含)
+ * 用途:映射设计师的设计系统(--cs-*)到 Tailwind 标准命名
+ * 使用场景:
+ * - 主包:完全使用设计系统
+ * - npm 用户:可选择导入,会覆盖 Tailwind 默认主题
*
- * 生成的工具类示例:
- * - bg-cs-primary, text-cs-primary
- * - bg-cs-destructive, border-cs-destructive
- * - p-cs-md, gap-cs-lg, m-cs-xs
- * - rounded-cs-md, rounded-cs-lg
+ * 生成的工具类:bg-primary, bg-red-500, p-md 等(无前缀)
*/
-@import './design-tokens.css';
+@import 'tailwindcss';
+@import './tokens.css';
+
+@custom-variant dark (&:is(.dark *));
@theme {
/* ==================== */
- /* 语义化颜色(生成 bg-cs-primary 等) */
+ /* 语义化颜色(覆盖 Tailwind 标准命名) */
/* ==================== */
+ --color-primary: var(--cs-primary);
+ --color-primary-foreground: var(--cs-white);
- --color-cs-primary: var(--cs-primary);
- --color-cs-destructive: var(--cs-destructive);
- --color-cs-success: var(--cs-success);
- --color-cs-warning: var(--cs-warning);
+ --color-destructive: var(--cs-destructive);
+ --color-destructive-foreground: var(--cs-white);
- --color-cs-background: var(--cs-background);
- --color-cs-foreground: var(--cs-foreground);
- --color-cs-foreground-secondary: var(--cs-foreground-secondary);
- --color-cs-foreground-muted: var(--cs-foreground-muted);
+ --color-success: var(--cs-success);
+ --color-success-foreground: var(--cs-white);
- --color-cs-border: var(--cs-border);
- --color-cs-border-hover: var(--cs-border-hover);
- --color-cs-border-active: var(--cs-border-active);
- --color-cs-ring: var(--cs-ring);
+ --color-warning: var(--cs-warning);
+ --color-warning-foreground: var(--cs-black);
- --color-cs-card: var(--cs-card);
- --color-cs-popover: var(--cs-popover);
- --color-cs-sidebar: var(--cs-sidebar);
+ --color-background: var(--cs-background);
+ --color-foreground: var(--cs-foreground);
- --color-cs-secondary: var(--cs-secondary);
- --color-cs-muted: var(--cs-muted);
- --color-cs-accent: var(--cs-accent);
- --color-cs-sidebar-accent: var(--cs-sidebar-accent);
+ --color-card: var(--cs-card);
+ --color-card-foreground: var(--cs-foreground);
+
+ --color-popover: var(--cs-popover);
+ --color-popover-foreground: var(--cs-foreground);
+
+ --color-secondary: var(--cs-secondary);
+ --color-secondary-foreground: var(--cs-foreground);
+
+ --color-muted: var(--cs-muted);
+ --color-muted-foreground: var(--cs-foreground-secondary);
+
+ --color-accent: var(--cs-accent);
+ --color-accent-foreground: var(--cs-foreground);
+
+ --color-border: var(--cs-border);
+ --color-input: var(--cs-border);
+ --color-ring: var(--cs-ring);
+
+ /* 侧边栏 */
+ --color-sidebar: var(--cs-sidebar);
+ --color-sidebar-foreground: var(--cs-foreground);
+ --color-sidebar-primary: var(--cs-primary);
+ --color-sidebar-primary-foreground: var(--cs-white);
+ --color-sidebar-accent: var(--cs-sidebar-accent);
+ --color-sidebar-accent-foreground: var(--cs-foreground);
+ --color-sidebar-border: var(--cs-border);
+ --color-sidebar-ring: var(--cs-ring);
+
+ /* 图表颜色 */
+ --color-chart-1: var(--cs-blue-500);
+ --color-chart-2: var(--cs-emerald-500);
+ --color-chart-3: var(--cs-purple-500);
+ --color-chart-4: var(--cs-amber-500);
+ --color-chart-5: var(--cs-orange-500);
/* ==================== */
- /* Primitive 颜色(完整色阶) */
+ /* Primitive 颜色(覆盖 Tailwind 默认色板) */
/* ==================== */
/* Neutral */
- --color-cs-neutral-50: var(--cs-neutral-50);
- --color-cs-neutral-100: var(--cs-neutral-100);
- --color-cs-neutral-200: var(--cs-neutral-200);
- --color-cs-neutral-300: var(--cs-neutral-300);
- --color-cs-neutral-400: var(--cs-neutral-400);
- --color-cs-neutral-500: var(--cs-neutral-500);
- --color-cs-neutral-600: var(--cs-neutral-600);
- --color-cs-neutral-700: var(--cs-neutral-700);
- --color-cs-neutral-800: var(--cs-neutral-800);
- --color-cs-neutral-900: var(--cs-neutral-900);
- --color-cs-neutral-950: var(--cs-neutral-950);
+ --color-neutral-50: var(--cs-neutral-50);
+ --color-neutral-100: var(--cs-neutral-100);
+ --color-neutral-200: var(--cs-neutral-200);
+ --color-neutral-300: var(--cs-neutral-300);
+ --color-neutral-400: var(--cs-neutral-400);
+ --color-neutral-500: var(--cs-neutral-500);
+ --color-neutral-600: var(--cs-neutral-600);
+ --color-neutral-700: var(--cs-neutral-700);
+ --color-neutral-800: var(--cs-neutral-800);
+ --color-neutral-900: var(--cs-neutral-900);
+ --color-neutral-950: var(--cs-neutral-950);
+
+ /* Stone */
+ --color-stone-50: var(--cs-stone-50);
+ --color-stone-100: var(--cs-stone-100);
+ --color-stone-200: var(--cs-stone-200);
+ --color-stone-300: var(--cs-stone-300);
+ --color-stone-400: var(--cs-stone-400);
+ --color-stone-500: var(--cs-stone-500);
+ --color-stone-600: var(--cs-stone-600);
+ --color-stone-700: var(--cs-stone-700);
+ --color-stone-800: var(--cs-stone-800);
+ --color-stone-900: var(--cs-stone-900);
+ --color-stone-950: var(--cs-stone-950);
/* Zinc */
- --color-cs-zinc-50: var(--cs-zinc-50);
- --color-cs-zinc-100: var(--cs-zinc-100);
- --color-cs-zinc-200: var(--cs-zinc-200);
- --color-cs-zinc-300: var(--cs-zinc-300);
- --color-cs-zinc-400: var(--cs-zinc-400);
- --color-cs-zinc-500: var(--cs-zinc-500);
- --color-cs-zinc-600: var(--cs-zinc-600);
- --color-cs-zinc-700: var(--cs-zinc-700);
- --color-cs-zinc-800: var(--cs-zinc-800);
- --color-cs-zinc-900: var(--cs-zinc-900);
- --color-cs-zinc-950: var(--cs-zinc-950);
+ --color-zinc-50: var(--cs-zinc-50);
+ --color-zinc-100: var(--cs-zinc-100);
+ --color-zinc-200: var(--cs-zinc-200);
+ --color-zinc-300: var(--cs-zinc-300);
+ --color-zinc-400: var(--cs-zinc-400);
+ --color-zinc-500: var(--cs-zinc-500);
+ --color-zinc-600: var(--cs-zinc-600);
+ --color-zinc-700: var(--cs-zinc-700);
+ --color-zinc-800: var(--cs-zinc-800);
+ --color-zinc-900: var(--cs-zinc-900);
+ --color-zinc-950: var(--cs-zinc-950);
+
+ /* Slate */
+ --color-slate-50: var(--cs-slate-50);
+ --color-slate-100: var(--cs-slate-100);
+ --color-slate-200: var(--cs-slate-200);
+ --color-slate-300: var(--cs-slate-300);
+ --color-slate-400: var(--cs-slate-400);
+ --color-slate-500: var(--cs-slate-500);
+ --color-slate-600: var(--cs-slate-600);
+ --color-slate-700: var(--cs-slate-700);
+ --color-slate-800: var(--cs-slate-800);
+ --color-slate-900: var(--cs-slate-900);
+ --color-slate-950: var(--cs-slate-950);
+
+ /* Gray */
+ --color-gray-50: var(--cs-gray-50);
+ --color-gray-100: var(--cs-gray-100);
+ --color-gray-200: var(--cs-gray-200);
+ --color-gray-300: var(--cs-gray-300);
+ --color-gray-400: var(--cs-gray-400);
+ --color-gray-500: var(--cs-gray-500);
+ --color-gray-600: var(--cs-gray-600);
+ --color-gray-700: var(--cs-gray-700);
+ --color-gray-800: var(--cs-gray-800);
+ --color-gray-900: var(--cs-gray-900);
+ --color-gray-950: var(--cs-gray-950);
/* Red */
- --color-cs-red-50: var(--cs-red-50);
- --color-cs-red-100: var(--cs-red-100);
- --color-cs-red-200: var(--cs-red-200);
- --color-cs-red-300: var(--cs-red-300);
- --color-cs-red-400: var(--cs-red-400);
- --color-cs-red-500: var(--cs-red-500);
- --color-cs-red-600: var(--cs-red-600);
- --color-cs-red-700: var(--cs-red-700);
- --color-cs-red-800: var(--cs-red-800);
- --color-cs-red-900: var(--cs-red-900);
- --color-cs-red-950: var(--cs-red-950);
-
- /* Lime (品牌主色) */
- --color-cs-lime-50: var(--cs-lime-50);
- --color-cs-lime-100: var(--cs-lime-100);
- --color-cs-lime-200: var(--cs-lime-200);
- --color-cs-lime-300: var(--cs-lime-300);
- --color-cs-lime-400: var(--cs-lime-400);
- --color-cs-lime-500: var(--cs-lime-500);
- --color-cs-lime-600: var(--cs-lime-600);
- --color-cs-lime-700: var(--cs-lime-700);
- --color-cs-lime-800: var(--cs-lime-800);
- --color-cs-lime-900: var(--cs-lime-900);
- --color-cs-lime-950: var(--cs-lime-950);
-
- /* Green */
- --color-cs-green-50: var(--cs-green-50);
- --color-cs-green-100: var(--cs-green-100);
- --color-cs-green-200: var(--cs-green-200);
- --color-cs-green-300: var(--cs-green-300);
- --color-cs-green-400: var(--cs-green-400);
- --color-cs-green-500: var(--cs-green-500);
- --color-cs-green-600: var(--cs-green-600);
- --color-cs-green-700: var(--cs-green-700);
- --color-cs-green-800: var(--cs-green-800);
- --color-cs-green-900: var(--cs-green-900);
- --color-cs-green-950: var(--cs-green-950);
-
- /* Amber */
- --color-cs-amber-50: var(--cs-amber-50);
- --color-cs-amber-100: var(--cs-amber-100);
- --color-cs-amber-200: var(--cs-amber-200);
- --color-cs-amber-300: var(--cs-amber-300);
- --color-cs-amber-400: var(--cs-amber-400);
- --color-cs-amber-500: var(--cs-amber-500);
- --color-cs-amber-600: var(--cs-amber-600);
- --color-cs-amber-700: var(--cs-amber-700);
- --color-cs-amber-800: var(--cs-amber-800);
- --color-cs-amber-900: var(--cs-amber-900);
- --color-cs-amber-950: var(--cs-amber-950);
-
- /* Blue */
- --color-cs-blue-50: var(--cs-blue-50);
- --color-cs-blue-100: var(--cs-blue-100);
- --color-cs-blue-200: var(--cs-blue-200);
- --color-cs-blue-300: var(--cs-blue-300);
- --color-cs-blue-400: var(--cs-blue-400);
- --color-cs-blue-500: var(--cs-blue-500);
- --color-cs-blue-600: var(--cs-blue-600);
- --color-cs-blue-700: var(--cs-blue-700);
- --color-cs-blue-800: var(--cs-blue-800);
- --color-cs-blue-900: var(--cs-blue-900);
- --color-cs-blue-950: var(--cs-blue-950);
-
- /* Emerald */
- --color-cs-emerald-50: var(--cs-emerald-50);
- --color-cs-emerald-100: var(--cs-emerald-100);
- --color-cs-emerald-200: var(--cs-emerald-200);
- --color-cs-emerald-300: var(--cs-emerald-300);
- --color-cs-emerald-400: var(--cs-emerald-400);
- --color-cs-emerald-500: var(--cs-emerald-500);
- --color-cs-emerald-600: var(--cs-emerald-600);
- --color-cs-emerald-700: var(--cs-emerald-700);
- --color-cs-emerald-800: var(--cs-emerald-800);
- --color-cs-emerald-900: var(--cs-emerald-900);
- --color-cs-emerald-950: var(--cs-emerald-950);
-
- /* Purple */
- --color-cs-purple-50: var(--cs-purple-50);
- --color-cs-purple-100: var(--cs-purple-100);
- --color-cs-purple-200: var(--cs-purple-200);
- --color-cs-purple-300: var(--cs-purple-300);
- --color-cs-purple-400: var(--cs-purple-400);
- --color-cs-purple-500: var(--cs-purple-500);
- --color-cs-purple-600: var(--cs-purple-600);
- --color-cs-purple-700: var(--cs-purple-700);
- --color-cs-purple-800: var(--cs-purple-800);
- --color-cs-purple-900: var(--cs-purple-900);
- --color-cs-purple-950: var(--cs-purple-950);
+ --color-red-50: var(--cs-red-50);
+ --color-red-100: var(--cs-red-100);
+ --color-red-200: var(--cs-red-200);
+ --color-red-300: var(--cs-red-300);
+ --color-red-400: var(--cs-red-400);
+ --color-red-500: var(--cs-red-500);
+ --color-red-600: var(--cs-red-600);
+ --color-red-700: var(--cs-red-700);
+ --color-red-800: var(--cs-red-800);
+ --color-red-900: var(--cs-red-900);
+ --color-red-950: var(--cs-red-950);
/* Orange */
- --color-cs-orange-50: var(--cs-orange-50);
- --color-cs-orange-100: var(--cs-orange-100);
- --color-cs-orange-200: var(--cs-orange-200);
- --color-cs-orange-300: var(--cs-orange-300);
- --color-cs-orange-400: var(--cs-orange-400);
- --color-cs-orange-500: var(--cs-orange-500);
- --color-cs-orange-600: var(--cs-orange-600);
- --color-cs-orange-700: var(--cs-orange-700);
- --color-cs-orange-800: var(--cs-orange-800);
- --color-cs-orange-900: var(--cs-orange-900);
- --color-cs-orange-950: var(--cs-orange-950);
+ --color-orange-50: var(--cs-orange-50);
+ --color-orange-100: var(--cs-orange-100);
+ --color-orange-200: var(--cs-orange-200);
+ --color-orange-300: var(--cs-orange-300);
+ --color-orange-400: var(--cs-orange-400);
+ --color-orange-500: var(--cs-orange-500);
+ --color-orange-600: var(--cs-orange-600);
+ --color-orange-700: var(--cs-orange-700);
+ --color-orange-800: var(--cs-orange-800);
+ --color-orange-900: var(--cs-orange-900);
+ --color-orange-950: var(--cs-orange-950);
- /* 其他颜色(按需添加) */
- --color-cs-slate-500: var(--cs-slate-500);
- --color-cs-gray-500: var(--cs-gray-500);
- --color-cs-indigo-500: var(--cs-indigo-500);
- --color-cs-violet-500: var(--cs-violet-500);
- --color-cs-cyan-500: var(--cs-cyan-500);
- --color-cs-sky-500: var(--cs-sky-500);
- --color-cs-teal-500: var(--cs-teal-500);
- --color-cs-fuchsia-500: var(--cs-fuchsia-500);
- --color-cs-pink-500: var(--cs-pink-500);
- --color-cs-rose-500: var(--cs-rose-500);
- --color-cs-yellow-500: var(--cs-yellow-500);
+ /* Amber */
+ --color-amber-50: var(--cs-amber-50);
+ --color-amber-100: var(--cs-amber-100);
+ --color-amber-200: var(--cs-amber-200);
+ --color-amber-300: var(--cs-amber-300);
+ --color-amber-400: var(--cs-amber-400);
+ --color-amber-500: var(--cs-amber-500);
+ --color-amber-600: var(--cs-amber-600);
+ --color-amber-700: var(--cs-amber-700);
+ --color-amber-800: var(--cs-amber-800);
+ --color-amber-900: var(--cs-amber-900);
+ --color-amber-950: var(--cs-amber-950);
+
+ /* Yellow */
+ --color-yellow-50: var(--cs-yellow-50);
+ --color-yellow-100: var(--cs-yellow-100);
+ --color-yellow-200: var(--cs-yellow-200);
+ --color-yellow-300: var(--cs-yellow-300);
+ --color-yellow-400: var(--cs-yellow-400);
+ --color-yellow-500: var(--cs-yellow-500);
+ --color-yellow-600: var(--cs-yellow-600);
+ --color-yellow-700: var(--cs-yellow-700);
+ --color-yellow-800: var(--cs-yellow-800);
+ --color-yellow-900: var(--cs-yellow-900);
+ --color-yellow-950: var(--cs-yellow-950);
+
+ /* Lime (品牌主色) */
+ --color-lime-50: var(--cs-lime-50);
+ --color-lime-100: var(--cs-lime-100);
+ --color-lime-200: var(--cs-lime-200);
+ --color-lime-300: var(--cs-lime-300);
+ --color-lime-400: var(--cs-lime-400);
+ --color-lime-500: var(--cs-lime-500);
+ --color-lime-600: var(--cs-lime-600);
+ --color-lime-700: var(--cs-lime-700);
+ --color-lime-800: var(--cs-lime-800);
+ --color-lime-900: var(--cs-lime-900);
+ --color-lime-950: var(--cs-lime-950);
+
+ /* Green */
+ --color-green-50: var(--cs-green-50);
+ --color-green-100: var(--cs-green-100);
+ --color-green-200: var(--cs-green-200);
+ --color-green-300: var(--cs-green-300);
+ --color-green-400: var(--cs-green-400);
+ --color-green-500: var(--cs-green-500);
+ --color-green-600: var(--cs-green-600);
+ --color-green-700: var(--cs-green-700);
+ --color-green-800: var(--cs-green-800);
+ --color-green-900: var(--cs-green-900);
+ --color-green-950: var(--cs-green-950);
+
+ /* Emerald */
+ --color-emerald-50: var(--cs-emerald-50);
+ --color-emerald-100: var(--cs-emerald-100);
+ --color-emerald-200: var(--cs-emerald-200);
+ --color-emerald-300: var(--cs-emerald-300);
+ --color-emerald-400: var(--cs-emerald-400);
+ --color-emerald-500: var(--cs-emerald-500);
+ --color-emerald-600: var(--cs-emerald-600);
+ --color-emerald-700: var(--cs-emerald-700);
+ --color-emerald-800: var(--cs-emerald-800);
+ --color-emerald-900: var(--cs-emerald-900);
+ --color-emerald-950: var(--cs-emerald-950);
+
+ /* Teal */
+ --color-teal-50: var(--cs-teal-50);
+ --color-teal-100: var(--cs-teal-100);
+ --color-teal-200: var(--cs-teal-200);
+ --color-teal-300: var(--cs-teal-300);
+ --color-teal-400: var(--cs-teal-400);
+ --color-teal-500: var(--cs-teal-500);
+ --color-teal-600: var(--cs-teal-600);
+ --color-teal-700: var(--cs-teal-700);
+ --color-teal-800: var(--cs-teal-800);
+ --color-teal-900: var(--cs-teal-900);
+ --color-teal-950: var(--cs-teal-950);
+
+ /* Cyan */
+ --color-cyan-50: var(--cs-cyan-50);
+ --color-cyan-100: var(--cs-cyan-100);
+ --color-cyan-200: var(--cs-cyan-200);
+ --color-cyan-300: var(--cs-cyan-300);
+ --color-cyan-400: var(--cs-cyan-400);
+ --color-cyan-500: var(--cs-cyan-500);
+ --color-cyan-600: var(--cs-cyan-600);
+ --color-cyan-700: var(--cs-cyan-700);
+ --color-cyan-800: var(--cs-cyan-800);
+ --color-cyan-900: var(--cs-cyan-900);
+ --color-cyan-950: var(--cs-cyan-950);
+
+ /* Sky */
+ --color-sky-50: var(--cs-sky-50);
+ --color-sky-100: var(--cs-sky-100);
+ --color-sky-200: var(--cs-sky-200);
+ --color-sky-300: var(--cs-sky-300);
+ --color-sky-400: var(--cs-sky-400);
+ --color-sky-500: var(--cs-sky-500);
+ --color-sky-600: var(--cs-sky-600);
+ --color-sky-700: var(--cs-sky-700);
+ --color-sky-800: var(--cs-sky-800);
+ --color-sky-900: var(--cs-sky-900);
+ --color-sky-950: var(--cs-sky-950);
+
+ /* Blue */
+ --color-blue-50: var(--cs-blue-50);
+ --color-blue-100: var(--cs-blue-100);
+ --color-blue-200: var(--cs-blue-200);
+ --color-blue-300: var(--cs-blue-300);
+ --color-blue-400: var(--cs-blue-400);
+ --color-blue-500: var(--cs-blue-500);
+ --color-blue-600: var(--cs-blue-600);
+ --color-blue-700: var(--cs-blue-700);
+ --color-blue-800: var(--cs-blue-800);
+ --color-blue-900: var(--cs-blue-900);
+ --color-blue-950: var(--cs-blue-950);
+
+ /* Indigo */
+ --color-indigo-50: var(--cs-indigo-50);
+ --color-indigo-100: var(--cs-indigo-100);
+ --color-indigo-200: var(--cs-indigo-200);
+ --color-indigo-300: var(--cs-indigo-300);
+ --color-indigo-400: var(--cs-indigo-400);
+ --color-indigo-500: var(--cs-indigo-500);
+ --color-indigo-600: var(--cs-indigo-600);
+ --color-indigo-700: var(--cs-indigo-700);
+ --color-indigo-800: var(--cs-indigo-800);
+ --color-indigo-900: var(--cs-indigo-900);
+ --color-indigo-950: var(--cs-indigo-950);
+
+ /* Violet */
+ --color-violet-50: var(--cs-violet-50);
+ --color-violet-100: var(--cs-violet-100);
+ --color-violet-200: var(--cs-violet-200);
+ --color-violet-300: var(--cs-violet-300);
+ --color-violet-400: var(--cs-violet-400);
+ --color-violet-500: var(--cs-violet-500);
+ --color-violet-600: var(--cs-violet-600);
+ --color-violet-700: var(--cs-violet-700);
+ --color-violet-800: var(--cs-violet-800);
+ --color-violet-900: var(--cs-violet-900);
+ --color-violet-950: var(--cs-violet-950);
+
+ /* Purple */
+ --color-purple-50: var(--cs-purple-50);
+ --color-purple-100: var(--cs-purple-100);
+ --color-purple-200: var(--cs-purple-200);
+ --color-purple-300: var(--cs-purple-300);
+ --color-purple-400: var(--cs-purple-400);
+ --color-purple-500: var(--cs-purple-500);
+ --color-purple-600: var(--cs-purple-600);
+ --color-purple-700: var(--cs-purple-700);
+ --color-purple-800: var(--cs-purple-800);
+ --color-purple-900: var(--cs-purple-900);
+ --color-purple-950: var(--cs-purple-950);
+
+ /* Fuchsia */
+ --color-fuchsia-50: var(--cs-fuchsia-50);
+ --color-fuchsia-100: var(--cs-fuchsia-100);
+ --color-fuchsia-200: var(--cs-fuchsia-200);
+ --color-fuchsia-300: var(--cs-fuchsia-300);
+ --color-fuchsia-400: var(--cs-fuchsia-400);
+ --color-fuchsia-500: var(--cs-fuchsia-500);
+ --color-fuchsia-600: var(--cs-fuchsia-600);
+ --color-fuchsia-700: var(--cs-fuchsia-700);
+ --color-fuchsia-800: var(--cs-fuchsia-800);
+ --color-fuchsia-900: var(--cs-fuchsia-900);
+ --color-fuchsia-950: var(--cs-fuchsia-950);
+
+ /* Pink */
+ --color-pink-50: var(--cs-pink-50);
+ --color-pink-100: var(--cs-pink-100);
+ --color-pink-200: var(--cs-pink-200);
+ --color-pink-300: var(--cs-pink-300);
+ --color-pink-400: var(--cs-pink-400);
+ --color-pink-500: var(--cs-pink-500);
+ --color-pink-600: var(--cs-pink-600);
+ --color-pink-700: var(--cs-pink-700);
+ --color-pink-800: var(--cs-pink-800);
+ --color-pink-900: var(--cs-pink-900);
+ --color-pink-950: var(--cs-pink-950);
+
+ /* Rose */
+ --color-rose-50: var(--cs-rose-50);
+ --color-rose-100: var(--cs-rose-100);
+ --color-rose-200: var(--cs-rose-200);
+ --color-rose-300: var(--cs-rose-300);
+ --color-rose-400: var(--cs-rose-400);
+ --color-rose-500: var(--cs-rose-500);
+ --color-rose-600: var(--cs-rose-600);
+ --color-rose-700: var(--cs-rose-700);
+ --color-rose-800: var(--cs-rose-800);
+ --color-rose-900: var(--cs-rose-900);
+ --color-rose-950: var(--cs-rose-950);
/* Black & White */
- --color-cs-black: var(--cs-black);
- --color-cs-white: var(--cs-white);
+ --color-black: var(--cs-black);
+ --color-white: var(--cs-white);
/* ==================== */
- /* Spacing(生成 p-cs-md, gap-cs-lg 等) */
+ /* Spacing & Sizing(自定义尺寸,额外扩展) */
/* ==================== */
- --spacing-cs-5xs: var(--cs-size-5xs);
- --spacing-cs-4xs: var(--cs-size-4xs);
- --spacing-cs-3xs: var(--cs-size-3xs);
- --spacing-cs-2xs: var(--cs-size-2xs);
- --spacing-cs-xs: var(--cs-size-xs);
- --spacing-cs-sm: var(--cs-size-sm);
- --spacing-cs-md: var(--cs-size-md);
- --spacing-cs-lg: var(--cs-size-lg);
- --spacing-cs-xl: var(--cs-size-xl);
- --spacing-cs-2xl: var(--cs-size-2xl);
- --spacing-cs-3xl: var(--cs-size-3xl);
- --spacing-cs-4xl: var(--cs-size-4xl);
- --spacing-cs-5xl: var(--cs-size-5xl);
- --spacing-cs-6xl: var(--cs-size-6xl);
- --spacing-cs-7xl: var(--cs-size-7xl);
- --spacing-cs-8xl: var(--cs-size-8xl);
+ --spacing-5xs: var(--cs-size-5xs);
+ --spacing-4xs: var(--cs-size-4xs);
+ --spacing-3xs: var(--cs-size-3xs);
+ --spacing-2xs: var(--cs-size-2xs);
+ --spacing-xs: var(--cs-size-xs);
+ --spacing-sm: var(--cs-size-sm);
+ --spacing-md: var(--cs-size-md);
+ --spacing-lg: var(--cs-size-lg);
+ --spacing-xl: var(--cs-size-xl);
+ --spacing-2xl: var(--cs-size-2xl);
+ --spacing-3xl: var(--cs-size-3xl);
+ --spacing-4xl: var(--cs-size-4xl);
+ --spacing-5xl: var(--cs-size-5xl);
+ --spacing-6xl: var(--cs-size-6xl);
+ --spacing-7xl: var(--cs-size-7xl);
+ --spacing-8xl: var(--cs-size-8xl);
/* ==================== */
- /* Border Radius(生成 rounded-cs-md 等) */
+ /* Border Radius(自定义圆角,额外扩展) */
/* ==================== */
- --radius-cs-4xs: var(--cs-radius-4xs);
- --radius-cs-3xs: var(--cs-radius-3xs);
- --radius-cs-2xs: var(--cs-radius-2xs);
- --radius-cs-xs: var(--cs-radius-xs);
- --radius-cs-sm: var(--cs-radius-sm);
- --radius-cs-md: var(--cs-radius-md);
- --radius-cs-lg: var(--cs-radius-lg);
- --radius-cs-xl: var(--cs-radius-xl);
- --radius-cs-2xl: var(--cs-radius-2xl);
- --radius-cs-3xl: var(--cs-radius-3xl);
- --radius-cs-round: var(--cs-radius-round);
-
- /* ==================== */
- /* Border Width(生成 border-cs-md 等) */
- /* ==================== */
-
- --border-width-cs-sm: var(--cs-border-width-sm);
- --border-width-cs-md: var(--cs-border-width-md);
- --border-width-cs-lg: var(--cs-border-width-lg);
+ --radius-4xs: var(--cs-radius-4xs);
+ --radius-3xs: var(--cs-radius-3xs);
+ --radius-2xs: var(--cs-radius-2xs);
+ --radius-xs: var(--cs-radius-xs);
+ --radius-sm: var(--cs-radius-sm);
+ --radius-md: var(--cs-radius-md);
+ --radius-lg: var(--cs-radius-lg);
+ --radius-xl: var(--cs-radius-xl);
+ --radius-2xl: var(--cs-radius-2xl);
+ --radius-3xl: var(--cs-radius-3xl);
+ --radius-round: var(--cs-radius-round);
+}
+
+/* ==================== */
+/* Dark Mode 覆盖 */
+/* ==================== */
+
+@theme dark {
+ --color-background: var(--cs-background);
+ --color-foreground: var(--cs-foreground);
+ --color-card: var(--cs-card);
+ --color-popover: var(--cs-popover);
+ --color-border: var(--cs-border);
+ --color-input: var(--cs-border);
+ --color-secondary: var(--cs-secondary);
+ --color-muted: var(--cs-muted);
+ --color-accent: var(--cs-accent);
+ --color-sidebar: var(--cs-sidebar);
+ --color-sidebar-accent: var(--cs-sidebar-accent);
+}
+
+/* ==================== */
+/* Base Styles(可选) */
+/* ==================== */
+
+@layer base {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
}
diff --git a/packages/ui/src/styles/design-tokens.css b/packages/ui/src/styles/tokens.css
similarity index 98%
rename from packages/ui/src/styles/design-tokens.css
rename to packages/ui/src/styles/tokens.css
index c664f3a955..89574ca520 100644
--- a/packages/ui/src/styles/design-tokens.css
+++ b/packages/ui/src/styles/tokens.css
@@ -411,16 +411,16 @@
/* Border Radius */
/* ==================== */
- --cs-radius-4xs: 0.25rem; /* 4px */
- --cs-radius-3xs: 0.5rem; /* 8px */
- --cs-radius-2xs: 0.75rem; /* 12px */
- --cs-radius-xs: 1rem; /* 16px */
- --cs-radius-sm: 1.5rem; /* 24px */
- --cs-radius-md: 2rem; /* 32px */
+ --cs-radius-4xs: 4px; /* 4px */
+ --cs-radius-3xs: 8px; /* 8px */
+ --cs-radius-2xs: 12px; /* 12px */
+ --cs-radius-xs: 16px; /* 16px */
+ --cs-radius-sm: 24px; /* 24px */
+ --cs-radius-md: 32px; /* 32px */
--cs-radius-lg: 2.5rem; /* 40px */
- --cs-radius-xl: 3rem; /* 48px */
- --cs-radius-2xl: 3.5rem; /* 56px */
- --cs-radius-3xl: 4rem; /* 64px */
+ --cs-radius-xl: 48px; /* 48px */
+ --cs-radius-2xl: 56px; /* 56px */
+ --cs-radius-3xl: 64px; /* 64px */
--cs-radius-round: 999px; /* 保持 px,因为是特殊值 */
/* Border Width */
diff --git a/src/renderer/src/assets/styles/index.css b/src/renderer/src/assets/styles/index.css
index 1f03a6671d..321fa5fc5e 100644
--- a/src/renderer/src/assets/styles/index.css
+++ b/src/renderer/src/assets/styles/index.css
@@ -1,7 +1,6 @@
@import './color.css';
@import './font.css';
@import './markdown.css';
-@import './ant.css';
@import './scrollbar.css';
@import './container.css';
@import './animation.css';
diff --git a/src/renderer/src/assets/styles/tailwind.css b/src/renderer/src/assets/styles/tailwind.css
index 81b9ff93f7..2b90f9d0fb 100644
--- a/src/renderer/src/assets/styles/tailwind.css
+++ b/src/renderer/src/assets/styles/tailwind.css
@@ -1,10 +1,10 @@
-@import 'tailwindcss' source('../../../../renderer');
+@import '../../../../../packages/ui/src/styles/theme.css';
@import 'tw-animate-css';
+/* TODO heroui 迁移完成后即可删除 */
/* heroui */
-@plugin '../../hero.ts';
-@source '../../../../../node_modules/@heroui/theme/dist/**/*.{js,ts,jsx,tsx}';
-@source '../../../../../packages/ui/src/**/*.{js,ts,jsx,tsx}';
+/* @plugin '../../hero.ts'; */
+/* @source '../../../../../packages/ui/src*.{js,ts,jsx,tsx}'; */
@custom-variant dark (&:is(.dark *));
@@ -21,117 +21,24 @@
4. Put the new custom utility class into the utilities layer.
*/
+/* 应用特定的原始变量 */
:root {
- --radius: 0.625rem;
- --background: oklch(1 0 0);
- --foreground: oklch(0.141 0.005 285.823);
- --card: oklch(1 0 0);
- --card-foreground: oklch(0.141 0.005 285.823);
- --popover: oklch(1 0 0);
- --popover-foreground: oklch(0.141 0.005 285.823);
- --primary: oklch(0.21 0.006 285.885);
- --primary-foreground: oklch(0.985 0 0);
- --secondary: oklch(0.967 0.001 286.375);
- --secondary-foreground: oklch(0.21 0.006 285.885);
- --muted: oklch(0.967 0.001 286.375);
- --muted-foreground: oklch(0.552 0.016 285.938);
- --accent: oklch(0.967 0.001 286.375);
- --accent-foreground: oklch(0.21 0.006 285.885);
- --destructive: oklch(0.577 0.245 27.325);
- --border: oklch(0.92 0.004 286.32);
- --input: oklch(0.92 0.004 286.32);
- --ring: oklch(0.705 0.015 286.067);
- --chart-1: oklch(0.646 0.222 41.116);
- --chart-2: oklch(0.6 0.118 184.704);
- --chart-3: oklch(0.398 0.07 227.392);
- --chart-4: oklch(0.828 0.189 84.429);
- --chart-5: oklch(0.769 0.188 70.08);
- --sidebar: oklch(0.985 0 0);
- --sidebar-foreground: oklch(0.141 0.005 285.823);
- --sidebar-primary: oklch(0.21 0.006 285.885);
- --sidebar-primary-foreground: oklch(0.985 0 0);
- --sidebar-accent: oklch(0.967 0.001 286.375);
- --sidebar-accent-foreground: oklch(0.21 0.006 285.885);
- --sidebar-border: oklch(0.92 0.004 286.32);
- --sidebar-ring: oklch(0.705 0.015 286.067);
--icon: #00000099;
}
.dark {
- --background: oklch(0.141 0.005 285.823);
- --foreground: oklch(0.985 0 0);
- --card: oklch(0.21 0.006 285.885);
- --card-foreground: oklch(0.985 0 0);
- --popover: oklch(0.21 0.006 285.885);
- --popover-foreground: oklch(0.985 0 0);
- --primary: oklch(0.92 0.004 286.32);
- --primary-foreground: oklch(0.21 0.006 285.885);
- --secondary: oklch(0.274 0.006 286.033);
- --secondary-foreground: oklch(0.985 0 0);
- --muted: oklch(0.274 0.006 286.033);
- --muted-foreground: oklch(0.705 0.015 286.067);
- --accent: oklch(0.274 0.006 286.033);
- --accent-foreground: oklch(0.985 0 0);
- --destructive: oklch(0.704 0.191 22.216);
- --border: oklch(1 0 0 / 10%);
- --input: oklch(1 0 0 / 15%);
- --ring: oklch(0.552 0.016 285.938);
- --chart-1: oklch(0.488 0.243 264.376);
- --chart-2: oklch(0.696 0.17 162.48);
- --chart-3: oklch(0.769 0.188 70.08);
- --chart-4: oklch(0.627 0.265 303.9);
- --chart-5: oklch(0.645 0.246 16.439);
- --sidebar: oklch(0.21 0.006 285.885);
- --sidebar-foreground: oklch(0.985 0 0);
- --sidebar-primary: oklch(0.488 0.243 264.376);
- --sidebar-primary-foreground: oklch(0.985 0 0);
- --sidebar-accent: oklch(0.274 0.006 286.033);
- --sidebar-accent-foreground: oklch(0.985 0 0);
- --sidebar-border: oklch(1 0 0 / 10%);
- --sidebar-ring: oklch(0.552 0.016 285.938);
--icon: #ffffff99;
}
+/* 应用特定的变量和动画(不与 UI 库冲突) */
@theme inline {
- --color-background: var(--background);
- --color-foreground: var(--foreground);
- --color-card: var(--card);
- --color-card-foreground: var(--card-foreground);
- --color-popover: var(--popover);
- --color-popover-foreground: var(--popover-foreground);
- --color-primary: var(--primary);
- --color-primary-foreground: var(--primary-foreground);
- --color-secondary: var(--secondary);
- --color-secondary-foreground: var(--secondary-foreground);
- --color-muted: var(--muted);
- --color-muted-foreground: var(--muted-foreground);
- --color-accent: var(--accent);
- --color-accent-foreground: var(--accent-foreground);
- --color-destructive: var(--destructive);
- --color-destructive-foreground: var(--destructive-foreground);
- --color-border: var(--border);
- --color-input: var(--input);
- --color-ring: var(--ring);
- --color-chart-1: var(--chart-1);
- --color-chart-2: var(--chart-2);
- --color-chart-3: var(--chart-3);
- --color-chart-4: var(--chart-4);
- --color-chart-5: var(--chart-5);
- --radius-sm: calc(var(--radius) - 4px);
- --radius-md: calc(var(--radius) - 2px);
- --radius-lg: var(--radius);
- --radius-xl: calc(var(--radius) + 4px);
- --color-sidebar: var(--sidebar);
- --color-sidebar-foreground: var(--sidebar-foreground);
- --color-sidebar-primary: var(--sidebar-primary);
- --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
- --color-sidebar-accent: var(--sidebar-accent);
- --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
- --color-sidebar-border: var(--sidebar-border);
- --color-sidebar-ring: var(--sidebar-ring);
+ /* Icon 颜色 - 应用特定变量 */
+ --color-icon: var(--icon);
+
+ /* 跑马灯动画 - 应用特定 */
--animate-marquee: marquee var(--duration) infinite linear;
--animate-marquee-vertical: marquee-vertical var(--duration) linear infinite;
- --color-icon: var(--icon);
+
@keyframes marquee {
from {
transform: translateX(0);
diff --git a/src/renderer/src/components/ErrorBoundary.tsx b/src/renderer/src/components/ErrorBoundary.tsx
index 28ece64f38..cd3b36ec2b 100644
--- a/src/renderer/src/components/ErrorBoundary.tsx
+++ b/src/renderer/src/components/ErrorBoundary.tsx
@@ -1,4 +1,4 @@
-import { Button } from '@heroui/button'
+import { Button } from '@cherrystudio/ui'
import { formatErrorMessage } from '@renderer/utils/error'
import { Alert, Space } from 'antd'
import type { ComponentType, ReactNode } from 'react'
diff --git a/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx b/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx
index a891a003cb..fb12b8bfc7 100644
--- a/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx
+++ b/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx
@@ -1,4 +1,4 @@
-import { Button } from '@heroui/button'
+import { Button } from '@cherrystudio/ui'
import CodeViewer from '@renderer/components/CodeViewer'
import { useCodeStyle } from '@renderer/context/CodeStyleProvider'
import { useTimer } from '@renderer/hooks/useTimer'