sparkdesign 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/cli/registry/{basic → __tests__/basic}/button.test.tsx +1 -1
  2. package/cli/registry/{chat → __tests__/chat}/markdown.test.tsx +1 -1
  3. package/cli/registry/{chat → __tests__/chat}/thinking-indicator.test.tsx +1 -1
  4. package/cli/registry/{chat → __tests__/chat}/tool-invocation-card.test.tsx +1 -1
  5. package/cli/registry/basic/shimmering-text.tsx +115 -0
  6. package/cli/registry/{chat → basic}/sidebar-menu.tsx +2 -2
  7. package/cli/registry/meta.json +1 -1
  8. package/dist/registry/basic/shimmering-text.d.ts +27 -0
  9. package/dist/scale/computed.css +103 -0
  10. package/dist/scale/config.css +110 -0
  11. package/dist/scale/index.css +30 -0
  12. package/dist/scale/presets/compact.css +30 -0
  13. package/dist/scale/presets/dense.css +64 -0
  14. package/dist/scale/presets/sharp.css +40 -0
  15. package/dist/scale/presets/soft.css +16 -0
  16. package/dist/spark-design.cjs.js +17 -17
  17. package/dist/spark-design.es.js +2198 -2146
  18. package/dist/src/components/{chat → basic}/CollapsibleCard/index.d.ts +1 -1
  19. package/dist/src/components/basic/ShimmeringText/index.d.ts +7 -0
  20. package/dist/src/components/{chat → basic}/SidebarMenu/index.d.ts +1 -1
  21. package/dist/src/components/index.d.ts +8 -6
  22. package/dist/src/lib/utils.d.ts +5 -5
  23. package/dist/theme-base.css +270 -0
  24. package/dist/themes/dark-parchment.css +133 -0
  25. package/dist/themes/dark-qoder.css +133 -0
  26. package/dist/themes/light-parchment.css +124 -0
  27. package/dist/themes/light-qoder.css +132 -0
  28. package/dist/tokens/CLAUDE.md +305 -0
  29. package/dist/tokens/index.css +35 -0
  30. package/dist/tokens/scale/computed.css +103 -0
  31. package/dist/tokens/scale/config.css +110 -0
  32. package/dist/tokens/scale/index.css +30 -0
  33. package/dist/tokens/scale/presets/compact.css +30 -0
  34. package/dist/tokens/scale/presets/dense.css +64 -0
  35. package/dist/tokens/scale/presets/sharp.css +40 -0
  36. package/dist/tokens/scale/presets/soft.css +16 -0
  37. package/dist/tokens/scale.css +13 -0
  38. package/dist/tokens/scrollbar-utility.css +35 -0
  39. package/dist/tokens/theme-base.css +270 -0
  40. package/dist/tokens/theme.css +17 -0
  41. package/dist/tokens/themes/dark-parchment.css +133 -0
  42. package/dist/tokens/themes/dark-qoder.css +133 -0
  43. package/dist/tokens/themes/light-parchment.css +124 -0
  44. package/dist/tokens/themes/light-qoder.css +132 -0
  45. package/package.json +6 -2
  46. /package/dist/registry/{chat → basic}/sidebar-menu.d.ts +0 -0
