@flexem/chat-box 1.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.
Files changed (46) hide show
  1. package/README.md +638 -0
  2. package/miniprogram_dist/TEST_CASES.md +256 -0
  3. package/miniprogram_dist/assets/icons/icon-arrow-down.svg +1 -0
  4. package/miniprogram_dist/assets/icons/icon-arrow-up.svg +1 -0
  5. package/miniprogram_dist/assets/icons/icon-avatar-default.svg +1 -0
  6. package/miniprogram_dist/assets/icons/icon-back.svg +1 -0
  7. package/miniprogram_dist/assets/icons/icon-camera.svg +1 -0
  8. package/miniprogram_dist/assets/icons/icon-close.svg +1 -0
  9. package/miniprogram_dist/assets/icons/icon-copy.svg +1 -0
  10. package/miniprogram_dist/assets/icons/icon-delete.svg +1 -0
  11. package/miniprogram_dist/assets/icons/icon-edit-msg.svg +1 -0
  12. package/miniprogram_dist/assets/icons/icon-edit.svg +1 -0
  13. package/miniprogram_dist/assets/icons/icon-file.svg +1 -0
  14. package/miniprogram_dist/assets/icons/icon-image.svg +1 -0
  15. package/miniprogram_dist/assets/icons/icon-keyboard.svg +1 -0
  16. package/miniprogram_dist/assets/icons/icon-menu.svg +1 -0
  17. package/miniprogram_dist/assets/icons/icon-play-voice.svg +1 -0
  18. package/miniprogram_dist/assets/icons/icon-plus.svg +1 -0
  19. package/miniprogram_dist/assets/icons/icon-regenerate.svg +1 -0
  20. package/miniprogram_dist/assets/icons/icon-thinking.svg +1 -0
  21. package/miniprogram_dist/assets/icons/icon-voice.svg +1 -0
  22. package/miniprogram_dist/components/attachment/index.js +169 -0
  23. package/miniprogram_dist/components/attachment/index.json +4 -0
  24. package/miniprogram_dist/components/attachment/index.wxml +40 -0
  25. package/miniprogram_dist/components/attachment/index.wxss +119 -0
  26. package/miniprogram_dist/components/input-bar/index.js +934 -0
  27. package/miniprogram_dist/components/input-bar/index.json +6 -0
  28. package/miniprogram_dist/components/input-bar/index.wxml +132 -0
  29. package/miniprogram_dist/components/input-bar/index.wxss +324 -0
  30. package/miniprogram_dist/components/message/index.js +988 -0
  31. package/miniprogram_dist/components/message/index.json +4 -0
  32. package/miniprogram_dist/components/message/index.wxml +285 -0
  33. package/miniprogram_dist/components/message/index.wxss +575 -0
  34. package/miniprogram_dist/components/sidebar/index.js +506 -0
  35. package/miniprogram_dist/components/sidebar/index.json +4 -0
  36. package/miniprogram_dist/components/sidebar/index.wxml +137 -0
  37. package/miniprogram_dist/components/sidebar/index.wxss +264 -0
  38. package/miniprogram_dist/index.js +1316 -0
  39. package/miniprogram_dist/index.json +8 -0
  40. package/miniprogram_dist/index.wxml +172 -0
  41. package/miniprogram_dist/index.wxss +291 -0
  42. package/miniprogram_dist/package.json +5 -0
  43. package/miniprogram_dist/utils/api.js +474 -0
  44. package/miniprogram_dist/utils/audio.js +860 -0
  45. package/miniprogram_dist/utils/storage.js +168 -0
  46. package/package.json +27 -0
