sparkdesign 0.3.0 → 0.3.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 (104) hide show
  1. package/README.md +7 -5
  2. package/cli/dist/index.js +0 -0
  3. package/cli/dist/utils/tokens.js +103 -17
  4. package/cli/registry/basic/button.test.tsx +333 -0
  5. package/cli/registry/chat/{question-part.tsx → ask-user-part.tsx} +4 -4
  6. package/cli/registry/chat/{browser-use-part.tsx → browser-action-part.tsx} +6 -6
  7. package/cli/registry/chat/{suggestion-part.tsx → hint-banner.tsx} +4 -4
  8. package/cli/registry/chat/markdown.test.tsx +387 -0
  9. package/cli/registry/chat/{reasoning-step.tsx → reasoning-step/compound.tsx} +163 -185
  10. package/cli/registry/chat/reasoning-step/context.tsx +114 -0
  11. package/cli/registry/chat/reasoning-step/index.tsx +45 -0
  12. package/cli/registry/chat/reasoning-step/types.ts +109 -0
  13. package/cli/registry/chat/response/compound.tsx +210 -0
  14. package/cli/registry/chat/{response.tsx → response/context.tsx} +65 -136
  15. package/cli/registry/chat/response/index.tsx +87 -0
  16. package/cli/registry/chat/response/types.ts +123 -0
  17. package/cli/registry/chat/thinking-indicator.test.tsx +244 -0
  18. package/cli/registry/chat/tool-invocation-card.test.tsx +346 -0
  19. package/cli/registry/chat/{request.tsx → user-message.tsx} +3 -3
  20. package/cli/registry/chat/user-question/compound.tsx +324 -0
  21. package/cli/registry/chat/user-question/context.tsx +456 -0
  22. package/cli/registry/chat/user-question/index.tsx +71 -316
  23. package/cli/registry/chat/user-question/useUserQuestionKeyboard.ts +5 -6
  24. package/cli/registry/tokens/index.css +31 -0
  25. package/cli/registry/tokens/scale/computed.css +103 -0
  26. package/cli/registry/tokens/scale/config.css +110 -0
  27. package/cli/registry/tokens/scale/index.css +30 -0
  28. package/cli/registry/tokens/scale/presets/compact.css +30 -0
  29. package/cli/registry/tokens/scale/presets/dense.css +64 -0
  30. package/cli/registry/tokens/scale/presets/sharp.css +40 -0
  31. package/cli/registry/tokens/scale/presets/soft.css +16 -0
  32. package/cli/registry/tokens/scale.css +12 -298
  33. package/cli/registry/tokens/scrollbar-utility.css +35 -0
  34. package/cli/registry/tokens/themes/dark-parchment.css +132 -0
  35. package/cli/registry/tokens/themes/dark-qoder.css +132 -0
  36. package/cli/registry/tokens/themes/light-parchment.css +123 -0
  37. package/cli/registry/tokens/themes/light-qoder.css +131 -0
  38. package/dist/qoder-design.css +1 -1
  39. package/dist/registry/chat/ask-user-part.d.ts +24 -0
  40. package/dist/registry/chat/browser-action-part.d.ts +28 -0
  41. package/dist/registry/chat/{suggestion-part.d.ts → hint-banner.d.ts} +4 -4
  42. package/dist/registry/chat/reasoning-step/compound.d.ts +17 -0
  43. package/dist/registry/chat/reasoning-step/context.d.ts +10 -0
  44. package/dist/registry/chat/reasoning-step/index.d.ts +14 -0
  45. package/dist/registry/chat/reasoning-step/types.d.ts +95 -0
  46. package/dist/registry/chat/response/compound.d.ts +25 -0
  47. package/dist/registry/chat/response/context.d.ts +9 -0
  48. package/dist/registry/chat/response/index.d.ts +15 -0
  49. package/dist/registry/chat/response/types.d.ts +99 -0
  50. package/dist/registry/chat/user-message.d.ts +6 -0
  51. package/dist/registry/chat/user-question/compound.d.ts +37 -0
  52. package/dist/registry/chat/user-question/context.d.ts +55 -0
  53. package/dist/registry/chat/user-question/index.d.ts +13 -5
  54. package/dist/registry/chat/user-question/useUserQuestionKeyboard.d.ts +2 -3
  55. package/dist/scale.css +9 -303
  56. package/dist/spark-design.cjs.js +62 -62
  57. package/dist/spark-design.es.js +3992 -3826
  58. package/dist/src/components/chat/AskUserPart/index.d.ts +6 -0
  59. package/dist/src/components/chat/BrowserActionPart/index.d.ts +7 -0
  60. package/dist/src/components/chat/HintBanner/index.d.ts +6 -0
  61. package/dist/src/components/chat/ReasoningStep/index.d.ts +11 -5
  62. package/dist/src/components/chat/Response/index.d.ts +16 -6
  63. package/dist/src/components/chat/UserMessage/index.d.ts +7 -0
  64. package/dist/src/components/chat/UserQuestion/index.d.ts +18 -4
  65. package/dist/src/components/index.d.ts +63 -63
  66. package/dist/theme.css +13 -800
  67. package/package.json +27 -3
  68. package/dist/registry/chat/browser-use-part.d.ts +0 -28
  69. package/dist/registry/chat/question-part.d.ts +0 -24
  70. package/dist/registry/chat/reasoning-step.d.ts +0 -35
  71. package/dist/registry/chat/request.d.ts +0 -6
  72. package/dist/registry/chat/response.d.ts +0 -28
  73. package/dist/src/components/chat/BrowserUsePart/index.d.ts +0 -7
  74. package/dist/src/components/chat/QuestionPart/index.d.ts +0 -6
  75. package/dist/src/components/chat/Request/index.d.ts +0 -7
  76. package/dist/src/components/chat/SuggestionPart/index.d.ts +0 -6
  77. /package/dist/src/components/{foundation → basic}/AlertDialog/index.d.ts +0 -0
  78. /package/dist/src/components/{foundation → basic}/Avatar/index.d.ts +0 -0
  79. /package/dist/src/components/{foundation → basic}/Button/index.d.ts +0 -0
  80. /package/dist/src/components/{foundation → basic}/Collapse/index.d.ts +0 -0
  81. /package/dist/src/components/{foundation → basic}/Collapsible/index.d.ts +0 -0
  82. /package/dist/src/components/{foundation → basic}/CollapsibleSection/index.d.ts +0 -0
  83. /package/dist/src/components/{foundation → basic}/DropdownMenu/index.d.ts +0 -0
  84. /package/dist/src/components/{foundation → basic}/EllipsisText/index.d.ts +0 -0
  85. /package/dist/src/components/{foundation → basic}/IconButton/index.d.ts +0 -0
  86. /package/dist/src/components/{foundation → basic}/Kbd/index.d.ts +0 -0
  87. /package/dist/src/components/{foundation → basic}/OptionList/index.d.ts +0 -0
  88. /package/dist/src/components/{foundation → basic}/Pagination/index.d.ts +0 -0
  89. /package/dist/src/components/{foundation → basic}/Progress/index.d.ts +0 -0
  90. /package/dist/src/components/{foundation → basic}/RadioGroup/index.d.ts +0 -0
  91. /package/dist/src/components/{foundation → basic}/Resizable/index.d.ts +0 -0
  92. /package/dist/src/components/{foundation → basic}/Scrollbar/index.d.ts +0 -0
  93. /package/dist/src/components/{foundation → basic}/Select/index.d.ts +0 -0
  94. /package/dist/src/components/{foundation → basic}/Skeleton/index.d.ts +0 -0
  95. /package/dist/src/components/{foundation → basic}/Slider/index.d.ts +0 -0
  96. /package/dist/src/components/{foundation → basic}/Spinner/index.d.ts +0 -0
  97. /package/dist/src/components/{foundation → basic}/Switch/index.d.ts +0 -0
  98. /package/dist/src/components/{foundation → basic}/Table/index.d.ts +0 -0
  99. /package/dist/src/components/{foundation → basic}/Tabs/index.d.ts +0 -0
  100. /package/dist/src/components/{foundation → basic}/Tag/index.d.ts +0 -0
  101. /package/dist/src/components/{foundation → basic}/Toast/index.d.ts +0 -0
  102. /package/dist/src/components/{foundation → basic}/Toggle/index.d.ts +0 -0
  103. /package/dist/src/components/{foundation → basic}/Tooltip/index.d.ts +0 -0
  104. /package/dist/src/components/{foundation → basic}/Typography/index.d.ts +0 -0
