ai-chat-ui-kit 0.1.0 → 0.1.1

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 (96) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +4 -7
  3. package/package.json +8 -4
  4. package/.eslintrc.cjs +0 -74
  5. package/.github/actions/screenshot/action.yml +0 -35
  6. package/.github/workflows/pages.yml +0 -46
  7. package/docs/README.md +0 -176
  8. package/docs/api/components.md +0 -344
  9. package/docs/api/core.md +0 -349
  10. package/docs/chat-style-1-minimal.html +0 -78
  11. package/docs/chat-style-2-neon.html +0 -74
  12. package/docs/chat-style-3-glass.html +0 -73
  13. package/docs/chat-style-4-terminal.html +0 -84
  14. package/docs/chat-style-5-gradient.html +0 -69
  15. package/docs/chat-style-6-corporate.html +0 -116
  16. package/docs/examples/basic-chat.md +0 -291
  17. package/docs/examples/custom-plugins.md +0 -431
  18. package/docs/examples/multi-model.md +0 -466
  19. package/docs/guide/api-adapters.md +0 -431
  20. package/docs/guide/getting-started.md +0 -244
  21. package/docs/guide/headless-mode.md +0 -508
  22. package/docs/guide/plugins.md +0 -416
  23. package/docs/guide/themes.md +0 -327
  24. package/docs/index.html +0 -256
  25. package/docs/theme-preview-1-minimal.html +0 -74
  26. package/docs/theme-preview-2-neon.html +0 -73
  27. package/docs/theme-preview-3-glass.html +0 -77
  28. package/docs/theme-preview-4-terminal.html +0 -86
  29. package/docs/theme-preview-5-gradient.html +0 -79
  30. package/docs/theme-preview-6-corporate.html +0 -71
  31. package/examples/index.html +0 -414
  32. package/examples/react-app/App.tsx +0 -131
  33. package/examples/react-app/index.html +0 -12
  34. package/examples/react-app/main.tsx +0 -15
  35. package/examples/react-app/package.json +0 -24
  36. package/examples/vue-app/index.html +0 -12
  37. package/examples/vue-app/package.json +0 -22
  38. package/examples/vue-app/src/App.vue +0 -145
  39. package/examples/vue-app/src/main.ts +0 -9
  40. package/packages/components/package.json +0 -25
  41. package/packages/components/src/chat/chat.css +0 -80
  42. package/packages/components/src/chat/chat.ts +0 -236
  43. package/packages/components/src/index.ts +0 -36
  44. package/packages/components/src/input/input.css +0 -52
  45. package/packages/components/src/input/input.ts +0 -116
  46. package/packages/components/src/markdown/markdown.css +0 -118
  47. package/packages/components/src/markdown/markdown.ts +0 -229
  48. package/packages/components/src/message/message.css +0 -56
  49. package/packages/components/src/message/message.ts +0 -72
  50. package/packages/components/src/styles/global.css +0 -43
  51. package/packages/components/src/tool-call/tool-call.css +0 -98
  52. package/packages/components/src/tool-call/tool-call.ts +0 -171
  53. package/packages/components/src/types.ts +0 -55
  54. package/packages/components/src/utils/helpers.ts +0 -128
  55. package/packages/components/tsconfig.json +0 -25
  56. package/packages/components/tsup.config.ts +0 -18
  57. package/packages/core/package.json +0 -47
  58. package/packages/core/pnpm-lock.yaml +0 -2032
  59. package/packages/core/pnpm-workspace.yaml +0 -2
  60. package/packages/core/src/api/adapters.ts +0 -717
  61. package/packages/core/src/api/base.ts +0 -210
  62. package/packages/core/src/api/index.ts +0 -54
  63. package/packages/core/src/index.ts +0 -93
  64. package/packages/core/src/parser/latex.ts +0 -274
  65. package/packages/core/src/parser/markdown.test.ts +0 -58
  66. package/packages/core/src/parser/markdown.ts +0 -206
  67. package/packages/core/src/parser/mermaid.ts +0 -276
  68. package/packages/core/src/plugins/PluginManager.ts +0 -232
  69. package/packages/core/src/plugins/builtin.ts +0 -406
  70. package/packages/core/src/store/ChatStore.ts +0 -163
  71. package/packages/core/src/store/ModelConfigStore.ts +0 -136
  72. package/packages/core/src/store/ToolCallStore.ts +0 -164
  73. package/packages/core/src/store/base.ts +0 -75
  74. package/packages/core/src/types/index.ts +0 -133
  75. package/packages/core/tsup.config.ts +0 -18
  76. package/packages/themes/package.json +0 -33
  77. package/packages/themes/src/corporate/index.ts +0 -52
  78. package/packages/themes/src/corporate/theme.css +0 -228
  79. package/packages/themes/src/glass/index.ts +0 -52
  80. package/packages/themes/src/glass/theme.css +0 -237
  81. package/packages/themes/src/gradient/index.ts +0 -53
  82. package/packages/themes/src/gradient/theme.css +0 -218
  83. package/packages/themes/src/index.ts +0 -13
  84. package/packages/themes/src/minimal/index.ts +0 -52
  85. package/packages/themes/src/minimal/theme.css +0 -198
  86. package/packages/themes/src/neon/index.ts +0 -52
  87. package/packages/themes/src/neon/theme.css +0 -233
  88. package/packages/themes/src/terminal/index.ts +0 -52
  89. package/packages/themes/src/terminal/theme.css +0 -235
  90. package/packages/themes/src/types.ts +0 -10
  91. package/packages/themes/src/vite-env.d.ts +0 -9
  92. package/packages/themes/tsup.config.ts +0 -21
  93. package/pnpm-workspace.yaml +0 -4
  94. package/tsconfig.json +0 -27
  95. package/vite.config.ts +0 -25
  96. package/vitest.config.ts +0 -28