@@ -0,0 +1,110 @@
1
+ /* ============================================
2
+ * Scale Config - 可配置的布局基础变量
3
+ *
4
+ * 用户可覆盖这些变量来自定义布局风格:
5
+ * :root {
6
+ * --config-radius-default: 10px; // 自定义默认圆角
7
+ * --config-spacing-4: 18px; // 自定义 spacing-4
8
+ * }
9
+ * ============================================ */
10
+
11
+ :root {
12
+ /* ============================================
13
+ Spacing 配置 (Tailwind 兼容)
14
+ ============================================ */
15
+ --config-spacing-unit: 4px; /* 基础单位 */
16
+ --config-spacing-0: 0;
17
+ --config-spacing-px: 1px;
18
+ --config-spacing-0\.5: 2px;
19
+ --config-spacing-1: 4px;
20
+ --config-spacing-1\.5: 6px;
21
+ --config-spacing-2: 8px;
22
+ --config-spacing-2\.5: 10px;
23
+ --config-spacing-3: 12px;
24
+ --config-spacing-3\.5: 14px;
25
+ --config-spacing-4: 16px;
26
+ --config-spacing-5: 20px;
27
+ --config-spacing-6: 24px;
28
+ --config-spacing-7: 28px;
29
+ --config-spacing-8: 32px;
30
+ --config-spacing-9: 36px;
31
+ --config-spacing-10: 40px;
32
+ --config-spacing-11: 44px;
33
+ --config-spacing-12: 48px;
34
+ --config-spacing-14: 56px;
35
+ --config-spacing-16: 64px;
36
+ --config-spacing-20: 80px;
37
+ --config-spacing-24: 96px;
38
+ --config-spacing-28: 112px;
39
+ --config-spacing-32: 128px;
40
+ --config-spacing-36: 144px;
41
+ --config-spacing-40: 160px;
42
+ --config-spacing-44: 176px;
43
+ --config-spacing-48: 192px;
44
+ --config-spacing-52: 208px;
45
+ --config-spacing-56: 224px;
46
+ --config-spacing-60: 240px;
47
+ --config-spacing-64: 256px;
48
+ --config-spacing-72: 288px;
49
+ --config-spacing-80: 320px;
50
+ --config-spacing-96: 384px;
51
+
52
+ /* ============================================
53
+ Radius 配置
54
+ ============================================ */
55
+ --config-radius-none: 0;
56
+ --config-radius-sm: 4px;
57
+ --config-radius-default: 6px;
58
+ --config-radius-md: 6px;
59
+ --config-radius-lg: 8px;
60
+ --config-radius-xl: 12px;
61
+ --config-radius-2xl: 16px;
62
+ --config-radius-3xl: 24px;
63
+ --config-radius-full: 9999px;
64
+
65
+ /* ============================================
66
+ Font Size 配置
67
+ ============================================ */
68
+ --config-font-size-xs: 12px;
69
+ --config-font-size-xs-lh: 16px;
70
+ --config-font-size-sm: 14px;
71
+ --config-font-size-sm-lh: 20px;
72
+ --config-font-size-base: 14px;
73
+ --config-font-size-base-lh: 20px;
74
+ --config-font-size-lg: 16px;
75
+ --config-font-size-lg-lh: 24px;
76
+ --config-font-size-xl: 18px;
77
+ --config-font-size-xl-lh: 24px;
78
+ --config-font-size-2xl: 20px;
79
+ --config-font-size-2xl-lh: 24px;
80
+ --config-font-size-3xl: 24px;
81
+ --config-font-size-3xl-lh: 28px;
82
+ --config-font-size-4xl: 30px;
83
+ --config-font-size-4xl-lh: 32px;
84
+ --config-font-size-5xl: 36px;
85
+ --config-font-size-5xl-lh: 36px;
86
+ --config-font-size-6xl: 48px;
87
+ --config-font-size-6xl-lh: 1;
88
+ --config-font-size-7xl: 60px;
89
+ --config-font-size-7xl-lh: 1;
90
+ --config-font-size-8xl: 72px;
91
+ --config-font-size-8xl-lh: 1;
92
+ --config-font-size-9xl: 96px;
93
+ --config-font-size-9xl-lh: 1;
94
+
95
+ /* ============================================
96
+ Motion 配置
97
+ ============================================ */
98
+ --config-motion-duration-fast: 150ms;
99
+ --config-motion-duration-base: 200ms;
100
+ --config-motion-duration-slow: 300ms;
101
+ --config-motion-ease-standard: cubic-bezier(0.16, 1, 0.3, 1);
102
+ --config-motion-ease-emphasized: cubic-bezier(0.2, 0.8, 0.2, 1);
103
+ --config-motion-ease-out: cubic-bezier(0, 0, 0.2, 1);
104
+
105
+ /* ============================================
106
+ Font Family 配置
107
+ ============================================ */
108
+ --config-font-sans: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
109
+ --config-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
110
+ }
@@ -0,0 +1,30 @@
1
+ /* ============================================
2
+ * Scale 布局风格系统 - 统一入口
3
+ *
4
+ * 引入方式:
5
+ * 1. 全量引入(推荐): @import "./scale/index.css";
6
+ * 2. 按需引入:
7
+ * @import "./scale/config.css";
8
+ * @import "./scale/computed.css";
9
+ * @import "./scale/presets/compact.css";
10
+ *
11
+ * 自定义配置:
12
+ * @import "./scale/config.css";
13
+ * @import "./scale/computed.css";
14
+ * :root {
15
+ * --config-radius-default: 10px; // 自定义圆角
16
+ * --config-spacing-4: 18px; // 自定义间距
17
+ * }
18
+ * ============================================ */
19
+
20
+ /* 配置层:可覆盖的基础变量 */
21
+ @import "./config.css";
22
+
23
+ /* 计算层:映射到实际变量 */
24
+ @import "./computed.css";
25
+
26
+ /* 预设风格 */
27
+ @import "./presets/compact.css";
28
+ @import "./presets/soft.css";
29
+ @import "./presets/sharp.css";
30
+ @import "./presets/dense.css";
@@ -0,0 +1,30 @@
1
+ /* ============================================
2
+ * Preset: Compact - 紧凑风格
3
+ * 优化效率,适合信息密集场景
4
+ * ============================================ */
5
+
6
+ [data-style="compact"] {
7
+ /* Spacing (紧凑比例) */
8
+ --spacing-3: 10px;
9
+ --spacing-4: 14px;
10
+ --spacing-9: 32px;
11
+ --spacing-11: 40px;
12
+
13
+ /* Radius (略小) */
14
+ --radius-xl: 10px;
15
+ --radius-2xl: 12px;
16
+ --radius-3xl: 16px;
17
+
18
+ /* Font Size (略小) */
19
+ --font-size-sm: 12px;
20
+ --font-size-lg: 14px;
21
+ --font-size-xl: 16px;
22
+ --font-size-2xl: 18px;
23
+ --font-size-3xl: 22px;
24
+ --font-size-4xl: 28px;
25
+ --font-size-5xl: 34px;
26
+ --font-size-6xl: 44px;
27
+ --font-size-7xl: 56px;
28
+ --font-size-8xl: 64px;
29
+ --font-size-9xl: 88px;
30
+ }
@@ -0,0 +1,64 @@
1
+ /* ============================================
2
+ * Preset: Dense - 密集风格
3
+ * 信息密集,最大化内容展示
4
+ * ============================================ */
5
+
6
+ [data-style="dense"] {
7
+ /* Spacing (压缩比例) */
8
+ --spacing-2: 6px;
9
+ --spacing-2\.5: 8px;
10
+ --spacing-3: 8px;
11
+ --spacing-3\.5: 10px;
12
+ --spacing-4: 12px;
13
+ --spacing-5: 16px;
14
+ --spacing-6: 20px;
15
+ --spacing-7: 20px;
16
+ --spacing-8: 28px;
17
+ --spacing-9: 28px;
18
+ --spacing-10: 32px;
19
+ --spacing-11: 32px;
20
+ --spacing-12: 40px;
21
+ --spacing-14: 48px;
22
+ --spacing-16: 56px;
23
+ --spacing-20: 64px;
24
+ --spacing-24: 80px;
25
+ --spacing-28: 96px;
26
+ --spacing-32: 112px;
27
+ --spacing-36: 128px;
28
+ --spacing-40: 144px;
29
+ --spacing-44: 160px;
30
+ --spacing-48: 176px;
31
+ --spacing-52: 192px;
32
+ --spacing-56: 208px;
33
+ --spacing-60: 224px;
34
+ --spacing-64: 240px;
35
+ --spacing-72: 272px;
36
+ --spacing-80: 304px;
37
+ --spacing-96: 368px;
38
+
39
+ /* Radius (小圆角) */
40
+ --radius-sm: 2px;
41
+ --radius-DEFAULT: 4px;
42
+ --radius-md: 4px;
43
+ --radius-lg: 6px;
44
+ --radius-xl: 6px;
45
+ --radius-2xl: 8px;
46
+ --radius-3xl: 8px;
47
+ --radius: var(--radius-DEFAULT);
48
+
49
+ /* ChatInput 特殊配置 */
50
+ --chat-status-overlap: 4px;
51
+
52
+ /* Font Size (更小) */
53
+ --font-size-base: 12px;
54
+ --font-size-lg: 14px;
55
+ --font-size-xl: 14px;
56
+ --font-size-2xl: 16px;
57
+ --font-size-3xl: 18px;
58
+ --font-size-4xl: 22px;
59
+ --font-size-5xl: 28px;
60
+ --font-size-6xl: 36px;
61
+ --font-size-7xl: 44px;
62
+ --font-size-8xl: 56px;
63
+ --font-size-9xl: 72px;
64
+ }
@@ -0,0 +1,40 @@
1
+ /* ============================================
2
+ * Preset: Sharp - 锐利风格
3
+ * 几何精度,无圆角 + 等宽字体
4
+ * ============================================ */
5
+
6
+ [data-style="sharp"] {
7
+ /* Spacing (与 compact 相同) */
8
+ --spacing-3: 10px;
9
+ --spacing-4: 14px;
10
+ --spacing-9: 32px;
11
+ --spacing-11: 40px;
12
+
13
+ /* Radius (全部为 0) */
14
+ --radius-sm: 0;
15
+ --radius-DEFAULT: 0;
16
+ --radius-md: 0;
17
+ --radius-lg: 0;
18
+ --radius-xl: 0;
19
+ --radius-2xl: 0;
20
+ --radius-3xl: 0;
21
+ --radius-full: 0;
22
+ --radius: 0;
23
+
24
+ /* Font (等宽字体) */
25
+ --font-sans: var(--config-font-mono);
26
+ font-family: var(--font-sans);
27
+
28
+ /* Font Size (与 compact 相同) */
29
+ --font-size-sm: 12px;
30
+ --font-size-lg: 14px;
31
+ --font-size-xl: 16px;
32
+ --font-size-2xl: 18px;
33
+ --font-size-3xl: 22px;
34
+ --font-size-4xl: 28px;
35
+ --font-size-5xl: 34px;
36
+ --font-size-6xl: 44px;
37
+ --font-size-7xl: 56px;
38
+ --font-size-8xl: 64px;
39
+ --font-size-9xl: 88px;
40
+ }
@@ -0,0 +1,16 @@
1
+ /* ============================================
2
+ * Preset: Soft - 柔和风格
3
+ * 舒适至上,适合阅读和休闲场景
4
+ * ============================================ */
5
+
6
+ [data-style="soft"] {
7
+ /* 只覆盖 Radius (大圆角) */
8
+ --radius-sm: 8px;
9
+ --radius-DEFAULT: 12px;
10
+ --radius-md: 12px;
11
+ --radius-lg: 16px;
12
+ --radius-xl: 20px;
13
+ --radius-2xl: 24px;
14
+ --radius-3xl: 28px;
15
+ --radius: var(--radius-DEFAULT);
16
+ }
@@ -0,0 +1,13 @@
1
+ /* ============================================
2
+ * [DEPRECATED] 此文件保留用于向后兼容
3
+ * 新代码请使用 @import "./scale/index.css";
4
+ *
5
+ * 如需自定义配置:
6
+ * @import "./scale/config.css";
7
+ * @import "./scale/computed.css";
8
+ * :root {
9
+ * --config-radius-default: 10px;
10
+ * }
11
+ * ============================================ */
12
+
13
+ @import "./scale/index.css";
@@ -0,0 +1,35 @@
1
+ /**
2
+ * 与 Scrollbar 组件 auto 模式一致的滚动条样式工具类
3
+ * 用于无法使用 Scrollbar 组件的场景(table 双轴、textarea、collapsible-card 等)
4
+ * 保持产品内滚动条视觉一致:默认透明,hover 时 fill-secondary,0.2s 过渡
5
+ */
6
+ .scrollbar-auto::-webkit-scrollbar {
7
+ width: 6px;
8
+ height: 6px;
9
+ }
10
+ .scrollbar-auto::-webkit-scrollbar-track {
11
+ background: transparent;
12
+ }
13
+ .scrollbar-auto::-webkit-scrollbar-thumb {
14
+ background-color: transparent;
15
+ border-radius: 3px;
16
+ min-height: var(--spacing-8);
17
+ transition: background-color 0.2s ease;
18
+ }
19
+ .scrollbar-auto:hover::-webkit-scrollbar-thumb {
20
+ background-color: var(--color-fill-secondary);
21
+ }
22
+ .scrollbar-auto::-webkit-scrollbar-corner {
23
+ background: transparent;
24
+ }
25
+ .scrollbar-auto {
26
+ scrollbar-width: thin;
27
+ }
28
+ @supports (scrollbar-width: thin) {
29
+ .scrollbar-auto {
30
+ scrollbar-color: transparent transparent;
31
+ }
32
+ .scrollbar-auto:hover {
33
+ scrollbar-color: var(--color-fill-secondary) transparent;
34
+ }
35
+ }
@@ -0,0 +1,270 @@
1
+ /* ============================================
2
+ * [POS]: src/tokens/theme-base.css - Tailwind v4 @theme 映射 + 动画 + 公共样式
3
+ * [OUTPUT]: CSS 变量映射到 Tailwind 工具类
4
+ *
5
+ * 此文件定义了 Token → Tailwind 的映射契约,不包含具体颜色值。
6
+ * 颜色值由 themes/*.css 中的 [data-theme="xxx"] 块定义。
7
+ *
8
+ * 用户自定义主题时只需:
9
+ * 1. 引入此文件(定义映射)
10
+ * 2. 引入自己的主题 CSS(覆盖 --token-color-* 变量)
11
+ * ============================================ */
12
+
13
+ /* ============================================
14
+ Tailwind v4 @theme 映射
15
+ ============================================ */
16
+ @custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *, [data-theme="dark-parchment"], [data-theme="dark-parchment"] *));
17
+
18
+ /* font-size / radius / spacing 随 data-style 变化,需用 @theme inline 让工具类直接引用运行时变量 */
19
+ @theme inline {
20
+ --text-xs: var(--font-size-xs);
21
+ --text-xs--line-height: var(--font-size-xs--line-height);
22
+ --text-sm: var(--font-size-sm);
23
+ --text-sm--line-height: var(--font-size-sm--line-height);
24
+ --text-base: var(--font-size-base);
25
+ --text-base--line-height: var(--font-size-base--line-height);
26
+ --text-lg: var(--font-size-lg);
27
+ --text-lg--line-height: var(--font-size-lg--line-height);
28
+ --text-xl: var(--font-size-xl);
29
+ --text-xl--line-height: var(--font-size-xl--line-height);
30
+ --text-2xl: var(--font-size-2xl);
31
+ --text-2xl--line-height: var(--font-size-2xl--line-height);
32
+ --text-3xl: var(--font-size-3xl);
33
+ --text-3xl--line-height: var(--font-size-3xl--line-height);
34
+ --text-4xl: var(--font-size-4xl);
35
+ --text-4xl--line-height: var(--font-size-4xl--line-height);
36
+ --text-5xl: var(--font-size-5xl);
37
+ --text-5xl--line-height: var(--font-size-5xl--line-height);
38
+ --text-6xl: var(--font-size-6xl);
39
+ --text-6xl--line-height: var(--font-size-6xl--line-height);
40
+ --radius: var(--radius-DEFAULT);
41
+ --radius-none: var(--radius-none);
42
+ --radius-sm: var(--radius-sm);
43
+ --radius-md: var(--radius-md);
44
+ --radius-lg: var(--radius-lg);
45
+ --radius-xl: var(--radius-xl);
46
+ --radius-2xl: var(--radius-2xl);
47
+ --radius-3xl: var(--radius-3xl);
48
+ --radius-full: var(--radius-full);
49
+ --spacing-0: var(--spacing-0);
50
+ --spacing-px: var(--spacing-px);
51
+ --spacing-0\.5: var(--spacing-0\.5);
52
+ --spacing-1: var(--spacing-1);
53
+ --spacing-1\.5: var(--spacing-1\.5);
54
+ --spacing-2: var(--spacing-2);
55
+ --spacing-2\.5: var(--spacing-2\.5);
56
+ --spacing-3: var(--spacing-3);
57
+ --spacing-3\.5: var(--spacing-3\.5);
58
+ --spacing-4: var(--spacing-4);
59
+ --spacing-5: var(--spacing-5);
60
+ --spacing-6: var(--spacing-6);
61
+ --spacing-7: var(--spacing-7);
62
+ --spacing-8: var(--spacing-8);
63
+ --spacing-9: var(--spacing-9);
64
+ --spacing-10: var(--spacing-10);
65
+ --spacing-11: var(--spacing-11);
66
+ --spacing-12: var(--spacing-12);
67
+ --spacing-14: var(--spacing-14);
68
+ --spacing-16: var(--spacing-16);
69
+ --spacing-20: var(--spacing-20);
70
+ --spacing-24: var(--spacing-24);
71
+ --spacing-28: var(--spacing-28);
72
+ --spacing-32: var(--spacing-32);
73
+ --spacing-36: var(--spacing-36);
74
+ --spacing-40: var(--spacing-40);
75
+ --spacing-44: var(--spacing-44);
76
+ --spacing-48: var(--spacing-48);
77
+ --spacing-52: var(--spacing-52);
78
+ --spacing-56: var(--spacing-56);
79
+ --spacing-60: var(--spacing-60);
80
+ --spacing-64: var(--spacing-64);
81
+ --spacing-72: var(--spacing-72);
82
+ --spacing-80: var(--spacing-80);
83
+ --spacing-96: var(--spacing-96);
84
+ }
85
+
86
+ @theme {
87
+ /* Font */
88
+ --font-display: 'Inter var', system-ui, sans-serif;
89
+ /* Primary */
90
+ --color-primary: var(--token-color-primary);
91
+ --color-primary-hover: var(--token-color-primary-hover);
92
+ --color-primary-active: var(--token-color-primary-active);
93
+ --color-primary-bg: var(--token-color-primary-bg);
94
+ --color-primary-bg-hover: var(--token-color-primary-bg-hover);
95
+ --color-primary-border: var(--token-color-primary-border);
96
+ --color-primary-border-hover: var(--token-color-primary-border-hover);
97
+ --color-primary-text: var(--token-color-primary-text);
98
+ --color-primary-text-hover: var(--token-color-primary-text-hover);
99
+ --color-primary-text-active: var(--token-color-primary-text-active);
100
+ --color-text-on-primary: var(--token-color-text-on-primary);
101
+
102
+ /* Text */
103
+ --color-text: var(--token-color-text);
104
+ --color-text-secondary: var(--token-color-text-secondary);
105
+ --color-text-tertiary: var(--token-color-text-tertiary);
106
+ --color-text-quaternary: var(--token-color-text-quaternary);
107
+ --color-text-base: var(--token-color-text-base);
108
+
109
+ /* Border */
110
+ --color-border: var(--token-color-border);
111
+ /* Select 等 - 映射到现有 token */
112
+ --color-input: var(--token-color-border-tertiary);
113
+ --color-ring: var(--token-color-primary-border);
114
+ --color-popover: var(--token-color-bg-container);
115
+ --color-popover-foreground: var(--token-color-text);
116
+ --color-accent: var(--token-color-fill-secondary);
117
+ --color-accent-foreground: var(--token-color-text);
118
+ --color-muted: var(--token-color-fill-tertiary);
119
+ --color-muted-foreground: var(--token-color-text-secondary);
120
+ --color-background: var(--token-color-bg-base);
121
+ --color-border-secondary: var(--token-color-border-secondary);
122
+ --color-border-tertiary: var(--token-color-border-tertiary);
123
+
124
+ /* Fill */
125
+ --color-fill: var(--token-color-fill);
126
+ --color-fill-secondary: var(--token-color-fill-secondary);
127
+ --color-fill-tertiary: var(--token-color-fill-tertiary);
128
+ --color-fill-quaternary: var(--token-color-fill-quaternary);
129
+ --color-fill-disable: var(--token-color-fill-disable);
130
+
131
+ /* Background */
132
+ --color-bg-container: var(--token-color-bg-container);
133
+ --color-bg-elevated: var(--token-color-bg-elevated);
134
+ --color-bg-layout: var(--token-color-bg-layout);
135
+ --color-bg-spotlight: var(--token-color-bg-spotlight);
136
+ --color-bg-mask: var(--token-color-bg-mask);
137
+ --color-mask-shimmer-weak: var(--token-color-mask-shimmer-weak);
138
+ --color-mask-shimmer-strong: var(--token-color-mask-shimmer-strong);
139
+ --color-mask-shimmer-full: var(--token-color-mask-shimmer-full);
140
+ --color-bg-base: var(--token-color-bg-base);
141
+ --color-bg-highlight: var(--token-color-bg-highlight);
142
+ --color-bg-highlight-hover: var(--token-color-bg-highlight-hover);
143
+
144
+ /* Shadow(1~4 级,与 primary/secondary/tertiary/quaternary 一致) */
145
+ --color-shadow-primary: var(--token-color-shadow-primary);
146
+ --color-shadow-secondary: var(--token-color-shadow-secondary);
147
+ --color-shadow-tertiary: var(--token-color-shadow-tertiary);
148
+ --color-shadow-quaternary: var(--token-color-shadow-quaternary);
149
+
150
+ /* Semantic */
151
+ --color-link: var(--token-color-link);
152
+ --color-error: var(--token-color-error);
153
+ --color-error-hover: var(--token-color-error-hover);
154
+ --color-error-bg: var(--token-color-error-bg);
155
+ --color-error-bg-hover: var(--token-color-error-bg-hover);
156
+ --color-error-border: var(--token-color-error-border);
157
+ --color-info: var(--token-color-info);
158
+ --color-info-hover: var(--token-color-info-hover);
159
+ --color-info-bg: var(--token-color-info-bg);
160
+ --color-info-bg-hover: var(--token-color-info-bg-hover);
161
+ --color-info-border: var(--token-color-info-border);
162
+ --color-success: var(--token-color-success);
163
+ --color-success-hover: var(--token-color-success-hover);
164
+ --color-success-bg: var(--token-color-success-bg);
165
+ --color-success-bg-hover: var(--token-color-success-bg-hover);
166
+ --color-success-border: var(--token-color-success-border);
167
+ --color-warning: var(--token-color-warning);
168
+ --color-warning-hover: var(--token-color-warning-hover);
169
+ --color-warning-bg: var(--token-color-warning-bg);
170
+ --color-warning-bg-hover: var(--token-color-warning-bg-hover);
171
+ --color-warning-border: var(--token-color-warning-border);
172
+
173
+ /* Accent */
174
+ --color-pink: var(--token-color-pink);
175
+ --color-pink-bg: var(--token-color-pink-bg);
176
+ --color-pink-bg-hover: var(--token-color-pink-bg-hover);
177
+ --color-purple: var(--token-color-purple);
178
+ --color-purple-bg: var(--token-color-purple-bg);
179
+ --color-purple-bg-hover: var(--token-color-purple-bg-hover);
180
+ --color-yellow: var(--token-color-yellow);
181
+ --color-yellow-bg: var(--token-color-yellow-bg);
182
+ --color-yellow-bg-hover: var(--token-color-yellow-bg-hover);
183
+ --color-orange: var(--token-color-orange);
184
+ --color-orange-bg: var(--token-color-orange-bg);
185
+ --color-orange-bg-hover: var(--token-color-orange-bg-hover);
186
+ --color-teal: var(--token-color-teal);
187
+ --color-teal-bg: var(--token-color-teal-bg);
188
+ --color-teal-bg-hover: var(--token-color-teal-bg-hover);
189
+ --color-blue: var(--token-color-blue);
190
+ --color-blue-bg: var(--token-color-blue-bg);
191
+ --color-blue-bg-hover: var(--token-color-blue-bg-hover);
192
+ --color-mauve: var(--token-color-mauve);
193
+ --color-mauve-bg: var(--token-color-mauve-bg);
194
+ --color-mauve-bg-hover: var(--token-color-mauve-bg-hover);
195
+ --color-slate: var(--token-color-slate);
196
+ --color-slate-bg: var(--token-color-slate-bg);
197
+ --color-slate-bg-hover: var(--token-color-slate-bg-hover);
198
+ --color-lavender: var(--token-color-lavender);
199
+ --color-lavender-bg: var(--token-color-lavender-bg);
200
+ --color-lavender-bg-hover: var(--token-color-lavender-bg-hover);
201
+ --color-sage: var(--token-color-sage);
202
+ --color-sage-bg: var(--token-color-sage-bg);
203
+ --color-sage-bg-hover: var(--token-color-sage-bg-hover);
204
+
205
+ /* Diff */
206
+ --color-diff-insert: var(--token-color-diff-insert);
207
+ --color-diff-insert-bg: var(--token-color-diff-insert-bg);
208
+ --color-diff-remove: var(--token-color-diff-remove);
209
+ --color-diff-remove-bg: var(--token-color-diff-remove-bg);
210
+
211
+ /* Accordion 展开/收起动画(Radix 提供 --radix-accordion-content-height) */
212
+ --animate-accordion-down: accordion-down 0.2s ease-out;
213
+ --animate-accordion-up: accordion-up 0.2s ease-out;
214
+ --animate-accordion-right: accordion-right 0.2s ease-out;
215
+ --animate-accordion-left: accordion-left 0.2s ease-out;
216
+ }
217
+
218
+ /* 行高随 data-style 变化,与 text-xs/text-sm/text-base 等配套使用,避免固定 leading-6 等 */
219
+ .leading-xs { line-height: var(--font-size-xs--line-height); }
220
+ .leading-sm { line-height: var(--font-size-sm--line-height); }
221
+ .leading-base { line-height: var(--font-size-base--line-height); }
222
+ .leading-lg { line-height: var(--font-size-lg--line-height); }
223
+ .leading-xl { line-height: var(--font-size-xl--line-height); }
224
+
225
+ @keyframes accordion-down {
226
+ from {
227
+ height: 0;
228
+ }
229
+ to {
230
+ height: var(--radix-accordion-content-height);
231
+ }
232
+ }
233
+ @keyframes accordion-up {
234
+ from {
235
+ height: var(--radix-accordion-content-height);
236
+ }
237
+ to {
238
+ height: 0;
239
+ }
240
+ }
241
+ @keyframes accordion-right {
242
+ from {
243
+ width: 0;
244
+ }
245
+ to {
246
+ width: var(--radix-accordion-content-width);
247
+ }
248
+ }
249
+ @keyframes accordion-left {
250
+ from {
251
+ width: var(--radix-accordion-content-width);
252
+ }
253
+ to {
254
+ width: 0;
255
+ }
256
+ }
257
+
258
+ /* ============================================
259
+ Seti 文件图标字体(与 QodeChatPanel 一致;需将 qoder-seti.woff 置于 public/ 或根路径)
260
+ ============================================ */
261
+ @font-face {
262
+ font-family: 'Seti';
263
+ src: url('/qoder-seti.woff') format('woff');
264
+ font-weight: normal;
265
+ font-style: normal;
266
+ font-display: swap;
267
+ }
268
+ .font-seti {
269
+ font-family: 'Seti', sans-serif;
270
+ }
@@ -0,0 +1,17 @@
1
+ /* ============================================
2
+ * [DEPRECATED] 此文件已被拆分,保留以向后兼容。
3
+ * 请使用新的引入方式:@import "./tokens/index.css";
4
+ *
5
+ * 新的文件结构:
6
+ * - theme-base.css: @theme 映射 + 动画 + 公共样式
7
+ * - themes/light.css: 亮色主题
8
+ * - themes/dark.css: 暗色主题
9
+ * - themes/light-parchment.css: 羊皮纸亮色
10
+ * - themes/dark-parchment.css: 羊皮纸暗色
11
+ * ============================================ */
12
+
13
+ @import "./theme-base.css";
14
+ @import "./themes/light-qoder.css";
15
+ @import "./themes/dark-qoder.css";
16
+ @import "./themes/light-parchment.css";
17
+ @import "./themes/dark-parchment.css";