ai-chat-ui-kit 0.1.0

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 (95) hide show
  1. package/.eslintrc.cjs +74 -0
  2. package/.github/actions/screenshot/action.yml +35 -0
  3. package/.github/workflows/pages.yml +46 -0
  4. package/README.md +285 -0
  5. package/docs/README.md +176 -0
  6. package/docs/api/components.md +344 -0
  7. package/docs/api/core.md +349 -0
  8. package/docs/chat-style-1-minimal.html +78 -0
  9. package/docs/chat-style-2-neon.html +74 -0
  10. package/docs/chat-style-3-glass.html +73 -0
  11. package/docs/chat-style-4-terminal.html +84 -0
  12. package/docs/chat-style-5-gradient.html +69 -0
  13. package/docs/chat-style-6-corporate.html +116 -0
  14. package/docs/examples/basic-chat.md +291 -0
  15. package/docs/examples/custom-plugins.md +431 -0
  16. package/docs/examples/multi-model.md +466 -0
  17. package/docs/guide/api-adapters.md +431 -0
  18. package/docs/guide/getting-started.md +244 -0
  19. package/docs/guide/headless-mode.md +508 -0
  20. package/docs/guide/plugins.md +416 -0
  21. package/docs/guide/themes.md +327 -0
  22. package/docs/index.html +256 -0
  23. package/docs/theme-preview-1-minimal.html +74 -0
  24. package/docs/theme-preview-2-neon.html +73 -0
  25. package/docs/theme-preview-3-glass.html +77 -0
  26. package/docs/theme-preview-4-terminal.html +86 -0
  27. package/docs/theme-preview-5-gradient.html +79 -0
  28. package/docs/theme-preview-6-corporate.html +71 -0
  29. package/examples/index.html +414 -0
  30. package/examples/react-app/App.tsx +131 -0
  31. package/examples/react-app/index.html +12 -0
  32. package/examples/react-app/main.tsx +15 -0
  33. package/examples/react-app/package.json +24 -0
  34. package/examples/vue-app/index.html +12 -0
  35. package/examples/vue-app/package.json +22 -0
  36. package/examples/vue-app/src/App.vue +145 -0
  37. package/examples/vue-app/src/main.ts +9 -0
  38. package/package.json +44 -0
  39. package/packages/components/package.json +25 -0
  40. package/packages/components/src/chat/chat.css +80 -0
  41. package/packages/components/src/chat/chat.ts +236 -0
  42. package/packages/components/src/index.ts +36 -0
  43. package/packages/components/src/input/input.css +52 -0
  44. package/packages/components/src/input/input.ts +116 -0
  45. package/packages/components/src/markdown/markdown.css +118 -0
  46. package/packages/components/src/markdown/markdown.ts +229 -0
  47. package/packages/components/src/message/message.css +56 -0
  48. package/packages/components/src/message/message.ts +72 -0
  49. package/packages/components/src/styles/global.css +43 -0
  50. package/packages/components/src/tool-call/tool-call.css +98 -0
  51. package/packages/components/src/tool-call/tool-call.ts +171 -0
  52. package/packages/components/src/types.ts +55 -0
  53. package/packages/components/src/utils/helpers.ts +128 -0
  54. package/packages/components/tsconfig.json +25 -0
  55. package/packages/components/tsup.config.ts +18 -0
  56. package/packages/core/package.json +47 -0
  57. package/packages/core/pnpm-lock.yaml +2032 -0
  58. package/packages/core/pnpm-workspace.yaml +2 -0
  59. package/packages/core/src/api/adapters.ts +717 -0
  60. package/packages/core/src/api/base.ts +210 -0
  61. package/packages/core/src/api/index.ts +54 -0
  62. package/packages/core/src/index.ts +93 -0
  63. package/packages/core/src/parser/latex.ts +274 -0
  64. package/packages/core/src/parser/markdown.test.ts +58 -0
  65. package/packages/core/src/parser/markdown.ts +206 -0
  66. package/packages/core/src/parser/mermaid.ts +276 -0
  67. package/packages/core/src/plugins/PluginManager.ts +232 -0
  68. package/packages/core/src/plugins/builtin.ts +406 -0
  69. package/packages/core/src/store/ChatStore.ts +163 -0
  70. package/packages/core/src/store/ModelConfigStore.ts +136 -0
  71. package/packages/core/src/store/ToolCallStore.ts +164 -0
  72. package/packages/core/src/store/base.ts +75 -0
  73. package/packages/core/src/types/index.ts +133 -0
  74. package/packages/core/tsup.config.ts +18 -0
  75. package/packages/themes/package.json +33 -0
  76. package/packages/themes/src/corporate/index.ts +52 -0
  77. package/packages/themes/src/corporate/theme.css +228 -0
  78. package/packages/themes/src/glass/index.ts +52 -0
  79. package/packages/themes/src/glass/theme.css +237 -0
  80. package/packages/themes/src/gradient/index.ts +53 -0
  81. package/packages/themes/src/gradient/theme.css +218 -0
  82. package/packages/themes/src/index.ts +13 -0
  83. package/packages/themes/src/minimal/index.ts +52 -0
  84. package/packages/themes/src/minimal/theme.css +198 -0
  85. package/packages/themes/src/neon/index.ts +52 -0
  86. package/packages/themes/src/neon/theme.css +233 -0
  87. package/packages/themes/src/terminal/index.ts +52 -0
  88. package/packages/themes/src/terminal/theme.css +235 -0
  89. package/packages/themes/src/types.ts +10 -0
  90. package/packages/themes/src/vite-env.d.ts +9 -0
  91. package/packages/themes/tsup.config.ts +21 -0
  92. package/pnpm-workspace.yaml +4 -0
  93. package/tsconfig.json +27 -0
  94. package/vite.config.ts +25 -0
  95. package/vitest.config.ts +28 -0
