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,414 +0,0 @@
1
- <!--
2
- @generated-by AI: edenxpzhang
3
- @generated-date 2026-05-13
4
- -->
5
- <!DOCTYPE html>
6
- <html lang="zh-CN">
7
- <head>
8
- <meta charset="UTF-8">
9
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
10
- <title>AI Chat UI Kit - 原生 HTML 示例</title>
11
- <style>
12
- * {
13
- margin: 0;
14
- padding: 0;
15
- box-sizing: border-box;
16
- }
17
-
18
- html, body {
19
- height: 100%;
20
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
21
- }
22
-
23
- #app {
24
- height: 100vh;
25
- display: flex;
26
- flex-direction: column;
27
- }
28
-
29
- .header {
30
- padding: 16px 24px;
31
- background: #1677ff;
32
- color: white;
33
- display: flex;
34
- align-items: center;
35
- justify-content: space-between;
36
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
37
- flex-wrap: wrap;
38
- gap: 12px;
39
- }
40
-
41
- .header h1 {
42
- font-size: 20px;
43
- font-weight: 600;
44
- }
45
-
46
- .theme-selector {
47
- display: flex;
48
- gap: 8px;
49
- flex-wrap: wrap;
50
- }
51
-
52
- .theme-btn {
53
- padding: 6px 16px;
54
- border: 1px solid rgba(255, 255, 255, 0.5);
55
- background: transparent;
56
- color: white;
57
- border-radius: 4px;
58
- cursor: pointer;
59
- font-size: 14px;
60
- transition: all 0.3s;
61
- }
62
-
63
- .theme-btn:hover {
64
- background: rgba(255, 255, 255, 0.15);
65
- }
66
-
67
- .theme-btn.active {
68
- background: rgba(255, 255, 255, 0.25);
69
- border-color: white;
70
- }
71
-
72
- .chat-container {
73
- flex: 1;
74
- height: 0;
75
- }
76
- </style>
77
- </head>
78
- <body>
79
- <div id="app">
80
- <div class="header">
81
- <h1>🤖 AI Chat UI Kit 示例</h1>
82
- <div class="theme-selector">
83
- <button class="theme-btn active" data-theme="minimal">Minimal</button>
84
- <button class="theme-btn" data-theme="neon">Neon</button>
85
- <button class="theme-btn" data-theme="glass">Glass</button>
86
- <button class="theme-btn" data-theme="terminal">Terminal</button>
87
- <button class="theme-btn" data-theme="gradient">Gradient</button>
88
- <button class="theme-btn" data-theme="corporate">Corporate</button>
89
- </div>
90
- </div>
91
-
92
- <div class="chat-container">
93
- <ai-chat id="chat"></ai-chat>
94
- </div>
95
- </div>
96
-
97
- <script>
98
- // 主题配置
99
- const themes = {
100
- minimal: {
101
- name: 'minimal',
102
- variables: {
103
- '--ai-primary': '#0071e3',
104
- '--ai-bg-chat': '#f5f5f7',
105
- '--ai-message-user-bg': '#0071e3',
106
- '--ai-message-ai-bg': '#e5e5ea',
107
- '--ai-text-primary': '#1d1d1f',
108
- }
109
- },
110
- neon: {
111
- name: 'neon',
112
- variables: {
113
- '--ai-primary': '#7f5af0',
114
- '--ai-bg-chat': '#0a0a0a',
115
- '--ai-message-user-bg': 'linear-gradient(135deg, #7f5af0, #ff006e)',
116
- '--ai-message-ai-bg': '#16213e',
117
- '--ai-text-primary': '#00ffff',
118
- }
119
- },
120
- glass: {
121
- name: 'glass',
122
- variables: {
123
- '--ai-primary': 'rgba(102, 126, 234, 0.6)',
124
- '--ai-bg-chat': 'transparent',
125
- '--ai-message-user-bg': 'rgba(102, 126, 234, 0.6)',
126
- '--ai-message-ai-bg': 'rgba(255, 255, 255, 0.4)',
127
- '--ai-text-primary': '#ffffff',
128
- }
129
- },
130
- terminal: {
131
- name: 'terminal',
132
- variables: {
133
- '--ai-primary': '#00ff00',
134
- '--ai-bg-chat': '#0a0a0a',
135
- '--ai-message-user-bg': 'transparent',
136
- '--ai-message-ai-bg': 'transparent',
137
- '--ai-text-primary': '#00ff00',
138
- }
139
- },
140
- gradient: {
141
- name: 'gradient',
142
- variables: {
143
- '--ai-primary': 'linear-gradient(135deg, #f093fb, #f5576c)',
144
- '--ai-bg-chat': '#ffffff',
145
- '--ai-message-user-bg': 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
146
- '--ai-message-ai-bg': '#ffffff',
147
- '--ai-text-primary': '#333333',
148
- },
149
- bodyBg: 'linear-gradient(135deg, #f093fb 0%, #f5576c 25%, #4facfe 50%, #00f2fe 75%, #43e97b 100%)'
150
- },
151
- corporate: {
152
- name: 'corporate',
153
- variables: {
154
- '--ai-primary': '#1890ff',
155
- '--ai-bg-chat': '#fafafa',
156
- '--ai-message-user-bg': '#1890ff',
157
- '--ai-message-ai-bg': '#ffffff',
158
- '--ai-text-primary': '#333333',
159
- }
160
- }
161
- };
162
-
163
- // 应用主题
164
- function applyTheme(themeName) {
165
- const theme = themes[themeName];
166
- if (!theme) return;
167
-
168
- const root = document.documentElement;
169
- Object.entries(theme.variables).forEach(([key, value]) => {
170
- root.style.setProperty(key, value);
171
- });
172
-
173
- // 设置/清除 body 背景(gradient 主题专用)
174
- if (theme.bodyBg) {
175
- document.body.style.background = theme.bodyBg;
176
- } else {
177
- document.body.style.background = '';
178
- }
179
-
180
- // 更新按钮状态
181
- document.querySelectorAll('.theme-btn').forEach(btn => {
182
- btn.classList.toggle('active', btn.dataset.theme === themeName);
183
- });
184
-
185
- console.log(`已切换到 ${theme.name} 主题`);
186
- }
187
-
188
- // 绑定主题切换按钮
189
- document.querySelectorAll('.theme-btn').forEach(btn => {
190
- btn.addEventListener('click', () => {
191
- applyTheme(btn.dataset.theme);
192
- });
193
- });
194
-
195
- // 模拟 AI Chat 组件
196
- class AIChat extends HTMLElement {
197
- constructor() {
198
- super();
199
- this.attachShadow({ mode: 'open' });
200
- this.messages = [
201
- { role: 'assistant', content: '你好!我是 AI 助手,有什么可以帮助你的吗?' }
202
- ];
203
- this.render();
204
- }
205
-
206
- render() {
207
- const messagesHTML = this.messages.map(msg => {
208
- const isUser = msg.role === 'user';
209
- return `
210
- <div class="ai-message ${isUser ? 'ai-message--user' : 'ai-message--assistant'}">
211
- <div class="ai-message__avatar">${isUser ? '我' : 'AI'}</div>
212
- <div class="ai-message__content">${msg.content}</div>
213
- </div>
214
- `;
215
- }).join('');
216
-
217
- this.shadowRoot.innerHTML = `
218
- <style>
219
- :host {
220
- display: flex;
221
- flex-direction: column;
222
- height: 100%;
223
- background: var(--ai-bg-chat, #f0f2f5);
224
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
225
- }
226
-
227
- .messages {
228
- flex: 1;
229
- overflow-y: auto;
230
- padding: 16px;
231
- display: flex;
232
- flex-direction: column;
233
- gap: 12px;
234
- }
235
-
236
- .ai-message {
237
- display: flex;
238
- gap: 8px;
239
- max-width: 80%;
240
- animation: fadeIn 0.3s ease-out;
241
- }
242
-
243
- .ai-message--user {
244
- flex-direction: row-reverse;
245
- margin-left: auto;
246
- }
247
-
248
- .ai-message--assistant {
249
- margin-right: auto;
250
- }
251
-
252
- .ai-message__avatar {
253
- width: 36px;
254
- height: 36px;
255
- border-radius: 50%;
256
- flex-shrink: 0;
257
- display: flex;
258
- align-items: center;
259
- justify-content: center;
260
- font-size: 14px;
261
- background: var(--ai-primary, #1677ff);
262
- color: white;
263
- }
264
-
265
- .ai-message--assistant .ai-message__avatar {
266
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
267
- }
268
-
269
- .ai-message__content {
270
- padding: 12px 16px;
271
- border-radius: 12px;
272
- line-height: 1.6;
273
- word-break: break-word;
274
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
275
- }
276
-
277
- .ai-message--user .ai-message__content {
278
- background: var(--ai-message-user-bg, #1677ff);
279
- color: white;
280
- border-top-right-radius: 4px;
281
- }
282
-
283
- .ai-message--assistant .ai-message__content {
284
- background: var(--ai-message-ai-bg, #ffffff);
285
- color: var(--ai-text-primary, rgba(0, 0, 0, 0.88));
286
- border: 1px solid #e8e8e8;
287
- border-top-left-radius: 4px;
288
- }
289
-
290
- .input-area {
291
- padding: 16px;
292
- background: white;
293
- border-top: 1px solid #e8e8e8;
294
- }
295
-
296
- .input-wrapper {
297
- display: flex;
298
- gap: 8px;
299
- align-items: flex-end;
300
- background: white;
301
- border: 1px solid #d9d9d9;
302
- border-radius: 8px;
303
- padding: 8px 12px;
304
- transition: border-color 0.3s;
305
- }
306
-
307
- .input-wrapper:focus-within {
308
- border-color: var(--ai-primary, #1677ff);
309
- box-shadow: 0 0 0 2px rgba(22, 119, 255, 0.15);
310
- }
311
-
312
- textarea {
313
- flex: 1;
314
- border: none;
315
- outline: none;
316
- resize: none;
317
- font-size: 14px;
318
- line-height: 1.6;
319
- min-height: 24px;
320
- max-height: 120px;
321
- font-family: inherit;
322
- padding: 0;
323
- background: transparent;
324
- }
325
-
326
- button {
327
- background: var(--ai-primary, #1677ff);
328
- color: white;
329
- border: none;
330
- border-radius: 8px;
331
- padding: 8px 20px;
332
- cursor: pointer;
333
- font-size: 14px;
334
- transition: background 0.3s;
335
- flex-shrink: 0;
336
- }
337
-
338
- button:hover {
339
- opacity: 0.85;
340
- }
341
-
342
- @keyframes fadeIn {
343
- from {
344
- opacity: 0;
345
- transform: translateY(10px);
346
- }
347
- to {
348
- opacity: 1;
349
- transform: translateY(0);
350
- }
351
- }
352
- </style>
353
- <div class="messages" id="messages">
354
- ${messagesHTML}
355
- </div>
356
- <div class="input-area">
357
- <div class="input-wrapper">
358
- <textarea id="input" rows="1" placeholder="输入消息..."></textarea>
359
- <button id="sendBtn">发送</button>
360
- </div>
361
- </div>
362
- `;
363
-
364
- this.bindEvents();
365
- this.scrollToBottom();
366
- }
367
-
368
- bindEvents() {
369
- const input = this.shadowRoot.getElementById('input');
370
- const sendBtn = this.shadowRoot.getElementById('sendBtn');
371
- const messages = this.shadowRoot.getElementById('messages');
372
-
373
- const sendMessage = () => {
374
- const text = input.value.trim();
375
- if (!text) return;
376
-
377
- this.messages.push({ role: 'user', content: text });
378
- input.value = '';
379
- this.render();
380
-
381
- setTimeout(() => {
382
- this.messages.push({
383
- role: 'assistant',
384
- content: `收到你的消息:"${text}"。这是 AI 的回复。`
385
- });
386
- this.render();
387
- }, 1000);
388
- };
389
-
390
- sendBtn.addEventListener('click', sendMessage);
391
- input.addEventListener('keydown', (e) => {
392
- if (e.key === 'Enter' && !e.shiftKey) {
393
- e.preventDefault();
394
- sendMessage();
395
- }
396
- });
397
- }
398
-
399
- scrollToBottom() {
400
- const messages = this.shadowRoot.getElementById('messages');
401
- if (messages) {
402
- messages.scrollTop = messages.scrollHeight;
403
- }
404
- }
405
- }
406
-
407
- // 注册组件
408
- customElements.define('ai-chat', AIChat);
409
-
410
- console.log('✅ AI Chat 组件已加载');
411
- console.log('💡 点击右上角按钮切换主题');
412
- </script>
413
- </body>
414
- </html>
@@ -1,131 +0,0 @@
1
- /**
2
- * @generated-by AI: edenxpzhang
3
- * @generated-date 2026-05-13
4
- */
5
-
6
- import React, { useEffect, useRef, useState } from 'react';
7
- import '@ai-chat/components';
8
- import '@ai-chat/themes/default';
9
-
10
- const ChatApp: React.FC = () => {
11
- const chatRef = useRef<HTMLElement>(null);
12
- const [theme, setTheme] = useState<'default' | 'bubble' | 'flat'>('default');
13
-
14
- useEffect(() => {
15
- if (chatRef.current) {
16
- // 设置消息处理回调
17
- (chatRef.current as any).setMessageHandler(async (message: string) => {
18
- // 模拟 AI 回复延迟
19
- await new Promise(resolve => setTimeout(resolve, 1000));
20
- return `AI 回复:${message}`;
21
- });
22
-
23
- // 添加欢迎消息
24
- (chatRef.current as any).addMessage({
25
- role: 'assistant',
26
- content: '你好!我是 AI 助手。有什么可以帮助你的吗?'
27
- });
28
- }
29
- }, []);
30
-
31
- // 切换主题
32
- const handleThemeChange = (newTheme: 'default' | 'bubble' | 'flat') => {
33
- setTheme(newTheme);
34
- // 在实际使用中,这里应该动态加载对应的主题 CSS
35
- console.log(`切换到 ${newTheme} 主题`);
36
- // 可以通过动态导入实现:
37
- // import(`@ai-chat/themes/${newTheme}`);
38
- };
39
-
40
- return (
41
- <div style={styles.container}>
42
- <header style={styles.header}>
43
- <h1 style={styles.title}>🤖 AI Chat - React 示例</h1>
44
- <div style={styles.themeButtons}>
45
- <button
46
- style={{
47
- ...styles.themeBtn,
48
- ...(theme === 'default' ? styles.themeBtnActive : {}),
49
- }}
50
- onClick={() => handleThemeChange('default')}
51
- >
52
- 默认主题
53
- </button>
54
- <button
55
- style={{
56
- ...styles.themeBtn,
57
- ...(theme === 'bubble' ? styles.themeBtnActive : {}),
58
- }}
59
- onClick={() => handleThemeChange('bubble')}
60
- >
61
- 气泡主题
62
- </button>
63
- <button
64
- style={{
65
- ...styles.themeBtn,
66
- ...(theme === 'flat' ? styles.themeBtnActive : {}),
67
- }}
68
- onClick={() => handleThemeChange('flat')}
69
- >
70
- 扁平主题
71
- </button>
72
- </div>
73
- </header>
74
- <main style={styles.chatContainer}>
75
- <ai-chat ref={chatRef} style={styles.chat}></ai-chat>
76
- </main>
77
- </div>
78
- );
79
- };
80
-
81
- const styles: Record<string, React.CSSProperties> = {
82
- container: {
83
- height: '100vh',
84
- display: 'flex',
85
- flexDirection: 'column',
86
- fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
87
- },
88
- header: {
89
- padding: '16px 24px',
90
- background: '#1677ff',
91
- color: 'white',
92
- display: 'flex',
93
- alignItems: 'center',
94
- justifyContent: 'space-between',
95
- boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)',
96
- },
97
- title: {
98
- fontSize: '20px',
99
- fontWeight: 600,
100
- margin: 0,
101
- },
102
- themeButtons: {
103
- display: 'flex',
104
- gap: '8px',
105
- },
106
- themeBtn: {
107
- padding: '6px 16px',
108
- border: '1px solid rgba(255, 255, 255, 0.5)',
109
- background: 'transparent',
110
- color: 'white',
111
- borderRadius: '4px',
112
- cursor: 'pointer',
113
- fontSize: '14px',
114
- transition: 'all 0.3s',
115
- },
116
- themeBtnActive: {
117
- background: 'rgba(255, 255, 255, 0.25)',
118
- borderColor: 'white',
119
- },
120
- chatContainer: {
121
- flex: 1,
122
- height: 0,
123
- overflow: 'hidden',
124
- },
125
- chat: {
126
- height: '100%',
127
- display: 'block',
128
- },
129
- };
130
-
131
- export default ChatApp;
@@ -1,12 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="zh-CN">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
- <title>AI Chat - React Example</title>
7
- </head>
8
- <body>
9
- <div id="root"></div>
10
- <script type="module" src="/src/main.tsx"></script>
11
- </body>
12
- </html>
@@ -1,15 +0,0 @@
1
- /**
2
- * @generated-by AI: edenxpzhang
3
- * @generated-date 2026-05-13
4
- */
5
-
6
- import React from 'react';
7
- import ReactDOM from 'react-dom/client';
8
- import App from './App';
9
- import './index.css';
10
-
11
- ReactDOM.createRoot(document.getElementById('root')!).render(
12
- <React.StrictMode>
13
- <App />
14
- </React.StrictMode>
15
- );
@@ -1,24 +0,0 @@
1
- {
2
- "name": "ai-chat-react-example",
3
- "version": "0.1.0",
4
- "private": true,
5
- "type": "module",
6
- "scripts": {
7
- "dev": "vite",
8
- "build": "tsc && vite build",
9
- "preview": "vite preview"
10
- },
11
- "dependencies": {
12
- "@ai-chat/components": "^0.1.0",
13
- "@ai-chat/themes": "^0.1.0",
14
- "react": "^18.2.0",
15
- "react-dom": "^18.2.0"
16
- },
17
- "devDependencies": {
18
- "@types/react": "^18.2.0",
19
- "@types/react-dom": "^18.2.0",
20
- "@vitejs/plugin-react": "^4.0.0",
21
- "typescript": "^5.0.0",
22
- "vite": "^4.0.0"
23
- }
24
- }
@@ -1,12 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="zh-CN">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
- <title>AI Chat - Vue Example</title>
7
- </head>
8
- <body>
9
- <div id="app"></div>
10
- <script type="module" src="/src/main.ts"></script>
11
- </body>
12
- </html>
@@ -1,22 +0,0 @@
1
- {
2
- "name": "ai-chat-vue-example",
3
- "version": "0.1.0",
4
- "private": true,
5
- "type": "module",
6
- "scripts": {
7
- "dev": "vite",
8
- "build": "vue-tsc && vite build",
9
- "preview": "vite preview"
10
- },
11
- "dependencies": {
12
- "@ai-chat/components": "^0.1.0",
13
- "@ai-chat/themes": "^0.1.0",
14
- "vue": "^3.3.0"
15
- },
16
- "devDependencies": {
17
- "@vitejs/plugin-vue": "^4.0.0",
18
- "typescript": "^5.0.0",
19
- "vite": "^4.0.0",
20
- "vue-tsc": "^1.0.0"
21
- }
22
- }