@robot-admin/naive-ui-components 0.16.0 → 0.17.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 (225) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +12 -9
  3. package/README_EN.md +12 -9
  4. package/dist/C_ActionBar.css +56 -48
  5. package/dist/C_ActionBar2.cjs +1 -1
  6. package/dist/C_ActionBar2.js +1 -1
  7. package/dist/C_AntV2.cjs +1 -1
  8. package/dist/C_AntV2.js +3 -3
  9. package/dist/C_Barcode.css +6 -6
  10. package/dist/C_Barcode2.cjs +1 -1
  11. package/dist/C_Barcode2.js +1 -1
  12. package/dist/C_Chat.css +269 -185
  13. package/dist/C_Chat2.cjs +1 -1
  14. package/dist/C_Chat2.js +1 -1
  15. package/dist/C_Code.css +26 -26
  16. package/dist/C_Code2.cjs +1 -1
  17. package/dist/C_Code2.js +1 -1
  18. package/dist/C_Draggable2.cjs +1 -1
  19. package/dist/C_Draggable2.js +1 -1
  20. package/dist/C_FilePreview.css +96 -57
  21. package/dist/C_FilePreview2.cjs +1 -1
  22. package/dist/C_FilePreview2.js +1 -1
  23. package/dist/C_Form.base.css +295 -277
  24. package/dist/C_Form.css +295 -277
  25. package/dist/C_Form.d.cts +2 -1
  26. package/dist/C_Form.d.ts +2 -1
  27. package/dist/C_FormModal.css +10 -10
  28. package/dist/C_FormModal2.cjs +1 -1
  29. package/dist/C_FormModal2.js +1 -1
  30. package/dist/C_FormSearch.css +67 -68
  31. package/dist/C_FormSearch.d.cts +2 -1
  32. package/dist/C_FormSearch.d.ts +2 -1
  33. package/dist/C_FormSearch2.cjs +1 -1
  34. package/dist/C_FormSearch2.js +1 -1
  35. package/dist/C_FullCalendar2.cjs +1 -1
  36. package/dist/C_FullCalendar2.js +1 -1
  37. package/dist/C_GlobalSearch.css +140 -118
  38. package/dist/C_GlobalSearch2.cjs +1 -1
  39. package/dist/C_GlobalSearch2.js +1 -1
  40. package/dist/C_ImageCropper.css +12 -10
  41. package/dist/C_ImageCropper2.cjs +1 -1
  42. package/dist/C_ImageCropper2.js +1 -1
  43. package/dist/C_Login.css +79 -79
  44. package/dist/C_Login2.cjs +1 -1
  45. package/dist/C_Login2.js +1 -1
  46. package/dist/C_Map.css +10 -10
  47. package/dist/C_Map2.cjs +1 -1
  48. package/dist/C_Map2.js +1 -1
  49. package/dist/C_OrgChart.css +28 -4
  50. package/dist/C_OrgChart2.cjs +1 -1
  51. package/dist/C_OrgChart2.js +1 -1
  52. package/dist/C_QRCode2.cjs +1 -1
  53. package/dist/C_QRCode2.js +1 -1
  54. package/dist/C_Signature.css +15 -15
  55. package/dist/C_Signature2.cjs +1 -1
  56. package/dist/C_Signature2.js +1 -1
  57. package/dist/C_SplitPane.cjs +1 -1
  58. package/dist/C_SplitPane.css +251 -109
  59. package/dist/C_SplitPane.js +1 -1
  60. package/dist/C_SplitPane2.cjs +1 -1
  61. package/dist/C_SplitPane2.js +1 -1
  62. package/dist/C_Table.base.css +491 -563
  63. package/dist/C_Table.cjs +1 -1
  64. package/dist/C_Table.css +491 -563
  65. package/dist/C_Table.d.cts +3 -2
  66. package/dist/C_Table.d.ts +4 -2
  67. package/dist/C_Table.js +1 -1
  68. package/dist/C_TagsView2.cjs +1 -1
  69. package/dist/C_TagsView2.js +1 -1
  70. package/dist/C_Transfer.css +93 -84
  71. package/dist/C_Transfer2.cjs +1 -1
  72. package/dist/C_Transfer2.js +1 -1
  73. package/dist/C_Tree.css +72 -125
  74. package/dist/C_Tree.d.cts +3 -2
  75. package/dist/C_Tree.d.ts +15 -2
  76. package/dist/C_Tree2.cjs +1 -1
  77. package/dist/C_Tree2.js +1 -1
  78. package/dist/C_Upload.css +5 -5
  79. package/dist/C_Upload2.cjs +1 -1
  80. package/dist/C_Upload2.js +1 -1
  81. package/dist/C_VideoPlayer2.cjs +4 -3
  82. package/dist/C_VideoPlayer2.js +4 -3
  83. package/dist/C_VtableGantt.css +29 -28
  84. package/dist/C_VtableGantt2.cjs +1 -1
  85. package/dist/C_VtableGantt2.js +1 -1
  86. package/dist/C_WaterFall.css +29 -29
  87. package/dist/C_WaterFall2.cjs +1 -1
  88. package/dist/C_WaterFall2.js +1 -1
  89. package/dist/C_WorkFlow2.cjs +1 -1
  90. package/dist/C_WorkFlow2.js +1 -1
  91. package/dist/Card.cjs +1 -1
  92. package/dist/Card.js +1 -1
  93. package/dist/Custom.cjs +1 -1
  94. package/dist/Custom.js +1 -1
  95. package/dist/Dynamic.cjs +1 -1
  96. package/dist/Dynamic.js +1 -1
  97. package/dist/Steps.cjs +1 -1
  98. package/dist/Steps.js +1 -1
  99. package/dist/Tabs.cjs +1 -1
  100. package/dist/Tabs.js +1 -1
  101. package/dist/constants.d.cts +2 -2
  102. package/dist/constants.d.ts +2 -2
  103. package/dist/constants2.d.cts +2 -2
  104. package/dist/constants2.d.ts +2 -2
  105. package/dist/constants3.d.cts +2 -2
  106. package/dist/constants3.d.ts +2 -2
  107. package/dist/constants4.d.cts +4 -4
  108. package/dist/constants4.d.ts +4 -4
  109. package/dist/constants5.d.cts +3 -7
  110. package/dist/constants5.d.ts +3 -7
  111. package/dist/data.d.cts +10 -10
  112. package/dist/data.d.ts +10 -10
  113. package/dist/density.cjs +1 -0
  114. package/dist/density.d.cts +15 -0
  115. package/dist/density.d.ts +15 -0
  116. package/dist/density.js +1 -0
  117. package/dist/helpers.cjs +1 -1
  118. package/dist/helpers.js +1 -1
  119. package/dist/index.cjs +1 -1
  120. package/dist/index.d.cts +3 -3
  121. package/dist/index.d.ts +5 -3
  122. package/dist/index.js +1 -1
  123. package/dist/index.vue.d.cts +5 -5
  124. package/dist/index.vue.d.ts +5 -5
  125. package/dist/index10.vue.d.cts +5 -5
  126. package/dist/index10.vue.d.ts +3 -3
  127. package/dist/index11.vue.d.cts +3 -3
  128. package/dist/index11.vue.d.ts +5 -5
  129. package/dist/index12.vue.d.cts +5 -5
  130. package/dist/index13.vue.d.ts +5 -5
  131. package/dist/index14.vue.d.cts +5 -5
  132. package/dist/index14.vue.d.ts +9 -9
  133. package/dist/index15.vue.d.cts +9 -9
  134. package/dist/index15.vue.d.ts +3 -3
  135. package/dist/index16.vue.d.cts +3 -3
  136. package/dist/index17.vue.d.ts +1 -1
  137. package/dist/index18.vue.d.cts +1 -1
  138. package/dist/index18.vue.d.ts +7 -7
  139. package/dist/index19.vue.d.cts +7 -7
  140. package/dist/index19.vue.d.ts +5 -5
  141. package/dist/index2.vue.d.cts +2 -2
  142. package/dist/index2.vue.d.ts +2 -2
  143. package/dist/index20.vue.d.cts +6 -2
  144. package/dist/index20.vue.d.ts +6 -2
  145. package/dist/index21.vue.d.cts +2 -2
  146. package/dist/index21.vue.d.ts +2 -2
  147. package/dist/index22.vue.d.cts +2 -2
  148. package/dist/index22.vue.d.ts +2 -2
  149. package/dist/index23.vue.d.cts +2 -2
  150. package/dist/index23.vue.d.ts +2 -2
  151. package/dist/index25.vue.d.cts +5 -5
  152. package/dist/index25.vue.d.ts +5 -5
  153. package/dist/index27.vue.d.cts +2 -2
  154. package/dist/index27.vue.d.ts +2 -2
  155. package/dist/index28.vue.d.cts +7 -3
  156. package/dist/index28.vue.d.ts +7 -3
  157. package/dist/index3.vue.d.cts +3 -3
  158. package/dist/index3.vue.d.ts +3 -3
  159. package/dist/index4.vue.d.cts +5 -5
  160. package/dist/index5.vue.d.ts +2 -2
  161. package/dist/index6.vue.d.cts +2 -2
  162. package/dist/index6.vue.d.ts +7 -4
  163. package/dist/index7.vue.d.cts +7 -4
  164. package/dist/index7.vue.d.ts +2 -2
  165. package/dist/index8.vue.d.cts +2 -2
  166. package/dist/index8.vue.d.ts +4 -6
  167. package/dist/index9.vue.d.cts +4 -6
  168. package/dist/index9.vue.d.ts +5 -5
  169. package/dist/mapUtils.d.cts +4 -4
  170. package/dist/mapUtils.d.ts +4 -4
  171. package/dist/presets.d.cts +4 -1
  172. package/dist/presets.d.ts +4 -1
  173. package/dist/style.css +1763 -1566
  174. package/dist/useCalendarEvents.d.cts +10 -9
  175. package/dist/useCalendarEvents.d.ts +10 -9
  176. package/dist/useCollapsePanel.d.cts +3 -3
  177. package/dist/useCollapsePanel.d.ts +3 -3
  178. package/dist/useCropperCore.d.cts +9 -9
  179. package/dist/useCropperCore.d.ts +9 -9
  180. package/dist/useDraggableLayout.d.cts +15 -13
  181. package/dist/useDraggableLayout.d.ts +15 -13
  182. package/dist/useDynamicFormState.d.cts +5 -2
  183. package/dist/useDynamicFormState.d.ts +5 -2
  184. package/dist/useEdgeInteraction.d.cts +3 -3
  185. package/dist/useEdgeInteraction.d.ts +3 -3
  186. package/dist/useFullscreen.d.cts +4 -0
  187. package/dist/useFullscreen.d.ts +4 -0
  188. package/dist/useGlobalSearch.d.cts +9 -4
  189. package/dist/useGlobalSearch.d.ts +9 -4
  190. package/dist/useInfiniteScroll.d.cts +4 -1
  191. package/dist/useInfiniteScroll.d.ts +4 -1
  192. package/dist/useQRCode.d.cts +3 -3
  193. package/dist/useQRCode.d.ts +3 -3
  194. package/dist/useSearchState.d.cts +8 -6
  195. package/dist/useSearchState.d.ts +8 -6
  196. package/dist/useSignatureHistory.d.cts +7 -7
  197. package/dist/useSignatureHistory.d.ts +7 -7
  198. package/dist/useSplitResize.d.cts +50 -61
  199. package/dist/useSplitResize.d.ts +50 -61
  200. package/dist/useTableQuery.cjs +3 -3
  201. package/dist/useTableQuery.d.cts +237 -13
  202. package/dist/useTableQuery.d.ts +237 -13
  203. package/dist/useTableQuery.js +3 -3
  204. package/dist/useTimeSelection.d.cts +2 -2
  205. package/dist/useTimeSelection.d.ts +2 -2
  206. package/dist/useWorkflowValidation.d.cts +3 -3
  207. package/dist/useWorkflowValidation.d.ts +3 -3
  208. package/dist/verification.d.cts +5 -5
  209. package/dist/verification.d.ts +5 -5
  210. package/docs/component-review-20261019.md +55 -0
  211. package/docs/guides/form-density.en.md +42 -0
  212. package/docs/guides/form-density.md +59 -0
  213. package/docs/guides/runtime-performance.md +38 -0
  214. package/docs/guides/split-pane.en.md +103 -0
  215. package/docs/guides/split-pane.md +126 -0
  216. package/docs/guides/table-density.md +87 -0
  217. package/docs/guides/transfer.md +11 -0
  218. package/docs/guides/tree.md +157 -0
  219. package/docs/guides/usage.en.md +2 -0
  220. package/docs/guides/usage.md +2 -0
  221. package/docs/runtime-review-20261019.md +41 -0
  222. package/docs/wl-ui-produce-coverage.md +62 -0
  223. package/package.json +4 -2
  224. package/dist/useTreeOperations.d.cts +0 -185
  225. package/dist/useTreeOperations.d.ts +0 -185