@@ -0,0 +1,73 @@
1
+ <!--
2
+ @generated-by AI: edenxpzhang
3
+ @generated-date 2026-05-13
4
+
5
+ Theme Preview · Neon —— 真实组件 DOM + neon 主题
6
+ -->
7
+ <!DOCTYPE html>
8
+ <html lang="zh-CN">
9
+ <head>
10
+ <meta charset="UTF-8" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
12
+ <title>主题预览 · 02 Dark Neon | AI Chat UI Kit</title>
13
+ <link rel="stylesheet" href="../packages/themes/src/neon/theme.css" />
14
+ <style>
15
+ * { margin: 0; padding: 0; box-sizing: border-box; }
16
+ html, body { height: 100%; }
17
+ body {
18
+ background: #0a0a0a;
19
+ display: flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ padding: 24px;
23
+ overflow: hidden;
24
+ }
25
+ body::before {
26
+ content: '';
27
+ position: fixed; inset: 0;
28
+ background:
29
+ radial-gradient(circle at 20% 50%, rgba(120, 0, 255, 0.15) 0%, transparent 50%),
30
+ radial-gradient(circle at 80% 50%, rgba(0, 255, 255, 0.1) 0%, transparent 50%);
31
+ pointer-events: none;
32
+ z-index: 0;
33
+ }
34
+ .stage { width: 450px; height: 700px; position: relative; z-index: 1; }
35
+ </style>
36
+ </head>
37
+ <body data-theme="neon">
38
+ <div class="stage">
39
+ <div class="ai-chat" data-theme="neon">
40
+ <header class="ai-chat__header">
41
+ <div class="ai-chat__avatar"></div>
42
+ <div class="ai-chat__title-group">
43
+ <h3 class="ai-chat__title">⚡ NEON AI</h3>
44
+ <p class="ai-chat__subtitle">● SYSTEM ONLINE</p>
45
+ </div>
46
+ </header>
47
+ <div class="ai-chat__messages">
48
+ <div class="ai-message ai-message--assistant">
49
+ <div class="ai-message__body">
50
+ <div class="ai-message__content">&gt; SYSTEM READY<br />&gt; 您好,我是 Neon AI<br />&gt; 随时准备为您服务_</div>
51
+ </div>
52
+ </div>
53
+ <div class="ai-message ai-message--user">
54
+ <div class="ai-message__body">
55
+ <div class="ai-message__content">&gt; 帮我分析下数据</div>
56
+ </div>
57
+ </div>
58
+ <div class="ai-message ai-message--assistant">
59
+ <div class="ai-message__body">
60
+ <div class="ai-message__content">&gt; 处理中...<br />&gt; 根据数据分析,我认为...</div>
61
+ </div>
62
+ </div>
63
+ </div>
64
+ <div class="ai-input">
65
+ <div class="ai-input__wrapper">
66
+ <textarea class="ai-input__textarea" placeholder="> 输入命令..." rows="1"></textarea>
67
+ <button class="ai-input__send">SEND ▸</button>
68
+ </div>
69
+ </div>
70
+ </div>
71
+ </div>
72
+ </body>
73
+ </html>
@@ -0,0 +1,77 @@
1
+ <!--
2
+ @generated-by AI: edenxpzhang
3
+ @generated-date 2026-05-13
4
+
5
+ Theme Preview · Glass —— 真实组件 DOM + glass 主题
6
+ -->
7
+ <!DOCTYPE html>
8
+ <html lang="zh-CN">
9
+ <head>
10
+ <meta charset="UTF-8" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
12
+ <title>主题预览 · 03 Glassmorphism | AI Chat UI Kit</title>
13
+ <link rel="stylesheet" href="../packages/themes/src/glass/theme.css" />
14
+ <style>
15
+ * { margin: 0; padding: 0; box-sizing: border-box; }
16
+ html, body { height: 100%; }
17
+ body {
18
+ display: flex;
19
+ align-items: center;
20
+ justify-content: center;
21
+ padding: 24px;
22
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
23
+ overflow: hidden;
24
+ }
25
+ body::before {
26
+ content: '';
27
+ position: fixed; inset: 0;
28
+ pointer-events: none;
29
+ }
30
+ body::before {
31
+ width: 400px; height: 400px;
32
+ background: rgba(255, 255, 255, 0.3);
33
+ border-radius: 50%;
34
+ top: -100px; left: -100px;
35
+ filter: blur(60px);
36
+ position: absolute;
37
+ }
38
+ .stage { width: 420px; height: 700px; position: relative; z-index: 1; }
39
+ </style>
40
+ </head>
41
+ <body data-theme="glass">
42
+ <div class="stage">
43
+ <div class="ai-chat" data-theme="glass">
44
+ <header class="ai-chat__header">
45
+ <div class="ai-chat__avatar">✨</div>
46
+ <div class="ai-chat__title-group">
47
+ <h3 class="ai-chat__title">Glass AI</h3>
48
+ <p class="ai-chat__subtitle">透明 · 优雅 · 智能</p>
49
+ </div>
50
+ </header>
51
+ <div class="ai-chat__messages">
52
+ <div class="ai-message ai-message--assistant">
53
+ <div class="ai-message__body">
54
+ <div class="ai-message__content">您好!我是 Glass AI,采用最新的毛玻璃设计风格。有什么可以帮您的吗?✨</div>
55
+ </div>
56
+ </div>
57
+ <div class="ai-message ai-message--user">
58
+ <div class="ai-message__body">
59
+ <div class="ai-message__content">这个透明效果真不错</div>
60
+ </div>
61
+ </div>
62
+ <div class="ai-message ai-message--assistant">
63
+ <div class="ai-message__body">
64
+ <div class="ai-message__content">谢谢喜欢!基于 backdrop-filter 实现的现代风格。</div>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ <div class="ai-input">
69
+ <div class="ai-input__wrapper">
70
+ <textarea class="ai-input__textarea" placeholder="输入消息..." rows="1"></textarea>
71
+ <button class="ai-input__send">➤</button>
72
+ </div>
73
+ </div>
74
+ </div>
75
+ </div>
76
+ </body>
77
+ </html>
@@ -0,0 +1,86 @@
1
+ <!--
2
+ @generated-by AI: edenxpzhang
3
+ @generated-date 2026-05-13
4
+
5
+ Theme Preview · Terminal —— 真实组件 DOM + terminal 主题
6
+ -->
7
+ <!DOCTYPE html>
8
+ <html lang="zh-CN">
9
+ <head>
10
+ <meta charset="UTF-8" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
12
+ <title>主题预览 · 04 Retro Terminal | AI Chat UI Kit</title>
13
+ <link rel="stylesheet" href="../packages/themes/src/terminal/theme.css" />
14
+ <style>
15
+ * { margin: 0; padding: 0; box-sizing: border-box; }
16
+ html, body { height: 100%; }
17
+ body {
18
+ background: #0c0c0c;
19
+ display: flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ padding: 24px;
23
+ }
24
+ body::after {
25
+ content: '';
26
+ position: fixed; inset: 0;
27
+ background: repeating-linear-gradient(
28
+ 0deg,
29
+ rgba(0, 255, 0, 0.03) 0px,
30
+ rgba(0, 255, 0, 0.03) 1px,
31
+ transparent 1px,
32
+ transparent 2px
33
+ );
34
+ pointer-events: none;
35
+ z-index: 100;
36
+ }
37
+ .stage { width: 650px; height: 720px; }
38
+ </style>
39
+ </head>
40
+ <body data-theme="terminal">
41
+ <div class="stage">
42
+ <div class="ai-chat" data-theme="terminal">
43
+ <header class="ai-chat__header">
44
+ <div class="ai-chat__avatar">●</div>
45
+ <div class="ai-chat__title-group">
46
+ <h3 class="ai-chat__title">█ AI TERMINAL v2.0 █</h3>
47
+ <p class="ai-chat__subtitle">SYSTEM READY &gt;_</p>
48
+ </div>
49
+ </header>
50
+ <div class="ai-chat__messages">
51
+ <div class="ai-message ai-message--assistant">
52
+ <div class="ai-message__body">
53
+ <div class="ai-message__content">系统初始化完成。</div>
54
+ </div>
55
+ </div>
56
+ <div class="ai-message ai-message--assistant">
57
+ <div class="ai-message__body">
58
+ <div class="ai-message__content">您好!我是终端 AI 助手。</div>
59
+ </div>
60
+ </div>
61
+ <div class="ai-message ai-message--assistant">
62
+ <div class="ai-message__body">
63
+ <div class="ai-message__content">请输入您的指令_</div>
64
+ </div>
65
+ </div>
66
+ <div class="ai-message ai-message--user">
67
+ <div class="ai-message__body">
68
+ <div class="ai-message__content">help</div>
69
+ </div>
70
+ </div>
71
+ <div class="ai-message ai-message--assistant">
72
+ <div class="ai-message__body">
73
+ <div class="ai-message__content">可用命令: status / analyze / report / exit</div>
74
+ </div>
75
+ </div>
76
+ </div>
77
+ <div class="ai-input">
78
+ <div class="ai-input__wrapper">
79
+ <textarea class="ai-input__textarea" placeholder="输入命令..." rows="1"></textarea>
80
+ <button class="ai-input__send">EXEC</button>
81
+ </div>
82
+ </div>
83
+ </div>
84
+ </div>
85
+ </body>
86
+ </html>
@@ -0,0 +1,79 @@
1
+ <!--
2
+ @generated-by AI: edenxpzhang
3
+ @generated-date 2026-05-13
4
+
5
+ Theme Preview · Gradient —— 真实组件 DOM + gradient 主题
6
+ -->
7
+ <!DOCTYPE html>
8
+ <html lang="zh-CN">
9
+ <head>
10
+ <meta charset="UTF-8" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
12
+ <title>主题预览 · 05 Gradient Bubbles | AI Chat UI Kit</title>
13
+ <link rel="stylesheet" href="../packages/themes/src/gradient/theme.css" />
14
+ <style>
15
+ * { margin: 0; padding: 0; box-sizing: border-box; }
16
+ html, body { height: 100%; }
17
+ body {
18
+ display: flex;
19
+ align-items: center;
20
+ justify-content: center;
21
+ padding: 24px;
22
+ background: linear-gradient(
23
+ 135deg,
24
+ #f093fb 0%,
25
+ #f5576c 25%,
26
+ #4facfe 50%,
27
+ #00f2fe 75%,
28
+ #43e97b 100%
29
+ );
30
+ background-size: 400% 400%;
31
+ animation: ai-gradient-shift 15s ease infinite;
32
+ }
33
+ @keyframes ai-gradient-shift {
34
+ 0% { background-position: 0% 50%; }
35
+ 50% { background-position: 100% 50%; }
36
+ 100% { background-position: 0% 50%; }
37
+ }
38
+ .stage { width: 420px; height: 720px; }
39
+ </style>
40
+ </head>
41
+ <body data-theme="gradient">
42
+ <div class="stage">
43
+ <div class="ai-chat" data-theme="gradient">
44
+ <header class="ai-chat__header">
45
+ <div class="ai-chat__title-group">
46
+ <h3 class="ai-chat__title">✨ Gradient AI</h3>
47
+ <p class="ai-chat__subtitle">多彩 · 活力 · 智能</p>
48
+ </div>
49
+ </header>
50
+ <div class="ai-chat__messages">
51
+ <div class="ai-message ai-message--assistant">
52
+ <div class="ai-message__body">
53
+ <div class="ai-message__content">嗨!我是 Gradient AI 🌈<br />采用最新的渐变色设计,让聊天更有趣!</div>
54
+ <div class="ai-message__time">14:30</div>
55
+ </div>
56
+ </div>
57
+ <div class="ai-message ai-message--user">
58
+ <div class="ai-message__body">
59
+ <div class="ai-message__content">真好看 🎨</div>
60
+ <div class="ai-message__time">14:30</div>
61
+ </div>
62
+ </div>
63
+ <div class="ai-message ai-message--assistant">
64
+ <div class="ai-message__body">
65
+ <div class="ai-message__content">太棒了!🌟 让我来帮您...</div>
66
+ <div class="ai-message__time">14:31</div>
67
+ </div>
68
+ </div>
69
+ </div>
70
+ <div class="ai-input">
71
+ <div class="ai-input__wrapper">
72
+ <textarea class="ai-input__textarea" placeholder="说点什么..." rows="1"></textarea>
73
+ <button class="ai-input__send">➤</button>
74
+ </div>
75
+ </div>
76
+ </div>
77
+ </div>
78
+ </body>
79
+ </html>
@@ -0,0 +1,71 @@
1
+ <!--
2
+ @generated-by AI: edenxpzhang
3
+ @generated-date 2026-05-13
4
+
5
+ Theme Preview · Corporate —— 真实组件 DOM + corporate 主题
6
+ -->
7
+ <!DOCTYPE html>
8
+ <html lang="zh-CN">
9
+ <head>
10
+ <meta charset="UTF-8" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
12
+ <title>主题预览 · 06 Corporate Professional | AI Chat UI Kit</title>
13
+ <link rel="stylesheet" href="../packages/themes/src/corporate/theme.css" />
14
+ <style>
15
+ * { margin: 0; padding: 0; box-sizing: border-box; }
16
+ html, body { height: 100%; }
17
+ body {
18
+ background: #f0f2f5;
19
+ display: flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ padding: 24px;
23
+ }
24
+ .stage { width: 480px; height: 720px; }
25
+ </style>
26
+ </head>
27
+ <body data-theme="corporate">
28
+ <div class="stage">
29
+ <div class="ai-chat" data-theme="corporate">
30
+ <header class="ai-chat__header">
31
+ <div class="ai-chat__avatar">AI</div>
32
+ <div class="ai-chat__title-group">
33
+ <h3 class="ai-chat__title">企业智能助手</h3>
34
+ <p class="ai-chat__subtitle">Enterprise AI Assistant v3.0</p>
35
+ </div>
36
+ </header>
37
+ <div class="ai-chat__messages">
38
+ <div class="ai-message ai-message--assistant">
39
+ <div class="ai-message__avatar">AI</div>
40
+ <div class="ai-message__body">
41
+ <div class="ai-message__content">
42
+ 您好!我是企业智能助手。我可以帮助您处理文档、数据分析、日程安排等工作事务。有什么可以为您服务的吗?
43
+ </div>
44
+ <div class="ai-message__time">14:30</div>
45
+ </div>
46
+ </div>
47
+ <div class="ai-message ai-message--user">
48
+ <div class="ai-message__avatar">我</div>
49
+ <div class="ai-message__body">
50
+ <div class="ai-message__content">帮我准备一份月度数据报告</div>
51
+ <div class="ai-message__time">14:31</div>
52
+ </div>
53
+ </div>
54
+ <div class="ai-message ai-message--assistant">
55
+ <div class="ai-message__avatar">AI</div>
56
+ <div class="ai-message__body">
57
+ <div class="ai-message__content">收到您的指令。正在为您查询相关数据,请稍候...</div>
58
+ <div class="ai-message__time">14:31</div>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ <div class="ai-input">
63
+ <div class="ai-input__wrapper">
64
+ <textarea class="ai-input__textarea" placeholder="输入您的问题..." rows="1"></textarea>
65
+ <button class="ai-input__send">发送</button>
66
+ </div>
67
+ </div>
68
+ </div>
69
+ </div>
70
+ </body>
71
+ </html>