@mxmweb/aichat 1.9.7 → 2.0.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.
- package/README.md +207 -199
- package/assets/style.css +1 -1
- package/components/AiChat.d.ts +5 -1
- package/index.js +7951 -7846
- package/package.json +1 -1
- package/stats.html +1 -1
- package/utils/fileIcon.d.ts +9 -0
- package/LoginPage/components/Login/LoginBox/index.d.ts +0 -18
- package/LoginPage/components/Login/RegisterBox/index.d.ts +0 -15
- package/LoginPage/components/Login/index.d.ts +0 -17
- package/LoginPage/index.d.ts +0 -4
- package/LoginPage/useServices.d.ts +0 -9
- package/LoginPage/utils.d.ts +0 -2
- package/adopters/GientechChat/Conversations/Item.d.ts +0 -10
- package/adopters/GientechChat/Conversations/List.d.ts +0 -18
- package/adopters/GientechChat/Conversations/groupByTime.d.ts +0 -17
- package/adopters/GientechChat/Conversations/index.d.ts +0 -18
- package/adopters/GientechChat/constants.d.ts +0 -17
- package/adopters/GientechChat/index.d.ts +0 -42
- package/adopters/GientechChat/types.d.ts +0 -14
- package/adopters/HeadLessChat/constants.d.ts +0 -16
- package/adopters/HeadLessChat/index.d.ts +0 -14
- package/adopters/HeadLessChat/types.d.ts +0 -21
- package/adopters/gientechCommon/components/AppError.d.ts +0 -4
- package/adopters/gientechCommon/components/AppLoading.d.ts +0 -1
- package/adopters/gientechCommon/components/DeleteModal.d.ts +0 -1
- package/adopters/gientechCommon/components/DisplayError.d.ts +0 -1
- package/adopters/gientechCommon/components/DisplayLoading.d.ts +0 -1
- package/adopters/gientechCommon/components/FeedBackModal.d.ts +0 -2
- package/adopters/gientechCommon/components/FileManager/FileCardCommon.d.ts +0 -19
- package/adopters/gientechCommon/components/FileManager/index.d.ts +0 -21
- package/adopters/gientechCommon/components/Messages/GientechNewChatWelcome.d.ts +0 -11
- package/adopters/gientechCommon/components/Messages/ReferenceCard.d.ts +0 -17
- package/adopters/gientechCommon/components/Messages/RetriveItem.d.ts +0 -28
- package/adopters/gientechCommon/components/Messages/WebRetriveItem.d.ts +0 -3
- package/adopters/gientechCommon/components/RenameModal.d.ts +0 -1
- package/adopters/gientechCommon/configs/commonConfig.d.ts +0 -2
- package/adopters/gientechCommon/configs/senderConfig.d.ts +0 -1
- package/adopters/gientechCommon/configs/stylesConfig.d.ts +0 -88
- package/adopters/gientechCommon/hooks/AichatUseController.d.ts +0 -45
- package/adopters/gientechCommon/utils/request.d.ts +0 -2
- package/adopters/gientechCommon/utils/serverFn.d.ts +0 -52
- package/core/AiChat.d.ts +0 -73
- package/core/AiChat.types.d.ts +0 -106
- package/core/DefaultAppError.d.ts +0 -1
- package/core/DefaultAppLoading.d.ts +0 -1
- package/core/DefaultDisplayError.d.ts +0 -1
- package/core/DefaultDisplayLoading.d.ts +0 -1
- package/core/DefaultNewChatWelcome.d.ts +0 -1
- package/core/Displayer/DefaultAiChatBox.d.ts +0 -1
- package/core/Displayer/DefaultUserChatBox.d.ts +0 -1
- package/core/Displayer/index.d.ts +0 -14
- package/core/DynamicForm.d.ts +0 -8
- package/core/Loading.d.ts +0 -1
- package/core/Sender/FileUpload.d.ts +0 -12
- package/core/Sender/FilesDisplay.d.ts +0 -16
- package/core/Sender/VoiceInput.d.ts +0 -6
- package/core/Sender/contexts/BadgeContext.d.ts +0 -10
- package/core/Sender/index.d.ts +0 -33
- package/core/Sidebar/Loading.d.ts +0 -1
- package/core/Sidebar/RetriveConfigPanel.d.ts +0 -10
- package/core/Sidebar/useDynamicFormItems.d.ts +0 -2
- package/core/SidebarProp.d.ts +0 -16
- package/core/common/FileCardCommon.d.ts +0 -19
- package/core/defaultStyleSet.d.ts +0 -94
- package/core/styles.config.d.ts +0 -4
- package/servers/chatApi.d.ts +0 -7
- package/servers/fileApi.d.ts +0 -5
- package/servers/modelApi.d.ts +0 -8
package/README.md
CHANGED
|
@@ -1,35 +1,48 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @mxmweb/aichat
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> 基于 React 的轻量级 AI 聊天对话组件库,提供核心聊天功能和灵活的扩展能力
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
[](https://www.npmjs.com/package/@mxmweb/aichat)
|
|
6
|
+
[](https://www.npmjs.com/package/@mxmweb/aichat)
|
|
7
|
+
[](https://github.com/your-org/aichat/blob/main/LICENSE)
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
## ✨ 核心特性
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
- ✅ **轻量级设计**:Gzip 压缩后仅 ~78KB,专注于核心聊天功能
|
|
12
|
+
- ✅ **灵活的组件系统**:支持自定义消息卡片、欢迎页、加载状态等
|
|
13
|
+
- ✅ **完整的文件上传**:支持拖拽上传、多文件管理、上传状态跟踪
|
|
14
|
+
- ✅ **动态主题系统**:支持运行时主题切换,所有样式可配置
|
|
15
|
+
- ✅ **事件驱动架构**:通过 eventsEmit 统一处理所有交互事件
|
|
16
|
+
- ✅ **TypeScript 支持**:完整的类型定义,提供良好的开发体验
|
|
17
|
+
- ✅ **侧边栏扩展**:支持自定义侧边栏组件和动态表单
|
|
18
|
+
- ✅ **纯 UI 组件库**:v2.0.0 版本专注于 UI 展示层,业务逻辑已分离
|
|
10
19
|
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
pnpm add @mxmweb/aichat \
|
|
14
|
-
react react-dom @mxmweb/zui
|
|
15
|
-
```
|
|
20
|
+
## 📦 安装
|
|
16
21
|
|
|
17
|
-
#### 使用 yarn
|
|
18
22
|
```bash
|
|
19
|
-
|
|
20
|
-
|
|
23
|
+
# 使用 pnpm(推荐)
|
|
24
|
+
pnpm add @mxmweb/aichat react react-dom @mxmweb/zui
|
|
25
|
+
|
|
26
|
+
# 使用 npm
|
|
27
|
+
npm install @mxmweb/aichat react react-dom @mxmweb/zui
|
|
28
|
+
|
|
29
|
+
# 使用 yarn
|
|
30
|
+
yarn add @mxmweb/aichat react react-dom @mxmweb/zui
|
|
21
31
|
```
|
|
22
32
|
|
|
23
|
-
|
|
33
|
+
### 必需依赖
|
|
34
|
+
|
|
35
|
+
本库需要以下 peerDependencies:
|
|
36
|
+
|
|
24
37
|
```bash
|
|
25
|
-
|
|
26
|
-
react react-dom @mxmweb/zui
|
|
38
|
+
pnpm add @mxmweb/zui@^1.* react@>=18 react-dom@>=18
|
|
27
39
|
```
|
|
28
40
|
|
|
29
41
|
### 样式引入
|
|
30
42
|
|
|
31
43
|
在项目入口文件中引入样式:
|
|
32
|
-
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
33
46
|
import '@mxmweb/aichat/style.css';
|
|
34
47
|
```
|
|
35
48
|
|
|
@@ -41,215 +54,210 @@ import '@mxmweb/aichat/style.css';
|
|
|
41
54
|
|
|
42
55
|
> 💡 **优化说明**:AIChat 已移除不必要的依赖,专注于核心聊天功能,确保快速加载和简洁的安装体验。
|
|
43
56
|
|
|
44
|
-
|
|
45
|
-
1. **业务层集成方案(推荐,开箱即用)**
|
|
46
|
-
2. **核心组件层用法(自定义交互/高级用法)**
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## 1. 业务层集成方案(推荐)
|
|
57
|
+
## 🚀 快速开始
|
|
51
58
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
### 快速开始
|
|
59
|
+
### 基础用法
|
|
55
60
|
|
|
56
61
|
```tsx
|
|
57
|
-
import {
|
|
62
|
+
import React, { useState } from 'react';
|
|
63
|
+
import { AiChat } from '@mxmweb/aichat';
|
|
64
|
+
import '@mxmweb/aichat/style.css';
|
|
58
65
|
|
|
59
|
-
|
|
66
|
+
function App() {
|
|
67
|
+
const [chatData, setChatData] = useState({
|
|
68
|
+
id: 'session-1',
|
|
69
|
+
messages: [],
|
|
70
|
+
isNew: true,
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
const [status, setStatus] = useState({
|
|
74
|
+
display: 'ready',
|
|
75
|
+
sender: 'ready',
|
|
76
|
+
app: 'ready',
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
const handleEventsEmit = (eventName: string, data?: any) => {
|
|
80
|
+
console.log('Event:', eventName, data);
|
|
81
|
+
|
|
82
|
+
if (eventName === 'sender:send') {
|
|
83
|
+
// 处理消息发送
|
|
84
|
+
const newMessage = {
|
|
85
|
+
id: `msg-${Date.now()}`,
|
|
86
|
+
type: 'user',
|
|
87
|
+
time: new Date().toISOString(),
|
|
88
|
+
content: data.content,
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
setChatData(prev => ({
|
|
92
|
+
...prev,
|
|
93
|
+
messages: [...prev.messages, newMessage],
|
|
94
|
+
}));
|
|
95
|
+
|
|
96
|
+
// 模拟 AI 回复
|
|
97
|
+
setTimeout(() => {
|
|
98
|
+
const aiMessage = {
|
|
99
|
+
id: `msg-${Date.now()}`,
|
|
100
|
+
type: 'ai',
|
|
101
|
+
time: new Date().toISOString(),
|
|
102
|
+
content: '这是一条 AI 回复',
|
|
103
|
+
};
|
|
104
|
+
setChatData(prev => ({
|
|
105
|
+
...prev,
|
|
106
|
+
messages: [...prev.messages, aiMessage],
|
|
107
|
+
}));
|
|
108
|
+
}, 1000);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
60
111
|
|
|
61
|
-
const ChatBox =GientechChat()
|
|
62
112
|
return (
|
|
63
|
-
<
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
error: '#F53F3F', // 错误色
|
|
77
|
-
shadow: '#000', // 阴影色
|
|
78
|
-
appBackground: '#F7F8FA', // 整体背景色
|
|
79
|
-
// ...可扩展更多
|
|
113
|
+
<div style={{ width: '100%', height: '100vh' }}>
|
|
114
|
+
<AiChat
|
|
115
|
+
activeSessionId="session-1"
|
|
116
|
+
chatData={chatData}
|
|
117
|
+
status={status}
|
|
118
|
+
eventsEmit={handleEventsEmit}
|
|
119
|
+
styles={{
|
|
120
|
+
theme: {
|
|
121
|
+
colors: {
|
|
122
|
+
primary: '#409EFF',
|
|
123
|
+
background: '#F7F8FA',
|
|
124
|
+
text: '#222',
|
|
125
|
+
},
|
|
80
126
|
},
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
},
|
|
86
|
-
space: {
|
|
87
|
-
radius: 'md', // 圆角,可用 'sm' | 'md' | 'lg' 或具体像素
|
|
88
|
-
size: 'md', // 字体大小
|
|
89
|
-
shadow: 'md', // 阴影
|
|
90
|
-
padding: 'md', // 内边距
|
|
91
|
-
margin: 'md', // 外边距
|
|
92
|
-
sidebar: '260px', // 侧边栏宽度
|
|
93
|
-
lineHeight: 'normal', // 行高
|
|
94
|
-
// ...
|
|
95
|
-
},
|
|
96
|
-
others: {
|
|
97
|
-
baseFontWeight: 400, // 字重
|
|
98
|
-
// ...
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
mode: 'light', // 或 'dark'
|
|
102
|
-
}}
|
|
103
|
-
eventsEmit={(event, data) => {
|
|
104
|
-
// 监听所有交互事件
|
|
105
|
-
}}
|
|
106
|
-
/>
|
|
127
|
+
mode: 'light',
|
|
128
|
+
}}
|
|
129
|
+
/>
|
|
130
|
+
</div>
|
|
107
131
|
);
|
|
108
132
|
}
|
|
133
|
+
|
|
134
|
+
export default App;
|
|
109
135
|
```
|
|
110
136
|
|
|
111
|
-
|
|
112
|
-
- `theme.colors`:所有颜色相关配置,**建议全部覆盖**,否则用默认色。
|
|
113
|
-
- `theme.icons`:AI、用户等头像图标,支持自定义。
|
|
114
|
-
- `theme.space`:圆角、阴影、字体、边距、侧边栏宽度等。
|
|
115
|
-
- `theme.others`:其他扩展项,如字体粗细。
|
|
116
|
-
- `mode`:'light' 或 'dark',影响部分默认色。
|
|
117
|
-
|
|
118
|
-
#### eventsEmit 可监听事件及参数
|
|
119
|
-
业务层已封装常用事件,所有交互事件均通过 `eventsEmit(eventName, data)` 回调分发,常见事件如下:
|
|
120
|
-
|
|
121
|
-
| 事件名 | 说明 | data 参数结构示例 |
|
|
122
|
-
|------------------------------|----------------------|------------------------------------|
|
|
123
|
-
| sender:send | 发送消息 | { content, files, status, ... } |
|
|
124
|
-
| sender:send_recommandQuestion| 发送推荐问题 | { content, ... } |
|
|
125
|
-
| sender:clear | 清空输入框 | { clearFn } |
|
|
126
|
-
| sender:action_history | 打开文件管理器 | - |
|
|
127
|
-
| action_copy:click | 复制消息内容 | { content, sessionContext } |
|
|
128
|
-
| action_thumbsup | 点赞 | { restult, queryId } |
|
|
129
|
-
| action_thumbsdown | 点踩 | { restult, queryId } |
|
|
130
|
-
| action_retry | 重新发送 | { idx, content, ... } |
|
|
131
|
-
| fileManager:change | 文件管理器文件变化 | { uploadedFiles, setUploadedFiles, removeFile } |
|
|
132
|
-
| conversations:delete_icon_clicked | 删除会话 | { data, async_deleteConversation, ... } |
|
|
133
|
-
| conversations:rename_icon_clicked | 重命名会话 | { data, async_renameConversation, ... } |
|
|
134
|
-
| conversation:item_click | 切换会话 | { sessionId, ... } |
|
|
135
|
-
| ... | 其他事件 | - |
|
|
136
|
-
|
|
137
|
-
- **所有事件参数均为对象,具体结构可参考源码或控制台输出。**
|
|
138
|
-
- 你可以在 `eventsEmit` 里拦截、扩展、上报等。
|
|
137
|
+
## 🔗 链接
|
|
139
138
|
|
|
140
|
-
|
|
139
|
+
- **NPM**: <https://www.npmjs.com/package/@mxmweb/aichat>
|
|
140
|
+
- **GitHub**: <https://github.com/your-org/aichat>
|
|
141
141
|
|
|
142
|
-
##
|
|
142
|
+
## 📚 API 文档
|
|
143
143
|
|
|
144
|
-
|
|
144
|
+
> 📖 完整 API 文档请查看:[doc_assets/接口/](./doc_assets/接口/)
|
|
145
145
|
|
|
146
|
-
|
|
146
|
+
- **接口文档**: [AiChat API](./doc_assets/接口/AiChat.md)
|
|
147
|
+
- **更新说明**: [CHANGELOG](./doc_assets/更新说明/CHANGELOG.md)
|
|
148
|
+
- **v2.0.0 升级指南**: [v2.0.0升级指南](./doc_assets/更新说明/v2.0.0升级指南.md) ⭐ **新版本必读**
|
|
149
|
+
- **演示说明**: [演示文档](./doc_assets/演示/index.md)
|
|
147
150
|
|
|
148
|
-
|
|
149
|
-
import { AiChat } from '@mxmweb/aichat';
|
|
151
|
+
### 核心组件(Core Components)
|
|
150
152
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
AiChatBox: (msg, idx) => <MyAiChatBox {...msg} />, // 自定义AI消息卡片
|
|
173
|
-
UserChatBox: (msg, idx) => <MyUserChatBox {...msg} />, // 自定义用户消息卡片
|
|
174
|
-
WelcomeComponent: () => <MyWelcome />,
|
|
175
|
-
LogoBox: () => <MyLogo />,
|
|
176
|
-
// ...
|
|
177
|
-
}}
|
|
178
|
-
onSenderConfigChange={fn} // 发送器配置变化回调(可选)
|
|
179
|
-
/>
|
|
180
|
-
);
|
|
153
|
+
#### AiChat
|
|
154
|
+
|
|
155
|
+
核心聊天组件,提供基础的聊天界面和交互能力。
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
interface AiChatProps {
|
|
159
|
+
activeSessionId: string | undefined;
|
|
160
|
+
chatData: ConversationData;
|
|
161
|
+
sidebar?: SidebarTabConfig[];
|
|
162
|
+
status: AppStatusManager;
|
|
163
|
+
recommandQuestions?: string[];
|
|
164
|
+
eventsEmit?: (eventName: string, data?: any, callback?: () => void) => void;
|
|
165
|
+
CustomComponents?: any;
|
|
166
|
+
fileUploadStatus?: any;
|
|
167
|
+
styles?: Styles;
|
|
168
|
+
senderConfig?: SenderConfig;
|
|
169
|
+
onSenderConfigChange?: (data: {
|
|
170
|
+
name: string;
|
|
171
|
+
checked: boolean;
|
|
172
|
+
all: Record<string, boolean>;
|
|
173
|
+
}) => void;
|
|
181
174
|
}
|
|
182
175
|
```
|
|
183
176
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
|
189
|
-
|
|
|
190
|
-
|
|
|
191
|
-
|
|
|
192
|
-
| recommandQuestions
|
|
193
|
-
|
|
|
194
|
-
|
|
|
195
|
-
|
|
|
196
|
-
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
177
|
+
**Props 说明**:
|
|
178
|
+
|
|
179
|
+
| 参数 | 类型 | 默认值 | 说明 |
|
|
180
|
+
|------|------|--------|------|
|
|
181
|
+
| activeSessionId | string \| undefined | - | 当前激活的会话ID |
|
|
182
|
+
| chatData | ConversationData | 必填 | 聊天数据,包含消息列表 |
|
|
183
|
+
| sidebar | SidebarTabConfig[] | [] | 侧边栏配置数组 |
|
|
184
|
+
| status | AppStatusManager | 必填 | 应用状态管理对象 |
|
|
185
|
+
| recommandQuestions | string[] | [] | 推荐问题列表 |
|
|
186
|
+
| eventsEmit | (eventName, data, callback) => void | - | 事件回调函数 |
|
|
187
|
+
| CustomComponents | object | - | 自定义组件配置 |
|
|
188
|
+
| fileUploadStatus | any[] | [] | 文件上传状态数组 |
|
|
189
|
+
| styles | Styles | - | 主题样式配置 |
|
|
190
|
+
| senderConfig | SenderConfig | - | 发送器配置 |
|
|
191
|
+
| onSenderConfigChange | (data) => void | - | 发送器配置变化回调 |
|
|
192
|
+
|
|
193
|
+
## 🛠️ 技术栈
|
|
194
|
+
|
|
195
|
+
- **React** `>=18 <20` - 前端框架
|
|
196
|
+
- **@mxmweb/zui** `^1.*` - UI 组件库
|
|
197
|
+
- **TypeScript** - 类型支持
|
|
198
|
+
- **anime.js** - 动画库
|
|
199
|
+
- **lucide-react** - 图标库
|
|
200
|
+
|
|
201
|
+
## 📁 项目结构
|
|
202
|
+
|
|
203
|
+
```text
|
|
204
|
+
src/
|
|
205
|
+
├── lib_enter.ts # 库入口,导出所有公共 API
|
|
206
|
+
├── style.css # 样式文件
|
|
207
|
+
├── components/ # 核心组件(统一组件目录)
|
|
208
|
+
│ ├── AiChat.tsx # AiChat 核心组件
|
|
209
|
+
│ ├── AiChat.types.tsx # 类型定义
|
|
210
|
+
│ ├── Sender/ # 发送器组件
|
|
211
|
+
│ │ ├── index.tsx
|
|
212
|
+
│ │ ├── FilesDisplay.tsx
|
|
213
|
+
│ │ ├── FileUpload.tsx
|
|
214
|
+
│ │ └── VoiceInput.tsx
|
|
215
|
+
│ ├── Displayer/ # 消息展示组件
|
|
216
|
+
│ │ ├── index.tsx
|
|
217
|
+
│ │ ├── DefaultAiChatBox.tsx
|
|
218
|
+
│ │ ├── DefaultUserChatBox.tsx
|
|
219
|
+
│ │ └── slate/ # Slate 富文本编辑器
|
|
220
|
+
│ ├── DynamicForm.tsx # 动态表单组件
|
|
221
|
+
│ ├── defaultStyleSet.tsx # 默认主题配置
|
|
222
|
+
│ ├── styles.config.ts # 样式配置
|
|
223
|
+
│ └── ... # 其他组件
|
|
224
|
+
├── utils/ # 工具函数
|
|
225
|
+
│ ├── fileIcon.tsx # 文件类型图标工具
|
|
226
|
+
│ └── commonFn.tsx # 通用工具函数
|
|
227
|
+
└── examples/ # 演示实例
|
|
228
|
+
├── BaseChat/
|
|
229
|
+
└── ProChat/
|
|
232
230
|
```
|
|
233
231
|
|
|
234
|
-
|
|
232
|
+
> 💡 **架构说明**:v2.0.0 版本已移除业务层代码(`LoginPage`、`servers`、`adopters`、`core`),专注于核心 UI 组件库功能。
|
|
235
233
|
|
|
236
|
-
##
|
|
237
|
-
- 所有颜色、背景、边框、图标等均可通过 `styles.theme` 配置覆盖
|
|
238
|
-
- 组件内部不再硬编码颜色,支持 run-time 主题切换
|
|
239
|
-
- 参考 `defaultStyleSet.tsx` 的结构进行扩展
|
|
234
|
+
## 🎯 使用场景
|
|
240
235
|
|
|
241
|
-
|
|
236
|
+
- AI 对话聊天界面
|
|
237
|
+
- 智能客服系统
|
|
238
|
+
- 知识库问答系统
|
|
239
|
+
- 文档对话系统
|
|
240
|
+
- 自定义聊天应用
|
|
242
241
|
|
|
243
|
-
##
|
|
244
|
-
- 所有交互事件(如发送、复制、点赞、文件上传等)均通过 `eventsEmit` 回调分发
|
|
245
|
-
- 业务层已封装常用事件,核心层需自行处理
|
|
242
|
+
## 📝 示例
|
|
246
243
|
|
|
247
|
-
|
|
244
|
+
查看 `src/examples/` 目录获取更多完整示例:
|
|
245
|
+
|
|
246
|
+
- **BaseChat** - 核心组件基础用法
|
|
247
|
+
- **ProChat** - 高级配置完整示例
|
|
248
|
+
|
|
249
|
+
## 🤝 贡献
|
|
250
|
+
|
|
251
|
+
欢迎提交 Issue 和 Pull Request。
|
|
252
|
+
|
|
253
|
+
## 📄 许可证
|
|
254
|
+
|
|
255
|
+
MIT License
|
|
256
|
+
|
|
257
|
+
## 👥 作者
|
|
248
258
|
|
|
249
|
-
|
|
250
|
-
- 支持多文件上传、历史文件、会话文件、上传进度、去重
|
|
251
|
-
- 业务层已自动处理,核心层需自行实现
|
|
259
|
+
- **hanfeng_Zhang**
|
|
252
260
|
|
|
253
261
|
---
|
|
254
262
|
|
|
255
|
-
|
|
263
|
+
⭐ 如果这个项目对你有帮助,请给它一个 Star!
|