package/dist/C_Chat.css CHANGED
@@ -65,80 +65,26 @@
65
65
  .transform[data-v-075758a0]{transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}
66
66
  .px[data-v-075758a0]{padding-left:1rem;padding-right:1rem;}
67
67
 
68
- /* ─── CSS 变量(基于项目主题变量,自动适配明暗) ───────────────────────── */
69
- .c-chat[data-v-281bb0dd] {
70
- --chat-bg: var(--c-bg-card, var(--card-color, #fff));
71
- --chat-sidebar-bg: var(--c-bg-body, var(--body-color, #f8fafc));
72
- --chat-sidebar-width: 280px;
73
- --chat-header-bg: var(--c-bg-card, var(--card-color, #fff));
74
- --chat-header-height: 56px;
75
- --chat-input-bg: var(--c-bg-body, var(--body-color, #f8fafc));
76
- --chat-input-height: 56px;
77
- --chat-bubble-self: var(--c-primary, var(--primary-color, #2080f0));
78
- --chat-bubble-other: color-mix(in srgb, var(--c-text-1, #262626) 5%, var(--c-bg-card, #fff));
79
- --chat-bubble-system: transparent;
80
- --chat-text-primary: var(--c-text-1, var(--text-color-1, #262626));
81
- --chat-text-secondary: var(--c-text-3, var(--text-color-3, #a3a3a3));
82
- --chat-text-self: #fff;
83
- --chat-border: var(--c-border, var(--border-color, #e5e7eb));
84
- --chat-online-color: #22c55e;
85
- --chat-unread-bg: #ef4444;
86
- --chat-unread-color: #fff;
87
- --chat-failed-color: #ef4444;
88
- --chat-shadow: rgba(0, 0, 0, 0.06);
89
- --chat-shadow-light: rgba(0, 0, 0, 0.03);
90
- --chat-radius: 12px;
91
- --chat-avatar-size: 36px;
92
- --chat-scrollbar-thumb: var(--c-border, var(--border-color, #e5e7eb));
93
- display: flex;
94
- width: 100%;
95
- height: 100%;
96
- min-height: 0;
97
- border-radius: var(--chat-radius);
98
- overflow: hidden;
99
- background: var(--chat-bg);
100
- color: var(--chat-text-primary);
101
- font-size: 14px;
102
- border: 1px solid var(--chat-border);
103
- box-shadow: 0 2px 12px var(--chat-shadow);
104
- }
105
-
106
- /* ─── 联系人侧栏 ──────────────────────────────────────── */
107
- .c-chat__sidebar[data-v-281bb0dd] {
108
- display: flex;
109
- flex-direction: column;
110
- width: var(--chat-sidebar-width);
111
- min-width: var(--chat-sidebar-width);
112
- background: var(--chat-sidebar-bg);
113
- border-right: 1px solid var(--chat-border);
114
- box-shadow: 2px 0 8px var(--chat-shadow-light);
68
+ .c-chat__avatar[data-v-de62a9e6] {
69
+ width: var(--chat-avatar-size);
70
+ height: var(--chat-avatar-size);
71
+ border-radius: 50%;
72
+ object-fit: cover;
73
+ background: color-mix(in srgb, var(--c-border, var(--border-color, #e5e7eb)) 50%, transparent);
115
74
  }
116
- .c-chat__sidebar-header[data-v-281bb0dd] {
75
+ .c-chat__avatar-fallback[data-v-de62a9e6] {
76
+ width: var(--chat-avatar-size);
77
+ height: var(--chat-avatar-size);
78
+ border-radius: 50%;
79
+ background: color-mix(in srgb, var(--c-primary, var(--primary-color, #2080f0)) 25%, transparent);
117
80
  display: flex;
118
81
  align-items: center;
119
- gap: 8px;
120
- height: var(--chat-header-height);
121
- padding: 0 16px;
122
- border-bottom: 1px solid var(--chat-border);
82
+ justify-content: center;
83
+ font-size: 14px;
123
84
  font-weight: 600;
124
- font-size: 15px;
125
- }
126
- .c-chat__search[data-v-281bb0dd] {
127
- padding: 8px 12px;
128
- }
129
- .c-chat__contact-list[data-v-281bb0dd] {
130
- flex: 1;
131
- overflow-y: auto;
132
- overscroll-behavior: contain;
133
- }
134
- .c-chat__contact-list[data-v-281bb0dd]::-webkit-scrollbar {
135
- width: 4px;
136
- }
137
- .c-chat__contact-list[data-v-281bb0dd]::-webkit-scrollbar-thumb {
138
- background: var(--chat-scrollbar-thumb);
139
- border-radius: 2px;
85
+ color: var(--c-text-1, var(--text-color-1, #262626));
140
86
  }
141
- .c-chat__contact[data-v-281bb0dd] {
87
+ .c-chat__contact[data-v-de62a9e6] {
142
88
  display: flex;
143
89
  align-items: center;
144
90
  gap: 10px;
@@ -146,36 +92,17 @@
146
92
  cursor: pointer;
147
93
  transition: background 0.15s;
148
94
  }
149
- .c-chat__contact[data-v-281bb0dd]:hover {
95
+ .c-chat__contact[data-v-de62a9e6]:hover {
150
96
  background: color-mix(in srgb, var(--c-primary, var(--primary-color, #2080f0)) 6%, transparent);
151
97
  }
152
- .c-chat__contact.is-active[data-v-281bb0dd] {
98
+ .c-chat__contact.is-active[data-v-de62a9e6] {
153
99
  background: color-mix(in srgb, var(--c-primary, var(--primary-color, #2080f0)) 12%, transparent);
154
100
  }
155
- .c-chat__contact-avatar[data-v-281bb0dd] {
101
+ .c-chat__contact-avatar[data-v-de62a9e6] {
156
102
  position: relative;
157
103
  flex-shrink: 0;
158
104
  }
159
- .c-chat__avatar[data-v-281bb0dd] {
160
- width: var(--chat-avatar-size);
161
- height: var(--chat-avatar-size);
162
- border-radius: 50%;
163
- object-fit: cover;
164
- background: color-mix(in srgb, var(--c-border, var(--border-color, #e5e7eb)) 50%, transparent);
165
- }
166
- .c-chat__avatar-fallback[data-v-281bb0dd] {
167
- width: var(--chat-avatar-size);
168
- height: var(--chat-avatar-size);
169
- border-radius: 50%;
170
- background: color-mix(in srgb, var(--c-primary, var(--primary-color, #2080f0)) 25%, transparent);
171
- display: flex;
172
- align-items: center;
173
- justify-content: center;
174
- font-size: 14px;
175
- font-weight: 600;
176
- color: var(--c-text-1, var(--text-color-1, #262626));
177
- }
178
- .c-chat__online-dot[data-v-281bb0dd] {
105
+ .c-chat__online-dot[data-v-de62a9e6] {
179
106
  position: absolute;
180
107
  bottom: 0;
181
108
  right: 0;
@@ -185,24 +112,24 @@
185
112
  background: var(--chat-online-color);
186
113
  border: 2px solid var(--chat-sidebar-bg);
187
114
  }
188
- .c-chat__contact-info[data-v-281bb0dd] {
115
+ .c-chat__contact-info[data-v-de62a9e6] {
189
116
  flex: 1;
190
117
  min-width: 0;
191
118
  }
192
- .c-chat__contact-name[data-v-281bb0dd] {
119
+ .c-chat__contact-name[data-v-de62a9e6] {
193
120
  display: flex;
194
121
  align-items: center;
195
122
  justify-content: space-between;
196
123
  font-size: 13px;
197
124
  font-weight: 500;
198
125
  }
199
- .c-chat__contact-time[data-v-281bb0dd] {
126
+ .c-chat__contact-time[data-v-de62a9e6] {
200
127
  font-size: 11px;
201
128
  color: var(--chat-text-secondary);
202
129
  margin-left: 8px;
203
130
  flex-shrink: 0;
204
131
  }
205
- .c-chat__contact-last[data-v-281bb0dd] {
132
+ .c-chat__contact-last[data-v-de62a9e6] {
206
133
  font-size: 12px;
207
134
  color: var(--chat-text-secondary);
208
135
  white-space: nowrap;
@@ -210,7 +137,7 @@
210
137
  text-overflow: ellipsis;
211
138
  margin-top: 2px;
212
139
  }
213
- .c-chat__unread[data-v-281bb0dd] {
140
+ .c-chat__unread[data-v-de62a9e6] {
214
141
  min-width: 18px;
215
142
  height: 18px;
216
143
  padding: 0 5px;
@@ -224,118 +151,109 @@
224
151
  justify-content: center;
225
152
  flex-shrink: 0;
226
153
  }
227
-
228
- /* ─── 主聊天区域 ──────────────────────────────────────── */
229
- .c-chat__main[data-v-281bb0dd] {
230
- flex: 1;
231
- display: flex;
232
- flex-direction: column;
233
- min-width: 0;
234
- }
235
- .c-chat__header[data-v-281bb0dd] {
236
- display: flex;
237
- align-items: center;
238
- gap: 10px;
239
- height: var(--chat-header-height);
240
- padding: 0 20px;
241
- background: var(--chat-header-bg);
242
- border-bottom: 1px solid var(--chat-border);
243
- box-shadow: 0 1px 4px var(--chat-shadow-light);
244
- font-weight: 600;
245
- font-size: 15px;
246
- }
247
- .c-chat__header-status[data-v-281bb0dd] {
248
- font-size: 12px;
249
- font-weight: 400;
250
- color: var(--chat-text-secondary);
154
+ .c-chat__contact[data-v-de62a9e6] {
155
+ width: 100%;
156
+ border: 0;
157
+ background: transparent;
158
+ text-align: left;
159
+ color: inherit;
160
+ font: inherit;
251
161
  }
252
-
253
- /* ─── 消息区域 ────────────────────────────────────────── */
254
- .c-chat__messages[data-v-281bb0dd] {
255
- flex: 1;
256
- overflow-y: auto;
257
- overscroll-behavior: contain;
258
- padding: 16px 20px;
259
- display: flex;
260
- flex-direction: column;
261
- gap: 12px;
262
- background: color-mix(in srgb, var(--c-bg-body, var(--body-color, #f8fafc)) 50%, var(--c-bg-card, var(--card-color, #fff)));
162
+ @media (max-width: 640px) {
163
+ .c-chat__contact-info[data-v-de62a9e6],
164
+ .c-chat__unread[data-v-de62a9e6] {
165
+ display: none;
263
166
  }
264
- .c-chat__messages[data-v-281bb0dd]::-webkit-scrollbar {
265
- width: 4px;
167
+ .c-chat__contact[data-v-de62a9e6] {
168
+ justify-content: center;
169
+ padding: 10px 8px;
266
170
  }
267
- .c-chat__messages[data-v-281bb0dd]::-webkit-scrollbar-thumb {
268
- background: var(--chat-scrollbar-thumb);
269
- border-radius: 2px;
270
171
  }
271
- .c-chat__load-more[data-v-281bb0dd] {
272
- text-align: center;
273
- padding: 8px;
172
+
173
+ /* layer: default */
174
+ .absolute[data-v-de62a9e6]{position:absolute;}
175
+ .relative[data-v-de62a9e6]{position:relative;}
176
+ .hidden[data-v-de62a9e6]{display:none;}
177
+ .flex[data-v-de62a9e6]{display:flex;}
178
+ .flex-shrink[data-v-de62a9e6]{flex-shrink:1;}
179
+ .border[data-v-de62a9e6]{border-width:1px;}
180
+ .transition[data-v-de62a9e6]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
181
+
182
+ .c-chat__avatar[data-v-f86c73f0] {
183
+ width: var(--chat-avatar-size);
184
+ height: var(--chat-avatar-size);
185
+ border-radius: 50%;
186
+ object-fit: cover;
187
+ background: color-mix(in srgb, var(--c-border, var(--border-color, #e5e7eb)) 50%, transparent);
274
188
  }
275
- .c-chat__empty[data-v-281bb0dd] {
276
- flex: 1;
189
+ .c-chat__avatar-fallback[data-v-f86c73f0] {
190
+ width: var(--chat-avatar-size);
191
+ height: var(--chat-avatar-size);
192
+ border-radius: 50%;
193
+ background: color-mix(in srgb, var(--c-primary, var(--primary-color, #2080f0)) 25%, transparent);
277
194
  display: flex;
278
195
  align-items: center;
279
196
  justify-content: center;
280
- color: var(--chat-text-secondary);
281
- font-size: 13px;
197
+ font-size: 14px;
198
+ font-weight: 600;
199
+ color: var(--c-text-1, var(--text-color-1, #262626));
282
200
  }
283
201
 
284
202
  /* ─── 消息气泡 ────────────────────────────────────────── */
285
- .c-chat__msg[data-v-281bb0dd] {
203
+ .c-chat__msg[data-v-f86c73f0] {
286
204
  display: flex;
287
205
  gap: 8px;
288
206
  max-width: 75%;
289
207
  }
290
- .c-chat__msg.is-self[data-v-281bb0dd] {
208
+ .c-chat__msg.is-self[data-v-f86c73f0] {
291
209
  margin-left: auto;
292
210
  flex-direction: row-reverse;
293
211
  }
294
- .c-chat__msg.is-system[data-v-281bb0dd] {
212
+ .c-chat__msg.is-system[data-v-f86c73f0] {
295
213
  max-width: 100%;
296
214
  justify-content: center;
297
215
  align-self: center;
298
216
  }
299
- .c-chat__msg-avatar[data-v-281bb0dd] {
217
+ .c-chat__msg-avatar[data-v-f86c73f0] {
300
218
  flex-shrink: 0;
301
219
  margin-top: 2px;
302
220
  }
303
- .c-chat__msg-body[data-v-281bb0dd] {
221
+ .c-chat__msg-body[data-v-f86c73f0] {
304
222
  display: flex;
305
223
  flex-direction: column;
306
224
  }
307
- .c-chat__msg-username[data-v-281bb0dd] {
225
+ .c-chat__msg-username[data-v-f86c73f0] {
308
226
  font-size: 12px;
309
227
  color: var(--chat-text-secondary);
310
228
  margin-bottom: 2px;
311
229
  }
312
- .is-self .c-chat__msg-username[data-v-281bb0dd] {
230
+ .is-self .c-chat__msg-username[data-v-f86c73f0] {
313
231
  text-align: right;
314
232
  }
315
- .c-chat__bubble[data-v-281bb0dd] {
233
+ .c-chat__bubble[data-v-f86c73f0] {
316
234
  padding: 10px 14px;
317
235
  border-radius: 16px;
318
236
  line-height: 1.5;
319
237
  word-break: break-word;
320
238
  white-space: pre-wrap;
321
239
  }
322
- .is-other .c-chat__bubble[data-v-281bb0dd] {
240
+ .is-other .c-chat__bubble[data-v-f86c73f0] {
323
241
  background: var(--chat-bubble-other);
324
242
  border: 1px solid var(--chat-border);
325
243
  border-top-left-radius: 4px;
326
244
  }
327
- .is-self .c-chat__bubble[data-v-281bb0dd] {
245
+ .is-self .c-chat__bubble[data-v-f86c73f0] {
328
246
  background: var(--chat-bubble-self);
329
247
  color: var(--chat-text-self);
330
248
  border-top-right-radius: 4px;
331
249
  }
332
- .is-system .c-chat__bubble[data-v-281bb0dd] {
250
+ .is-system .c-chat__bubble[data-v-f86c73f0] {
333
251
  background: var(--chat-bubble-system);
334
252
  color: var(--chat-text-secondary);
335
253
  font-size: 12px;
336
254
  padding: 4px 12px;
337
255
  }
338
- .c-chat__msg-image-button[data-v-281bb0dd] {
256
+ .c-chat__msg-image-button[data-v-f86c73f0] {
339
257
  display: inline-flex;
340
258
  align-self: flex-start;
341
259
  padding: 0;
@@ -343,20 +261,20 @@
343
261
  background: none;
344
262
  cursor: pointer;
345
263
  }
346
- .c-chat__msg-image[data-v-281bb0dd] {
264
+ .c-chat__msg-image[data-v-f86c73f0] {
347
265
  max-width: 240px;
348
266
  max-height: 180px;
349
267
  border-radius: 12px;
350
268
  cursor: pointer;
351
269
  object-fit: cover;
352
270
  }
353
- .is-self .c-chat__msg-image[data-v-281bb0dd] {
271
+ .is-self .c-chat__msg-image[data-v-f86c73f0] {
354
272
  border-top-right-radius: 4px;
355
273
  }
356
- .is-other .c-chat__msg-image[data-v-281bb0dd] {
274
+ .is-other .c-chat__msg-image[data-v-f86c73f0] {
357
275
  border-top-left-radius: 4px;
358
276
  }
359
- .c-chat__msg-file[data-v-281bb0dd] {
277
+ .c-chat__msg-file[data-v-f86c73f0] {
360
278
  display: flex;
361
279
  align-items: center;
362
280
  gap: 8px;
@@ -367,70 +285,223 @@
367
285
  text-align: left;
368
286
  border: 0;
369
287
  }
370
- .is-other .c-chat__msg-file[data-v-281bb0dd] {
288
+ .is-other .c-chat__msg-file[data-v-f86c73f0] {
371
289
  background: var(--chat-bubble-other);
372
290
  border: 1px solid var(--chat-border);
373
291
  border-top-left-radius: 4px;
374
292
  }
375
- .is-self .c-chat__msg-file[data-v-281bb0dd] {
293
+ .is-self .c-chat__msg-file[data-v-f86c73f0] {
376
294
  background: var(--chat-bubble-self);
377
295
  color: var(--chat-text-self);
378
296
  border-top-right-radius: 4px;
379
297
  }
380
- .c-chat__file-info[data-v-281bb0dd] {
298
+ .c-chat__file-info[data-v-f86c73f0] {
381
299
  display: flex;
382
300
  flex-direction: column;
383
301
  min-width: 0;
384
302
  }
385
- .c-chat__file-name[data-v-281bb0dd] {
303
+ .c-chat__file-name[data-v-f86c73f0] {
386
304
  font-size: 13px;
387
305
  font-weight: 500;
388
306
  white-space: nowrap;
389
307
  overflow: hidden;
390
308
  text-overflow: ellipsis;
391
309
  }
392
- .c-chat__file-size[data-v-281bb0dd] {
310
+ .c-chat__file-size[data-v-f86c73f0] {
393
311
  font-size: 11px;
394
312
  opacity: 0.6;
395
313
  }
396
- .c-chat__msg-time[data-v-281bb0dd] {
314
+ .c-chat__msg-time[data-v-f86c73f0] {
397
315
  font-size: 11px;
398
316
  color: var(--chat-text-secondary);
399
317
  margin-top: 4px;
400
318
  }
401
- .is-self .c-chat__msg-time[data-v-281bb0dd] {
319
+ .is-self .c-chat__msg-time[data-v-f86c73f0] {
402
320
  text-align: right;
403
321
  }
404
- .c-chat__msg-status[data-v-281bb0dd] {
322
+ .c-chat__msg-status[data-v-f86c73f0] {
405
323
  font-size: 11px;
406
324
  margin-top: 2px;
407
325
  text-align: right;
408
326
  }
409
- .c-chat__msg-status[data-v-281bb0dd]:is(button) {
327
+ .c-chat__msg-status[data-v-f86c73f0]:is(button) {
410
328
  align-self: flex-end;
411
329
  padding: 0;
412
330
  border: 0;
413
331
  background: none;
414
332
  font-family: inherit;
415
333
  }
416
- .c-chat__msg-status.is-sending[data-v-281bb0dd] {
334
+ .c-chat__msg-status.is-sending[data-v-f86c73f0] {
417
335
  color: var(--chat-text-secondary);
418
336
  }
419
- .c-chat__msg-status.is-failed[data-v-281bb0dd] {
337
+ .c-chat__msg-status.is-failed[data-v-f86c73f0] {
420
338
  color: var(--chat-failed-color);
421
339
  cursor: pointer;
422
340
  }
423
341
 
424
342
  /* ─── 时间分割线 ──────────────────────────────────────── */
425
- .c-chat__time-divider[data-v-281bb0dd] {
343
+ .c-chat__time-divider[data-v-f86c73f0] {
426
344
  text-align: center;
427
345
  font-size: 11px;
428
346
  color: var(--chat-text-secondary);
429
347
  padding: 4px 0;
430
348
  }
349
+ .c-chat__message-row[data-v-f86c73f0] {
350
+ flex-shrink: 0;
351
+ padding-bottom: 12px;
352
+ }
353
+ .c-chat__time-divider[data-v-f86c73f0] {
354
+ margin-bottom: 12px;
355
+ }
356
+ .c-chat__msg-body[data-v-f86c73f0] {
357
+ min-width: 0;
358
+ }
359
+ .c-chat__msg-image[data-v-f86c73f0] {
360
+ max-width: min(240px, 100%);
361
+ }
362
+
363
+ /* layer: default */
364
+ .hidden[data-v-f86c73f0]{display:none;}
365
+ .flex[data-v-f86c73f0]{display:flex;}
366
+ .inline-flex[data-v-f86c73f0]{display:inline-flex;}
367
+ .flex-shrink[data-v-f86c73f0]{flex-shrink:1;}
368
+ .border[data-v-f86c73f0]{border-width:1px;}
369
+
370
+ /* ─── CSS 变量(基于项目主题变量,自动适配明暗) ───────────────────────── */
371
+ .c-chat[data-v-4e22902a] {
372
+ --chat-bg: var(--c-bg-card, var(--card-color, #fff));
373
+ --chat-sidebar-bg: var(--c-bg-body, var(--body-color, #f8fafc));
374
+ --chat-sidebar-width: 280px;
375
+ --chat-header-bg: var(--c-bg-card, var(--card-color, #fff));
376
+ --chat-header-height: 56px;
377
+ --chat-input-bg: var(--c-bg-body, var(--body-color, #f8fafc));
378
+ --chat-input-height: 56px;
379
+ --chat-bubble-self: var(--c-primary, var(--primary-color, #2080f0));
380
+ --chat-bubble-other: color-mix(
381
+ in srgb,
382
+ var(--c-text-1, #262626) 5%,
383
+ var(--c-bg-card, #fff)
384
+ );
385
+ --chat-bubble-system: transparent;
386
+ --chat-text-primary: var(--c-text-1, var(--text-color-1, #262626));
387
+ --chat-text-secondary: var(--c-text-3, var(--text-color-3, #a3a3a3));
388
+ --chat-text-self: #fff;
389
+ --chat-border: var(--c-border, var(--border-color, #e5e7eb));
390
+ --chat-online-color: #22c55e;
391
+ --chat-unread-bg: #ef4444;
392
+ --chat-unread-color: #fff;
393
+ --chat-failed-color: #ef4444;
394
+ --chat-shadow: rgba(0, 0, 0, 0.06);
395
+ --chat-shadow-light: rgba(0, 0, 0, 0.03);
396
+ --chat-radius: 12px;
397
+ --chat-avatar-size: 36px;
398
+ --chat-scrollbar-thumb: var(--c-border, var(--border-color, #e5e7eb));
399
+ display: flex;
400
+ width: 100%;
401
+ height: 100%;
402
+ min-height: 0;
403
+ border-radius: var(--chat-radius);
404
+ overflow: hidden;
405
+ background: var(--chat-bg);
406
+ color: var(--chat-text-primary);
407
+ font-size: 14px;
408
+ border: 1px solid var(--chat-border);
409
+ box-shadow: 0 2px 12px var(--chat-shadow);
410
+ }
411
+
412
+ /* ─── 联系人侧栏 ──────────────────────────────────────── */
413
+ .c-chat__sidebar[data-v-4e22902a] {
414
+ display: flex;
415
+ flex-direction: column;
416
+ width: var(--chat-sidebar-width);
417
+ min-width: var(--chat-sidebar-width);
418
+ background: var(--chat-sidebar-bg);
419
+ border-right: 1px solid var(--chat-border);
420
+ box-shadow: 2px 0 8px var(--chat-shadow-light);
421
+ }
422
+ .c-chat__sidebar-header[data-v-4e22902a] {
423
+ display: flex;
424
+ align-items: center;
425
+ gap: 8px;
426
+ height: var(--chat-header-height);
427
+ padding: 0 16px;
428
+ border-bottom: 1px solid var(--chat-border);
429
+ font-weight: 600;
430
+ font-size: 15px;
431
+ }
432
+ .c-chat__search[data-v-4e22902a] {
433
+ padding: 8px 12px;
434
+ }
435
+ .c-chat__contact-list[data-v-4e22902a],[data-v-4e22902a] .c-chat__contact-list.v-vl {
436
+ flex: 1;
437
+ overflow-y: auto;
438
+ overscroll-behavior: contain;
439
+ }
440
+ .c-chat__contact-list[data-v-4e22902a]::-webkit-scrollbar,[data-v-4e22902a] .c-chat__contact-list.v-vl::-webkit-scrollbar {
441
+ width: 4px;
442
+ }
443
+ .c-chat__contact-list[data-v-4e22902a]::-webkit-scrollbar-thumb,[data-v-4e22902a] .c-chat__contact-list.v-vl::-webkit-scrollbar-thumb {
444
+ background: var(--chat-scrollbar-thumb);
445
+ border-radius: 2px;
446
+ }
447
+
448
+ /* ─── 主聊天区域 ──────────────────────────────────────── */
449
+ .c-chat__main[data-v-4e22902a] {
450
+ flex: 1;
451
+ display: flex;
452
+ flex-direction: column;
453
+ min-width: 0;
454
+ }
455
+ .c-chat__header[data-v-4e22902a] {
456
+ display: flex;
457
+ align-items: center;
458
+ gap: 10px;
459
+ height: var(--chat-header-height);
460
+ padding: 0 20px;
461
+ background: var(--chat-header-bg);
462
+ border-bottom: 1px solid var(--chat-border);
463
+ box-shadow: 0 1px 4px var(--chat-shadow-light);
464
+ font-weight: 600;
465
+ font-size: 15px;
466
+ }
467
+ .c-chat__header-status[data-v-4e22902a] {
468
+ font-size: 12px;
469
+ font-weight: 400;
470
+ color: var(--chat-text-secondary);
471
+ }
472
+
473
+ /* ─── 消息区域 ────────────────────────────────────────── */
474
+ .c-chat__messages[data-v-4e22902a],[data-v-4e22902a] .c-chat__messages--virtual {
475
+ flex: 1;
476
+ overflow-y: auto;
477
+ overscroll-behavior: contain;
478
+ padding: 16px 20px;
479
+ display: flex;
480
+ flex-direction: column;
481
+ background: color-mix(in srgb, var(--c-bg-body, var(--body-color, #f8fafc)) 50%, var(--c-bg-card, var(--card-color, #fff)));
482
+ }
483
+ .c-chat__messages[data-v-4e22902a]::-webkit-scrollbar,[data-v-4e22902a] .c-chat__messages--virtual::-webkit-scrollbar {
484
+ width: 4px;
485
+ }
486
+ .c-chat__messages[data-v-4e22902a]::-webkit-scrollbar-thumb,[data-v-4e22902a] .c-chat__messages--virtual::-webkit-scrollbar-thumb {
487
+ background: var(--chat-scrollbar-thumb);
488
+ border-radius: 2px;
489
+ }
490
+ .c-chat__load-more[data-v-4e22902a] {
491
+ text-align: center;
492
+ padding: 8px;
493
+ }
494
+ .c-chat__empty[data-v-4e22902a] {
495
+ flex: 1;
496
+ display: flex;
497
+ align-items: center;
498
+ justify-content: center;
499
+ color: var(--chat-text-secondary);
500
+ font-size: 13px;
501
+ }
431
502
 
432
503
  /* ─── 输入区域 ────────────────────────────────────────── */
433
- .c-chat__input-area[data-v-281bb0dd] {
504
+ .c-chat__input-area[data-v-4e22902a] {
434
505
  display: flex;
435
506
  align-items: center;
436
507
  gap: 8px;
@@ -439,21 +510,21 @@
439
510
  background: var(--chat-input-bg);
440
511
  border-top: 1px solid var(--chat-border);
441
512
  }
442
- .c-chat__input-actions[data-v-281bb0dd] {
513
+ .c-chat__input-actions[data-v-4e22902a] {
443
514
  display: flex;
444
515
  gap: 4px;
445
516
  flex-shrink: 0;
446
517
  }
447
- .c-chat__input-wrap[data-v-281bb0dd] {
518
+ .c-chat__input-wrap[data-v-4e22902a] {
448
519
  flex: 1;
449
520
  min-width: 0;
450
521
  }
451
- .c-chat__send-btn[data-v-281bb0dd] {
522
+ .c-chat__send-btn[data-v-4e22902a] {
452
523
  flex-shrink: 0;
453
524
  }
454
525
 
455
526
  /* ─── 空态 ────────────────────────────────────────────── */
456
- .c-chat__no-chat[data-v-281bb0dd] {
527
+ .c-chat__no-chat[data-v-4e22902a] {
457
528
  flex: 1;
458
529
  display: flex;
459
530
  flex-direction: column;
@@ -462,23 +533,36 @@
462
533
  gap: 12px;
463
534
  color: var(--chat-text-secondary);
464
535
  }
465
- .c-chat__no-chat-icon[data-v-281bb0dd] {
536
+ .c-chat__no-chat-icon[data-v-4e22902a] {
466
537
  font-size: 48px;
467
538
  opacity: 0.3;
468
539
  }
469
540
 
470
541
  /* ─── 响应式 ──────────────────────────────────────────── */
471
542
  @media (max-width: 640px) {
472
- .c-chat[data-v-281bb0dd] {
543
+ .c-chat[data-v-4e22902a] {
473
544
  --chat-sidebar-width: 72px;
474
545
  }
475
- .c-chat__contact-info[data-v-281bb0dd],
476
- .c-chat__search[data-v-281bb0dd],
477
- .c-chat__unread[data-v-281bb0dd] {
546
+ .c-chat__search[data-v-4e22902a] {
478
547
  display: none;
479
548
  }
480
- .c-chat__contact[data-v-281bb0dd] {
481
- justify-content: center;
482
- padding: 10px 8px;
483
549
  }
550
+ .c-chat__main[data-v-4e22902a] {
551
+ min-height: 0;
552
+ }
553
+ .c-chat__messages[data-v-4e22902a],[data-v-4e22902a] .c-chat__messages--virtual {
554
+ min-height: 0;
555
+ }
556
+ .c-chat__messages--virtual[data-v-4e22902a],[data-v-4e22902a] .c-chat__messages--virtual {
557
+ display: block;
558
+ padding: 0;
559
+ overflow-anchor: none;
560
+ }
561
+ .c-chat__message-items[data-v-4e22902a] {
562
+ flex: 1;
563
+ display: flex;
564
+ flex-direction: column;
565
+ }
566
+ .c-chat__contact-list[data-v-4e22902a],[data-v-4e22902a] .c-chat__contact-list.v-vl {
567
+ min-height: 0;
484
568
  }