@@ -0,0 +1,132 @@
1
+ /* ============================================
2
+ * Theme: Dark Parchment (羊皮纸暗色)
3
+ * 复制此文件作为自定义主题模板
4
+ * ============================================ */
5
+
6
+ [data-theme="dark-parchment"] {
7
+ color-scheme: dark;
8
+ /* --- Primary --- */
9
+ --color-primary: #C4B8A8;
10
+ --color-primary-hover: #D4C9BC;
11
+ --color-primary-active: #A89888;
12
+ --color-primary-bg: #2D2A22;
13
+ --color-primary-bg-hover: #363228;
14
+ --color-primary-border: #4A463C;
15
+ --color-primary-border-hover: #5B564C;
16
+ --color-primary-text: #FAF9F6;
17
+ --color-primary-text-hover: #D4C9BC;
18
+ --color-primary-text-active: #C4B8A8;
19
+ --color-text-on-primary: #1A1814;
20
+
21
+ /* --- Text --- */
22
+ --color-text: #FAF9F6;
23
+ --color-text-secondary: #C9C4B8;
24
+ --color-text-tertiary: #A8A296;
25
+ --color-text-quaternary: #8A857A;
26
+ --color-text-base: #F0EDE7;
27
+
28
+ /* --- Border --- */
29
+ --color-border: #4A463C;
30
+ --color-border-secondary: #3D3930;
31
+ --color-border-tertiary: #2D2A22;
32
+
33
+ /* --- Fill --- */
34
+ --color-fill: #3D3930;
35
+ --color-fill-secondary: #363228;
36
+ --color-fill-tertiary: #252220;
37
+ --color-fill-quaternary: #1E1C18;
38
+ --color-fill-disable: #4A463C;
39
+
40
+ /* --- Background --- */
41
+ --color-bg-container: #1E1C18;
42
+ --color-bg-elevated: #252220;
43
+ --color-bg-layout: #1A1814;
44
+ --color-bg-spotlight: #252220;
45
+ --color-bg-mask: rgba(0, 0, 0, 0.6);
46
+ --color-mask-shimmer-weak: rgba(0, 0, 0, 0.3);
47
+ --color-mask-shimmer-strong: rgba(0, 0, 0, 0.8);
48
+ --color-mask-shimmer-full: rgba(0, 0, 0, 1);
49
+ --color-bg-base: #1A1814;
50
+ --color-bg-highlight: #C9C4B8;
51
+ --color-bg-highlight-hover: #D4C9BC;
52
+
53
+ /* --- Semantic Colors --- */
54
+ --color-link: #C4B8A8;
55
+ --color-error: #FF6B6B;
56
+ --color-error-hover: #FF8787;
57
+ --color-error-bg: #4A2A2A;
58
+ --color-error-bg-hover: #5C3535;
59
+ --color-error-border: #663338;
60
+ --color-info: #5EBCFF;
61
+ --color-info-hover: #7EC9FF;
62
+ --color-info-bg: #1A2838;
63
+ --color-info-bg-hover: #223244;
64
+ --color-info-border: #2A4050;
65
+ --color-success: #6B8F71;
66
+ --color-success-hover: #7FA385;
67
+ --color-success-bg: #1C2A1E;
68
+ --color-success-bg-hover: #243224;
69
+ --color-success-border: #3D4A3C;
70
+ --color-warning: #E5A814;
71
+ --color-warning-hover: #F5C024;
72
+ --color-warning-bg: #4A4019;
73
+ --color-warning-bg-hover: #5C4E1F;
74
+ --color-warning-border: #664D19;
75
+
76
+ /* --- Accent Colors --- */
77
+ --color-pink: #EC4899;
78
+ --color-pink-bg: #4A2A38;
79
+ --color-pink-bg-hover: #5C3540;
80
+ --color-purple: #8B7BED;
81
+ --color-purple-bg: #2A2238;
82
+ --color-purple-bg-hover: #362E44;
83
+ --color-yellow: #E5C04A;
84
+ --color-yellow-bg: #4A4030;
85
+ --color-yellow-bg-hover: #5C5040;
86
+ --color-orange: #E07830;
87
+ --color-orange-bg: #4A3020;
88
+ --color-orange-bg-hover: #5C3A28;
89
+ --color-teal: #14B8A6;
90
+ --color-teal-bg: #1A3230;
91
+ --color-teal-bg-hover: #243A38;
92
+ --color-blue: #0090FF;
93
+ --color-blue-bg: #1A2838;
94
+ --color-blue-bg-hover: #223244;
95
+ --color-mauve: #9C9AA8;
96
+ --color-mauve-bg: #2A2830;
97
+ --color-mauve-bg-hover: #363438;
98
+ --color-slate: #5C5A52;
99
+ --color-slate-bg: #2D2A22;
100
+ --color-slate-bg-hover: #363228;
101
+ --color-lavender: #B99DFF;
102
+ --color-lavender-bg: #2A2238;
103
+ --color-lavender-bg-hover: #362E44;
104
+ --color-sage: #6BB394;
105
+ --color-sage-bg: #1C2A24;
106
+ --color-sage-bg-hover: #243228;
107
+
108
+ /* --- Component aliases --- */
109
+ --color-input: var(--color-border-tertiary);
110
+ --color-ring: var(--color-primary-border);
111
+ --color-popover: var(--color-bg-container);
112
+ --color-popover-foreground: var(--color-text);
113
+ --color-accent: var(--color-fill-secondary);
114
+ --color-accent-foreground: var(--color-text);
115
+ --color-muted: var(--color-fill-tertiary);
116
+ --color-muted-foreground: var(--color-text-secondary);
117
+ --color-background: var(--color-bg-base);
118
+
119
+ /* --- Diff --- */
120
+ --color-diff-insert: #6B8F71;
121
+ --color-diff-insert-bg: #1C2A1E;
122
+ --color-diff-remove: #FC6B83;
123
+ --color-diff-remove-bg: #2A1C1E;
124
+ }
125
+
126
+ /* SendButton: dark-parchment 模式下 normal 状态使用 success 色 */
127
+ [data-theme="dark-parchment"] .SendButton-send {
128
+ background-color: var(--color-success);
129
+ }
130
+ [data-theme="dark-parchment"] .SendButton-send:hover:not(:disabled) {
131
+ background-color: var(--color-success-hover);
132
+ }
@@ -0,0 +1,132 @@
1
+ /* ============================================
2
+ * Theme: Dark (暗色模式)
3
+ * 复制此文件作为自定义主题模板
4
+ * ============================================ */
5
+
6
+ [data-theme="dark"] {
7
+ color-scheme: dark;
8
+ /* --- Primary --- */
9
+ --color-primary: #8EE5A1;
10
+ --color-primary-hover: #9BE6B3;
11
+ --color-primary-active: #73CD94;
12
+ --color-primary-bg: #14261C;
13
+ --color-primary-bg-hover: #1A2E21;
14
+ --color-primary-border: #335942;
15
+ --color-primary-border-hover: #407354;
16
+ --color-primary-text: #8EE5A1;
17
+ --color-primary-text-hover: #9BE6B3;
18
+ --color-primary-text-active: #73CD94;
19
+ --color-text-on-primary: #0D0D0D;
20
+
21
+ /* --- Text --- */
22
+ --color-text: #FAF9F5;
23
+ --color-text-secondary: #9C9D9E;
24
+ --color-text-tertiary: #7C7D7F;
25
+ --color-text-quaternary: #717374;
26
+ --color-text-base: #F0F2F3;
27
+
28
+ /* --- Border --- */
29
+ --color-border: #404040;
30
+ --color-border-secondary: #2A2A2A;
31
+ --color-border-tertiary: #262626;
32
+
33
+ /* --- Fill --- */
34
+ --color-fill: #454545;
35
+ --color-fill-secondary: #363636;
36
+ --color-fill-tertiary: #1A1A1A;
37
+ --color-fill-quaternary: #1A1A1A;
38
+ --color-fill-disable: #525252;
39
+
40
+ /* --- Background --- */
41
+ --color-bg-container: #0D0D0D;
42
+ --color-bg-elevated: #080808;
43
+ --color-bg-layout: #050505;
44
+ --color-bg-spotlight: #080808;
45
+ --color-bg-mask: rgba(0, 0, 0, 0.7);
46
+ --color-mask-shimmer-weak: rgba(0, 0, 0, 0.3);
47
+ --color-mask-shimmer-strong: rgba(0, 0, 0, 0.8);
48
+ --color-mask-shimmer-full: rgba(0, 0, 0, 1);
49
+ --color-bg-base: #000000;
50
+ --color-bg-highlight: #d0d0d0;
51
+ --color-bg-highlight-hover: #e0e0e0;
52
+
53
+ /* --- Semantic Colors --- */
54
+ --color-link: #8EE5A1;
55
+ --color-error: #FF4D4F;
56
+ --color-error-hover: #FF7875;
57
+ --color-error-bg: #4A1A1B;
58
+ --color-error-bg-hover: #5C2224;
59
+ --color-error-border: #663338;
60
+ --color-info: #0B83F1;
61
+ --color-info-hover: #5EBCFF;
62
+ --color-info-bg: #19080E;
63
+ --color-info-bg-hover: #220A12;
64
+ --color-info-border: #4F1C0E;
65
+ --color-success: #73CD94;
66
+ --color-success-hover: #8EE5A1;
67
+ --color-success-bg: #14261C;
68
+ --color-success-bg-hover: #1A2E21;
69
+ --color-success-border: #335942;
70
+ --color-warning: #FAAD14;
71
+ --color-warning-hover: #FFD666;
72
+ --color-warning-bg: #4A4019;
73
+ --color-warning-bg-hover: #5C4E1F;
74
+ --color-warning-border: #664D19;
75
+
76
+ /* --- Accent Colors --- */
77
+ --color-pink: #EC4899;
78
+ --color-pink-bg: #4A1C31;
79
+ --color-pink-bg-hover: #5C2440;
80
+ --color-purple: #615CED;
81
+ --color-purple-bg: #14160E;
82
+ --color-purple-bg-hover: #1C1E14;
83
+ --color-yellow: #FAC414;
84
+ --color-yellow-bg: #4A4030;
85
+ --color-yellow-bg-hover: #5C5040;
86
+ --color-orange: #FA8125;
87
+ --color-orange-bg: #4A1021;
88
+ --color-orange-bg-hover: #5C1429;
89
+ --color-teal: #14B8A6;
90
+ --color-teal-bg: #21080E;
91
+ --color-teal-bg-hover: #2E0E14;
92
+ --color-blue: #0090FF;
93
+ --color-blue-bg: #21120E;
94
+ --color-blue-bg-hover: #2E1A14;
95
+ --color-mauve: #8E8C99;
96
+ --color-mauve-bg: #0E0D0C;
97
+ --color-mauve-bg-hover: #1A1818;
98
+ --color-slate: #363636;
99
+ --color-slate-bg: #1a1a1a;
100
+ --color-slate-bg-hover: #262626;
101
+ --color-lavender: #B99DFF;
102
+ --color-lavender-bg: #131B0E;
103
+ --color-lavender-bg-hover: #1C2614;
104
+ --color-sage: #6BB394;
105
+ --color-sage-bg: #100C0D;
106
+ --color-sage-bg-hover: #1A1418;
107
+
108
+ /* --- Component aliases --- */
109
+ --color-input: var(--color-border-tertiary);
110
+ --color-ring: var(--color-primary-border);
111
+ --color-popover: var(--color-bg-container);
112
+ --color-popover-foreground: var(--color-text);
113
+ --color-accent: var(--color-fill-secondary);
114
+ --color-accent-foreground: var(--color-text);
115
+ --color-muted: var(--color-fill-tertiary);
116
+ --color-muted-foreground: var(--color-text-secondary);
117
+ --color-background: var(--color-bg-base);
118
+
119
+ /* --- Diff --- */
120
+ --color-diff-insert: #73CD94;
121
+ --color-diff-insert-bg: #14261C;
122
+ --color-diff-remove: #FC6B83;
123
+ --color-diff-remove-bg: #1C2E2A;
124
+ }
125
+
126
+ /* SendButton: dark 模式下 normal 状态使用 success 色 */
127
+ [data-theme="dark"] .SendButton-send {
128
+ background-color: var(--color-success);
129
+ }
130
+ [data-theme="dark"] .SendButton-send:hover:not(:disabled) {
131
+ background-color: var(--color-success-hover);
132
+ }
@@ -0,0 +1,123 @@
1
+ /* ============================================
2
+ * Theme: Light Parchment (羊皮纸亮色)
3
+ * 复制此文件作为自定义主题模板
4
+ * ============================================ */
5
+
6
+ [data-theme="light-parchment"] {
7
+ /* --- Primary --- */
8
+ --color-primary: #202116;
9
+ --color-primary-hover: #3D3930;
10
+ --color-primary-active: #3D3930;
11
+ --color-primary-bg: #F0EDE7;
12
+ --color-primary-bg-hover: #E8E4DC;
13
+ --color-primary-border: #D4CFC6;
14
+ --color-primary-border-hover: #C4BEB4;
15
+ --color-primary-text: #202116;
16
+ --color-primary-text-hover: #3D3930;
17
+ --color-primary-text-active: #3D3930;
18
+ --color-text-on-primary: #FAF9F6;
19
+
20
+ /* --- Text --- */
21
+ --color-text: #202116;
22
+ --color-text-secondary: #4A463C;
23
+ --color-text-tertiary: #6B665C;
24
+ --color-text-quaternary: #8A857A;
25
+ --color-text-base: #202116;
26
+
27
+ /* --- Border --- */
28
+ --color-border: #D4CFC6;
29
+ --color-border-secondary: #E5E1D9;
30
+ --color-border-tertiary: #EDE9E2;
31
+
32
+ /* --- Fill --- */
33
+ --color-fill: #F5F0E7;
34
+ --color-fill-secondary: #EDE8E0;
35
+ --color-fill-tertiary: #F7F4EF;
36
+ --color-fill-quaternary: #FAF9F6;
37
+ --color-fill-disable: #E0DCD4;
38
+
39
+ /* --- Background --- */
40
+ --color-bg-container: #FAF9F6;
41
+ --color-bg-elevated: #F7F4EF;
42
+ --color-bg-layout: #FDFCFA;
43
+ --color-bg-spotlight: #FAF9F6;
44
+ --color-bg-mask: rgba(0, 0, 0, 0.5);
45
+ --color-mask-shimmer-weak: rgba(0, 0, 0, 0.3);
46
+ --color-mask-shimmer-strong: rgba(0, 0, 0, 0.8);
47
+ --color-mask-shimmer-full: rgba(0, 0, 0, 1);
48
+ --color-bg-base: #FFFFFF;
49
+ --color-bg-highlight: #202116;
50
+ --color-bg-highlight-hover: #2D2A22;
51
+
52
+ /* --- Semantic Colors --- */
53
+ --color-link: #5B4A3A;
54
+ --color-error: #FF4D4F;
55
+ --color-error-hover: #FF7875;
56
+ --color-error-bg: #FFF2F0;
57
+ --color-error-bg-hover: #FFF1F0;
58
+ --color-error-border: #FFCCC7;
59
+ --color-info: #0B83F1;
60
+ --color-info-hover: #5EBCFF;
61
+ --color-info-bg: #E6F7FF;
62
+ --color-info-bg-hover: #D0EFFF;
63
+ --color-info-border: #B0E3FF;
64
+ --color-success: #5A7A5E;
65
+ --color-success-hover: #6B8F71;
66
+ --color-success-bg: #EEF2ED;
67
+ --color-success-bg-hover: #E4EBE2;
68
+ --color-success-border: #C5D4C4;
69
+ --color-warning: #FAAD14;
70
+ --color-warning-hover: #FFD666;
71
+ --color-warning-bg: #FFFBE6;
72
+ --color-warning-bg-hover: #FFF3CF;
73
+ --color-warning-border: #FFE5BF;
74
+
75
+ /* --- Accent Colors --- */
76
+ --color-pink: #EC4899;
77
+ --color-pink-bg: #F9E3F3;
78
+ --color-pink-bg-hover: #F5D4EB;
79
+ --color-purple: #615CED;
80
+ --color-purple-bg: #EBE9FF;
81
+ --color-purple-bg-hover: #DDDAFF;
82
+ --color-yellow: #FAC414;
83
+ --color-yellow-bg: #FFF3CF;
84
+ --color-yellow-bg-hover: #FFE9A8;
85
+ --color-orange: #FA8125;
86
+ --color-orange-bg: #FFEFDE;
87
+ --color-orange-bg-hover: #FFE3C7;
88
+ --color-teal: #14B8A6;
89
+ --color-teal-bg: #DEF7F1;
90
+ --color-teal-bg-hover: #CAF0E8;
91
+ --color-blue: #0090FF;
92
+ --color-blue-bg: #DEEDFF;
93
+ --color-blue-bg-hover: #C8E3FF;
94
+ --color-mauve: #8E8C99;
95
+ --color-mauve-bg: #F1F2F3;
96
+ --color-mauve-bg-hover: #E4E5E7;
97
+ --color-slate: #1E293B;
98
+ --color-slate-bg: #E2E8F0;
99
+ --color-slate-bg-hover: #EFEFEF;
100
+ --color-lavender: #B99DFF;
101
+ --color-lavender-bg: #ECE4FF;
102
+ --color-lavender-bg-hover: #E0D4FF;
103
+ --color-sage: #6BB394;
104
+ --color-sage-bg: #EFF3F2;
105
+ --color-sage-bg-hover: #E2EAE8;
106
+
107
+ /* --- Component aliases --- */
108
+ --color-input: var(--color-border-tertiary);
109
+ --color-ring: var(--color-primary-border);
110
+ --color-popover: var(--color-bg-container);
111
+ --color-popover-foreground: var(--color-text);
112
+ --color-accent: var(--color-fill-secondary);
113
+ --color-accent-foreground: var(--color-text);
114
+ --color-muted: var(--color-fill-tertiary);
115
+ --color-muted-foreground: var(--color-text-secondary);
116
+ --color-background: var(--color-bg-base);
117
+
118
+ /* --- Diff --- */
119
+ --color-diff-insert: #A6DCBA;
120
+ --color-diff-insert-bg: #D9EBE0;
121
+ --color-diff-remove: #FC6B83;
122
+ --color-diff-remove-bg: #E3D1D5;
123
+ }
@@ -0,0 +1,131 @@
1
+ /* ============================================
2
+ * Theme: Light (亮色模式)
3
+ * 复制此文件作为自定义主题模板
4
+ * ============================================ */
5
+
6
+ :root,
7
+ [data-theme="light"] {
8
+ color-scheme: light;
9
+ /* --- Primary --- */
10
+ --color-primary: #8EE5A1;
11
+ --color-primary-hover: #73CD94;
12
+ --color-primary-active: #5CB870;
13
+ --color-primary-bg: #F1FAF3;
14
+ --color-primary-bg-hover: #E6F7EC;
15
+ --color-primary-border: #CDEFD9;
16
+ --color-primary-border-hover: #B3E6C7;
17
+ --color-primary-text: #141414;
18
+ --color-primary-text-hover: #73CD94;
19
+ --color-primary-text-active: #5CB870;
20
+ --color-text-on-primary: #FDFDFD;
21
+
22
+ /* --- Text --- */
23
+ --color-text: #141414;
24
+ --color-text-secondary: #636261;
25
+ --color-text-tertiary: #838280;
26
+ --color-text-quaternary: #8E8C8B;
27
+ --color-text-base: #0F0D0C;
28
+
29
+ /* --- Border --- */
30
+ --color-border: #BCBBBA;
31
+ --color-border-secondary: #DDDDDD;
32
+ --color-border-tertiary: #E6E6E6;
33
+
34
+ /* --- Fill --- */
35
+ --color-fill: #DFDFDF;
36
+ --color-fill-secondary: #EFEFEF;
37
+ --color-fill-tertiary: #F9F9F9;
38
+ --color-fill-quaternary: #FCFCFC;
39
+ --color-fill-disable: #DAD9D8;
40
+
41
+ /* --- Background --- */
42
+ --color-bg-container: #FFFFFF;
43
+ --color-bg-elevated: #F9F9F9;
44
+ --color-bg-layout: #FDFDFD;
45
+ --color-bg-spotlight: #FAFAFA;
46
+ --color-bg-mask: rgba(0, 0, 0, 0.5);
47
+ --color-mask-shimmer-weak: rgba(0, 0, 0, 0.3);
48
+ --color-mask-shimmer-strong: rgba(0, 0, 0, 0.8);
49
+ --color-mask-shimmer-full: rgba(0, 0, 0, 1);
50
+ --color-bg-base: #FFFFFF;
51
+ --color-bg-highlight: #080807;
52
+ --color-bg-highlight-hover: #1a1a1a;
53
+
54
+ /* --- Shadow --- */
55
+ --color-shadow-primary: rgba(0, 0, 0, 0.02);
56
+ --color-shadow-secondary: rgba(0, 0, 0, 0.035);
57
+ --color-shadow-tertiary: rgba(0, 0, 0, 0.055);
58
+ --color-shadow-quaternary: rgba(0, 0, 0, 0.075);
59
+
60
+ /* --- Semantic Colors --- */
61
+ --color-link: #5CB870;
62
+ --color-error: #FF4D4F;
63
+ --color-error-hover: #FF7875;
64
+ --color-error-bg: #FFF2F0;
65
+ --color-error-bg-hover: #FFE4E0;
66
+ --color-error-border: #FFCCC7;
67
+ --color-info: #0B83F1;
68
+ --color-info-hover: #5EBCFF;
69
+ --color-info-bg: #E6F7FF;
70
+ --color-info-bg-hover: #D0EFFF;
71
+ --color-info-border: #B0E3FF;
72
+ --color-success: #73CD94;
73
+ --color-success-hover: #8EE5A1;
74
+ --color-success-bg: #F1FAF3;
75
+ --color-success-bg-hover: #E6F7EC;
76
+ --color-success-border: #CDEFD9;
77
+ --color-warning: #FAAD14;
78
+ --color-warning-hover: #FFD666;
79
+ --color-warning-bg: #FFFBE6;
80
+ --color-warning-bg-hover: #FFF3CF;
81
+ --color-warning-border: #FFE5BF;
82
+
83
+ /* --- Accent Colors --- */
84
+ --color-pink: #EC4899;
85
+ --color-pink-bg: #F9E3F3;
86
+ --color-pink-bg-hover: #F5D4EB;
87
+ --color-purple: #615CED;
88
+ --color-purple-bg: #EBE9FF;
89
+ --color-purple-bg-hover: #DDDAFF;
90
+ --color-yellow: #FAC414;
91
+ --color-yellow-bg: #FFF3CF;
92
+ --color-yellow-bg-hover: #FFE9A8;
93
+ --color-orange: #FA8125;
94
+ --color-orange-bg: #FFEFDE;
95
+ --color-orange-bg-hover: #FFE3C7;
96
+ --color-teal: #14B8A6;
97
+ --color-teal-bg: #DEF7F1;
98
+ --color-teal-bg-hover: #CAF0E8;
99
+ --color-blue: #0090FF;
100
+ --color-blue-bg: #DEEDFF;
101
+ --color-blue-bg-hover: #C8E3FF;
102
+ --color-mauve: #8E8C99;
103
+ --color-mauve-bg: #F1F2F3;
104
+ --color-mauve-bg-hover: #E4E5E7;
105
+ --color-slate: #404040;
106
+ --color-slate-bg: #FAFAFA;
107
+ --color-slate-bg-hover: #EFEFEF;
108
+ --color-lavender: #B99DFF;
109
+ --color-lavender-bg: #ECE4FF;
110
+ --color-lavender-bg-hover: #E0D4FF;
111
+ --color-sage: #6BB394;
112
+ --color-sage-bg: #EFF3F2;
113
+ --color-sage-bg-hover: #E2EAE8;
114
+
115
+ /* --- Component aliases --- */
116
+ --color-input: var(--color-border-tertiary);
117
+ --color-ring: var(--color-primary-border);
118
+ --color-popover: var(--color-bg-container);
119
+ --color-popover-foreground: var(--color-text);
120
+ --color-accent: var(--color-fill-secondary);
121
+ --color-accent-foreground: var(--color-text);
122
+ --color-muted: var(--color-fill-tertiary);
123
+ --color-muted-foreground: var(--color-text-secondary);
124
+ --color-background: var(--color-bg-base);
125
+
126
+ /* --- Diff --- */
127
+ --color-diff-insert: #A6DCBA;
128
+ --color-diff-insert-bg: #D9EBE0;
129
+ --color-diff-remove: #FC6B83;
130
+ --color-diff-remove-bg: #E3D1D5;
131
+ }