@@ -1,52 +0,0 @@
1
- /**
2
- * @generated-by AI: edenxpzhang
3
- * @generated-date 2026-05-13
4
- */
5
-
6
- import type { ThemeConfig } from '../types.js';
7
- import themeStyles from './theme.css?raw';
8
-
9
- export const glassTheme: ThemeConfig = {
10
- name: 'glass',
11
- variables: {
12
- '--ai-primary': 'rgba(102, 126, 234, 0.6)',
13
- '--ai-primary-hover': 'rgba(102, 126, 234, 0.8)',
14
- '--ai-primary-active': 'rgba(82, 106, 214, 0.9)',
15
- '--ai-bg-primary': 'rgba(255, 255, 255, 0.25)',
16
- '--ai-bg-secondary': 'rgba(255, 255, 255, 0.3)',
17
- '--ai-bg-tertiary': 'rgba(255, 255, 255, 0.2)',
18
- '--ai-bg-chat': 'transparent',
19
- '--ai-text-primary': '#ffffff',
20
- '--ai-text-secondary': 'rgba(255, 255, 255, 0.8)',
21
- '--ai-text-tertiary': 'rgba(255, 255, 255, 0.6)',
22
- '--ai-text-inverse': '#333333',
23
- '--ai-message-user-bg': 'rgba(102, 126, 234, 0.6)',
24
- '--ai-message-user-text': '#ffffff',
25
- '--ai-message-ai-bg': 'rgba(255, 255, 255, 0.4)',
26
- '--ai-message-ai-text': '#333333',
27
- '--ai-message-border': 'rgba(255, 255, 255, 0.6)',
28
- '--ai-input-bg': 'rgba(255, 255, 255, 0.3)',
29
- '--ai-input-border': 'rgba(255, 255, 255, 0.5)',
30
- '--ai-input-focus-border': 'rgba(255, 255, 255, 0.8)',
31
- '--ai-input-text': '#ffffff',
32
- '--ai-input-placeholder': 'rgba(255, 255, 255, 0.7)',
33
- '--ai-tool-call-bg': 'rgba(255, 255, 255, 0.3)',
34
- '--ai-tool-call-border': 'rgba(255, 255, 255, 0.5)',
35
- '--ai-tool-call-success': '#52c41a',
36
- '--ai-tool-call-error': '#ff4d4f',
37
- '--ai-tool-call-running': 'rgba(102, 126, 234, 0.6)',
38
- '--ai-shadow-sm': '0 2px 8px rgba(31, 38, 135, 0.1)',
39
- '--ai-shadow-md': '0 4px 16px rgba(31, 38, 135, 0.2)',
40
- '--ai-shadow-lg': '0 8px 32px rgba(31, 38, 135, 0.37)',
41
- '--ai-radius-sm': '8px',
42
- '--ai-radius-md': '16px',
43
- '--ai-radius-lg': '20px',
44
- '--ai-radius-xl': '24px',
45
- '--ai-spacing-xs': '4px',
46
- '--ai-spacing-sm': '8px',
47
- '--ai-spacing-md': '14px',
48
- '--ai-spacing-lg': '20px',
49
- '--ai-spacing-xl': '24px',
50
- },
51
- styles: themeStyles,
52
- };
@@ -1,237 +0,0 @@
1
- /**
2
- * @generated-by AI: edenxpzhang
3
- * @generated-date 2026-05-13
4
- *
5
- * Glassmorphism —— 毛玻璃拟态
6
- * 对齐 docs/chat-style-3-glass.html
7
- */
8
-
9
- :root[data-theme='glass'],
10
- .ai-theme-glass {
11
- --ai-primary: rgba(102, 126, 234, 0.6);
12
- --ai-primary-hover: rgba(102, 126, 234, 0.8);
13
- --ai-message-user-bg: rgba(102, 126, 234, 0.6);
14
- --ai-message-user-text: #ffffff;
15
- --ai-message-ai-bg: rgba(255, 255, 255, 0.4);
16
- --ai-message-ai-text: #333;
17
- --ai-text-primary: #ffffff;
18
- }
19
-
20
- /* 让父容器(如 body)有渐变背景,毛玻璃才有意义 */
21
- .ai-theme-glass-host,
22
- body[data-theme='glass'] {
23
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
24
- position: relative;
25
- overflow: hidden;
26
- }
27
- .ai-theme-glass-host::before,
28
- body[data-theme='glass']::before {
29
- content: '';
30
- position: absolute;
31
- width: 400px;
32
- height: 400px;
33
- background: rgba(255, 255, 255, 0.3);
34
- border-radius: 50%;
35
- top: -100px;
36
- left: -100px;
37
- filter: blur(60px);
38
- pointer-events: none;
39
- }
40
- .ai-theme-glass-host::after,
41
- body[data-theme='glass']::after {
42
- content: '';
43
- position: absolute;
44
- width: 350px;
45
- height: 350px;
46
- background: rgba(255, 200, 200, 0.3);
47
- border-radius: 50%;
48
- bottom: -80px;
49
- right: -80px;
50
- filter: blur(60px);
51
- pointer-events: none;
52
- }
53
-
54
- /* 容器 */
55
- .ai-theme-glass .ai-chat,
56
- [data-theme='glass'] .ai-chat {
57
- background: rgba(255, 255, 255, 0.25);
58
- backdrop-filter: blur(20px);
59
- -webkit-backdrop-filter: blur(20px);
60
- border: 1px solid rgba(255, 255, 255, 0.5);
61
- border-radius: 24px;
62
- box-shadow: 0 8px 32px rgba(31, 38, 135, 0.37);
63
- font-family: 'Segoe UI', sans-serif;
64
- position: relative;
65
- z-index: 1;
66
- }
67
-
68
- /* Header */
69
- .ai-theme-glass .ai-chat__header,
70
- [data-theme='glass'] .ai-chat__header {
71
- padding: 24px;
72
- background: rgba(255, 255, 255, 0.3);
73
- border-bottom: 1px solid rgba(255, 255, 255, 0.5);
74
- border-radius: 24px 24px 0 0;
75
- display: flex;
76
- align-items: center;
77
- gap: 14px;
78
- }
79
- .ai-theme-glass .ai-chat__avatar,
80
- [data-theme='glass'] .ai-chat__avatar {
81
- width: 45px;
82
- height: 45px;
83
- background: rgba(255, 255, 255, 0.4);
84
- backdrop-filter: blur(10px);
85
- border: 2px solid rgba(255, 255, 255, 0.6);
86
- border-radius: 50%;
87
- font-size: 22px;
88
- display: flex;
89
- align-items: center;
90
- justify-content: center;
91
- }
92
- .ai-theme-glass .ai-chat__title,
93
- [data-theme='glass'] .ai-chat__title {
94
- font-size: 18px;
95
- font-weight: 600;
96
- color: #fff;
97
- text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
98
- }
99
- .ai-theme-glass .ai-chat__subtitle,
100
- [data-theme='glass'] .ai-chat__subtitle {
101
- font-size: 13px;
102
- color: rgba(255, 255, 255, 0.8);
103
- }
104
-
105
- /* Messages */
106
- .ai-theme-glass .ai-chat__messages,
107
- [data-theme='glass'] .ai-chat__messages {
108
- background: transparent;
109
- padding: 20px;
110
- gap: 14px;
111
- }
112
- .ai-theme-glass .ai-chat__messages::-webkit-scrollbar,
113
- [data-theme='glass'] .ai-chat__messages::-webkit-scrollbar { width: 6px; }
114
- .ai-theme-glass .ai-chat__messages::-webkit-scrollbar-thumb,
115
- [data-theme='glass'] .ai-chat__messages::-webkit-scrollbar-thumb {
116
- background: rgba(255, 255, 255, 0.5);
117
- border-radius: 3px;
118
- }
119
-
120
- /* Message */
121
- .ai-theme-glass .ai-message,
122
- [data-theme='glass'] .ai-message { max-width: 78%; }
123
- .ai-theme-glass .ai-message__avatar,
124
- [data-theme='glass'] .ai-message__avatar { display: none; }
125
- .ai-theme-glass .ai-message__content,
126
- [data-theme='glass'] .ai-message__content {
127
- padding: 14px 18px;
128
- border-radius: 20px;
129
- font-size: 14px;
130
- line-height: 1.6;
131
- backdrop-filter: blur(10px);
132
- -webkit-backdrop-filter: blur(10px);
133
- }
134
- .ai-theme-glass .ai-message--user .ai-message__content,
135
- [data-theme='glass'] .ai-message--user .ai-message__content {
136
- background: rgba(102, 126, 234, 0.6);
137
- color: #fff;
138
- border: 1px solid rgba(255, 255, 255, 0.4);
139
- border-bottom-right-radius: 8px;
140
- }
141
- .ai-theme-glass .ai-message--assistant .ai-message__content,
142
- [data-theme='glass'] .ai-message--assistant .ai-message__content {
143
- background: rgba(255, 255, 255, 0.4);
144
- color: #333;
145
- border: 1px solid rgba(255, 255, 255, 0.6);
146
- border-bottom-left-radius: 8px;
147
- }
148
- .ai-theme-glass .ai-message__time,
149
- [data-theme='glass'] .ai-message__time { display: none; }
150
-
151
- /* Input */
152
- .ai-theme-glass .ai-input,
153
- [data-theme='glass'] .ai-input {
154
- padding: 16px 20px;
155
- background: rgba(255, 255, 255, 0.3);
156
- border-top: 1px solid rgba(255, 255, 255, 0.5);
157
- border-radius: 0 0 24px 24px;
158
- }
159
- .ai-theme-glass .ai-input__wrapper,
160
- [data-theme='glass'] .ai-input__wrapper {
161
- display: flex;
162
- gap: 12px;
163
- align-items: center;
164
- }
165
- .ai-theme-glass .ai-input__textarea,
166
- [data-theme='glass'] .ai-input__textarea {
167
- flex: 1;
168
- padding: 12px 18px;
169
- background: rgba(255, 255, 255, 0.3);
170
- backdrop-filter: blur(10px);
171
- border: 1px solid rgba(255, 255, 255, 0.5);
172
- border-radius: 20px;
173
- color: #fff;
174
- font-size: 14px;
175
- outline: none;
176
- resize: none;
177
- min-height: 44px;
178
- max-height: 120px;
179
- transition: all 0.3s;
180
- }
181
- .ai-theme-glass .ai-input__textarea::placeholder,
182
- [data-theme='glass'] .ai-input__textarea::placeholder { color: rgba(255, 255, 255, 0.7); }
183
- .ai-theme-glass .ai-input__textarea:focus,
184
- [data-theme='glass'] .ai-input__textarea:focus {
185
- background: rgba(255, 255, 255, 0.4);
186
- border-color: rgba(255, 255, 255, 0.8);
187
- }
188
- .ai-theme-glass .ai-input__send,
189
- [data-theme='glass'] .ai-input__send {
190
- width: 44px;
191
- height: 44px;
192
- background: rgba(102, 126, 234, 0.6);
193
- backdrop-filter: blur(10px);
194
- border: 1px solid rgba(255, 255, 255, 0.5);
195
- color: #fff;
196
- border-radius: 50%;
197
- cursor: pointer;
198
- font-size: 18px;
199
- transition: all 0.3s;
200
- display: flex;
201
- align-items: center;
202
- justify-content: center;
203
- padding: 0;
204
- }
205
- .ai-theme-glass .ai-input__send:hover:not(:disabled),
206
- [data-theme='glass'] .ai-input__send:hover:not(:disabled) {
207
- background: rgba(102, 126, 234, 0.8);
208
- transform: scale(1.05);
209
- }
210
-
211
- /* Typing */
212
- .ai-theme-glass .ai-typing-indicator,
213
- [data-theme='glass'] .ai-typing-indicator {
214
- display: flex;
215
- gap: 4px;
216
- padding: 12px 16px;
217
- background: rgba(255, 255, 255, 0.4);
218
- border-radius: 20px;
219
- width: fit-content;
220
- }
221
- .ai-theme-glass .ai-typing-indicator__dot,
222
- [data-theme='glass'] .ai-typing-indicator__dot {
223
- width: 6px;
224
- height: 6px;
225
- background: rgba(255, 255, 255, 0.8);
226
- border-radius: 50%;
227
- animation: ai-typing-bounce 1.4s infinite;
228
- }
229
- .ai-theme-glass .ai-typing-indicator__dot:nth-child(2),
230
- [data-theme='glass'] .ai-typing-indicator__dot:nth-child(2) { animation-delay: 0.2s; }
231
- .ai-theme-glass .ai-typing-indicator__dot:nth-child(3),
232
- [data-theme='glass'] .ai-typing-indicator__dot:nth-child(3) { animation-delay: 0.4s; }
233
-
234
- @keyframes ai-typing-bounce {
235
- 0%, 60%, 100% { transform: translateY(0); }
236
- 30% { transform: translateY(-6px); }
237
- }
@@ -1,53 +0,0 @@
1
- /**
2
- * @generated-by AI: edenxpzhang
3
- * @generated-date 2026-05-13
4
- */
5
-
6
- import type { ThemeConfig } from '../types.js';
7
- import themeStyles from './theme.css?raw';
8
-
9
- export const gradientTheme: ThemeConfig = {
10
- name: 'gradient',
11
- variables: {
12
- '--ai-primary': 'linear-gradient(135deg, #f093fb, #f5576c)',
13
- '--ai-primary-hover': 'linear-gradient(135deg, #f5576c, #f093fb)',
14
- '--ai-primary-active': 'linear-gradient(135deg, #d63384, #e91e63)',
15
- '--ai-bg-primary': '#ffffff',
16
- '--ai-bg-secondary': '#fafafa',
17
- '--ai-bg-tertiary': '#f5f5f5',
18
- '--ai-bg-chat': 'linear-gradient(135deg, #f093fb 0%, #f5576c 25%, #4facfe 50%, #00f2fe 75%, #43e97b 100%)',
19
- '--ai-bg-chat-size': '400% 400%',
20
- '--ai-text-primary': '#333333',
21
- '--ai-text-secondary': '#666666',
22
- '--ai-text-tertiary': '#999999',
23
- '--ai-text-inverse': '#ffffff',
24
- '--ai-message-user-bg': 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
25
- '--ai-message-user-text': '#ffffff',
26
- '--ai-message-ai-bg': '#ffffff',
27
- '--ai-message-ai-text': '#333333',
28
- '--ai-message-border': '#f0f0f0',
29
- '--ai-input-bg': '#f5f5f5',
30
- '--ai-input-border': '#e0e0e0',
31
- '--ai-input-focus-border': '#667eea',
32
- '--ai-input-text': '#333333',
33
- '--ai-input-placeholder': '#999999',
34
- '--ai-tool-call-bg': '#fafafa',
35
- '--ai-tool-call-border': '#e0e0e0',
36
- '--ai-tool-call-success': '#52c41a',
37
- '--ai-tool-call-error': '#ff4d4f',
38
- '--ai-tool-call-running': '#667eea',
39
- '--ai-shadow-sm': '0 2px 8px rgba(0, 0, 0, 0.08)',
40
- '--ai-shadow-md': '0 4px 15px rgba(102, 126, 234, 0.4)',
41
- '--ai-shadow-lg': '0 20px 60px rgba(0, 0, 0, 0.2)',
42
- '--ai-radius-sm': '6px',
43
- '--ai-radius-md': '20px',
44
- '--ai-radius-lg': '20px',
45
- '--ai-radius-xl': '30px',
46
- '--ai-spacing-xs': '4px',
47
- '--ai-spacing-sm': '8px',
48
- '--ai-spacing-md': '16px',
49
- '--ai-spacing-lg': '20px',
50
- '--ai-spacing-xl': '24px',
51
- },
52
- styles: themeStyles,
53
- };
@@ -1,218 +0,0 @@
1
- /**
2
- * @generated-by AI: edenxpzhang
3
- * @generated-date 2026-05-13
4
- *
5
- * Gradient Bubbles —— 多彩渐变
6
- * 对齐 docs/chat-style-5-gradient.html
7
- */
8
-
9
- :root[data-theme='gradient'],
10
- .ai-theme-gradient {
11
- --ai-primary: #667eea;
12
- --ai-message-user-bg: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
13
- --ai-message-user-text: #fff;
14
- --ai-message-ai-bg: #fff;
15
- --ai-message-ai-text: #333;
16
- }
17
-
18
- /* body 渐变背景 */
19
- .ai-theme-gradient-host,
20
- body[data-theme='gradient'] {
21
- background: linear-gradient(
22
- 135deg,
23
- #f093fb 0%,
24
- #f5576c 25%,
25
- #4facfe 50%,
26
- #00f2fe 75%,
27
- #43e97b 100%
28
- );
29
- background-size: 400% 400%;
30
- animation: ai-gradient-shift 15s ease infinite;
31
- }
32
- @keyframes ai-gradient-shift {
33
- 0% { background-position: 0% 50%; }
34
- 50% { background-position: 100% 50%; }
35
- 100% { background-position: 0% 50%; }
36
- }
37
-
38
- /* 容器 */
39
- .ai-theme-gradient .ai-chat,
40
- [data-theme='gradient'] .ai-chat {
41
- background: #fff;
42
- border-radius: 30px;
43
- box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);
44
- overflow: hidden;
45
- font-family: 'Segoe UI', sans-serif;
46
- }
47
-
48
- /* Header */
49
- .ai-theme-gradient .ai-chat__header,
50
- [data-theme='gradient'] .ai-chat__header {
51
- padding: 24px 20px;
52
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
53
- color: #fff;
54
- text-align: center;
55
- display: flex;
56
- flex-direction: column;
57
- align-items: center;
58
- gap: 4px;
59
- border-bottom: none;
60
- }
61
- .ai-theme-gradient .ai-chat__avatar,
62
- [data-theme='gradient'] .ai-chat__avatar { display: none; }
63
- .ai-theme-gradient .ai-chat__title,
64
- [data-theme='gradient'] .ai-chat__title {
65
- font-size: 20px;
66
- font-weight: 700;
67
- color: #fff;
68
- margin: 0;
69
- }
70
- .ai-theme-gradient .ai-chat__subtitle,
71
- [data-theme='gradient'] .ai-chat__subtitle {
72
- font-size: 12px;
73
- opacity: 0.85;
74
- color: #fff;
75
- margin: 0;
76
- }
77
- .ai-theme-gradient .ai-chat__title-group,
78
- [data-theme='gradient'] .ai-chat__title-group {
79
- text-align: center;
80
- }
81
-
82
- /* Messages */
83
- .ai-theme-gradient .ai-chat__messages,
84
- [data-theme='gradient'] .ai-chat__messages {
85
- background: #fafafa;
86
- padding: 20px;
87
- gap: 16px;
88
- }
89
-
90
- /* Message */
91
- .ai-theme-gradient .ai-message,
92
- [data-theme='gradient'] .ai-message {
93
- max-width: 80%;
94
- animation: ai-pop-in 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55);
95
- }
96
- .ai-theme-gradient .ai-message__avatar,
97
- [data-theme='gradient'] .ai-message__avatar { display: none; }
98
- .ai-theme-gradient .ai-message__content,
99
- [data-theme='gradient'] .ai-message__content {
100
- padding: 14px 18px;
101
- font-size: 14px;
102
- line-height: 1.6;
103
- }
104
- .ai-theme-gradient .ai-message--user .ai-message__content,
105
- [data-theme='gradient'] .ai-message--user .ai-message__content {
106
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
107
- color: #fff;
108
- border-radius: 20px 20px 6px 20px;
109
- box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4);
110
- }
111
- .ai-theme-gradient .ai-message--assistant .ai-message__content,
112
- [data-theme='gradient'] .ai-message--assistant .ai-message__content {
113
- background: #fff;
114
- color: #333;
115
- border: 1px solid #f0f0f0;
116
- border-radius: 20px 20px 20px 6px;
117
- box-shadow: 0 4px 15px rgba(0, 0, 0, 0.08);
118
- }
119
- .ai-theme-gradient .ai-message__time,
120
- [data-theme='gradient'] .ai-message__time {
121
- font-size: 11px;
122
- color: #999;
123
- margin-top: 4px;
124
- }
125
-
126
- @keyframes ai-pop-in {
127
- 0% { transform: scale(0.8); opacity: 0; }
128
- 100% { transform: scale(1); opacity: 1; }
129
- }
130
-
131
- /* Input */
132
- .ai-theme-gradient .ai-input,
133
- [data-theme='gradient'] .ai-input {
134
- padding: 16px 20px;
135
- background: #fff;
136
- border-top: 1px solid #f0f0f0;
137
- }
138
- .ai-theme-gradient .ai-input__wrapper,
139
- [data-theme='gradient'] .ai-input__wrapper {
140
- display: flex;
141
- gap: 12px;
142
- align-items: center;
143
- }
144
- .ai-theme-gradient .ai-input__textarea,
145
- [data-theme='gradient'] .ai-input__textarea {
146
- flex: 1;
147
- padding: 14px 20px;
148
- border: none;
149
- background: #f5f5f5;
150
- border-radius: 25px;
151
- font-size: 14px;
152
- outline: none;
153
- resize: none;
154
- min-height: 48px;
155
- max-height: 120px;
156
- transition: all 0.3s;
157
- color: #333;
158
- }
159
- .ai-theme-gradient .ai-input__textarea:focus,
160
- [data-theme='gradient'] .ai-input__textarea:focus {
161
- background: #eee;
162
- box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.2);
163
- }
164
- .ai-theme-gradient .ai-input__textarea::placeholder,
165
- [data-theme='gradient'] .ai-input__textarea::placeholder { color: #999; }
166
- .ai-theme-gradient .ai-input__send,
167
- [data-theme='gradient'] .ai-input__send {
168
- width: 48px;
169
- height: 48px;
170
- border: none;
171
- background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
172
- color: #fff;
173
- border-radius: 50%;
174
- cursor: pointer;
175
- font-size: 20px;
176
- transition: all 0.3s;
177
- box-shadow: 0 4px 15px rgba(245, 87, 108, 0.4);
178
- display: flex;
179
- align-items: center;
180
- justify-content: center;
181
- padding: 0;
182
- flex-shrink: 0;
183
- }
184
- .ai-theme-gradient .ai-input__send:hover:not(:disabled),
185
- [data-theme='gradient'] .ai-input__send:hover:not(:disabled) {
186
- transform: scale(1.1) rotate(15deg);
187
- box-shadow: 0 6px 20px rgba(245, 87, 108, 0.6);
188
- }
189
-
190
- /* Typing */
191
- .ai-theme-gradient .ai-typing-indicator,
192
- [data-theme='gradient'] .ai-typing-indicator {
193
- display: flex;
194
- gap: 4px;
195
- padding: 14px 18px;
196
- background: #fff;
197
- border: 1px solid #f0f0f0;
198
- border-radius: 20px 20px 20px 6px;
199
- width: fit-content;
200
- box-shadow: 0 4px 15px rgba(0, 0, 0, 0.08);
201
- }
202
- .ai-theme-gradient .ai-typing-indicator__dot,
203
- [data-theme='gradient'] .ai-typing-indicator__dot {
204
- width: 6px;
205
- height: 6px;
206
- background: #999;
207
- border-radius: 50%;
208
- animation: ai-typing-bounce 1.4s infinite;
209
- }
210
- .ai-theme-gradient .ai-typing-indicator__dot:nth-child(2),
211
- [data-theme='gradient'] .ai-typing-indicator__dot:nth-child(2) { animation-delay: 0.2s; }
212
- .ai-theme-gradient .ai-typing-indicator__dot:nth-child(3),
213
- [data-theme='gradient'] .ai-typing-indicator__dot:nth-child(3) { animation-delay: 0.4s; }
214
-
215
- @keyframes ai-typing-bounce {
216
- 0%, 60%, 100% { transform: translateY(0); }
217
- 30% { transform: translateY(-6px); }
218
- }
@@ -1,13 +0,0 @@
1
- /**
2
- * @generated-by AI: edenxpzhang
3
- * @generated-date 2026-05-13
4
- */
5
-
6
- export { minimalTheme } from './minimal/index.js';
7
- export { neonTheme } from './neon/index.js';
8
- export { glassTheme } from './glass/index.js';
9
- export { terminalTheme } from './terminal/index.js';
10
- export { gradientTheme } from './gradient/index.js';
11
- export { corporateTheme } from './corporate/index.js';
12
-
13
- export type { ThemeConfig } from './types.js';
@@ -1,52 +0,0 @@
1
- /**
2
- * @generated-by AI: edenxpzhang
3
- * @generated-date 2026-05-13
4
- */
5
-
6
- import type { ThemeConfig } from '../types.js';
7
- import themeStyles from './theme.css?raw';
8
-
9
- export const minimalTheme: ThemeConfig = {
10
- name: 'minimal',
11
- variables: {
12
- '--ai-primary': '#0071e3',
13
- '--ai-primary-hover': '#0077ed',
14
- '--ai-primary-active': '#0056b3',
15
- '--ai-bg-primary': '#ffffff',
16
- '--ai-bg-secondary': '#f5f5f7',
17
- '--ai-bg-tertiary': '#fafafa',
18
- '--ai-bg-chat': '#f5f5f7',
19
- '--ai-text-primary': '#1d1d1f',
20
- '--ai-text-secondary': '#86868b',
21
- '--ai-text-tertiary': '#a1a1a6',
22
- '--ai-text-inverse': '#ffffff',
23
- '--ai-message-user-bg': '#0071e3',
24
- '--ai-message-user-text': '#ffffff',
25
- '--ai-message-ai-bg': '#e5e5ea',
26
- '--ai-message-ai-text': '#1d1d1f',
27
- '--ai-message-border': '#e5e5ea',
28
- '--ai-input-bg': '#ffffff',
29
- '--ai-input-border': '#e5e5ea',
30
- '--ai-input-focus-border': '#0071e3',
31
- '--ai-input-text': '#1d1d1f',
32
- '--ai-input-placeholder': '#86868b',
33
- '--ai-tool-call-bg': '#f6f8fa',
34
- '--ai-tool-call-border': '#d1d9e0',
35
- '--ai-tool-call-success': '#52c41a',
36
- '--ai-tool-call-error': '#ff4d4f',
37
- '--ai-tool-call-running': '#0071e3',
38
- '--ai-shadow-sm': '0 1px 2px rgba(0, 0, 0, 0.06)',
39
- '--ai-shadow-md': '0 2px 8px rgba(0, 0, 0, 0.08)',
40
- '--ai-shadow-lg': '0 4px 16px rgba(0, 0, 0, 0.1)',
41
- '--ai-radius-sm': '6px',
42
- '--ai-radius-md': '12px',
43
- '--ai-radius-lg': '18px',
44
- '--ai-radius-xl': '24px',
45
- '--ai-spacing-xs': '4px',
46
- '--ai-spacing-sm': '8px',
47
- '--ai-spacing-md': '12px',
48
- '--ai-spacing-lg': '16px',
49
- '--ai-spacing-xl': '24px',
50
- },
51
- styles: themeStyles,
52
- };