@@ -0,0 +1,264 @@
1
+ /* 外层包裹器 */
2
+ .sidebar-wrapper {
3
+ position: fixed;
4
+ top: 0;
5
+ left: 0;
6
+ width: 85vw;
7
+ height: 100%;
8
+ z-index: 1;
9
+ pointer-events: none;
10
+ opacity: 0;
11
+ transition: opacity 0.3s ease;
12
+ }
13
+
14
+ .sidebar-wrapper.show {
15
+ pointer-events: auto;
16
+ opacity: 1;
17
+ }
18
+
19
+ /* 侧边栏容器 */
20
+ .sidebar-container {
21
+ width: 100%;
22
+ height: 100%;
23
+ background-color: #fff;
24
+ display: flex;
25
+ flex-direction: column;
26
+ }
27
+
28
+ /* 顶部标题栏(只有关闭按钮) */
29
+ .sidebar-header {
30
+ display: flex;
31
+ align-items: center;
32
+ padding: 0 16rpx;
33
+ padding-top: env(safe-area-inset-top);
34
+ height: 88rpx;
35
+ }
36
+
37
+ .close-btn {
38
+ width: 64rpx;
39
+ height: 64rpx;
40
+ display: flex;
41
+ align-items: center;
42
+ justify-content: center;
43
+ }
44
+
45
+ .close-icon {
46
+ width: 52rpx;
47
+ height: 52rpx;
48
+ }
49
+
50
+ /* 标题行(对话列表 + 编辑按钮) */
51
+ .title-row {
52
+ display: flex;
53
+ align-items: center;
54
+ justify-content: space-between;
55
+ padding: 20rpx 30rpx;
56
+ }
57
+
58
+ .sidebar-title {
59
+ font-size: 40rpx;
60
+ font-weight: bold;
61
+ color: #333;
62
+ }
63
+
64
+ .edit-btn {
65
+ font-size: 28rpx;
66
+ color: #007aff;
67
+ padding: 10rpx 0;
68
+ }
69
+
70
+ /* 新建对话按钮 */
71
+ .new-chat-btn {
72
+ display: flex;
73
+ align-items: center;
74
+ justify-content: center;
75
+ margin: 20rpx 30rpx;
76
+ padding: 24rpx;
77
+ background-color: #007aff;
78
+ border-radius: 12rpx;
79
+ gap: 10rpx;
80
+ }
81
+
82
+ .new-chat-icon {
83
+ font-size: 36rpx;
84
+ color: #fff;
85
+ font-weight: bold;
86
+ }
87
+
88
+ .new-chat-text {
89
+ font-size: 30rpx;
90
+ color: #fff;
91
+ }
92
+
93
+ /* 搜索框 */
94
+ .search-box {
95
+ position: relative;
96
+ margin: 0 30rpx 20rpx;
97
+ }
98
+
99
+ .search-input {
100
+ width: 100%;
101
+ height: 72rpx;
102
+ padding: 0 70rpx 0 30rpx;
103
+ background-color: #f5f5f5;
104
+ border-radius: 36rpx;
105
+ font-size: 28rpx;
106
+ box-sizing: border-box;
107
+ }
108
+
109
+ .search-clear {
110
+ position: absolute;
111
+ right: 20rpx;
112
+ top: 50%;
113
+ transform: translateY(-50%);
114
+ width: 40rpx;
115
+ height: 40rpx;
116
+ display: flex;
117
+ align-items: center;
118
+ justify-content: center;
119
+ background-color: #ccc;
120
+ border-radius: 50%;
121
+ color: #fff;
122
+ font-size: 24rpx;
123
+ }
124
+
125
+ /* 对话列表 */
126
+ .session-list {
127
+ flex: 1;
128
+ overflow-y: auto;
129
+ }
130
+
131
+ .session-group {
132
+ padding: 0 30rpx;
133
+ margin-bottom: 20rpx;
134
+ }
135
+
136
+ .group-title {
137
+ display: block;
138
+ font-size: 24rpx;
139
+ color: #999;
140
+ padding: 20rpx 0 10rpx;
141
+ }
142
+
143
+ /* 对话项 */
144
+ .session-item {
145
+ display: flex;
146
+ align-items: center;
147
+ justify-content: space-between;
148
+ padding: 24rpx 20rpx;
149
+ border-radius: 12rpx;
150
+ margin-bottom: 8rpx;
151
+ transition: background-color 0.2s;
152
+ }
153
+
154
+ .session-item:active {
155
+ background-color: #f0f0f0;
156
+ }
157
+
158
+ .session-item.active {
159
+ background-color: #e6f2ff;
160
+ }
161
+
162
+ .session-content {
163
+ flex: 1;
164
+ overflow: hidden;
165
+ }
166
+
167
+ .session-title {
168
+ display: block;
169
+ font-size: 30rpx;
170
+ color: #333;
171
+ white-space: nowrap;
172
+ overflow: hidden;
173
+ text-overflow: ellipsis;
174
+ }
175
+
176
+ .session-time {
177
+ display: block;
178
+ font-size: 22rpx;
179
+ color: #999;
180
+ margin-top: 6rpx;
181
+ }
182
+
183
+ /* 操作按钮 */
184
+ .session-actions {
185
+ display: flex;
186
+ align-items: center;
187
+ gap: 16rpx;
188
+ margin-left: 20rpx;
189
+ }
190
+
191
+ .action-btn {
192
+ width: 56rpx;
193
+ height: 56rpx;
194
+ display: flex;
195
+ align-items: center;
196
+ justify-content: center;
197
+ border-radius: 8rpx;
198
+ font-size: 28rpx;
199
+ }
200
+
201
+ .rename-btn {
202
+ background-color: transparent;
203
+ }
204
+
205
+ .delete-btn {
206
+ background-color: transparent;
207
+ }
208
+
209
+ .action-icon {
210
+ width: 48rpx;
211
+ height: 48rpx;
212
+ }
213
+
214
+ /* 空状态 */
215
+ .empty-state {
216
+ display: flex;
217
+ align-items: center;
218
+ justify-content: center;
219
+ padding: 100rpx 0;
220
+ }
221
+
222
+ .empty-text {
223
+ font-size: 28rpx;
224
+ color: #999;
225
+ }
226
+
227
+ /* 加载更多 */
228
+ .load-more {
229
+ display: flex;
230
+ align-items: center;
231
+ justify-content: center;
232
+ padding: 30rpx;
233
+ }
234
+
235
+ .load-more text {
236
+ font-size: 26rpx;
237
+ color: #999;
238
+ }
239
+
240
+ /* 底部用户信息 */
241
+ .sidebar-footer {
242
+ padding: 30rpx;
243
+ padding-bottom: calc(30rpx + env(safe-area-inset-bottom));
244
+ border-top: 1rpx solid #eee;
245
+ background-color: #fff;
246
+ }
247
+
248
+ .user-info {
249
+ display: flex;
250
+ align-items: center;
251
+ gap: 16rpx;
252
+ }
253
+
254
+ .user-avatar {
255
+ width: 64rpx;
256
+ height: 64rpx;
257
+ border-radius: 50%;
258
+ }
259
+
260
+ .username {
261
+ font-size: 28rpx;
262
+ color: #333;
263
+ font-weight: bold;
264
+ }