@infinilabs/chat-message 0.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 (42) hide show
  1. package/README.md +123 -0
  2. package/dist/App.d.ts +2 -0
  3. package/dist/ChatMessage.cjs +32 -0
  4. package/dist/ChatMessage.iife.js +32 -0
  5. package/dist/ChatMessage.js +4950 -0
  6. package/dist/ChatMessage.umd.cjs +32 -0
  7. package/dist/components/Assistant/AttachmentList.d.ts +9 -0
  8. package/dist/components/CallTools.d.ts +8 -0
  9. package/dist/components/Common/CopyButton.d.ts +5 -0
  10. package/dist/components/Common/Icons/FileIcon.d.ts +7 -0
  11. package/dist/components/Common/Icons/FontIcon.d.ts +8 -0
  12. package/dist/components/Common/Tooltip2.d.ts +8 -0
  13. package/dist/components/DeepRead.d.ts +8 -0
  14. package/dist/components/FetchSource.d.ts +25 -0
  15. package/dist/components/MessageActions.d.ts +11 -0
  16. package/dist/components/PickSource.d.ts +8 -0
  17. package/dist/components/PrevSuggestion.d.ts +6 -0
  18. package/dist/components/QueryIntent.d.ts +9 -0
  19. package/dist/components/SuggestionList.d.ts +6 -0
  20. package/dist/components/Think.d.ts +8 -0
  21. package/dist/components/UserMessage.d.ts +7 -0
  22. package/dist/components/index.d.ts +20 -0
  23. package/dist/components/ui/popover.d.ts +8 -0
  24. package/dist/demo.d.ts +98 -0
  25. package/dist/hooks/useMessageChunkData.d.ts +22 -0
  26. package/dist/i18n/config.d.ts +2 -0
  27. package/dist/icons/Reading.d.ts +2 -0
  28. package/dist/icons/Retrieve.d.ts +2 -0
  29. package/dist/icons/SVGWrap.d.ts +2 -0
  30. package/dist/icons/Selection.d.ts +2 -0
  31. package/dist/icons/Understand.d.ts +2 -0
  32. package/dist/icons/types.d.ts +14 -0
  33. package/dist/index.d.ts +2 -0
  34. package/dist/main.d.ts +0 -0
  35. package/dist/stores/appStore.d.ts +5 -0
  36. package/dist/stores/chatStore.d.ts +20 -0
  37. package/dist/stores/connectStore.d.ts +8 -0
  38. package/dist/types/chat.d.ts +31 -0
  39. package/dist/utils/index.d.ts +4 -0
  40. package/dist/utils/platformAdapter.d.ts +9 -0
  41. package/dist/vite.svg +1 -0
  42. package/package.json +72 -0
@@ -0,0 +1,4950 @@
1
+ import * as Xe from "react";
2
+ import vt, { useState as T, useEffect as U, createElement as xr, useCallback as ke, memo as wt, forwardRef as jt, useRef as gr, useImperativeHandle as br } from "react";
3
+ import { initReactI18next as kr, useTranslation as he, I18nextProvider as yr } from "react-i18next";
4
+ import de from "clsx";
5
+ import vr from "i18next";
6
+ import { Loader as Oe, ChevronUp as _e, ChevronDown as Ne, Hammer as wr, Globe as jr, SquareArrowOutUpRight as _r, Brain as Nr, Check as _t, Copy as Nt, ThumbsUp as Cr, ThumbsDown as Er, Volume2 as Rr, RotateCcw as Tr, MoveRight as Sr, X as Ar } from "lucide-react";
7
+ import { XMarkdown as Ct } from "@ant-design/x-markdown";
8
+ import { create as Qe } from "zustand";
9
+ import { useBoolean as Fr, useAsyncEffect as Or } from "ahooks";
10
+ var Le = { exports: {} }, Se = {};
11
+ /**
12
+ * @license React
13
+ * react-jsx-runtime.production.min.js
14
+ *
15
+ * Copyright (c) Facebook, Inc. and its affiliates.
16
+ *
17
+ * This source code is licensed under the MIT license found in the
18
+ * LICENSE file in the root directory of this source tree.
19
+ */
20
+ var mt;
21
+ function Pr() {
22
+ if (mt) return Se;
23
+ mt = 1;
24
+ var e = vt, s = Symbol.for("react.element"), n = Symbol.for("react.fragment"), o = Object.prototype.hasOwnProperty, a = e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, d = { key: !0, ref: !0, __self: !0, __source: !0 };
25
+ function c(f, i, m) {
26
+ var u, y = {}, g = null, N = null;
27
+ m !== void 0 && (g = "" + m), i.key !== void 0 && (g = "" + i.key), i.ref !== void 0 && (N = i.ref);
28
+ for (u in i) o.call(i, u) && !d.hasOwnProperty(u) && (y[u] = i[u]);
29
+ if (f && f.defaultProps) for (u in i = f.defaultProps, i) y[u] === void 0 && (y[u] = i[u]);
30
+ return { $$typeof: s, type: f, key: g, ref: N, props: y, _owner: a.current };
31
+ }
32
+ return Se.Fragment = n, Se.jsx = c, Se.jsxs = c, Se;
33
+ }
34
+ var Ae = {};
35
+ /**
36
+ * @license React
37
+ * react-jsx-runtime.development.js
38
+ *
39
+ * Copyright (c) Facebook, Inc. and its affiliates.
40
+ *
41
+ * This source code is licensed under the MIT license found in the
42
+ * LICENSE file in the root directory of this source tree.
43
+ */
44
+ var pt;
45
+ function Ir() {
46
+ return pt || (pt = 1, process.env.NODE_ENV !== "production" && (function() {
47
+ var e = vt, s = Symbol.for("react.element"), n = Symbol.for("react.portal"), o = Symbol.for("react.fragment"), a = Symbol.for("react.strict_mode"), d = Symbol.for("react.profiler"), c = Symbol.for("react.provider"), f = Symbol.for("react.context"), i = Symbol.for("react.forward_ref"), m = Symbol.for("react.suspense"), u = Symbol.for("react.suspense_list"), y = Symbol.for("react.memo"), g = Symbol.for("react.lazy"), N = Symbol.for("react.offscreen"), P = Symbol.iterator, $ = "@@iterator";
48
+ function _(r) {
49
+ if (r === null || typeof r != "object")
50
+ return null;
51
+ var l = P && r[P] || r[$];
52
+ return typeof l == "function" ? l : null;
53
+ }
54
+ var k = e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
55
+ function F(r) {
56
+ {
57
+ for (var l = arguments.length, p = new Array(l > 1 ? l - 1 : 0), j = 1; j < l; j++)
58
+ p[j - 1] = arguments[j];
59
+ Q("error", r, p);
60
+ }
61
+ }
62
+ function Q(r, l, p) {
63
+ {
64
+ var j = k.ReactDebugCurrentFrame, S = j.getStackAddendum();
65
+ S !== "" && (l += "%s", p = p.concat([S]));
66
+ var A = p.map(function(R) {
67
+ return String(R);
68
+ });
69
+ A.unshift("Warning: " + l), Function.prototype.apply.call(console[r], console, A);
70
+ }
71
+ }
72
+ var ee = !1, te = !1, H = !1, ne = !1, v = !1, M;
73
+ M = Symbol.for("react.module.reference");
74
+ function ue(r) {
75
+ return !!(typeof r == "string" || typeof r == "function" || r === o || r === d || v || r === a || r === m || r === u || ne || r === N || ee || te || H || typeof r == "object" && r !== null && (r.$$typeof === g || r.$$typeof === y || r.$$typeof === c || r.$$typeof === f || r.$$typeof === i || // This needs to include all possible module reference object
76
+ // types supported by any Flight configuration anywhere since
77
+ // we don't know which Flight build this will end up being used
78
+ // with.
79
+ r.$$typeof === M || r.getModuleId !== void 0));
80
+ }
81
+ function Z(r, l, p) {
82
+ var j = r.displayName;
83
+ if (j)
84
+ return j;
85
+ var S = l.displayName || l.name || "";
86
+ return S !== "" ? p + "(" + S + ")" : p;
87
+ }
88
+ function ae(r) {
89
+ return r.displayName || "Context";
90
+ }
91
+ function V(r) {
92
+ if (r == null)
93
+ return null;
94
+ if (typeof r.tag == "number" && F("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), typeof r == "function")
95
+ return r.displayName || r.name || null;
96
+ if (typeof r == "string")
97
+ return r;
98
+ switch (r) {
99
+ case o:
100
+ return "Fragment";
101
+ case n:
102
+ return "Portal";
103
+ case d:
104
+ return "Profiler";
105
+ case a:
106
+ return "StrictMode";
107
+ case m:
108
+ return "Suspense";
109
+ case u:
110
+ return "SuspenseList";
111
+ }
112
+ if (typeof r == "object")
113
+ switch (r.$$typeof) {
114
+ case f:
115
+ var l = r;
116
+ return ae(l) + ".Consumer";
117
+ case c:
118
+ var p = r;
119
+ return ae(p._context) + ".Provider";
120
+ case i:
121
+ return Z(r, r.render, "ForwardRef");
122
+ case y:
123
+ var j = r.displayName || null;
124
+ return j !== null ? j : V(r.type) || "Memo";
125
+ case g: {
126
+ var S = r, A = S._payload, R = S._init;
127
+ try {
128
+ return V(R(A));
129
+ } catch {
130
+ return null;
131
+ }
132
+ }
133
+ }
134
+ return null;
135
+ }
136
+ var Y = Object.assign, G = 0, I, J, b, oe, xe, re, ie;
137
+ function z() {
138
+ }
139
+ z.__reactDisabledLog = !0;
140
+ function q() {
141
+ {
142
+ if (G === 0) {
143
+ I = console.log, J = console.info, b = console.warn, oe = console.error, xe = console.group, re = console.groupCollapsed, ie = console.groupEnd;
144
+ var r = {
145
+ configurable: !0,
146
+ enumerable: !0,
147
+ value: z,
148
+ writable: !0
149
+ };
150
+ Object.defineProperties(console, {
151
+ info: r,
152
+ log: r,
153
+ warn: r,
154
+ error: r,
155
+ group: r,
156
+ groupCollapsed: r,
157
+ groupEnd: r
158
+ });
159
+ }
160
+ G++;
161
+ }
162
+ }
163
+ function fe() {
164
+ {
165
+ if (G--, G === 0) {
166
+ var r = {
167
+ configurable: !0,
168
+ enumerable: !0,
169
+ writable: !0
170
+ };
171
+ Object.defineProperties(console, {
172
+ log: Y({}, r, {
173
+ value: I
174
+ }),
175
+ info: Y({}, r, {
176
+ value: J
177
+ }),
178
+ warn: Y({}, r, {
179
+ value: b
180
+ }),
181
+ error: Y({}, r, {
182
+ value: oe
183
+ }),
184
+ group: Y({}, r, {
185
+ value: xe
186
+ }),
187
+ groupCollapsed: Y({}, r, {
188
+ value: re
189
+ }),
190
+ groupEnd: Y({}, r, {
191
+ value: ie
192
+ })
193
+ });
194
+ }
195
+ G < 0 && F("disabledDepth fell below zero. This is a bug in React. Please file an issue.");
196
+ }
197
+ }
198
+ var me = k.ReactCurrentDispatcher, O;
199
+ function w(r, l, p) {
200
+ {
201
+ if (O === void 0)
202
+ try {
203
+ throw Error();
204
+ } catch (S) {
205
+ var j = S.stack.trim().match(/\n( *(at )?)/);
206
+ O = j && j[1] || "";
207
+ }
208
+ return `
209
+ ` + O + r;
210
+ }
211
+ }
212
+ var K = !1, le;
213
+ {
214
+ var Re = typeof WeakMap == "function" ? WeakMap : Map;
215
+ le = new Re();
216
+ }
217
+ function ge(r, l) {
218
+ if (!r || K)
219
+ return "";
220
+ {
221
+ var p = le.get(r);
222
+ if (p !== void 0)
223
+ return p;
224
+ }
225
+ var j;
226
+ K = !0;
227
+ var S = Error.prepareStackTrace;
228
+ Error.prepareStackTrace = void 0;
229
+ var A;
230
+ A = me.current, me.current = null, q();
231
+ try {
232
+ if (l) {
233
+ var R = function() {
234
+ throw Error();
235
+ };
236
+ if (Object.defineProperty(R.prototype, "props", {
237
+ set: function() {
238
+ throw Error();
239
+ }
240
+ }), typeof Reflect == "object" && Reflect.construct) {
241
+ try {
242
+ Reflect.construct(R, []);
243
+ } catch (X) {
244
+ j = X;
245
+ }
246
+ Reflect.construct(r, [], R);
247
+ } else {
248
+ try {
249
+ R.call();
250
+ } catch (X) {
251
+ j = X;
252
+ }
253
+ r.call(R.prototype);
254
+ }
255
+ } else {
256
+ try {
257
+ throw Error();
258
+ } catch (X) {
259
+ j = X;
260
+ }
261
+ r();
262
+ }
263
+ } catch (X) {
264
+ if (X && j && typeof X.stack == "string") {
265
+ for (var E = X.stack.split(`
266
+ `), D = j.stack.split(`
267
+ `), L = E.length - 1, W = D.length - 1; L >= 1 && W >= 0 && E[L] !== D[W]; )
268
+ W--;
269
+ for (; L >= 1 && W >= 0; L--, W--)
270
+ if (E[L] !== D[W]) {
271
+ if (L !== 1 || W !== 1)
272
+ do
273
+ if (L--, W--, W < 0 || E[L] !== D[W]) {
274
+ var se = `
275
+ ` + E[L].replace(" at new ", " at ");
276
+ return r.displayName && se.includes("<anonymous>") && (se = se.replace("<anonymous>", r.displayName)), typeof r == "function" && le.set(r, se), se;
277
+ }
278
+ while (L >= 1 && W >= 0);
279
+ break;
280
+ }
281
+ }
282
+ } finally {
283
+ K = !1, me.current = A, fe(), Error.prepareStackTrace = S;
284
+ }
285
+ var we = r ? r.displayName || r.name : "", be = we ? w(we) : "";
286
+ return typeof r == "function" && le.set(r, be), be;
287
+ }
288
+ function Ut(r, l, p) {
289
+ return ge(r, !1);
290
+ }
291
+ function Yt(r) {
292
+ var l = r.prototype;
293
+ return !!(l && l.isReactComponent);
294
+ }
295
+ function Pe(r, l, p) {
296
+ if (r == null)
297
+ return "";
298
+ if (typeof r == "function")
299
+ return ge(r, Yt(r));
300
+ if (typeof r == "string")
301
+ return w(r);
302
+ switch (r) {
303
+ case m:
304
+ return w("Suspense");
305
+ case u:
306
+ return w("SuspenseList");
307
+ }
308
+ if (typeof r == "object")
309
+ switch (r.$$typeof) {
310
+ case i:
311
+ return Ut(r.render);
312
+ case y:
313
+ return Pe(r.type, l, p);
314
+ case g: {
315
+ var j = r, S = j._payload, A = j._init;
316
+ try {
317
+ return Pe(A(S), l, p);
318
+ } catch {
319
+ }
320
+ }
321
+ }
322
+ return "";
323
+ }
324
+ var Te = Object.prototype.hasOwnProperty, Ze = {}, et = k.ReactDebugCurrentFrame;
325
+ function Ie(r) {
326
+ if (r) {
327
+ var l = r._owner, p = Pe(r.type, r._source, l ? l.type : null);
328
+ et.setExtraStackFrame(p);
329
+ } else
330
+ et.setExtraStackFrame(null);
331
+ }
332
+ function Jt(r, l, p, j, S) {
333
+ {
334
+ var A = Function.call.bind(Te);
335
+ for (var R in r)
336
+ if (A(r, R)) {
337
+ var E = void 0;
338
+ try {
339
+ if (typeof r[R] != "function") {
340
+ var D = Error((j || "React class") + ": " + p + " type `" + R + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof r[R] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");
341
+ throw D.name = "Invariant Violation", D;
342
+ }
343
+ E = r[R](l, R, j, p, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED");
344
+ } catch (L) {
345
+ E = L;
346
+ }
347
+ E && !(E instanceof Error) && (Ie(S), F("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", j || "React class", p, R, typeof E), Ie(null)), E instanceof Error && !(E.message in Ze) && (Ze[E.message] = !0, Ie(S), F("Failed %s type: %s", p, E.message), Ie(null));
348
+ }
349
+ }
350
+ }
351
+ var Kt = Array.isArray;
352
+ function Be(r) {
353
+ return Kt(r);
354
+ }
355
+ function Xt(r) {
356
+ {
357
+ var l = typeof Symbol == "function" && Symbol.toStringTag, p = l && r[Symbol.toStringTag] || r.constructor.name || "Object";
358
+ return p;
359
+ }
360
+ }
361
+ function Qt(r) {
362
+ try {
363
+ return tt(r), !1;
364
+ } catch {
365
+ return !0;
366
+ }
367
+ }
368
+ function tt(r) {
369
+ return "" + r;
370
+ }
371
+ function rt(r) {
372
+ if (Qt(r))
373
+ return F("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", Xt(r)), tt(r);
374
+ }
375
+ var st = k.ReactCurrentOwner, Ht = {
376
+ key: !0,
377
+ ref: !0,
378
+ __self: !0,
379
+ __source: !0
380
+ }, nt, ot;
381
+ function Zt(r) {
382
+ if (Te.call(r, "ref")) {
383
+ var l = Object.getOwnPropertyDescriptor(r, "ref").get;
384
+ if (l && l.isReactWarning)
385
+ return !1;
386
+ }
387
+ return r.ref !== void 0;
388
+ }
389
+ function er(r) {
390
+ if (Te.call(r, "key")) {
391
+ var l = Object.getOwnPropertyDescriptor(r, "key").get;
392
+ if (l && l.isReactWarning)
393
+ return !1;
394
+ }
395
+ return r.key !== void 0;
396
+ }
397
+ function tr(r, l) {
398
+ typeof r.ref == "string" && st.current;
399
+ }
400
+ function rr(r, l) {
401
+ {
402
+ var p = function() {
403
+ nt || (nt = !0, F("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", l));
404
+ };
405
+ p.isReactWarning = !0, Object.defineProperty(r, "key", {
406
+ get: p,
407
+ configurable: !0
408
+ });
409
+ }
410
+ }
411
+ function sr(r, l) {
412
+ {
413
+ var p = function() {
414
+ ot || (ot = !0, F("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", l));
415
+ };
416
+ p.isReactWarning = !0, Object.defineProperty(r, "ref", {
417
+ get: p,
418
+ configurable: !0
419
+ });
420
+ }
421
+ }
422
+ var nr = function(r, l, p, j, S, A, R) {
423
+ var E = {
424
+ // This tag allows us to uniquely identify this as a React Element
425
+ $$typeof: s,
426
+ // Built-in properties that belong on the element
427
+ type: r,
428
+ key: l,
429
+ ref: p,
430
+ props: R,
431
+ // Record the component responsible for creating this element.
432
+ _owner: A
433
+ };
434
+ return E._store = {}, Object.defineProperty(E._store, "validated", {
435
+ configurable: !1,
436
+ enumerable: !1,
437
+ writable: !0,
438
+ value: !1
439
+ }), Object.defineProperty(E, "_self", {
440
+ configurable: !1,
441
+ enumerable: !1,
442
+ writable: !1,
443
+ value: j
444
+ }), Object.defineProperty(E, "_source", {
445
+ configurable: !1,
446
+ enumerable: !1,
447
+ writable: !1,
448
+ value: S
449
+ }), Object.freeze && (Object.freeze(E.props), Object.freeze(E)), E;
450
+ };
451
+ function or(r, l, p, j, S) {
452
+ {
453
+ var A, R = {}, E = null, D = null;
454
+ p !== void 0 && (rt(p), E = "" + p), er(l) && (rt(l.key), E = "" + l.key), Zt(l) && (D = l.ref, tr(l, S));
455
+ for (A in l)
456
+ Te.call(l, A) && !Ht.hasOwnProperty(A) && (R[A] = l[A]);
457
+ if (r && r.defaultProps) {
458
+ var L = r.defaultProps;
459
+ for (A in L)
460
+ R[A] === void 0 && (R[A] = L[A]);
461
+ }
462
+ if (E || D) {
463
+ var W = typeof r == "function" ? r.displayName || r.name || "Unknown" : r;
464
+ E && rr(R, W), D && sr(R, W);
465
+ }
466
+ return nr(r, E, D, S, j, st.current, R);
467
+ }
468
+ }
469
+ var Ve = k.ReactCurrentOwner, at = k.ReactDebugCurrentFrame;
470
+ function ve(r) {
471
+ if (r) {
472
+ var l = r._owner, p = Pe(r.type, r._source, l ? l.type : null);
473
+ at.setExtraStackFrame(p);
474
+ } else
475
+ at.setExtraStackFrame(null);
476
+ }
477
+ var Ge;
478
+ Ge = !1;
479
+ function qe(r) {
480
+ return typeof r == "object" && r !== null && r.$$typeof === s;
481
+ }
482
+ function it() {
483
+ {
484
+ if (Ve.current) {
485
+ var r = V(Ve.current.type);
486
+ if (r)
487
+ return `
488
+
489
+ Check the render method of \`` + r + "`.";
490
+ }
491
+ return "";
492
+ }
493
+ }
494
+ function ar(r) {
495
+ return "";
496
+ }
497
+ var lt = {};
498
+ function ir(r) {
499
+ {
500
+ var l = it();
501
+ if (!l) {
502
+ var p = typeof r == "string" ? r : r.displayName || r.name;
503
+ p && (l = `
504
+
505
+ Check the top-level render call using <` + p + ">.");
506
+ }
507
+ return l;
508
+ }
509
+ }
510
+ function ct(r, l) {
511
+ {
512
+ if (!r._store || r._store.validated || r.key != null)
513
+ return;
514
+ r._store.validated = !0;
515
+ var p = ir(l);
516
+ if (lt[p])
517
+ return;
518
+ lt[p] = !0;
519
+ var j = "";
520
+ r && r._owner && r._owner !== Ve.current && (j = " It was passed a child from " + V(r._owner.type) + "."), ve(r), F('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', p, j), ve(null);
521
+ }
522
+ }
523
+ function dt(r, l) {
524
+ {
525
+ if (typeof r != "object")
526
+ return;
527
+ if (Be(r))
528
+ for (var p = 0; p < r.length; p++) {
529
+ var j = r[p];
530
+ qe(j) && ct(j, l);
531
+ }
532
+ else if (qe(r))
533
+ r._store && (r._store.validated = !0);
534
+ else if (r) {
535
+ var S = _(r);
536
+ if (typeof S == "function" && S !== r.entries)
537
+ for (var A = S.call(r), R; !(R = A.next()).done; )
538
+ qe(R.value) && ct(R.value, l);
539
+ }
540
+ }
541
+ }
542
+ function lr(r) {
543
+ {
544
+ var l = r.type;
545
+ if (l == null || typeof l == "string")
546
+ return;
547
+ var p;
548
+ if (typeof l == "function")
549
+ p = l.propTypes;
550
+ else if (typeof l == "object" && (l.$$typeof === i || // Note: Memo only checks outer props here.
551
+ // Inner props are checked in the reconciler.
552
+ l.$$typeof === y))
553
+ p = l.propTypes;
554
+ else
555
+ return;
556
+ if (p) {
557
+ var j = V(l);
558
+ Jt(p, r.props, "prop", j, r);
559
+ } else if (l.PropTypes !== void 0 && !Ge) {
560
+ Ge = !0;
561
+ var S = V(l);
562
+ F("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", S || "Unknown");
563
+ }
564
+ typeof l.getDefaultProps == "function" && !l.getDefaultProps.isReactClassApproved && F("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.");
565
+ }
566
+ }
567
+ function cr(r) {
568
+ {
569
+ for (var l = Object.keys(r.props), p = 0; p < l.length; p++) {
570
+ var j = l[p];
571
+ if (j !== "children" && j !== "key") {
572
+ ve(r), F("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", j), ve(null);
573
+ break;
574
+ }
575
+ }
576
+ r.ref !== null && (ve(r), F("Invalid attribute `ref` supplied to `React.Fragment`."), ve(null));
577
+ }
578
+ }
579
+ var ut = {};
580
+ function ft(r, l, p, j, S, A) {
581
+ {
582
+ var R = ue(r);
583
+ if (!R) {
584
+ var E = "";
585
+ (r === void 0 || typeof r == "object" && r !== null && Object.keys(r).length === 0) && (E += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");
586
+ var D = ar();
587
+ D ? E += D : E += it();
588
+ var L;
589
+ r === null ? L = "null" : Be(r) ? L = "array" : r !== void 0 && r.$$typeof === s ? (L = "<" + (V(r.type) || "Unknown") + " />", E = " Did you accidentally export a JSX literal instead of a component?") : L = typeof r, F("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", L, E);
590
+ }
591
+ var W = or(r, l, p, S, A);
592
+ if (W == null)
593
+ return W;
594
+ if (R) {
595
+ var se = l.children;
596
+ if (se !== void 0)
597
+ if (j)
598
+ if (Be(se)) {
599
+ for (var we = 0; we < se.length; we++)
600
+ dt(se[we], r);
601
+ Object.freeze && Object.freeze(se);
602
+ } else
603
+ F("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
604
+ else
605
+ dt(se, r);
606
+ }
607
+ if (Te.call(l, "key")) {
608
+ var be = V(r), X = Object.keys(l).filter(function(hr) {
609
+ return hr !== "key";
610
+ }), De = X.length > 0 ? "{key: someKey, " + X.join(": ..., ") + ": ...}" : "{key: someKey}";
611
+ if (!ut[be + De]) {
612
+ var pr = X.length > 0 ? "{" + X.join(": ..., ") + ": ...}" : "{}";
613
+ F(`A props object containing a "key" prop is being spread into JSX:
614
+ let props = %s;
615
+ <%s {...props} />
616
+ React keys must be passed directly to JSX without using spread:
617
+ let props = %s;
618
+ <%s key={someKey} {...props} />`, De, be, pr, be), ut[be + De] = !0;
619
+ }
620
+ }
621
+ return r === o ? cr(W) : lr(W), W;
622
+ }
623
+ }
624
+ function dr(r, l, p) {
625
+ return ft(r, l, p, !0);
626
+ }
627
+ function ur(r, l, p) {
628
+ return ft(r, l, p, !1);
629
+ }
630
+ var fr = ur, mr = dr;
631
+ Ae.Fragment = o, Ae.jsx = fr, Ae.jsxs = mr;
632
+ })()), Ae;
633
+ }
634
+ var ht;
635
+ function Lr() {
636
+ return ht || (ht = 1, process.env.NODE_ENV === "production" ? Le.exports = Pr() : Le.exports = Ir()), Le.exports;
637
+ }
638
+ var t = Lr();
639
+ const Mr = {
640
+ en: {
641
+ translation: {
642
+ assistant: {
643
+ message: {
644
+ logo: "Coco AI Logo",
645
+ aiName: "Coco AI",
646
+ thinkingButton: "View thinking process",
647
+ steps: {
648
+ query_intent: "Understand the query",
649
+ tools: "Call LLM Tools",
650
+ source_zero: "Searching for relevant documents",
651
+ fetch_source: "Retrieve {{count}} documents",
652
+ pick_source: "Intelligent pick {{count}} results",
653
+ pick_source_start: "Intelligently pre-selecting",
654
+ deep_read: "Deep reading",
655
+ think: "AI is thinking...",
656
+ thoughtTime: "Thought for a few seconds",
657
+ keywords: "Keywords",
658
+ questionType: "Query Type",
659
+ userIntent: "User Intent",
660
+ relatedQuestions: "Query",
661
+ suggestion: "Suggestion",
662
+ informationSeeking: "Information Seeking"
663
+ }
664
+ }
665
+ }
666
+ }
667
+ },
668
+ zh: {
669
+ translation: {
670
+ assistant: {
671
+ message: {
672
+ logo: "Coco AI 图标",
673
+ aiName: "Coco AI",
674
+ thinkingButton: "查看思考过程",
675
+ steps: {
676
+ query_intent: "理解查询",
677
+ tools: "调用大模型工具",
678
+ source_zero: "正在搜索相关文档",
679
+ fetch_source: "检索 {{count}} 份文档",
680
+ pick_source: "智能预选 {{count}} 个结果",
681
+ pick_source_start: "正在智能预选",
682
+ deep_read: "深度阅读",
683
+ think: "AI 正在思考...",
684
+ thoughtTime: "思考了数秒",
685
+ keywords: "关键词",
686
+ questionType: "查询类型",
687
+ userIntent: "用户意图",
688
+ relatedQuestions: "查询",
689
+ suggestion: "建议",
690
+ informationSeeking: "信息查询"
691
+ }
692
+ }
693
+ }
694
+ }
695
+ }
696
+ }, Et = vr.createInstance();
697
+ Et.use(kr).init({
698
+ resources: Mr,
699
+ lng: "en",
700
+ fallbackLng: "en",
701
+ interpolation: {
702
+ escapeValue: !1
703
+ },
704
+ react: {
705
+ useSuspense: !1
706
+ }
707
+ });
708
+ const zr = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20100%20100'%3e%3ccircle%20cx='50'%20cy='50'%20r='40'%20stroke='black'%20stroke-width='3'%20fill='red'%20/%3e%3c/svg%3e";
709
+ function $e({
710
+ size: e = 18,
711
+ children: s,
712
+ className: n,
713
+ title: o,
714
+ onClick: a,
715
+ action: d = !1,
716
+ ...c
717
+ }) {
718
+ const f = (i) => {
719
+ a?.(i);
720
+ };
721
+ return /* @__PURE__ */ t.jsx(
722
+ "i",
723
+ {
724
+ style: {
725
+ width: e,
726
+ height: e
727
+ },
728
+ title: o,
729
+ onClick: f,
730
+ className: de(
731
+ "inline-flex items-center justify-center rounded-sm p-[2px] transition-all",
732
+ {
733
+ "cursor-pointer": d
734
+ },
735
+ n
736
+ ),
737
+ children: /* @__PURE__ */ t.jsx(
738
+ "svg",
739
+ {
740
+ xmlns: "http://www.w3.org/2000/svg",
741
+ style: { width: "100%", height: "100%" },
742
+ ...c,
743
+ children: s
744
+ }
745
+ )
746
+ }
747
+ );
748
+ }
749
+ function Wr(e) {
750
+ return /* @__PURE__ */ t.jsx($e, { ...e, viewBox: "0 0 16 16", children: /* @__PURE__ */ t.jsx(
751
+ "g",
752
+ {
753
+ id: "Understand",
754
+ stroke: "none",
755
+ strokeWidth: "1",
756
+ fill: "none",
757
+ fillRule: "evenodd",
758
+ strokeLinecap: "round",
759
+ strokeLinejoin: "round",
760
+ children: /* @__PURE__ */ t.jsxs(
761
+ "g",
762
+ {
763
+ id: "编组",
764
+ transform: "translate(0.5, 0.5)",
765
+ stroke: "currentColor",
766
+ strokeWidth: "1.25",
767
+ children: [
768
+ /* @__PURE__ */ t.jsx(
769
+ "path",
770
+ {
771
+ d: "M7.44444444,3 C9.89904333,3 11.8888889,4.95366655 11.8888889,7.36363636 C11.8888889,9.06711551 10.8946979,10.5426108 9.44492275,11.2613085 L9.44444444,12.2727273 C9.44444444,13.3772968 8.54901394,14.2727273 7.44444444,14.2727273 C6.33987494,14.2727273 5.44444444,13.3772968 5.44444444,12.2727273 L5.44396614,11.2613085 C3.99419095,10.5426108 3,9.06711551 3,7.36363636 C3,4.95366655 4.98984556,3 7.44444444,3 Z",
772
+ id: "形状结合"
773
+ }
774
+ ),
775
+ /* @__PURE__ */ t.jsx(
776
+ "line",
777
+ {
778
+ x1: "5.5",
779
+ y1: "11.2156017",
780
+ x2: "9.5",
781
+ y2: "11.2156017",
782
+ id: "路径-11"
783
+ }
784
+ ),
785
+ /* @__PURE__ */ t.jsx(
786
+ "line",
787
+ {
788
+ x1: "7.44444444",
789
+ y1: "10.6363636",
790
+ x2: "7.44444444",
791
+ y2: "8.45454545",
792
+ id: "路径-12"
793
+ }
794
+ ),
795
+ /* @__PURE__ */ t.jsx(
796
+ "line",
797
+ {
798
+ x1: "7.44444444",
799
+ y1: "0.818181818",
800
+ x2: "7.44444444",
801
+ y2: "0.272727273",
802
+ id: "路径-12备份"
803
+ }
804
+ ),
805
+ /* @__PURE__ */ t.jsx(
806
+ "line",
807
+ {
808
+ x1: "12.352383",
809
+ y1: "2.81770629",
810
+ x2: "12.3574335",
811
+ y2: "2.26720124",
812
+ id: "路径-12备份",
813
+ transform: "translate(12.3549, 2.5425) rotate(45) translate(-12.3549, -2.5425)"
814
+ }
815
+ ),
816
+ /* @__PURE__ */ t.jsx(
817
+ "line",
818
+ {
819
+ x1: "14.3888889",
820
+ y1: "7.64141414",
821
+ x2: "14.3888889",
822
+ y2: "7.08585859",
823
+ id: "路径-12备份",
824
+ transform: "translate(14.3889, 7.3636) rotate(90) translate(-14.3889, -7.3636)"
825
+ }
826
+ ),
827
+ /* @__PURE__ */ t.jsx(
828
+ "line",
829
+ {
830
+ x1: "12.3574335",
831
+ y1: "12.4600715",
832
+ x2: "12.352383",
833
+ y2: "11.9095664",
834
+ id: "路径-12备份",
835
+ transform: "translate(12.3549, 12.1848) rotate(135) translate(-12.3549, -12.1848)"
836
+ }
837
+ ),
838
+ /* @__PURE__ */ t.jsx(
839
+ "line",
840
+ {
841
+ x1: "2.53145543",
842
+ y1: "12.4600715",
843
+ x2: "2.53650594",
844
+ y2: "11.9095664",
845
+ id: "路径-12备份",
846
+ transform: "translate(2.534, 12.1848) rotate(225) translate(-2.534, -12.1848)"
847
+ }
848
+ ),
849
+ /* @__PURE__ */ t.jsx(
850
+ "line",
851
+ {
852
+ x1: "0.5",
853
+ y1: "7.64141414",
854
+ x2: "0.5",
855
+ y2: "7.08585859",
856
+ id: "路径-12备份",
857
+ transform: "translate(0.5, 7.3636) rotate(270) translate(-0.5, -7.3636)"
858
+ }
859
+ ),
860
+ /* @__PURE__ */ t.jsx(
861
+ "line",
862
+ {
863
+ x1: "2.53650594",
864
+ y1: "2.81770629",
865
+ x2: "2.53145543",
866
+ y2: "2.26720124",
867
+ id: "路径-12备份",
868
+ transform: "translate(2.534, 2.5425) rotate(315) translate(-2.534, -2.5425)"
869
+ }
870
+ ),
871
+ /* @__PURE__ */ t.jsx(
872
+ "polyline",
873
+ {
874
+ id: "路径-15",
875
+ transform: "translate(7.4398, 6.7308) rotate(-45) translate(-7.4398, -6.7308)",
876
+ points: "6.33632897 5.60310185 6.3568375 7.83853192 8.5432888 7.85859111"
877
+ }
878
+ )
879
+ ]
880
+ }
881
+ )
882
+ }
883
+ ) });
884
+ }
885
+ const $r = ({
886
+ Detail: e,
887
+ ChunkData: s,
888
+ getSuggestion: n,
889
+ loading: o
890
+ }) => {
891
+ const { t: a } = he(), [d, c] = T(!1), [f, i] = T(null);
892
+ return U(() => {
893
+ e?.payload && (i(e?.payload), e?.payload?.suggestion && n && n(e?.payload?.suggestion));
894
+ }, [e?.payload, n]), U(() => {
895
+ if (s?.message_chunk && !o)
896
+ try {
897
+ const u = s.message_chunk.replace(/^"|"$/g, "").match(/<JSON>([\s\S]*?)<\/JSON>/g);
898
+ if (u) {
899
+ const g = u[u.length - 1].replace(/<JSON>|<\/JSON>/g, ""), N = JSON.parse(g);
900
+ N?.suggestion && n && n(N?.suggestion), i(N);
901
+ }
902
+ } catch (m) {
903
+ console.error("Failed to process message chunk in QueryIntent:", m);
904
+ }
905
+ }, [s?.message_chunk, o, n]), !s && !e ? null : /* @__PURE__ */ t.jsxs("div", { className: "space-y-2 mb-3 w-full", children: [
906
+ /* @__PURE__ */ t.jsxs(
907
+ "button",
908
+ {
909
+ onClick: () => c((m) => !m),
910
+ className: "inline-flex items-center gap-2 px-2 py-1 rounded-xl transition-colors border border-[#E6E6E6] dark:border-[#272626]",
911
+ children: [
912
+ o ? /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
913
+ /* @__PURE__ */ t.jsx(Oe, { className: "w-4 h-4 animate-spin text-[#1990FF]" }),
914
+ /* @__PURE__ */ t.jsx("span", { className: "text-xs text-[#999999] italic", children: a(
915
+ `assistant.message.steps.${s?.chunk_type || e.type}`
916
+ ) })
917
+ ] }) : /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
918
+ /* @__PURE__ */ t.jsx(Wr, { className: "w-4 h-4 text-[#38C200]" }),
919
+ /* @__PURE__ */ t.jsx("span", { className: "text-xs text-[#999999]", children: a(
920
+ `assistant.message.steps.${s?.chunk_type || e.type}`
921
+ ) })
922
+ ] }),
923
+ d ? /* @__PURE__ */ t.jsx(_e, { className: "w-4 h-4" }) : /* @__PURE__ */ t.jsx(Ne, { className: "w-4 h-4" })
924
+ ]
925
+ }
926
+ ),
927
+ d && /* @__PURE__ */ t.jsx("div", { className: "pl-2 border-l-2 border-[#e5e5e5] dark:border-[#4e4e56]", children: /* @__PURE__ */ t.jsx("div", { className: "text-[#8b8b8b] dark:text-[#a6a6a6] space-y-2", children: /* @__PURE__ */ t.jsxs("div", { className: "mb-4 space-y-2 text-xs", children: [
928
+ f?.keyword ? /* @__PURE__ */ t.jsxs("div", { className: "flex gap-1", children: [
929
+ /* @__PURE__ */ t.jsxs("span", { className: "text-[#999999]", children: [
930
+ "- ",
931
+ a("assistant.message.steps.keywords"),
932
+ ":"
933
+ ] }),
934
+ /* @__PURE__ */ t.jsx("div", { className: "flex flex-wrap gap-1", children: f?.keyword?.map((m, u) => /* @__PURE__ */ t.jsxs(
935
+ "span",
936
+ {
937
+ className: "text-[#333333] dark:text-[#D8D8D8]",
938
+ children: [
939
+ m,
940
+ u < 2 && "、"
941
+ ]
942
+ },
943
+ m + u
944
+ )) })
945
+ ] }) : null,
946
+ f?.category ? /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-1", children: [
947
+ /* @__PURE__ */ t.jsxs("span", { className: "text-[#999999]", children: [
948
+ "- ",
949
+ a("assistant.message.steps.questionType"),
950
+ ":"
951
+ ] }),
952
+ /* @__PURE__ */ t.jsx("span", { className: "text-[#333333] dark:text-[#D8D8D8]", children: f?.category })
953
+ ] }) : null,
954
+ f?.intent ? /* @__PURE__ */ t.jsxs("div", { className: "flex items-start gap-1", children: [
955
+ /* @__PURE__ */ t.jsxs("span", { className: "text-[#999999]", children: [
956
+ "- ",
957
+ a("assistant.message.steps.userIntent"),
958
+ ":"
959
+ ] }),
960
+ /* @__PURE__ */ t.jsx("div", { className: "flex-1 text-[#333333] dark:text-[#D8D8D8]", children: f?.intent })
961
+ ] }) : null,
962
+ f?.query ? /* @__PURE__ */ t.jsxs("div", { className: "flex items-start gap-1", children: [
963
+ /* @__PURE__ */ t.jsxs("span", { className: "text-[#999999]", children: [
964
+ "- ",
965
+ a("assistant.message.steps.relatedQuestions"),
966
+ ":"
967
+ ] }),
968
+ /* @__PURE__ */ t.jsx("div", { className: "flex-1 flex flex-col text-[#333333] dark:text-[#D8D8D8]", children: f?.query?.map((m, u) => /* @__PURE__ */ t.jsxs("span", { children: [
969
+ "- ",
970
+ m
971
+ ] }, m + u)) })
972
+ ] }) : null
973
+ ] }) }) })
974
+ ] });
975
+ }, Br = ({ Detail: e, ChunkData: s, loading: n }) => {
976
+ const { t: o } = he(), [a, d] = T(!1), [c, f] = T("");
977
+ return U(() => {
978
+ e?.description && f(e?.description);
979
+ }, [e?.description]), U(() => {
980
+ s?.message_chunk && f(s?.message_chunk);
981
+ }, [s?.message_chunk, c]), !s && !e ? null : /* @__PURE__ */ t.jsxs("div", { className: "space-y-2 mb-3 w-full", children: [
982
+ /* @__PURE__ */ t.jsxs(
983
+ "button",
984
+ {
985
+ onClick: () => d((i) => !i),
986
+ className: "inline-flex items-center gap-2 px-2 py-1 rounded-xl transition-colors border border-[#E6E6E6] dark:border-[#272626]",
987
+ children: [
988
+ n ? /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
989
+ /* @__PURE__ */ t.jsx(Oe, { className: "w-4 h-4 animate-spin text-[#1990FF]" }),
990
+ /* @__PURE__ */ t.jsx("span", { className: "text-xs text-[#999999] italic", children: o(`assistant.message.steps.${s?.chunk_type}`) })
991
+ ] }) : /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
992
+ /* @__PURE__ */ t.jsx(wr, { className: "w-4 h-4 text-[#38C200]" }),
993
+ /* @__PURE__ */ t.jsx("span", { className: "text-xs text-[#999999]", children: o(`assistant.message.steps.${s?.chunk_type}`) })
994
+ ] }),
995
+ a ? /* @__PURE__ */ t.jsx(_e, { className: "w-4 h-4" }) : /* @__PURE__ */ t.jsx(Ne, { className: "w-4 h-4" })
996
+ ]
997
+ }
998
+ ),
999
+ a && /* @__PURE__ */ t.jsx("div", { className: "pl-2 border-l-2 border-[#e5e5e5] dark:border-[#4e4e56]", children: /* @__PURE__ */ t.jsx("div", { className: "text-[#8b8b8b] dark:text-[#a6a6a6] space-y-2", children: /* @__PURE__ */ t.jsx(Ct, { content: c || "" }) }) })
1000
+ ] });
1001
+ }, Rt = async (e) => {
1002
+ navigator.clipboard ? await navigator.clipboard.writeText(e) : console.log("Clipboard not available", e);
1003
+ }, Vr = (e) => {
1004
+ window.open(e, "_blank");
1005
+ }, Gr = (e) => e + " B";
1006
+ function qr(e) {
1007
+ return /* @__PURE__ */ t.jsx($e, { ...e, viewBox: "0 0 16 16", children: /* @__PURE__ */ t.jsxs(
1008
+ "g",
1009
+ {
1010
+ id: "Retrieve",
1011
+ stroke: "none",
1012
+ strokeWidth: "1",
1013
+ fill: "none",
1014
+ fillRule: "evenodd",
1015
+ strokeLinecap: "round",
1016
+ strokeLinejoin: "round",
1017
+ children: [
1018
+ /* @__PURE__ */ t.jsx(
1019
+ "line",
1020
+ {
1021
+ x1: "10.8977456",
1022
+ y1: "14.5",
1023
+ x2: "14",
1024
+ y2: "10.9204757",
1025
+ id: "路径",
1026
+ stroke: "currentColor",
1027
+ strokeWidth: "1.25",
1028
+ transform: "translate(12.4489, 12.7102) scale(-1, 1) translate(-12.4489, -12.7102)"
1029
+ }
1030
+ ),
1031
+ /* @__PURE__ */ t.jsx(
1032
+ "circle",
1033
+ {
1034
+ id: "椭圆形",
1035
+ stroke: "currentColor",
1036
+ strokeWidth: "1.25",
1037
+ transform: "translate(7.5, 7) scale(-1, 1) translate(-7.5, -7)",
1038
+ cx: "7.5",
1039
+ cy: "7",
1040
+ r: "5"
1041
+ }
1042
+ )
1043
+ ]
1044
+ }
1045
+ ) });
1046
+ }
1047
+ const Dr = ({
1048
+ Detail: e,
1049
+ ChunkData: s,
1050
+ loading: n,
1051
+ formatUrl: o
1052
+ }) => {
1053
+ const { t: a } = he(), [d, c] = T(!1), [f, i] = T(0), [m, u] = T([]);
1054
+ U(() => {
1055
+ e?.payload && (u(e?.payload), i(e?.payload.length));
1056
+ }, [e?.payload]), U(() => {
1057
+ if (s?.message_chunk && !n)
1058
+ try {
1059
+ const g = s.message_chunk.match(
1060
+ // /\u003cPayload total=(\d+)\u003e/
1061
+ /<Payload total=(\d+)>/
1062
+ );
1063
+ g && i(Number(g[1]));
1064
+ const N = s.message_chunk.match(/\[([\s\S]*)\]/);
1065
+ if (N) {
1066
+ const P = JSON.parse(N[0]);
1067
+ u(P);
1068
+ }
1069
+ } catch (g) {
1070
+ console.error("Failed to parse fetch source data:", g);
1071
+ }
1072
+ }, [s?.message_chunk, n]);
1073
+ const y = (g) => () => {
1074
+ const N = o && o(g) || g.url;
1075
+ N && Vr(N);
1076
+ };
1077
+ return !s && !e ? null : /* @__PURE__ */ t.jsxs(
1078
+ "div",
1079
+ {
1080
+ className: `mt-2 mb-2 max-w-full w-full md:w-[610px] ${d ? "rounded-lg overflow-hidden border border-[#E6E6E6] dark:border-[#272626]" : ""}`,
1081
+ children: [
1082
+ /* @__PURE__ */ t.jsxs(
1083
+ "button",
1084
+ {
1085
+ onClick: () => c((g) => !g),
1086
+ className: `inline-flex justify-between items-center gap-2 px-2 py-1 rounded-xl transition-colors whitespace-nowrap ${d ? "w-full" : "border border-[#E6E6E6] dark:border-[#272626]"}`,
1087
+ children: [
1088
+ /* @__PURE__ */ t.jsxs("div", { className: "flex-1 min-w-0 flex items-center gap-2", children: [
1089
+ /* @__PURE__ */ t.jsx(qr, { className: "w-4 h-4 text-[#38C200] shrink-0" }),
1090
+ /* @__PURE__ */ t.jsx("span", { className: "text-xs text-[#999999]", children: a(
1091
+ `assistant.message.steps.${s?.chunk_type || e.type}`,
1092
+ {
1093
+ count: Number(f)
1094
+ }
1095
+ ) })
1096
+ ] }),
1097
+ d ? /* @__PURE__ */ t.jsx(_e, { className: "w-4 h-4 text-[#999999]" }) : /* @__PURE__ */ t.jsx(Ne, { className: "w-4 h-4 text-[#999999]" })
1098
+ ]
1099
+ }
1100
+ ),
1101
+ d && /* @__PURE__ */ t.jsx(t.Fragment, { children: m?.map((g, N) => /* @__PURE__ */ t.jsx(
1102
+ "div",
1103
+ {
1104
+ onClick: y(g),
1105
+ className: "group flex items-center p-2 hover:bg-[#F7F7F7] dark:hover:bg-[#2C2C2C] border-b border-[#E6E6E6] dark:border-[#272626] last:border-b-0 cursor-pointer transition-colors",
1106
+ children: /* @__PURE__ */ t.jsxs("div", { className: "w-full flex items-center gap-2", children: [
1107
+ /* @__PURE__ */ t.jsxs("div", { className: "w-[75%] mobile:w-full flex items-center gap-1", children: [
1108
+ /* @__PURE__ */ t.jsx(jr, { className: "w-3 h-3 shrink-0" }),
1109
+ /* @__PURE__ */ t.jsx("div", { className: "text-xs text-[#333333] dark:text-[#D8D8D8] truncate font-normal group-hover:text-[#0072FF] dark:group-hover:text-[#0072FF]", children: g.title || g.category })
1110
+ ] }),
1111
+ /* @__PURE__ */ t.jsxs(
1112
+ "div",
1113
+ {
1114
+ className: "flex-1 mobile:hidden flex items-center justify-end gap-2",
1115
+ children: [
1116
+ /* @__PURE__ */ t.jsx("span", { className: "text-xs text-[#999999] dark:text-[#999999] truncate", children: g.source?.name || g?.category }),
1117
+ /* @__PURE__ */ t.jsx(_r, { className: "w-3 h-3 text-[#999999] dark:text-[#999999] shrink-0" })
1118
+ ]
1119
+ }
1120
+ )
1121
+ ] })
1122
+ },
1123
+ N
1124
+ )) })
1125
+ ]
1126
+ }
1127
+ );
1128
+ };
1129
+ function Ur(e) {
1130
+ return /* @__PURE__ */ t.jsx($e, { ...e, viewBox: "0 0 16 16", children: /* @__PURE__ */ t.jsx(
1131
+ "g",
1132
+ {
1133
+ id: "selection",
1134
+ stroke: "none",
1135
+ strokeWidth: "1",
1136
+ fill: "none",
1137
+ fillRule: "evenodd",
1138
+ children: /* @__PURE__ */ t.jsxs(
1139
+ "g",
1140
+ {
1141
+ id: "编组",
1142
+ transform: "translate(1.4813, 1)",
1143
+ stroke: "currentColor",
1144
+ strokeWidth: "1.25",
1145
+ children: [
1146
+ /* @__PURE__ */ t.jsx(
1147
+ "line",
1148
+ {
1149
+ x1: "6.7986538",
1150
+ y1: "2.8",
1151
+ x2: "6.7986538",
1152
+ y2: "2.07241631e-17",
1153
+ id: "路径",
1154
+ strokeLinecap: "round",
1155
+ strokeLinejoin: "round"
1156
+ }
1157
+ ),
1158
+ /* @__PURE__ */ t.jsx(
1159
+ "circle",
1160
+ {
1161
+ id: "椭圆形",
1162
+ fill: "#000000",
1163
+ cx: "6.7986538",
1164
+ cy: "6.72",
1165
+ r: "1"
1166
+ }
1167
+ ),
1168
+ /* @__PURE__ */ t.jsx(
1169
+ "line",
1170
+ {
1171
+ x1: "2.17440858e-17",
1172
+ y1: "13.5186538",
1173
+ x2: "4.62042688",
1174
+ y2: "8.89822692",
1175
+ id: "路径",
1176
+ strokeLinecap: "round",
1177
+ strokeLinejoin: "round"
1178
+ }
1179
+ ),
1180
+ /* @__PURE__ */ t.jsx(
1181
+ "line",
1182
+ {
1183
+ x1: "10.1008425",
1184
+ y1: "4.16781133",
1185
+ x2: "10.1008425",
1186
+ y2: "2.66781133",
1187
+ id: "路径",
1188
+ strokeLinecap: "round",
1189
+ strokeLinejoin: "round",
1190
+ transform: "translate(10.1008, 3.4178) rotate(45) translate(-10.1008, -3.4178)"
1191
+ }
1192
+ ),
1193
+ /* @__PURE__ */ t.jsx(
1194
+ "line",
1195
+ {
1196
+ x1: "12.1186538",
1197
+ y1: "8.12",
1198
+ x2: "12.1186538",
1199
+ y2: "5.32",
1200
+ id: "路径",
1201
+ strokeLinecap: "round",
1202
+ strokeLinejoin: "round",
1203
+ transform: "translate(12.1187, 6.72) rotate(90) translate(-12.1187, -6.72)"
1204
+ }
1205
+ ),
1206
+ /* @__PURE__ */ t.jsx(
1207
+ "line",
1208
+ {
1209
+ x1: "10.1008425",
1210
+ y1: "10.7721887",
1211
+ x2: "10.1008425",
1212
+ y2: "9.27218867",
1213
+ id: "路径",
1214
+ strokeLinecap: "round",
1215
+ strokeLinejoin: "round",
1216
+ transform: "translate(10.1008, 10.0222) rotate(135) translate(-10.1008, -10.0222)"
1217
+ }
1218
+ ),
1219
+ /* @__PURE__ */ t.jsx(
1220
+ "line",
1221
+ {
1222
+ x1: "6.7986538",
1223
+ y1: "13.44",
1224
+ x2: "6.7986538",
1225
+ y2: "10.64",
1226
+ id: "路径",
1227
+ strokeLinecap: "round",
1228
+ strokeLinejoin: "round",
1229
+ transform: "translate(6.7987, 12.04) rotate(180) translate(-6.7987, -12.04)"
1230
+ }
1231
+ ),
1232
+ /* @__PURE__ */ t.jsx(
1233
+ "line",
1234
+ {
1235
+ x1: "1.4786538",
1236
+ y1: "8.12",
1237
+ x2: "1.4786538",
1238
+ y2: "5.32",
1239
+ id: "路径",
1240
+ strokeLinecap: "round",
1241
+ strokeLinejoin: "round",
1242
+ transform: "translate(1.4787, 6.72) rotate(270) translate(-1.4787, -6.72)"
1243
+ }
1244
+ ),
1245
+ /* @__PURE__ */ t.jsx(
1246
+ "line",
1247
+ {
1248
+ x1: "3.49646513",
1249
+ y1: "4.16781133",
1250
+ x2: "3.49646513",
1251
+ y2: "2.66781133",
1252
+ id: "路径",
1253
+ strokeLinecap: "round",
1254
+ strokeLinejoin: "round",
1255
+ transform: "translate(3.4965, 3.4178) rotate(315) translate(-3.4965, -3.4178)"
1256
+ }
1257
+ )
1258
+ ]
1259
+ }
1260
+ )
1261
+ }
1262
+ ) });
1263
+ }
1264
+ const Yr = ({
1265
+ Detail: e,
1266
+ ChunkData: s,
1267
+ loading: n
1268
+ }) => {
1269
+ const { t: o } = he(), [a, d] = T(!1), [c, f] = T([]);
1270
+ return U(() => {
1271
+ e?.payload && f(e?.payload);
1272
+ }, [e?.payload]), U(() => {
1273
+ if (s?.message_chunk && !n)
1274
+ try {
1275
+ const m = s.message_chunk.replace(/^"|"$/g, "").match(/<JSON>([\s\S]*?)<\/JSON>/g);
1276
+ if (m)
1277
+ for (let u = m.length - 1; u >= 0; u--)
1278
+ try {
1279
+ const y = m[u].replace(/<JSON>|<\/JSON>|<think>|<\/think>/g, ""), g = JSON.parse(y.trim());
1280
+ if (Array.isArray(g) && g.every((N) => N.id && N.title && N.explain)) {
1281
+ f(g);
1282
+ break;
1283
+ }
1284
+ } catch {
1285
+ continue;
1286
+ }
1287
+ } catch (i) {
1288
+ console.error("Failed to parse pick source data:", i);
1289
+ }
1290
+ }, [s?.message_chunk, n]), !s && !e ? null : /* @__PURE__ */ t.jsxs("div", { className: "space-y-2 mb-3 w-full", children: [
1291
+ /* @__PURE__ */ t.jsxs(
1292
+ "button",
1293
+ {
1294
+ onClick: () => d((i) => !i),
1295
+ className: "inline-flex items-center gap-2 px-2 py-1 rounded-xl transition-colors border border-[#E6E6E6] dark:border-[#272626]",
1296
+ children: [
1297
+ n ? /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
1298
+ /* @__PURE__ */ t.jsx(Oe, { className: "w-4 h-4 animate-spin text-[#1990FF]" }),
1299
+ /* @__PURE__ */ t.jsx("span", { className: "text-xs text-[#999999] italic", children: o("assistant.message.steps.pick_source_start") })
1300
+ ] }) : /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
1301
+ /* @__PURE__ */ t.jsx(Ur, { className: "w-4 h-4 text-[#38C200]" }),
1302
+ /* @__PURE__ */ t.jsx("span", { className: "text-xs text-[#999999]", children: o(
1303
+ `assistant.message.steps.${s?.chunk_type || e.type}`,
1304
+ {
1305
+ count: c?.length
1306
+ }
1307
+ ) })
1308
+ ] }),
1309
+ a ? /* @__PURE__ */ t.jsx(_e, { className: "w-4 h-4" }) : /* @__PURE__ */ t.jsx(Ne, { className: "w-4 h-4" })
1310
+ ]
1311
+ }
1312
+ ),
1313
+ a && /* @__PURE__ */ t.jsx("div", { className: "pl-2 border-l-2 border-[#e5e5e5] dark:border-[#4e4e56]", children: /* @__PURE__ */ t.jsx("div", { className: "text-[#8b8b8b] dark:text-[#a6a6a6] space-y-2", children: /* @__PURE__ */ t.jsx("div", { className: "mb-4 space-y-3 text-xs", children: c?.map((i) => /* @__PURE__ */ t.jsx(
1314
+ "div",
1315
+ {
1316
+ className: "p-3 rounded-lg border border-[#E6E6E6] dark:border-[#272626] bg-white dark:bg-[#1E1E1E] hover:bg-gray-50 dark:hover:bg-[#2C2C2C] transition-colors",
1317
+ children: /* @__PURE__ */ t.jsxs("div", { className: "flex flex-col gap-2", children: [
1318
+ /* @__PURE__ */ t.jsx("div", { className: "text-sm font-medium text-[#333333] dark:text-[#D8D8D8]", children: i.title }),
1319
+ /* @__PURE__ */ t.jsx("div", { className: "text-xs text-[#666666] dark:text-[#A3A3A3] line-clamp-2", children: i.explain })
1320
+ ] })
1321
+ },
1322
+ i.id
1323
+ )) }) }) })
1324
+ ] });
1325
+ };
1326
+ function Jr(e) {
1327
+ return /* @__PURE__ */ t.jsx($e, { ...e, viewBox: "0 0 16 16", children: /* @__PURE__ */ t.jsxs(
1328
+ "g",
1329
+ {
1330
+ id: "deading",
1331
+ stroke: "none",
1332
+ strokeWidth: "1",
1333
+ fill: "none",
1334
+ fillRule: "evenodd",
1335
+ children: [
1336
+ /* @__PURE__ */ t.jsx(
1337
+ "circle",
1338
+ {
1339
+ id: "椭圆形",
1340
+ stroke: "currentColor",
1341
+ strokeWidth: "1.25",
1342
+ cx: "8",
1343
+ cy: "3",
1344
+ r: "1.375"
1345
+ }
1346
+ ),
1347
+ /* @__PURE__ */ t.jsx(
1348
+ "circle",
1349
+ {
1350
+ id: "椭圆形备份-2",
1351
+ stroke: "currentColor",
1352
+ strokeWidth: "1.25",
1353
+ cx: "3",
1354
+ cy: "5",
1355
+ r: "1.375"
1356
+ }
1357
+ ),
1358
+ /* @__PURE__ */ t.jsx(
1359
+ "circle",
1360
+ {
1361
+ id: "椭圆形备份-4",
1362
+ stroke: "currentColor",
1363
+ strokeWidth: "1.25",
1364
+ cx: "13",
1365
+ cy: "5",
1366
+ r: "1.375"
1367
+ }
1368
+ ),
1369
+ /* @__PURE__ */ t.jsx(
1370
+ "circle",
1371
+ {
1372
+ id: "椭圆形备份",
1373
+ stroke: "currentColor",
1374
+ strokeWidth: "1.25",
1375
+ cx: "8",
1376
+ cy: "13",
1377
+ r: "1.375"
1378
+ }
1379
+ ),
1380
+ /* @__PURE__ */ t.jsx(
1381
+ "circle",
1382
+ {
1383
+ id: "椭圆形备份-3",
1384
+ stroke: "currentColor",
1385
+ strokeWidth: "1.25",
1386
+ cx: "3",
1387
+ cy: "11",
1388
+ r: "1.375"
1389
+ }
1390
+ ),
1391
+ /* @__PURE__ */ t.jsx(
1392
+ "circle",
1393
+ {
1394
+ id: "椭圆形备份-5",
1395
+ stroke: "currentColor",
1396
+ strokeWidth: "1.25",
1397
+ cx: "13",
1398
+ cy: "11",
1399
+ r: "1.375"
1400
+ }
1401
+ ),
1402
+ /* @__PURE__ */ t.jsx(
1403
+ "path",
1404
+ {
1405
+ d: "M8.0070039,4.03345364 L8.0070039,8.50590493 L4.1923477,10.2855921",
1406
+ id: "路径-13",
1407
+ stroke: "currentColor",
1408
+ strokeWidth: "1.25"
1409
+ }
1410
+ ),
1411
+ /* @__PURE__ */ t.jsx(
1412
+ "line",
1413
+ {
1414
+ x1: "11.7924093",
1415
+ y1: "8.47550067",
1416
+ x2: "8",
1417
+ y2: "10.2754456",
1418
+ id: "路径-13备份",
1419
+ stroke: "currentColor",
1420
+ strokeWidth: "1.25",
1421
+ transform: "translate(9.8962, 9.3755) scale(-1, 1) translate(-9.8962, -9.3755)"
1422
+ }
1423
+ ),
1424
+ /* @__PURE__ */ t.jsx(
1425
+ "path",
1426
+ {
1427
+ d: "M4.17568738,4.53038288 L6.65384701,3.54050563 M9.35480875,3.53987819 L11.7283558,4.49062879",
1428
+ id: "形状",
1429
+ stroke: "currentColor",
1430
+ strokeWidth: "1.25"
1431
+ }
1432
+ ),
1433
+ /* @__PURE__ */ t.jsx(
1434
+ "line",
1435
+ {
1436
+ x1: "3",
1437
+ y1: "6.06946104",
1438
+ x2: "3",
1439
+ y2: "9.97988046",
1440
+ id: "路径-14",
1441
+ stroke: "currentColor",
1442
+ strokeWidth: "1.25"
1443
+ }
1444
+ ),
1445
+ /* @__PURE__ */ t.jsx(
1446
+ "line",
1447
+ {
1448
+ x1: "13",
1449
+ y1: "6.06946104",
1450
+ x2: "13",
1451
+ y2: "9.97988046",
1452
+ id: "路径-14备份",
1453
+ stroke: "currentColor",
1454
+ strokeWidth: "1.25"
1455
+ }
1456
+ )
1457
+ ]
1458
+ }
1459
+ ) });
1460
+ }
1461
+ const Kr = ({
1462
+ Detail: e,
1463
+ ChunkData: s,
1464
+ loading: n
1465
+ }) => {
1466
+ const { t: o } = he(), [a, d] = T(!1), [c, f] = T([]), [i, m] = T("");
1467
+ return U(() => {
1468
+ e?.description && m(e?.description);
1469
+ }, [e?.description]), U(() => {
1470
+ if (s?.message_chunk)
1471
+ try {
1472
+ if (s.message_chunk.includes("&")) {
1473
+ const u = s.message_chunk.split("&").filter(Boolean);
1474
+ f(u);
1475
+ } else
1476
+ f([s.message_chunk]);
1477
+ } catch (u) {
1478
+ console.error("Failed to parse query data:", u);
1479
+ }
1480
+ }, [s?.message_chunk]), !s && !e ? null : /* @__PURE__ */ t.jsxs("div", { className: "space-y-2 mb-3 w-full", children: [
1481
+ /* @__PURE__ */ t.jsxs(
1482
+ "button",
1483
+ {
1484
+ onClick: () => d((u) => !u),
1485
+ className: "inline-flex items-center gap-2 px-2 py-1 rounded-xl transition-colors border border-[#E6E6E6] dark:border-[#272626]",
1486
+ children: [
1487
+ n ? /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
1488
+ /* @__PURE__ */ t.jsx(Oe, { className: "w-4 h-4 animate-spin text-[#1990FF]" }),
1489
+ /* @__PURE__ */ t.jsx("span", { className: "text-xs text-[#999999] italic", children: o(
1490
+ `assistant.message.steps.${s?.chunk_type || e?.type}`
1491
+ ) })
1492
+ ] }) : /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
1493
+ /* @__PURE__ */ t.jsx(Jr, { className: "w-4 h-4 text-[#38C200]" }),
1494
+ /* @__PURE__ */ t.jsx("span", { className: "text-xs text-[#999999]", children: o(
1495
+ `assistant.message.steps.${s?.chunk_type || e?.type}`,
1496
+ {
1497
+ count: Number(c.length)
1498
+ }
1499
+ ) })
1500
+ ] }),
1501
+ a ? /* @__PURE__ */ t.jsx(_e, { className: "w-4 h-4" }) : /* @__PURE__ */ t.jsx(Ne, { className: "w-4 h-4" })
1502
+ ]
1503
+ }
1504
+ ),
1505
+ a && /* @__PURE__ */ t.jsx("div", { className: "pl-2 border-l-2 border-[#e5e5e5] dark:border-[#4e4e56]", children: /* @__PURE__ */ t.jsx("div", { className: "text-[#8b8b8b] dark:text-[#a6a6a6] space-y-2", children: /* @__PURE__ */ t.jsxs("div", { className: "mb-4 space-y-3 text-xs", children: [
1506
+ c?.map((u) => /* @__PURE__ */ t.jsx("div", { className: "flex flex-col gap-2", children: /* @__PURE__ */ t.jsxs("div", { className: "text-xs text-[#999999] dark:text-[#808080]", children: [
1507
+ "- ",
1508
+ u
1509
+ ] }) }, u)),
1510
+ i?.split(`
1511
+ `).map(
1512
+ (u, y) => u.trim() && /* @__PURE__ */ t.jsx("p", { className: "text-sm", children: u }, y)
1513
+ )
1514
+ ] }) }) })
1515
+ ] });
1516
+ }, Xr = ({ Detail: e, ChunkData: s, loading: n }) => {
1517
+ const { t: o } = he(), [a, d] = T(!0), [c, f] = T("");
1518
+ return U(() => {
1519
+ e?.description && f(e?.description);
1520
+ }, [e?.description]), U(() => {
1521
+ s?.message_chunk && f(s?.message_chunk);
1522
+ }, [s?.message_chunk, c]), !s && !e ? null : /* @__PURE__ */ t.jsxs("div", { className: "space-y-2 mb-3 w-full", children: [
1523
+ /* @__PURE__ */ t.jsxs(
1524
+ "button",
1525
+ {
1526
+ onClick: () => d((i) => !i),
1527
+ className: "inline-flex items-center gap-2 px-2 py-1 rounded-xl transition-colors border border-[#E6E6E6] dark:border-[#272626]",
1528
+ children: [
1529
+ n ? /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
1530
+ /* @__PURE__ */ t.jsx(Oe, { className: "w-4 h-4 animate-spin text-[#1990FF]" }),
1531
+ /* @__PURE__ */ t.jsx("span", { className: "text-xs text-[#999999] italic", children: o(`assistant.message.steps.${s?.chunk_type}`) })
1532
+ ] }) : /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
1533
+ /* @__PURE__ */ t.jsx(Nr, { className: "w-4 h-4 text-[#38C200]" }),
1534
+ /* @__PURE__ */ t.jsx("span", { className: "text-xs text-[#999999]", children: o("assistant.message.steps.thoughtTime") })
1535
+ ] }),
1536
+ a ? /* @__PURE__ */ t.jsx(_e, { className: "w-4 h-4" }) : /* @__PURE__ */ t.jsx(Ne, { className: "w-4 h-4" })
1537
+ ]
1538
+ }
1539
+ ),
1540
+ a && /* @__PURE__ */ t.jsx("div", { className: "pl-2 border-l-2 border-[#e5e5e5] dark:border-[#4e4e56]", children: /* @__PURE__ */ t.jsx("div", { className: "text-[#8b8b8b] dark:text-[#a6a6a6] space-y-2", children: c?.split(`
1541
+ `).map(
1542
+ (i, m) => i.trim() && /* @__PURE__ */ t.jsx("p", { className: "text-sm", children: i }, m)
1543
+ ) }) })
1544
+ ] });
1545
+ }, Qr = Qe((e) => ({
1546
+ synthesizeItem: null,
1547
+ setSynthesizeItem: (s) => e({ synthesizeItem: s }),
1548
+ uploadAttachments: [],
1549
+ setUploadAttachments: (s) => e({ uploadAttachments: s })
1550
+ })), Hr = ["timedout", "error"], Zr = ({
1551
+ id: e,
1552
+ content: s,
1553
+ question: n,
1554
+ actionClassName: o,
1555
+ actionIconSize: a,
1556
+ copyButtonId: d,
1557
+ onResend: c
1558
+ }) => {
1559
+ const [f, i] = T(!1), [m, u] = T(!1), [y, g] = T(!1), [N, P] = T(!1), [$, _] = T(!1), k = Hr.includes(e), { synthesizeItem: F, setSynthesizeItem: Q } = Qr(), ee = async () => {
1560
+ try {
1561
+ await Rt(s), i(!0);
1562
+ const M = setTimeout(() => {
1563
+ i(!1), clearTimeout(M);
1564
+ }, 2e3);
1565
+ } catch (M) {
1566
+ console.error("copy error:", M);
1567
+ }
1568
+ }, te = () => {
1569
+ u(!m), g(!1);
1570
+ }, H = () => {
1571
+ g(!y), u(!1);
1572
+ }, ne = async () => Q({ id: e, content: s }), v = () => {
1573
+ if (c) {
1574
+ _(!0), c();
1575
+ const M = setTimeout(() => {
1576
+ _(!1), clearTimeout(M);
1577
+ }, 1e3);
1578
+ }
1579
+ };
1580
+ return /* @__PURE__ */ t.jsxs("div", { className: de("flex items-center gap-1 mt-2", o), children: [
1581
+ !k && /* @__PURE__ */ t.jsx(
1582
+ "button",
1583
+ {
1584
+ id: d,
1585
+ onClick: ee,
1586
+ className: "p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg transition-colors",
1587
+ children: f ? /* @__PURE__ */ t.jsx(
1588
+ _t,
1589
+ {
1590
+ className: "w-4 h-4 text-[#38C200] dark:text-[#38C200]",
1591
+ style: {
1592
+ width: a,
1593
+ height: a
1594
+ }
1595
+ }
1596
+ ) : /* @__PURE__ */ t.jsx(
1597
+ Nt,
1598
+ {
1599
+ className: "w-4 h-4 text-[#666666] dark:text-[#A3A3A3]",
1600
+ style: {
1601
+ width: a,
1602
+ height: a
1603
+ }
1604
+ }
1605
+ )
1606
+ }
1607
+ ),
1608
+ !k && /* @__PURE__ */ t.jsx(
1609
+ "button",
1610
+ {
1611
+ onClick: te,
1612
+ className: `p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg transition-colors ${m ? "animate-shake" : ""}`,
1613
+ children: /* @__PURE__ */ t.jsx(
1614
+ Cr,
1615
+ {
1616
+ className: `w-4 h-4 ${m ? "text-[#1990FF] dark:text-[#1990FF]" : "text-[#666666] dark:text-[#A3A3A3]"}`,
1617
+ style: {
1618
+ width: a,
1619
+ height: a
1620
+ }
1621
+ }
1622
+ )
1623
+ }
1624
+ ),
1625
+ !k && /* @__PURE__ */ t.jsx(
1626
+ "button",
1627
+ {
1628
+ onClick: H,
1629
+ className: `p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg transition-colors ${y ? "animate-shake" : ""}`,
1630
+ children: /* @__PURE__ */ t.jsx(
1631
+ Er,
1632
+ {
1633
+ className: `w-4 h-4 ${y ? "text-[#1990FF] dark:text-[#1990FF]" : "text-[#666666] dark:text-[#A3A3A3]"}`,
1634
+ style: {
1635
+ width: a,
1636
+ height: a
1637
+ }
1638
+ }
1639
+ )
1640
+ }
1641
+ ),
1642
+ !k && /* @__PURE__ */ t.jsx(t.Fragment, { children: /* @__PURE__ */ t.jsx(
1643
+ "button",
1644
+ {
1645
+ onClick: ne,
1646
+ className: "p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg transition-colors",
1647
+ children: /* @__PURE__ */ t.jsx(
1648
+ Rr,
1649
+ {
1650
+ className: `w-4 h-4 ${N || F?.id === e ? "text-[#1990FF] dark:text-[#1990FF]" : "text-[#666666] dark:text-[#A3A3A3]"}`,
1651
+ style: {
1652
+ width: a,
1653
+ height: a
1654
+ }
1655
+ }
1656
+ )
1657
+ }
1658
+ ) }),
1659
+ n && /* @__PURE__ */ t.jsx(
1660
+ "button",
1661
+ {
1662
+ onClick: v,
1663
+ className: `p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg transition-colors ${$ ? "animate-spin" : ""}`,
1664
+ children: /* @__PURE__ */ t.jsx(
1665
+ Tr,
1666
+ {
1667
+ className: `w-4 h-4 ${$ ? "text-[#1990FF] dark:text-[#1990FF]" : "text-[#666666] dark:text-[#A3A3A3]"}`,
1668
+ style: {
1669
+ width: a,
1670
+ height: a
1671
+ }
1672
+ }
1673
+ )
1674
+ }
1675
+ )
1676
+ ] });
1677
+ };
1678
+ function es({ suggestions: e, onSelect: s }) {
1679
+ return !e || e.length === 0 ? null : /* @__PURE__ */ t.jsx("div", { className: "mt-4 flex flex-col gap-2", children: e.map((n, o) => /* @__PURE__ */ t.jsxs(
1680
+ "button",
1681
+ {
1682
+ onClick: () => s(n),
1683
+ className: "text-left inline-flex items-center px-3 py-1.5 rounded-full bg-white dark:bg-[#202126] border border-[#E4E5EF] dark:border-[#272626] text-sm text-[#666666] dark:text-[#A3A3A3] hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors w-fit max-w-full break-words whitespace-pre-wrap",
1684
+ children: [
1685
+ /* @__PURE__ */ t.jsx("span", { className: "break-all", children: n }),
1686
+ /* @__PURE__ */ t.jsx(Sr, { className: "w-3 h-3 ml-1.5 shrink-0" })
1687
+ ]
1688
+ },
1689
+ o
1690
+ )) });
1691
+ }
1692
+ const ts = ({ textToCopy: e }) => {
1693
+ const [s, n] = T(!1), o = async () => {
1694
+ try {
1695
+ await Rt(e), n(!0);
1696
+ const a = setTimeout(() => {
1697
+ n(!1), clearTimeout(a);
1698
+ }, 2e3);
1699
+ } catch (a) {
1700
+ console.error("copy error:", a);
1701
+ }
1702
+ };
1703
+ return /* @__PURE__ */ t.jsx(
1704
+ "button",
1705
+ {
1706
+ className: "p-1 bg-gray-200 dark:bg-gray-700 rounded",
1707
+ onClick: o,
1708
+ children: s ? /* @__PURE__ */ t.jsx(_t, { className: "w-4 h-4 text-[#38C200] dark:text-[#38C200]" }) : /* @__PURE__ */ t.jsx(Nt, { className: "w-4 h-4 text-gray-600 dark:text-gray-300" })
1709
+ }
1710
+ );
1711
+ }, Tt = {
1712
+ commands: async (e, s) => (console.log(`Mock command: ${e}`, s), { hits: { hits: [] } }),
1713
+ invokeBackend: async (e, s) => {
1714
+ console.log(`Mock invokeBackend: ${e}`, s);
1715
+ }
1716
+ }, Je = Qe((e) => ({
1717
+ currentAssistant: {},
1718
+ assistantList: [],
1719
+ currentService: { id: "mock-service-id" },
1720
+ setAssistant: (s) => e({ currentAssistant: s })
1721
+ })), St = Xe.forwardRef(({ className: e, ...s }, n) => /* @__PURE__ */ t.jsx(
1722
+ "div",
1723
+ {
1724
+ ref: n,
1725
+ className: de("relative inline-block", e),
1726
+ ...s
1727
+ }
1728
+ ));
1729
+ St.displayName = "Popover";
1730
+ const At = Xe.forwardRef(({ className: e, ...s }, n) => /* @__PURE__ */ t.jsx(
1731
+ "div",
1732
+ {
1733
+ ref: n,
1734
+ className: de("inline-block cursor-pointer", e),
1735
+ ...s
1736
+ }
1737
+ ));
1738
+ At.displayName = "PopoverTrigger";
1739
+ const Ft = Xe.forwardRef(({ className: e, side: s = "bottom", ...n }, o) => /* @__PURE__ */ t.jsx(
1740
+ "div",
1741
+ {
1742
+ ref: o,
1743
+ className: de(
1744
+ "absolute z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none",
1745
+ {
1746
+ "bottom-full mb-2": s === "top",
1747
+ "top-full mt-2": s === "bottom",
1748
+ "right-full mr-2": s === "left",
1749
+ "left-full ml-2": s === "right"
1750
+ },
1751
+ e
1752
+ ),
1753
+ ...n
1754
+ }
1755
+ ));
1756
+ Ft.displayName = "PopoverContent";
1757
+ const rs = (e) => {
1758
+ const { content: s, children: n, className: o } = e, [a, { setTrue: d, setFalse: c }] = Fr(!1);
1759
+ return /* @__PURE__ */ t.jsxs(St, { children: [
1760
+ /* @__PURE__ */ t.jsx(At, { onMouseOver: d, onMouseOut: c, children: n }),
1761
+ /* @__PURE__ */ t.jsx(
1762
+ Ft,
1763
+ {
1764
+ side: "top",
1765
+ className: de(
1766
+ "z-1000 p-2 rounded-md text-xs text-white bg-black/75 hidden",
1767
+ {
1768
+ block: a
1769
+ },
1770
+ o
1771
+ ),
1772
+ children: s
1773
+ }
1774
+ )
1775
+ ] });
1776
+ }, Ot = ({ name: e, className: s, style: n, ...o }) => /* @__PURE__ */ t.jsx("svg", { className: `icon dark:drop-shadow-[0_0_6px_rgb(255,255,255)] ${s || ""}`, style: n, ...o, children: /* @__PURE__ */ t.jsx("use", { xlinkHref: `#${e}` }) }), ss = (e, s) => {
1777
+ const n = new Array(e.length + s.length);
1778
+ for (let o = 0; o < e.length; o++)
1779
+ n[o] = e[o];
1780
+ for (let o = 0; o < s.length; o++)
1781
+ n[e.length + o] = s[o];
1782
+ return n;
1783
+ }, ns = (e, s) => ({
1784
+ classGroupId: e,
1785
+ validator: s
1786
+ }), Pt = (e = /* @__PURE__ */ new Map(), s = null, n) => ({
1787
+ nextPart: e,
1788
+ validators: s,
1789
+ classGroupId: n
1790
+ }), We = "-", xt = [], os = "arbitrary..", as = (e) => {
1791
+ const s = ls(e), {
1792
+ conflictingClassGroups: n,
1793
+ conflictingClassGroupModifiers: o
1794
+ } = e;
1795
+ return {
1796
+ getClassGroupId: (c) => {
1797
+ if (c.startsWith("[") && c.endsWith("]"))
1798
+ return is(c);
1799
+ const f = c.split(We), i = f[0] === "" && f.length > 1 ? 1 : 0;
1800
+ return It(f, i, s);
1801
+ },
1802
+ getConflictingClassGroupIds: (c, f) => {
1803
+ if (f) {
1804
+ const i = o[c], m = n[c];
1805
+ return i ? m ? ss(m, i) : i : m || xt;
1806
+ }
1807
+ return n[c] || xt;
1808
+ }
1809
+ };
1810
+ }, It = (e, s, n) => {
1811
+ if (e.length - s === 0)
1812
+ return n.classGroupId;
1813
+ const a = e[s], d = n.nextPart.get(a);
1814
+ if (d) {
1815
+ const m = It(e, s + 1, d);
1816
+ if (m) return m;
1817
+ }
1818
+ const c = n.validators;
1819
+ if (c === null)
1820
+ return;
1821
+ const f = s === 0 ? e.join(We) : e.slice(s).join(We), i = c.length;
1822
+ for (let m = 0; m < i; m++) {
1823
+ const u = c[m];
1824
+ if (u.validator(f))
1825
+ return u.classGroupId;
1826
+ }
1827
+ }, is = (e) => e.slice(1, -1).indexOf(":") === -1 ? void 0 : (() => {
1828
+ const s = e.slice(1, -1), n = s.indexOf(":"), o = s.slice(0, n);
1829
+ return o ? os + o : void 0;
1830
+ })(), ls = (e) => {
1831
+ const {
1832
+ theme: s,
1833
+ classGroups: n
1834
+ } = e;
1835
+ return cs(n, s);
1836
+ }, cs = (e, s) => {
1837
+ const n = Pt();
1838
+ for (const o in e) {
1839
+ const a = e[o];
1840
+ He(a, n, o, s);
1841
+ }
1842
+ return n;
1843
+ }, He = (e, s, n, o) => {
1844
+ const a = e.length;
1845
+ for (let d = 0; d < a; d++) {
1846
+ const c = e[d];
1847
+ ds(c, s, n, o);
1848
+ }
1849
+ }, ds = (e, s, n, o) => {
1850
+ if (typeof e == "string") {
1851
+ us(e, s, n);
1852
+ return;
1853
+ }
1854
+ if (typeof e == "function") {
1855
+ fs(e, s, n, o);
1856
+ return;
1857
+ }
1858
+ ms(e, s, n, o);
1859
+ }, us = (e, s, n) => {
1860
+ const o = e === "" ? s : Lt(s, e);
1861
+ o.classGroupId = n;
1862
+ }, fs = (e, s, n, o) => {
1863
+ if (ps(e)) {
1864
+ He(e(o), s, n, o);
1865
+ return;
1866
+ }
1867
+ s.validators === null && (s.validators = []), s.validators.push(ns(n, e));
1868
+ }, ms = (e, s, n, o) => {
1869
+ const a = Object.entries(e), d = a.length;
1870
+ for (let c = 0; c < d; c++) {
1871
+ const [f, i] = a[c];
1872
+ He(i, Lt(s, f), n, o);
1873
+ }
1874
+ }, Lt = (e, s) => {
1875
+ let n = e;
1876
+ const o = s.split(We), a = o.length;
1877
+ for (let d = 0; d < a; d++) {
1878
+ const c = o[d];
1879
+ let f = n.nextPart.get(c);
1880
+ f || (f = Pt(), n.nextPart.set(c, f)), n = f;
1881
+ }
1882
+ return n;
1883
+ }, ps = (e) => "isThemeGetter" in e && e.isThemeGetter === !0, hs = (e) => {
1884
+ if (e < 1)
1885
+ return {
1886
+ get: () => {
1887
+ },
1888
+ set: () => {
1889
+ }
1890
+ };
1891
+ let s = 0, n = /* @__PURE__ */ Object.create(null), o = /* @__PURE__ */ Object.create(null);
1892
+ const a = (d, c) => {
1893
+ n[d] = c, s++, s > e && (s = 0, o = n, n = /* @__PURE__ */ Object.create(null));
1894
+ };
1895
+ return {
1896
+ get(d) {
1897
+ let c = n[d];
1898
+ if (c !== void 0)
1899
+ return c;
1900
+ if ((c = o[d]) !== void 0)
1901
+ return a(d, c), c;
1902
+ },
1903
+ set(d, c) {
1904
+ d in n ? n[d] = c : a(d, c);
1905
+ }
1906
+ };
1907
+ }, Ke = "!", gt = ":", xs = [], bt = (e, s, n, o, a) => ({
1908
+ modifiers: e,
1909
+ hasImportantModifier: s,
1910
+ baseClassName: n,
1911
+ maybePostfixModifierPosition: o,
1912
+ isExternal: a
1913
+ }), gs = (e) => {
1914
+ const {
1915
+ prefix: s,
1916
+ experimentalParseClassName: n
1917
+ } = e;
1918
+ let o = (a) => {
1919
+ const d = [];
1920
+ let c = 0, f = 0, i = 0, m;
1921
+ const u = a.length;
1922
+ for (let $ = 0; $ < u; $++) {
1923
+ const _ = a[$];
1924
+ if (c === 0 && f === 0) {
1925
+ if (_ === gt) {
1926
+ d.push(a.slice(i, $)), i = $ + 1;
1927
+ continue;
1928
+ }
1929
+ if (_ === "/") {
1930
+ m = $;
1931
+ continue;
1932
+ }
1933
+ }
1934
+ _ === "[" ? c++ : _ === "]" ? c-- : _ === "(" ? f++ : _ === ")" && f--;
1935
+ }
1936
+ const y = d.length === 0 ? a : a.slice(i);
1937
+ let g = y, N = !1;
1938
+ y.endsWith(Ke) ? (g = y.slice(0, -1), N = !0) : (
1939
+ /**
1940
+ * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.
1941
+ * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864
1942
+ */
1943
+ y.startsWith(Ke) && (g = y.slice(1), N = !0)
1944
+ );
1945
+ const P = m && m > i ? m - i : void 0;
1946
+ return bt(d, N, g, P);
1947
+ };
1948
+ if (s) {
1949
+ const a = s + gt, d = o;
1950
+ o = (c) => c.startsWith(a) ? d(c.slice(a.length)) : bt(xs, !1, c, void 0, !0);
1951
+ }
1952
+ if (n) {
1953
+ const a = o;
1954
+ o = (d) => n({
1955
+ className: d,
1956
+ parseClassName: a
1957
+ });
1958
+ }
1959
+ return o;
1960
+ }, bs = (e) => {
1961
+ const s = /* @__PURE__ */ new Map();
1962
+ return e.orderSensitiveModifiers.forEach((n, o) => {
1963
+ s.set(n, 1e6 + o);
1964
+ }), (n) => {
1965
+ const o = [];
1966
+ let a = [];
1967
+ for (let d = 0; d < n.length; d++) {
1968
+ const c = n[d], f = c[0] === "[", i = s.has(c);
1969
+ f || i ? (a.length > 0 && (a.sort(), o.push(...a), a = []), o.push(c)) : a.push(c);
1970
+ }
1971
+ return a.length > 0 && (a.sort(), o.push(...a)), o;
1972
+ };
1973
+ }, ks = (e) => ({
1974
+ cache: hs(e.cacheSize),
1975
+ parseClassName: gs(e),
1976
+ sortModifiers: bs(e),
1977
+ ...as(e)
1978
+ }), ys = /\s+/, vs = (e, s) => {
1979
+ const {
1980
+ parseClassName: n,
1981
+ getClassGroupId: o,
1982
+ getConflictingClassGroupIds: a,
1983
+ sortModifiers: d
1984
+ } = s, c = [], f = e.trim().split(ys);
1985
+ let i = "";
1986
+ for (let m = f.length - 1; m >= 0; m -= 1) {
1987
+ const u = f[m], {
1988
+ isExternal: y,
1989
+ modifiers: g,
1990
+ hasImportantModifier: N,
1991
+ baseClassName: P,
1992
+ maybePostfixModifierPosition: $
1993
+ } = n(u);
1994
+ if (y) {
1995
+ i = u + (i.length > 0 ? " " + i : i);
1996
+ continue;
1997
+ }
1998
+ let _ = !!$, k = o(_ ? P.substring(0, $) : P);
1999
+ if (!k) {
2000
+ if (!_) {
2001
+ i = u + (i.length > 0 ? " " + i : i);
2002
+ continue;
2003
+ }
2004
+ if (k = o(P), !k) {
2005
+ i = u + (i.length > 0 ? " " + i : i);
2006
+ continue;
2007
+ }
2008
+ _ = !1;
2009
+ }
2010
+ const F = g.length === 0 ? "" : g.length === 1 ? g[0] : d(g).join(":"), Q = N ? F + Ke : F, ee = Q + k;
2011
+ if (c.indexOf(ee) > -1)
2012
+ continue;
2013
+ c.push(ee);
2014
+ const te = a(k, _);
2015
+ for (let H = 0; H < te.length; ++H) {
2016
+ const ne = te[H];
2017
+ c.push(Q + ne);
2018
+ }
2019
+ i = u + (i.length > 0 ? " " + i : i);
2020
+ }
2021
+ return i;
2022
+ }, ws = (...e) => {
2023
+ let s = 0, n, o, a = "";
2024
+ for (; s < e.length; )
2025
+ (n = e[s++]) && (o = Mt(n)) && (a && (a += " "), a += o);
2026
+ return a;
2027
+ }, Mt = (e) => {
2028
+ if (typeof e == "string")
2029
+ return e;
2030
+ let s, n = "";
2031
+ for (let o = 0; o < e.length; o++)
2032
+ e[o] && (s = Mt(e[o])) && (n && (n += " "), n += s);
2033
+ return n;
2034
+ }, js = (e, ...s) => {
2035
+ let n, o, a, d;
2036
+ const c = (i) => {
2037
+ const m = s.reduce((u, y) => y(u), e());
2038
+ return n = ks(m), o = n.cache.get, a = n.cache.set, d = f, f(i);
2039
+ }, f = (i) => {
2040
+ const m = o(i);
2041
+ if (m)
2042
+ return m;
2043
+ const u = vs(i, n);
2044
+ return a(i, u), u;
2045
+ };
2046
+ return d = c, (...i) => d(ws(...i));
2047
+ }, _s = [], B = (e) => {
2048
+ const s = (n) => n[e] || _s;
2049
+ return s.isThemeGetter = !0, s;
2050
+ }, zt = /^\[(?:(\w[\w-]*):)?(.+)\]$/i, Wt = /^\((?:(\w[\w-]*):)?(.+)\)$/i, Ns = /^\d+\/\d+$/, Cs = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/, Es = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/, Rs = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/, Ts = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/, Ss = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/, je = (e) => Ns.test(e), C = (e) => !!e && !Number.isNaN(Number(e)), pe = (e) => !!e && Number.isInteger(Number(e)), Ue = (e) => e.endsWith("%") && C(e.slice(0, -1)), ce = (e) => Cs.test(e), As = () => !0, Fs = (e) => (
2051
+ // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
2052
+ // For example, `hsl(0 0% 0%)` would be classified as a length without this check.
2053
+ // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.
2054
+ Es.test(e) && !Rs.test(e)
2055
+ ), $t = () => !1, Os = (e) => Ts.test(e), Ps = (e) => Ss.test(e), Is = (e) => !h(e) && !x(e), Ls = (e) => Ce(e, Gt, $t), h = (e) => zt.test(e), ye = (e) => Ce(e, qt, Fs), Ye = (e) => Ce(e, Bs, C), kt = (e) => Ce(e, Bt, $t), Ms = (e) => Ce(e, Vt, Ps), Me = (e) => Ce(e, Dt, Os), x = (e) => Wt.test(e), Fe = (e) => Ee(e, qt), zs = (e) => Ee(e, Vs), yt = (e) => Ee(e, Bt), Ws = (e) => Ee(e, Gt), $s = (e) => Ee(e, Vt), ze = (e) => Ee(e, Dt, !0), Ce = (e, s, n) => {
2056
+ const o = zt.exec(e);
2057
+ return o ? o[1] ? s(o[1]) : n(o[2]) : !1;
2058
+ }, Ee = (e, s, n = !1) => {
2059
+ const o = Wt.exec(e);
2060
+ return o ? o[1] ? s(o[1]) : n : !1;
2061
+ }, Bt = (e) => e === "position" || e === "percentage", Vt = (e) => e === "image" || e === "url", Gt = (e) => e === "length" || e === "size" || e === "bg-size", qt = (e) => e === "length", Bs = (e) => e === "number", Vs = (e) => e === "family-name", Dt = (e) => e === "shadow", Gs = () => {
2062
+ const e = B("color"), s = B("font"), n = B("text"), o = B("font-weight"), a = B("tracking"), d = B("leading"), c = B("breakpoint"), f = B("container"), i = B("spacing"), m = B("radius"), u = B("shadow"), y = B("inset-shadow"), g = B("text-shadow"), N = B("drop-shadow"), P = B("blur"), $ = B("perspective"), _ = B("aspect"), k = B("ease"), F = B("animate"), Q = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"], ee = () => [
2063
+ "center",
2064
+ "top",
2065
+ "bottom",
2066
+ "left",
2067
+ "right",
2068
+ "top-left",
2069
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
2070
+ "left-top",
2071
+ "top-right",
2072
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
2073
+ "right-top",
2074
+ "bottom-right",
2075
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
2076
+ "right-bottom",
2077
+ "bottom-left",
2078
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
2079
+ "left-bottom"
2080
+ ], te = () => [...ee(), x, h], H = () => ["auto", "hidden", "clip", "visible", "scroll"], ne = () => ["auto", "contain", "none"], v = () => [x, h, i], M = () => [je, "full", "auto", ...v()], ue = () => [pe, "none", "subgrid", x, h], Z = () => ["auto", {
2081
+ span: ["full", pe, x, h]
2082
+ }, pe, x, h], ae = () => [pe, "auto", x, h], V = () => ["auto", "min", "max", "fr", x, h], Y = () => ["start", "end", "center", "between", "around", "evenly", "stretch", "baseline", "center-safe", "end-safe"], G = () => ["start", "end", "center", "stretch", "center-safe", "end-safe"], I = () => ["auto", ...v()], J = () => [je, "auto", "full", "dvw", "dvh", "lvw", "lvh", "svw", "svh", "min", "max", "fit", ...v()], b = () => [e, x, h], oe = () => [...ee(), yt, kt, {
2083
+ position: [x, h]
2084
+ }], xe = () => ["no-repeat", {
2085
+ repeat: ["", "x", "y", "space", "round"]
2086
+ }], re = () => ["auto", "cover", "contain", Ws, Ls, {
2087
+ size: [x, h]
2088
+ }], ie = () => [Ue, Fe, ye], z = () => [
2089
+ // Deprecated since Tailwind CSS v4.0.0
2090
+ "",
2091
+ "none",
2092
+ "full",
2093
+ m,
2094
+ x,
2095
+ h
2096
+ ], q = () => ["", C, Fe, ye], fe = () => ["solid", "dashed", "dotted", "double"], me = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"], O = () => [C, Ue, yt, kt], w = () => [
2097
+ // Deprecated since Tailwind CSS v4.0.0
2098
+ "",
2099
+ "none",
2100
+ P,
2101
+ x,
2102
+ h
2103
+ ], K = () => ["none", C, x, h], le = () => ["none", C, x, h], Re = () => [C, x, h], ge = () => [je, "full", ...v()];
2104
+ return {
2105
+ cacheSize: 500,
2106
+ theme: {
2107
+ animate: ["spin", "ping", "pulse", "bounce"],
2108
+ aspect: ["video"],
2109
+ blur: [ce],
2110
+ breakpoint: [ce],
2111
+ color: [As],
2112
+ container: [ce],
2113
+ "drop-shadow": [ce],
2114
+ ease: ["in", "out", "in-out"],
2115
+ font: [Is],
2116
+ "font-weight": ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black"],
2117
+ "inset-shadow": [ce],
2118
+ leading: ["none", "tight", "snug", "normal", "relaxed", "loose"],
2119
+ perspective: ["dramatic", "near", "normal", "midrange", "distant", "none"],
2120
+ radius: [ce],
2121
+ shadow: [ce],
2122
+ spacing: ["px", C],
2123
+ text: [ce],
2124
+ "text-shadow": [ce],
2125
+ tracking: ["tighter", "tight", "normal", "wide", "wider", "widest"]
2126
+ },
2127
+ classGroups: {
2128
+ // --------------
2129
+ // --- Layout ---
2130
+ // --------------
2131
+ /**
2132
+ * Aspect Ratio
2133
+ * @see https://tailwindcss.com/docs/aspect-ratio
2134
+ */
2135
+ aspect: [{
2136
+ aspect: ["auto", "square", je, h, x, _]
2137
+ }],
2138
+ /**
2139
+ * Container
2140
+ * @see https://tailwindcss.com/docs/container
2141
+ * @deprecated since Tailwind CSS v4.0.0
2142
+ */
2143
+ container: ["container"],
2144
+ /**
2145
+ * Columns
2146
+ * @see https://tailwindcss.com/docs/columns
2147
+ */
2148
+ columns: [{
2149
+ columns: [C, h, x, f]
2150
+ }],
2151
+ /**
2152
+ * Break After
2153
+ * @see https://tailwindcss.com/docs/break-after
2154
+ */
2155
+ "break-after": [{
2156
+ "break-after": Q()
2157
+ }],
2158
+ /**
2159
+ * Break Before
2160
+ * @see https://tailwindcss.com/docs/break-before
2161
+ */
2162
+ "break-before": [{
2163
+ "break-before": Q()
2164
+ }],
2165
+ /**
2166
+ * Break Inside
2167
+ * @see https://tailwindcss.com/docs/break-inside
2168
+ */
2169
+ "break-inside": [{
2170
+ "break-inside": ["auto", "avoid", "avoid-page", "avoid-column"]
2171
+ }],
2172
+ /**
2173
+ * Box Decoration Break
2174
+ * @see https://tailwindcss.com/docs/box-decoration-break
2175
+ */
2176
+ "box-decoration": [{
2177
+ "box-decoration": ["slice", "clone"]
2178
+ }],
2179
+ /**
2180
+ * Box Sizing
2181
+ * @see https://tailwindcss.com/docs/box-sizing
2182
+ */
2183
+ box: [{
2184
+ box: ["border", "content"]
2185
+ }],
2186
+ /**
2187
+ * Display
2188
+ * @see https://tailwindcss.com/docs/display
2189
+ */
2190
+ display: ["block", "inline-block", "inline", "flex", "inline-flex", "table", "inline-table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row-group", "table-row", "flow-root", "grid", "inline-grid", "contents", "list-item", "hidden"],
2191
+ /**
2192
+ * Screen Reader Only
2193
+ * @see https://tailwindcss.com/docs/display#screen-reader-only
2194
+ */
2195
+ sr: ["sr-only", "not-sr-only"],
2196
+ /**
2197
+ * Floats
2198
+ * @see https://tailwindcss.com/docs/float
2199
+ */
2200
+ float: [{
2201
+ float: ["right", "left", "none", "start", "end"]
2202
+ }],
2203
+ /**
2204
+ * Clear
2205
+ * @see https://tailwindcss.com/docs/clear
2206
+ */
2207
+ clear: [{
2208
+ clear: ["left", "right", "both", "none", "start", "end"]
2209
+ }],
2210
+ /**
2211
+ * Isolation
2212
+ * @see https://tailwindcss.com/docs/isolation
2213
+ */
2214
+ isolation: ["isolate", "isolation-auto"],
2215
+ /**
2216
+ * Object Fit
2217
+ * @see https://tailwindcss.com/docs/object-fit
2218
+ */
2219
+ "object-fit": [{
2220
+ object: ["contain", "cover", "fill", "none", "scale-down"]
2221
+ }],
2222
+ /**
2223
+ * Object Position
2224
+ * @see https://tailwindcss.com/docs/object-position
2225
+ */
2226
+ "object-position": [{
2227
+ object: te()
2228
+ }],
2229
+ /**
2230
+ * Overflow
2231
+ * @see https://tailwindcss.com/docs/overflow
2232
+ */
2233
+ overflow: [{
2234
+ overflow: H()
2235
+ }],
2236
+ /**
2237
+ * Overflow X
2238
+ * @see https://tailwindcss.com/docs/overflow
2239
+ */
2240
+ "overflow-x": [{
2241
+ "overflow-x": H()
2242
+ }],
2243
+ /**
2244
+ * Overflow Y
2245
+ * @see https://tailwindcss.com/docs/overflow
2246
+ */
2247
+ "overflow-y": [{
2248
+ "overflow-y": H()
2249
+ }],
2250
+ /**
2251
+ * Overscroll Behavior
2252
+ * @see https://tailwindcss.com/docs/overscroll-behavior
2253
+ */
2254
+ overscroll: [{
2255
+ overscroll: ne()
2256
+ }],
2257
+ /**
2258
+ * Overscroll Behavior X
2259
+ * @see https://tailwindcss.com/docs/overscroll-behavior
2260
+ */
2261
+ "overscroll-x": [{
2262
+ "overscroll-x": ne()
2263
+ }],
2264
+ /**
2265
+ * Overscroll Behavior Y
2266
+ * @see https://tailwindcss.com/docs/overscroll-behavior
2267
+ */
2268
+ "overscroll-y": [{
2269
+ "overscroll-y": ne()
2270
+ }],
2271
+ /**
2272
+ * Position
2273
+ * @see https://tailwindcss.com/docs/position
2274
+ */
2275
+ position: ["static", "fixed", "absolute", "relative", "sticky"],
2276
+ /**
2277
+ * Top / Right / Bottom / Left
2278
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2279
+ */
2280
+ inset: [{
2281
+ inset: M()
2282
+ }],
2283
+ /**
2284
+ * Right / Left
2285
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2286
+ */
2287
+ "inset-x": [{
2288
+ "inset-x": M()
2289
+ }],
2290
+ /**
2291
+ * Top / Bottom
2292
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2293
+ */
2294
+ "inset-y": [{
2295
+ "inset-y": M()
2296
+ }],
2297
+ /**
2298
+ * Start
2299
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2300
+ */
2301
+ start: [{
2302
+ start: M()
2303
+ }],
2304
+ /**
2305
+ * End
2306
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2307
+ */
2308
+ end: [{
2309
+ end: M()
2310
+ }],
2311
+ /**
2312
+ * Top
2313
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2314
+ */
2315
+ top: [{
2316
+ top: M()
2317
+ }],
2318
+ /**
2319
+ * Right
2320
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2321
+ */
2322
+ right: [{
2323
+ right: M()
2324
+ }],
2325
+ /**
2326
+ * Bottom
2327
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2328
+ */
2329
+ bottom: [{
2330
+ bottom: M()
2331
+ }],
2332
+ /**
2333
+ * Left
2334
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2335
+ */
2336
+ left: [{
2337
+ left: M()
2338
+ }],
2339
+ /**
2340
+ * Visibility
2341
+ * @see https://tailwindcss.com/docs/visibility
2342
+ */
2343
+ visibility: ["visible", "invisible", "collapse"],
2344
+ /**
2345
+ * Z-Index
2346
+ * @see https://tailwindcss.com/docs/z-index
2347
+ */
2348
+ z: [{
2349
+ z: [pe, "auto", x, h]
2350
+ }],
2351
+ // ------------------------
2352
+ // --- Flexbox and Grid ---
2353
+ // ------------------------
2354
+ /**
2355
+ * Flex Basis
2356
+ * @see https://tailwindcss.com/docs/flex-basis
2357
+ */
2358
+ basis: [{
2359
+ basis: [je, "full", "auto", f, ...v()]
2360
+ }],
2361
+ /**
2362
+ * Flex Direction
2363
+ * @see https://tailwindcss.com/docs/flex-direction
2364
+ */
2365
+ "flex-direction": [{
2366
+ flex: ["row", "row-reverse", "col", "col-reverse"]
2367
+ }],
2368
+ /**
2369
+ * Flex Wrap
2370
+ * @see https://tailwindcss.com/docs/flex-wrap
2371
+ */
2372
+ "flex-wrap": [{
2373
+ flex: ["nowrap", "wrap", "wrap-reverse"]
2374
+ }],
2375
+ /**
2376
+ * Flex
2377
+ * @see https://tailwindcss.com/docs/flex
2378
+ */
2379
+ flex: [{
2380
+ flex: [C, je, "auto", "initial", "none", h]
2381
+ }],
2382
+ /**
2383
+ * Flex Grow
2384
+ * @see https://tailwindcss.com/docs/flex-grow
2385
+ */
2386
+ grow: [{
2387
+ grow: ["", C, x, h]
2388
+ }],
2389
+ /**
2390
+ * Flex Shrink
2391
+ * @see https://tailwindcss.com/docs/flex-shrink
2392
+ */
2393
+ shrink: [{
2394
+ shrink: ["", C, x, h]
2395
+ }],
2396
+ /**
2397
+ * Order
2398
+ * @see https://tailwindcss.com/docs/order
2399
+ */
2400
+ order: [{
2401
+ order: [pe, "first", "last", "none", x, h]
2402
+ }],
2403
+ /**
2404
+ * Grid Template Columns
2405
+ * @see https://tailwindcss.com/docs/grid-template-columns
2406
+ */
2407
+ "grid-cols": [{
2408
+ "grid-cols": ue()
2409
+ }],
2410
+ /**
2411
+ * Grid Column Start / End
2412
+ * @see https://tailwindcss.com/docs/grid-column
2413
+ */
2414
+ "col-start-end": [{
2415
+ col: Z()
2416
+ }],
2417
+ /**
2418
+ * Grid Column Start
2419
+ * @see https://tailwindcss.com/docs/grid-column
2420
+ */
2421
+ "col-start": [{
2422
+ "col-start": ae()
2423
+ }],
2424
+ /**
2425
+ * Grid Column End
2426
+ * @see https://tailwindcss.com/docs/grid-column
2427
+ */
2428
+ "col-end": [{
2429
+ "col-end": ae()
2430
+ }],
2431
+ /**
2432
+ * Grid Template Rows
2433
+ * @see https://tailwindcss.com/docs/grid-template-rows
2434
+ */
2435
+ "grid-rows": [{
2436
+ "grid-rows": ue()
2437
+ }],
2438
+ /**
2439
+ * Grid Row Start / End
2440
+ * @see https://tailwindcss.com/docs/grid-row
2441
+ */
2442
+ "row-start-end": [{
2443
+ row: Z()
2444
+ }],
2445
+ /**
2446
+ * Grid Row Start
2447
+ * @see https://tailwindcss.com/docs/grid-row
2448
+ */
2449
+ "row-start": [{
2450
+ "row-start": ae()
2451
+ }],
2452
+ /**
2453
+ * Grid Row End
2454
+ * @see https://tailwindcss.com/docs/grid-row
2455
+ */
2456
+ "row-end": [{
2457
+ "row-end": ae()
2458
+ }],
2459
+ /**
2460
+ * Grid Auto Flow
2461
+ * @see https://tailwindcss.com/docs/grid-auto-flow
2462
+ */
2463
+ "grid-flow": [{
2464
+ "grid-flow": ["row", "col", "dense", "row-dense", "col-dense"]
2465
+ }],
2466
+ /**
2467
+ * Grid Auto Columns
2468
+ * @see https://tailwindcss.com/docs/grid-auto-columns
2469
+ */
2470
+ "auto-cols": [{
2471
+ "auto-cols": V()
2472
+ }],
2473
+ /**
2474
+ * Grid Auto Rows
2475
+ * @see https://tailwindcss.com/docs/grid-auto-rows
2476
+ */
2477
+ "auto-rows": [{
2478
+ "auto-rows": V()
2479
+ }],
2480
+ /**
2481
+ * Gap
2482
+ * @see https://tailwindcss.com/docs/gap
2483
+ */
2484
+ gap: [{
2485
+ gap: v()
2486
+ }],
2487
+ /**
2488
+ * Gap X
2489
+ * @see https://tailwindcss.com/docs/gap
2490
+ */
2491
+ "gap-x": [{
2492
+ "gap-x": v()
2493
+ }],
2494
+ /**
2495
+ * Gap Y
2496
+ * @see https://tailwindcss.com/docs/gap
2497
+ */
2498
+ "gap-y": [{
2499
+ "gap-y": v()
2500
+ }],
2501
+ /**
2502
+ * Justify Content
2503
+ * @see https://tailwindcss.com/docs/justify-content
2504
+ */
2505
+ "justify-content": [{
2506
+ justify: [...Y(), "normal"]
2507
+ }],
2508
+ /**
2509
+ * Justify Items
2510
+ * @see https://tailwindcss.com/docs/justify-items
2511
+ */
2512
+ "justify-items": [{
2513
+ "justify-items": [...G(), "normal"]
2514
+ }],
2515
+ /**
2516
+ * Justify Self
2517
+ * @see https://tailwindcss.com/docs/justify-self
2518
+ */
2519
+ "justify-self": [{
2520
+ "justify-self": ["auto", ...G()]
2521
+ }],
2522
+ /**
2523
+ * Align Content
2524
+ * @see https://tailwindcss.com/docs/align-content
2525
+ */
2526
+ "align-content": [{
2527
+ content: ["normal", ...Y()]
2528
+ }],
2529
+ /**
2530
+ * Align Items
2531
+ * @see https://tailwindcss.com/docs/align-items
2532
+ */
2533
+ "align-items": [{
2534
+ items: [...G(), {
2535
+ baseline: ["", "last"]
2536
+ }]
2537
+ }],
2538
+ /**
2539
+ * Align Self
2540
+ * @see https://tailwindcss.com/docs/align-self
2541
+ */
2542
+ "align-self": [{
2543
+ self: ["auto", ...G(), {
2544
+ baseline: ["", "last"]
2545
+ }]
2546
+ }],
2547
+ /**
2548
+ * Place Content
2549
+ * @see https://tailwindcss.com/docs/place-content
2550
+ */
2551
+ "place-content": [{
2552
+ "place-content": Y()
2553
+ }],
2554
+ /**
2555
+ * Place Items
2556
+ * @see https://tailwindcss.com/docs/place-items
2557
+ */
2558
+ "place-items": [{
2559
+ "place-items": [...G(), "baseline"]
2560
+ }],
2561
+ /**
2562
+ * Place Self
2563
+ * @see https://tailwindcss.com/docs/place-self
2564
+ */
2565
+ "place-self": [{
2566
+ "place-self": ["auto", ...G()]
2567
+ }],
2568
+ // Spacing
2569
+ /**
2570
+ * Padding
2571
+ * @see https://tailwindcss.com/docs/padding
2572
+ */
2573
+ p: [{
2574
+ p: v()
2575
+ }],
2576
+ /**
2577
+ * Padding X
2578
+ * @see https://tailwindcss.com/docs/padding
2579
+ */
2580
+ px: [{
2581
+ px: v()
2582
+ }],
2583
+ /**
2584
+ * Padding Y
2585
+ * @see https://tailwindcss.com/docs/padding
2586
+ */
2587
+ py: [{
2588
+ py: v()
2589
+ }],
2590
+ /**
2591
+ * Padding Start
2592
+ * @see https://tailwindcss.com/docs/padding
2593
+ */
2594
+ ps: [{
2595
+ ps: v()
2596
+ }],
2597
+ /**
2598
+ * Padding End
2599
+ * @see https://tailwindcss.com/docs/padding
2600
+ */
2601
+ pe: [{
2602
+ pe: v()
2603
+ }],
2604
+ /**
2605
+ * Padding Top
2606
+ * @see https://tailwindcss.com/docs/padding
2607
+ */
2608
+ pt: [{
2609
+ pt: v()
2610
+ }],
2611
+ /**
2612
+ * Padding Right
2613
+ * @see https://tailwindcss.com/docs/padding
2614
+ */
2615
+ pr: [{
2616
+ pr: v()
2617
+ }],
2618
+ /**
2619
+ * Padding Bottom
2620
+ * @see https://tailwindcss.com/docs/padding
2621
+ */
2622
+ pb: [{
2623
+ pb: v()
2624
+ }],
2625
+ /**
2626
+ * Padding Left
2627
+ * @see https://tailwindcss.com/docs/padding
2628
+ */
2629
+ pl: [{
2630
+ pl: v()
2631
+ }],
2632
+ /**
2633
+ * Margin
2634
+ * @see https://tailwindcss.com/docs/margin
2635
+ */
2636
+ m: [{
2637
+ m: I()
2638
+ }],
2639
+ /**
2640
+ * Margin X
2641
+ * @see https://tailwindcss.com/docs/margin
2642
+ */
2643
+ mx: [{
2644
+ mx: I()
2645
+ }],
2646
+ /**
2647
+ * Margin Y
2648
+ * @see https://tailwindcss.com/docs/margin
2649
+ */
2650
+ my: [{
2651
+ my: I()
2652
+ }],
2653
+ /**
2654
+ * Margin Start
2655
+ * @see https://tailwindcss.com/docs/margin
2656
+ */
2657
+ ms: [{
2658
+ ms: I()
2659
+ }],
2660
+ /**
2661
+ * Margin End
2662
+ * @see https://tailwindcss.com/docs/margin
2663
+ */
2664
+ me: [{
2665
+ me: I()
2666
+ }],
2667
+ /**
2668
+ * Margin Top
2669
+ * @see https://tailwindcss.com/docs/margin
2670
+ */
2671
+ mt: [{
2672
+ mt: I()
2673
+ }],
2674
+ /**
2675
+ * Margin Right
2676
+ * @see https://tailwindcss.com/docs/margin
2677
+ */
2678
+ mr: [{
2679
+ mr: I()
2680
+ }],
2681
+ /**
2682
+ * Margin Bottom
2683
+ * @see https://tailwindcss.com/docs/margin
2684
+ */
2685
+ mb: [{
2686
+ mb: I()
2687
+ }],
2688
+ /**
2689
+ * Margin Left
2690
+ * @see https://tailwindcss.com/docs/margin
2691
+ */
2692
+ ml: [{
2693
+ ml: I()
2694
+ }],
2695
+ /**
2696
+ * Space Between X
2697
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
2698
+ */
2699
+ "space-x": [{
2700
+ "space-x": v()
2701
+ }],
2702
+ /**
2703
+ * Space Between X Reverse
2704
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
2705
+ */
2706
+ "space-x-reverse": ["space-x-reverse"],
2707
+ /**
2708
+ * Space Between Y
2709
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
2710
+ */
2711
+ "space-y": [{
2712
+ "space-y": v()
2713
+ }],
2714
+ /**
2715
+ * Space Between Y Reverse
2716
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
2717
+ */
2718
+ "space-y-reverse": ["space-y-reverse"],
2719
+ // --------------
2720
+ // --- Sizing ---
2721
+ // --------------
2722
+ /**
2723
+ * Size
2724
+ * @see https://tailwindcss.com/docs/width#setting-both-width-and-height
2725
+ */
2726
+ size: [{
2727
+ size: J()
2728
+ }],
2729
+ /**
2730
+ * Width
2731
+ * @see https://tailwindcss.com/docs/width
2732
+ */
2733
+ w: [{
2734
+ w: [f, "screen", ...J()]
2735
+ }],
2736
+ /**
2737
+ * Min-Width
2738
+ * @see https://tailwindcss.com/docs/min-width
2739
+ */
2740
+ "min-w": [{
2741
+ "min-w": [
2742
+ f,
2743
+ "screen",
2744
+ /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
2745
+ "none",
2746
+ ...J()
2747
+ ]
2748
+ }],
2749
+ /**
2750
+ * Max-Width
2751
+ * @see https://tailwindcss.com/docs/max-width
2752
+ */
2753
+ "max-w": [{
2754
+ "max-w": [
2755
+ f,
2756
+ "screen",
2757
+ "none",
2758
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
2759
+ "prose",
2760
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
2761
+ {
2762
+ screen: [c]
2763
+ },
2764
+ ...J()
2765
+ ]
2766
+ }],
2767
+ /**
2768
+ * Height
2769
+ * @see https://tailwindcss.com/docs/height
2770
+ */
2771
+ h: [{
2772
+ h: ["screen", "lh", ...J()]
2773
+ }],
2774
+ /**
2775
+ * Min-Height
2776
+ * @see https://tailwindcss.com/docs/min-height
2777
+ */
2778
+ "min-h": [{
2779
+ "min-h": ["screen", "lh", "none", ...J()]
2780
+ }],
2781
+ /**
2782
+ * Max-Height
2783
+ * @see https://tailwindcss.com/docs/max-height
2784
+ */
2785
+ "max-h": [{
2786
+ "max-h": ["screen", "lh", ...J()]
2787
+ }],
2788
+ // ------------------
2789
+ // --- Typography ---
2790
+ // ------------------
2791
+ /**
2792
+ * Font Size
2793
+ * @see https://tailwindcss.com/docs/font-size
2794
+ */
2795
+ "font-size": [{
2796
+ text: ["base", n, Fe, ye]
2797
+ }],
2798
+ /**
2799
+ * Font Smoothing
2800
+ * @see https://tailwindcss.com/docs/font-smoothing
2801
+ */
2802
+ "font-smoothing": ["antialiased", "subpixel-antialiased"],
2803
+ /**
2804
+ * Font Style
2805
+ * @see https://tailwindcss.com/docs/font-style
2806
+ */
2807
+ "font-style": ["italic", "not-italic"],
2808
+ /**
2809
+ * Font Weight
2810
+ * @see https://tailwindcss.com/docs/font-weight
2811
+ */
2812
+ "font-weight": [{
2813
+ font: [o, x, Ye]
2814
+ }],
2815
+ /**
2816
+ * Font Stretch
2817
+ * @see https://tailwindcss.com/docs/font-stretch
2818
+ */
2819
+ "font-stretch": [{
2820
+ "font-stretch": ["ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "normal", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded", Ue, h]
2821
+ }],
2822
+ /**
2823
+ * Font Family
2824
+ * @see https://tailwindcss.com/docs/font-family
2825
+ */
2826
+ "font-family": [{
2827
+ font: [zs, h, s]
2828
+ }],
2829
+ /**
2830
+ * Font Variant Numeric
2831
+ * @see https://tailwindcss.com/docs/font-variant-numeric
2832
+ */
2833
+ "fvn-normal": ["normal-nums"],
2834
+ /**
2835
+ * Font Variant Numeric
2836
+ * @see https://tailwindcss.com/docs/font-variant-numeric
2837
+ */
2838
+ "fvn-ordinal": ["ordinal"],
2839
+ /**
2840
+ * Font Variant Numeric
2841
+ * @see https://tailwindcss.com/docs/font-variant-numeric
2842
+ */
2843
+ "fvn-slashed-zero": ["slashed-zero"],
2844
+ /**
2845
+ * Font Variant Numeric
2846
+ * @see https://tailwindcss.com/docs/font-variant-numeric
2847
+ */
2848
+ "fvn-figure": ["lining-nums", "oldstyle-nums"],
2849
+ /**
2850
+ * Font Variant Numeric
2851
+ * @see https://tailwindcss.com/docs/font-variant-numeric
2852
+ */
2853
+ "fvn-spacing": ["proportional-nums", "tabular-nums"],
2854
+ /**
2855
+ * Font Variant Numeric
2856
+ * @see https://tailwindcss.com/docs/font-variant-numeric
2857
+ */
2858
+ "fvn-fraction": ["diagonal-fractions", "stacked-fractions"],
2859
+ /**
2860
+ * Letter Spacing
2861
+ * @see https://tailwindcss.com/docs/letter-spacing
2862
+ */
2863
+ tracking: [{
2864
+ tracking: [a, x, h]
2865
+ }],
2866
+ /**
2867
+ * Line Clamp
2868
+ * @see https://tailwindcss.com/docs/line-clamp
2869
+ */
2870
+ "line-clamp": [{
2871
+ "line-clamp": [C, "none", x, Ye]
2872
+ }],
2873
+ /**
2874
+ * Line Height
2875
+ * @see https://tailwindcss.com/docs/line-height
2876
+ */
2877
+ leading: [{
2878
+ leading: [
2879
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
2880
+ d,
2881
+ ...v()
2882
+ ]
2883
+ }],
2884
+ /**
2885
+ * List Style Image
2886
+ * @see https://tailwindcss.com/docs/list-style-image
2887
+ */
2888
+ "list-image": [{
2889
+ "list-image": ["none", x, h]
2890
+ }],
2891
+ /**
2892
+ * List Style Position
2893
+ * @see https://tailwindcss.com/docs/list-style-position
2894
+ */
2895
+ "list-style-position": [{
2896
+ list: ["inside", "outside"]
2897
+ }],
2898
+ /**
2899
+ * List Style Type
2900
+ * @see https://tailwindcss.com/docs/list-style-type
2901
+ */
2902
+ "list-style-type": [{
2903
+ list: ["disc", "decimal", "none", x, h]
2904
+ }],
2905
+ /**
2906
+ * Text Alignment
2907
+ * @see https://tailwindcss.com/docs/text-align
2908
+ */
2909
+ "text-alignment": [{
2910
+ text: ["left", "center", "right", "justify", "start", "end"]
2911
+ }],
2912
+ /**
2913
+ * Placeholder Color
2914
+ * @deprecated since Tailwind CSS v3.0.0
2915
+ * @see https://v3.tailwindcss.com/docs/placeholder-color
2916
+ */
2917
+ "placeholder-color": [{
2918
+ placeholder: b()
2919
+ }],
2920
+ /**
2921
+ * Text Color
2922
+ * @see https://tailwindcss.com/docs/text-color
2923
+ */
2924
+ "text-color": [{
2925
+ text: b()
2926
+ }],
2927
+ /**
2928
+ * Text Decoration
2929
+ * @see https://tailwindcss.com/docs/text-decoration
2930
+ */
2931
+ "text-decoration": ["underline", "overline", "line-through", "no-underline"],
2932
+ /**
2933
+ * Text Decoration Style
2934
+ * @see https://tailwindcss.com/docs/text-decoration-style
2935
+ */
2936
+ "text-decoration-style": [{
2937
+ decoration: [...fe(), "wavy"]
2938
+ }],
2939
+ /**
2940
+ * Text Decoration Thickness
2941
+ * @see https://tailwindcss.com/docs/text-decoration-thickness
2942
+ */
2943
+ "text-decoration-thickness": [{
2944
+ decoration: [C, "from-font", "auto", x, ye]
2945
+ }],
2946
+ /**
2947
+ * Text Decoration Color
2948
+ * @see https://tailwindcss.com/docs/text-decoration-color
2949
+ */
2950
+ "text-decoration-color": [{
2951
+ decoration: b()
2952
+ }],
2953
+ /**
2954
+ * Text Underline Offset
2955
+ * @see https://tailwindcss.com/docs/text-underline-offset
2956
+ */
2957
+ "underline-offset": [{
2958
+ "underline-offset": [C, "auto", x, h]
2959
+ }],
2960
+ /**
2961
+ * Text Transform
2962
+ * @see https://tailwindcss.com/docs/text-transform
2963
+ */
2964
+ "text-transform": ["uppercase", "lowercase", "capitalize", "normal-case"],
2965
+ /**
2966
+ * Text Overflow
2967
+ * @see https://tailwindcss.com/docs/text-overflow
2968
+ */
2969
+ "text-overflow": ["truncate", "text-ellipsis", "text-clip"],
2970
+ /**
2971
+ * Text Wrap
2972
+ * @see https://tailwindcss.com/docs/text-wrap
2973
+ */
2974
+ "text-wrap": [{
2975
+ text: ["wrap", "nowrap", "balance", "pretty"]
2976
+ }],
2977
+ /**
2978
+ * Text Indent
2979
+ * @see https://tailwindcss.com/docs/text-indent
2980
+ */
2981
+ indent: [{
2982
+ indent: v()
2983
+ }],
2984
+ /**
2985
+ * Vertical Alignment
2986
+ * @see https://tailwindcss.com/docs/vertical-align
2987
+ */
2988
+ "vertical-align": [{
2989
+ align: ["baseline", "top", "middle", "bottom", "text-top", "text-bottom", "sub", "super", x, h]
2990
+ }],
2991
+ /**
2992
+ * Whitespace
2993
+ * @see https://tailwindcss.com/docs/whitespace
2994
+ */
2995
+ whitespace: [{
2996
+ whitespace: ["normal", "nowrap", "pre", "pre-line", "pre-wrap", "break-spaces"]
2997
+ }],
2998
+ /**
2999
+ * Word Break
3000
+ * @see https://tailwindcss.com/docs/word-break
3001
+ */
3002
+ break: [{
3003
+ break: ["normal", "words", "all", "keep"]
3004
+ }],
3005
+ /**
3006
+ * Overflow Wrap
3007
+ * @see https://tailwindcss.com/docs/overflow-wrap
3008
+ */
3009
+ wrap: [{
3010
+ wrap: ["break-word", "anywhere", "normal"]
3011
+ }],
3012
+ /**
3013
+ * Hyphens
3014
+ * @see https://tailwindcss.com/docs/hyphens
3015
+ */
3016
+ hyphens: [{
3017
+ hyphens: ["none", "manual", "auto"]
3018
+ }],
3019
+ /**
3020
+ * Content
3021
+ * @see https://tailwindcss.com/docs/content
3022
+ */
3023
+ content: [{
3024
+ content: ["none", x, h]
3025
+ }],
3026
+ // -------------------
3027
+ // --- Backgrounds ---
3028
+ // -------------------
3029
+ /**
3030
+ * Background Attachment
3031
+ * @see https://tailwindcss.com/docs/background-attachment
3032
+ */
3033
+ "bg-attachment": [{
3034
+ bg: ["fixed", "local", "scroll"]
3035
+ }],
3036
+ /**
3037
+ * Background Clip
3038
+ * @see https://tailwindcss.com/docs/background-clip
3039
+ */
3040
+ "bg-clip": [{
3041
+ "bg-clip": ["border", "padding", "content", "text"]
3042
+ }],
3043
+ /**
3044
+ * Background Origin
3045
+ * @see https://tailwindcss.com/docs/background-origin
3046
+ */
3047
+ "bg-origin": [{
3048
+ "bg-origin": ["border", "padding", "content"]
3049
+ }],
3050
+ /**
3051
+ * Background Position
3052
+ * @see https://tailwindcss.com/docs/background-position
3053
+ */
3054
+ "bg-position": [{
3055
+ bg: oe()
3056
+ }],
3057
+ /**
3058
+ * Background Repeat
3059
+ * @see https://tailwindcss.com/docs/background-repeat
3060
+ */
3061
+ "bg-repeat": [{
3062
+ bg: xe()
3063
+ }],
3064
+ /**
3065
+ * Background Size
3066
+ * @see https://tailwindcss.com/docs/background-size
3067
+ */
3068
+ "bg-size": [{
3069
+ bg: re()
3070
+ }],
3071
+ /**
3072
+ * Background Image
3073
+ * @see https://tailwindcss.com/docs/background-image
3074
+ */
3075
+ "bg-image": [{
3076
+ bg: ["none", {
3077
+ linear: [{
3078
+ to: ["t", "tr", "r", "br", "b", "bl", "l", "tl"]
3079
+ }, pe, x, h],
3080
+ radial: ["", x, h],
3081
+ conic: [pe, x, h]
3082
+ }, $s, Ms]
3083
+ }],
3084
+ /**
3085
+ * Background Color
3086
+ * @see https://tailwindcss.com/docs/background-color
3087
+ */
3088
+ "bg-color": [{
3089
+ bg: b()
3090
+ }],
3091
+ /**
3092
+ * Gradient Color Stops From Position
3093
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3094
+ */
3095
+ "gradient-from-pos": [{
3096
+ from: ie()
3097
+ }],
3098
+ /**
3099
+ * Gradient Color Stops Via Position
3100
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3101
+ */
3102
+ "gradient-via-pos": [{
3103
+ via: ie()
3104
+ }],
3105
+ /**
3106
+ * Gradient Color Stops To Position
3107
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3108
+ */
3109
+ "gradient-to-pos": [{
3110
+ to: ie()
3111
+ }],
3112
+ /**
3113
+ * Gradient Color Stops From
3114
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3115
+ */
3116
+ "gradient-from": [{
3117
+ from: b()
3118
+ }],
3119
+ /**
3120
+ * Gradient Color Stops Via
3121
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3122
+ */
3123
+ "gradient-via": [{
3124
+ via: b()
3125
+ }],
3126
+ /**
3127
+ * Gradient Color Stops To
3128
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3129
+ */
3130
+ "gradient-to": [{
3131
+ to: b()
3132
+ }],
3133
+ // ---------------
3134
+ // --- Borders ---
3135
+ // ---------------
3136
+ /**
3137
+ * Border Radius
3138
+ * @see https://tailwindcss.com/docs/border-radius
3139
+ */
3140
+ rounded: [{
3141
+ rounded: z()
3142
+ }],
3143
+ /**
3144
+ * Border Radius Start
3145
+ * @see https://tailwindcss.com/docs/border-radius
3146
+ */
3147
+ "rounded-s": [{
3148
+ "rounded-s": z()
3149
+ }],
3150
+ /**
3151
+ * Border Radius End
3152
+ * @see https://tailwindcss.com/docs/border-radius
3153
+ */
3154
+ "rounded-e": [{
3155
+ "rounded-e": z()
3156
+ }],
3157
+ /**
3158
+ * Border Radius Top
3159
+ * @see https://tailwindcss.com/docs/border-radius
3160
+ */
3161
+ "rounded-t": [{
3162
+ "rounded-t": z()
3163
+ }],
3164
+ /**
3165
+ * Border Radius Right
3166
+ * @see https://tailwindcss.com/docs/border-radius
3167
+ */
3168
+ "rounded-r": [{
3169
+ "rounded-r": z()
3170
+ }],
3171
+ /**
3172
+ * Border Radius Bottom
3173
+ * @see https://tailwindcss.com/docs/border-radius
3174
+ */
3175
+ "rounded-b": [{
3176
+ "rounded-b": z()
3177
+ }],
3178
+ /**
3179
+ * Border Radius Left
3180
+ * @see https://tailwindcss.com/docs/border-radius
3181
+ */
3182
+ "rounded-l": [{
3183
+ "rounded-l": z()
3184
+ }],
3185
+ /**
3186
+ * Border Radius Start Start
3187
+ * @see https://tailwindcss.com/docs/border-radius
3188
+ */
3189
+ "rounded-ss": [{
3190
+ "rounded-ss": z()
3191
+ }],
3192
+ /**
3193
+ * Border Radius Start End
3194
+ * @see https://tailwindcss.com/docs/border-radius
3195
+ */
3196
+ "rounded-se": [{
3197
+ "rounded-se": z()
3198
+ }],
3199
+ /**
3200
+ * Border Radius End End
3201
+ * @see https://tailwindcss.com/docs/border-radius
3202
+ */
3203
+ "rounded-ee": [{
3204
+ "rounded-ee": z()
3205
+ }],
3206
+ /**
3207
+ * Border Radius End Start
3208
+ * @see https://tailwindcss.com/docs/border-radius
3209
+ */
3210
+ "rounded-es": [{
3211
+ "rounded-es": z()
3212
+ }],
3213
+ /**
3214
+ * Border Radius Top Left
3215
+ * @see https://tailwindcss.com/docs/border-radius
3216
+ */
3217
+ "rounded-tl": [{
3218
+ "rounded-tl": z()
3219
+ }],
3220
+ /**
3221
+ * Border Radius Top Right
3222
+ * @see https://tailwindcss.com/docs/border-radius
3223
+ */
3224
+ "rounded-tr": [{
3225
+ "rounded-tr": z()
3226
+ }],
3227
+ /**
3228
+ * Border Radius Bottom Right
3229
+ * @see https://tailwindcss.com/docs/border-radius
3230
+ */
3231
+ "rounded-br": [{
3232
+ "rounded-br": z()
3233
+ }],
3234
+ /**
3235
+ * Border Radius Bottom Left
3236
+ * @see https://tailwindcss.com/docs/border-radius
3237
+ */
3238
+ "rounded-bl": [{
3239
+ "rounded-bl": z()
3240
+ }],
3241
+ /**
3242
+ * Border Width
3243
+ * @see https://tailwindcss.com/docs/border-width
3244
+ */
3245
+ "border-w": [{
3246
+ border: q()
3247
+ }],
3248
+ /**
3249
+ * Border Width X
3250
+ * @see https://tailwindcss.com/docs/border-width
3251
+ */
3252
+ "border-w-x": [{
3253
+ "border-x": q()
3254
+ }],
3255
+ /**
3256
+ * Border Width Y
3257
+ * @see https://tailwindcss.com/docs/border-width
3258
+ */
3259
+ "border-w-y": [{
3260
+ "border-y": q()
3261
+ }],
3262
+ /**
3263
+ * Border Width Start
3264
+ * @see https://tailwindcss.com/docs/border-width
3265
+ */
3266
+ "border-w-s": [{
3267
+ "border-s": q()
3268
+ }],
3269
+ /**
3270
+ * Border Width End
3271
+ * @see https://tailwindcss.com/docs/border-width
3272
+ */
3273
+ "border-w-e": [{
3274
+ "border-e": q()
3275
+ }],
3276
+ /**
3277
+ * Border Width Top
3278
+ * @see https://tailwindcss.com/docs/border-width
3279
+ */
3280
+ "border-w-t": [{
3281
+ "border-t": q()
3282
+ }],
3283
+ /**
3284
+ * Border Width Right
3285
+ * @see https://tailwindcss.com/docs/border-width
3286
+ */
3287
+ "border-w-r": [{
3288
+ "border-r": q()
3289
+ }],
3290
+ /**
3291
+ * Border Width Bottom
3292
+ * @see https://tailwindcss.com/docs/border-width
3293
+ */
3294
+ "border-w-b": [{
3295
+ "border-b": q()
3296
+ }],
3297
+ /**
3298
+ * Border Width Left
3299
+ * @see https://tailwindcss.com/docs/border-width
3300
+ */
3301
+ "border-w-l": [{
3302
+ "border-l": q()
3303
+ }],
3304
+ /**
3305
+ * Divide Width X
3306
+ * @see https://tailwindcss.com/docs/border-width#between-children
3307
+ */
3308
+ "divide-x": [{
3309
+ "divide-x": q()
3310
+ }],
3311
+ /**
3312
+ * Divide Width X Reverse
3313
+ * @see https://tailwindcss.com/docs/border-width#between-children
3314
+ */
3315
+ "divide-x-reverse": ["divide-x-reverse"],
3316
+ /**
3317
+ * Divide Width Y
3318
+ * @see https://tailwindcss.com/docs/border-width#between-children
3319
+ */
3320
+ "divide-y": [{
3321
+ "divide-y": q()
3322
+ }],
3323
+ /**
3324
+ * Divide Width Y Reverse
3325
+ * @see https://tailwindcss.com/docs/border-width#between-children
3326
+ */
3327
+ "divide-y-reverse": ["divide-y-reverse"],
3328
+ /**
3329
+ * Border Style
3330
+ * @see https://tailwindcss.com/docs/border-style
3331
+ */
3332
+ "border-style": [{
3333
+ border: [...fe(), "hidden", "none"]
3334
+ }],
3335
+ /**
3336
+ * Divide Style
3337
+ * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style
3338
+ */
3339
+ "divide-style": [{
3340
+ divide: [...fe(), "hidden", "none"]
3341
+ }],
3342
+ /**
3343
+ * Border Color
3344
+ * @see https://tailwindcss.com/docs/border-color
3345
+ */
3346
+ "border-color": [{
3347
+ border: b()
3348
+ }],
3349
+ /**
3350
+ * Border Color X
3351
+ * @see https://tailwindcss.com/docs/border-color
3352
+ */
3353
+ "border-color-x": [{
3354
+ "border-x": b()
3355
+ }],
3356
+ /**
3357
+ * Border Color Y
3358
+ * @see https://tailwindcss.com/docs/border-color
3359
+ */
3360
+ "border-color-y": [{
3361
+ "border-y": b()
3362
+ }],
3363
+ /**
3364
+ * Border Color S
3365
+ * @see https://tailwindcss.com/docs/border-color
3366
+ */
3367
+ "border-color-s": [{
3368
+ "border-s": b()
3369
+ }],
3370
+ /**
3371
+ * Border Color E
3372
+ * @see https://tailwindcss.com/docs/border-color
3373
+ */
3374
+ "border-color-e": [{
3375
+ "border-e": b()
3376
+ }],
3377
+ /**
3378
+ * Border Color Top
3379
+ * @see https://tailwindcss.com/docs/border-color
3380
+ */
3381
+ "border-color-t": [{
3382
+ "border-t": b()
3383
+ }],
3384
+ /**
3385
+ * Border Color Right
3386
+ * @see https://tailwindcss.com/docs/border-color
3387
+ */
3388
+ "border-color-r": [{
3389
+ "border-r": b()
3390
+ }],
3391
+ /**
3392
+ * Border Color Bottom
3393
+ * @see https://tailwindcss.com/docs/border-color
3394
+ */
3395
+ "border-color-b": [{
3396
+ "border-b": b()
3397
+ }],
3398
+ /**
3399
+ * Border Color Left
3400
+ * @see https://tailwindcss.com/docs/border-color
3401
+ */
3402
+ "border-color-l": [{
3403
+ "border-l": b()
3404
+ }],
3405
+ /**
3406
+ * Divide Color
3407
+ * @see https://tailwindcss.com/docs/divide-color
3408
+ */
3409
+ "divide-color": [{
3410
+ divide: b()
3411
+ }],
3412
+ /**
3413
+ * Outline Style
3414
+ * @see https://tailwindcss.com/docs/outline-style
3415
+ */
3416
+ "outline-style": [{
3417
+ outline: [...fe(), "none", "hidden"]
3418
+ }],
3419
+ /**
3420
+ * Outline Offset
3421
+ * @see https://tailwindcss.com/docs/outline-offset
3422
+ */
3423
+ "outline-offset": [{
3424
+ "outline-offset": [C, x, h]
3425
+ }],
3426
+ /**
3427
+ * Outline Width
3428
+ * @see https://tailwindcss.com/docs/outline-width
3429
+ */
3430
+ "outline-w": [{
3431
+ outline: ["", C, Fe, ye]
3432
+ }],
3433
+ /**
3434
+ * Outline Color
3435
+ * @see https://tailwindcss.com/docs/outline-color
3436
+ */
3437
+ "outline-color": [{
3438
+ outline: b()
3439
+ }],
3440
+ // ---------------
3441
+ // --- Effects ---
3442
+ // ---------------
3443
+ /**
3444
+ * Box Shadow
3445
+ * @see https://tailwindcss.com/docs/box-shadow
3446
+ */
3447
+ shadow: [{
3448
+ shadow: [
3449
+ // Deprecated since Tailwind CSS v4.0.0
3450
+ "",
3451
+ "none",
3452
+ u,
3453
+ ze,
3454
+ Me
3455
+ ]
3456
+ }],
3457
+ /**
3458
+ * Box Shadow Color
3459
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color
3460
+ */
3461
+ "shadow-color": [{
3462
+ shadow: b()
3463
+ }],
3464
+ /**
3465
+ * Inset Box Shadow
3466
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow
3467
+ */
3468
+ "inset-shadow": [{
3469
+ "inset-shadow": ["none", y, ze, Me]
3470
+ }],
3471
+ /**
3472
+ * Inset Box Shadow Color
3473
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color
3474
+ */
3475
+ "inset-shadow-color": [{
3476
+ "inset-shadow": b()
3477
+ }],
3478
+ /**
3479
+ * Ring Width
3480
+ * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring
3481
+ */
3482
+ "ring-w": [{
3483
+ ring: q()
3484
+ }],
3485
+ /**
3486
+ * Ring Width Inset
3487
+ * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings
3488
+ * @deprecated since Tailwind CSS v4.0.0
3489
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
3490
+ */
3491
+ "ring-w-inset": ["ring-inset"],
3492
+ /**
3493
+ * Ring Color
3494
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color
3495
+ */
3496
+ "ring-color": [{
3497
+ ring: b()
3498
+ }],
3499
+ /**
3500
+ * Ring Offset Width
3501
+ * @see https://v3.tailwindcss.com/docs/ring-offset-width
3502
+ * @deprecated since Tailwind CSS v4.0.0
3503
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
3504
+ */
3505
+ "ring-offset-w": [{
3506
+ "ring-offset": [C, ye]
3507
+ }],
3508
+ /**
3509
+ * Ring Offset Color
3510
+ * @see https://v3.tailwindcss.com/docs/ring-offset-color
3511
+ * @deprecated since Tailwind CSS v4.0.0
3512
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
3513
+ */
3514
+ "ring-offset-color": [{
3515
+ "ring-offset": b()
3516
+ }],
3517
+ /**
3518
+ * Inset Ring Width
3519
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring
3520
+ */
3521
+ "inset-ring-w": [{
3522
+ "inset-ring": q()
3523
+ }],
3524
+ /**
3525
+ * Inset Ring Color
3526
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color
3527
+ */
3528
+ "inset-ring-color": [{
3529
+ "inset-ring": b()
3530
+ }],
3531
+ /**
3532
+ * Text Shadow
3533
+ * @see https://tailwindcss.com/docs/text-shadow
3534
+ */
3535
+ "text-shadow": [{
3536
+ "text-shadow": ["none", g, ze, Me]
3537
+ }],
3538
+ /**
3539
+ * Text Shadow Color
3540
+ * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color
3541
+ */
3542
+ "text-shadow-color": [{
3543
+ "text-shadow": b()
3544
+ }],
3545
+ /**
3546
+ * Opacity
3547
+ * @see https://tailwindcss.com/docs/opacity
3548
+ */
3549
+ opacity: [{
3550
+ opacity: [C, x, h]
3551
+ }],
3552
+ /**
3553
+ * Mix Blend Mode
3554
+ * @see https://tailwindcss.com/docs/mix-blend-mode
3555
+ */
3556
+ "mix-blend": [{
3557
+ "mix-blend": [...me(), "plus-darker", "plus-lighter"]
3558
+ }],
3559
+ /**
3560
+ * Background Blend Mode
3561
+ * @see https://tailwindcss.com/docs/background-blend-mode
3562
+ */
3563
+ "bg-blend": [{
3564
+ "bg-blend": me()
3565
+ }],
3566
+ /**
3567
+ * Mask Clip
3568
+ * @see https://tailwindcss.com/docs/mask-clip
3569
+ */
3570
+ "mask-clip": [{
3571
+ "mask-clip": ["border", "padding", "content", "fill", "stroke", "view"]
3572
+ }, "mask-no-clip"],
3573
+ /**
3574
+ * Mask Composite
3575
+ * @see https://tailwindcss.com/docs/mask-composite
3576
+ */
3577
+ "mask-composite": [{
3578
+ mask: ["add", "subtract", "intersect", "exclude"]
3579
+ }],
3580
+ /**
3581
+ * Mask Image
3582
+ * @see https://tailwindcss.com/docs/mask-image
3583
+ */
3584
+ "mask-image-linear-pos": [{
3585
+ "mask-linear": [C]
3586
+ }],
3587
+ "mask-image-linear-from-pos": [{
3588
+ "mask-linear-from": O()
3589
+ }],
3590
+ "mask-image-linear-to-pos": [{
3591
+ "mask-linear-to": O()
3592
+ }],
3593
+ "mask-image-linear-from-color": [{
3594
+ "mask-linear-from": b()
3595
+ }],
3596
+ "mask-image-linear-to-color": [{
3597
+ "mask-linear-to": b()
3598
+ }],
3599
+ "mask-image-t-from-pos": [{
3600
+ "mask-t-from": O()
3601
+ }],
3602
+ "mask-image-t-to-pos": [{
3603
+ "mask-t-to": O()
3604
+ }],
3605
+ "mask-image-t-from-color": [{
3606
+ "mask-t-from": b()
3607
+ }],
3608
+ "mask-image-t-to-color": [{
3609
+ "mask-t-to": b()
3610
+ }],
3611
+ "mask-image-r-from-pos": [{
3612
+ "mask-r-from": O()
3613
+ }],
3614
+ "mask-image-r-to-pos": [{
3615
+ "mask-r-to": O()
3616
+ }],
3617
+ "mask-image-r-from-color": [{
3618
+ "mask-r-from": b()
3619
+ }],
3620
+ "mask-image-r-to-color": [{
3621
+ "mask-r-to": b()
3622
+ }],
3623
+ "mask-image-b-from-pos": [{
3624
+ "mask-b-from": O()
3625
+ }],
3626
+ "mask-image-b-to-pos": [{
3627
+ "mask-b-to": O()
3628
+ }],
3629
+ "mask-image-b-from-color": [{
3630
+ "mask-b-from": b()
3631
+ }],
3632
+ "mask-image-b-to-color": [{
3633
+ "mask-b-to": b()
3634
+ }],
3635
+ "mask-image-l-from-pos": [{
3636
+ "mask-l-from": O()
3637
+ }],
3638
+ "mask-image-l-to-pos": [{
3639
+ "mask-l-to": O()
3640
+ }],
3641
+ "mask-image-l-from-color": [{
3642
+ "mask-l-from": b()
3643
+ }],
3644
+ "mask-image-l-to-color": [{
3645
+ "mask-l-to": b()
3646
+ }],
3647
+ "mask-image-x-from-pos": [{
3648
+ "mask-x-from": O()
3649
+ }],
3650
+ "mask-image-x-to-pos": [{
3651
+ "mask-x-to": O()
3652
+ }],
3653
+ "mask-image-x-from-color": [{
3654
+ "mask-x-from": b()
3655
+ }],
3656
+ "mask-image-x-to-color": [{
3657
+ "mask-x-to": b()
3658
+ }],
3659
+ "mask-image-y-from-pos": [{
3660
+ "mask-y-from": O()
3661
+ }],
3662
+ "mask-image-y-to-pos": [{
3663
+ "mask-y-to": O()
3664
+ }],
3665
+ "mask-image-y-from-color": [{
3666
+ "mask-y-from": b()
3667
+ }],
3668
+ "mask-image-y-to-color": [{
3669
+ "mask-y-to": b()
3670
+ }],
3671
+ "mask-image-radial": [{
3672
+ "mask-radial": [x, h]
3673
+ }],
3674
+ "mask-image-radial-from-pos": [{
3675
+ "mask-radial-from": O()
3676
+ }],
3677
+ "mask-image-radial-to-pos": [{
3678
+ "mask-radial-to": O()
3679
+ }],
3680
+ "mask-image-radial-from-color": [{
3681
+ "mask-radial-from": b()
3682
+ }],
3683
+ "mask-image-radial-to-color": [{
3684
+ "mask-radial-to": b()
3685
+ }],
3686
+ "mask-image-radial-shape": [{
3687
+ "mask-radial": ["circle", "ellipse"]
3688
+ }],
3689
+ "mask-image-radial-size": [{
3690
+ "mask-radial": [{
3691
+ closest: ["side", "corner"],
3692
+ farthest: ["side", "corner"]
3693
+ }]
3694
+ }],
3695
+ "mask-image-radial-pos": [{
3696
+ "mask-radial-at": ee()
3697
+ }],
3698
+ "mask-image-conic-pos": [{
3699
+ "mask-conic": [C]
3700
+ }],
3701
+ "mask-image-conic-from-pos": [{
3702
+ "mask-conic-from": O()
3703
+ }],
3704
+ "mask-image-conic-to-pos": [{
3705
+ "mask-conic-to": O()
3706
+ }],
3707
+ "mask-image-conic-from-color": [{
3708
+ "mask-conic-from": b()
3709
+ }],
3710
+ "mask-image-conic-to-color": [{
3711
+ "mask-conic-to": b()
3712
+ }],
3713
+ /**
3714
+ * Mask Mode
3715
+ * @see https://tailwindcss.com/docs/mask-mode
3716
+ */
3717
+ "mask-mode": [{
3718
+ mask: ["alpha", "luminance", "match"]
3719
+ }],
3720
+ /**
3721
+ * Mask Origin
3722
+ * @see https://tailwindcss.com/docs/mask-origin
3723
+ */
3724
+ "mask-origin": [{
3725
+ "mask-origin": ["border", "padding", "content", "fill", "stroke", "view"]
3726
+ }],
3727
+ /**
3728
+ * Mask Position
3729
+ * @see https://tailwindcss.com/docs/mask-position
3730
+ */
3731
+ "mask-position": [{
3732
+ mask: oe()
3733
+ }],
3734
+ /**
3735
+ * Mask Repeat
3736
+ * @see https://tailwindcss.com/docs/mask-repeat
3737
+ */
3738
+ "mask-repeat": [{
3739
+ mask: xe()
3740
+ }],
3741
+ /**
3742
+ * Mask Size
3743
+ * @see https://tailwindcss.com/docs/mask-size
3744
+ */
3745
+ "mask-size": [{
3746
+ mask: re()
3747
+ }],
3748
+ /**
3749
+ * Mask Type
3750
+ * @see https://tailwindcss.com/docs/mask-type
3751
+ */
3752
+ "mask-type": [{
3753
+ "mask-type": ["alpha", "luminance"]
3754
+ }],
3755
+ /**
3756
+ * Mask Image
3757
+ * @see https://tailwindcss.com/docs/mask-image
3758
+ */
3759
+ "mask-image": [{
3760
+ mask: ["none", x, h]
3761
+ }],
3762
+ // ---------------
3763
+ // --- Filters ---
3764
+ // ---------------
3765
+ /**
3766
+ * Filter
3767
+ * @see https://tailwindcss.com/docs/filter
3768
+ */
3769
+ filter: [{
3770
+ filter: [
3771
+ // Deprecated since Tailwind CSS v3.0.0
3772
+ "",
3773
+ "none",
3774
+ x,
3775
+ h
3776
+ ]
3777
+ }],
3778
+ /**
3779
+ * Blur
3780
+ * @see https://tailwindcss.com/docs/blur
3781
+ */
3782
+ blur: [{
3783
+ blur: w()
3784
+ }],
3785
+ /**
3786
+ * Brightness
3787
+ * @see https://tailwindcss.com/docs/brightness
3788
+ */
3789
+ brightness: [{
3790
+ brightness: [C, x, h]
3791
+ }],
3792
+ /**
3793
+ * Contrast
3794
+ * @see https://tailwindcss.com/docs/contrast
3795
+ */
3796
+ contrast: [{
3797
+ contrast: [C, x, h]
3798
+ }],
3799
+ /**
3800
+ * Drop Shadow
3801
+ * @see https://tailwindcss.com/docs/drop-shadow
3802
+ */
3803
+ "drop-shadow": [{
3804
+ "drop-shadow": [
3805
+ // Deprecated since Tailwind CSS v4.0.0
3806
+ "",
3807
+ "none",
3808
+ N,
3809
+ ze,
3810
+ Me
3811
+ ]
3812
+ }],
3813
+ /**
3814
+ * Drop Shadow Color
3815
+ * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color
3816
+ */
3817
+ "drop-shadow-color": [{
3818
+ "drop-shadow": b()
3819
+ }],
3820
+ /**
3821
+ * Grayscale
3822
+ * @see https://tailwindcss.com/docs/grayscale
3823
+ */
3824
+ grayscale: [{
3825
+ grayscale: ["", C, x, h]
3826
+ }],
3827
+ /**
3828
+ * Hue Rotate
3829
+ * @see https://tailwindcss.com/docs/hue-rotate
3830
+ */
3831
+ "hue-rotate": [{
3832
+ "hue-rotate": [C, x, h]
3833
+ }],
3834
+ /**
3835
+ * Invert
3836
+ * @see https://tailwindcss.com/docs/invert
3837
+ */
3838
+ invert: [{
3839
+ invert: ["", C, x, h]
3840
+ }],
3841
+ /**
3842
+ * Saturate
3843
+ * @see https://tailwindcss.com/docs/saturate
3844
+ */
3845
+ saturate: [{
3846
+ saturate: [C, x, h]
3847
+ }],
3848
+ /**
3849
+ * Sepia
3850
+ * @see https://tailwindcss.com/docs/sepia
3851
+ */
3852
+ sepia: [{
3853
+ sepia: ["", C, x, h]
3854
+ }],
3855
+ /**
3856
+ * Backdrop Filter
3857
+ * @see https://tailwindcss.com/docs/backdrop-filter
3858
+ */
3859
+ "backdrop-filter": [{
3860
+ "backdrop-filter": [
3861
+ // Deprecated since Tailwind CSS v3.0.0
3862
+ "",
3863
+ "none",
3864
+ x,
3865
+ h
3866
+ ]
3867
+ }],
3868
+ /**
3869
+ * Backdrop Blur
3870
+ * @see https://tailwindcss.com/docs/backdrop-blur
3871
+ */
3872
+ "backdrop-blur": [{
3873
+ "backdrop-blur": w()
3874
+ }],
3875
+ /**
3876
+ * Backdrop Brightness
3877
+ * @see https://tailwindcss.com/docs/backdrop-brightness
3878
+ */
3879
+ "backdrop-brightness": [{
3880
+ "backdrop-brightness": [C, x, h]
3881
+ }],
3882
+ /**
3883
+ * Backdrop Contrast
3884
+ * @see https://tailwindcss.com/docs/backdrop-contrast
3885
+ */
3886
+ "backdrop-contrast": [{
3887
+ "backdrop-contrast": [C, x, h]
3888
+ }],
3889
+ /**
3890
+ * Backdrop Grayscale
3891
+ * @see https://tailwindcss.com/docs/backdrop-grayscale
3892
+ */
3893
+ "backdrop-grayscale": [{
3894
+ "backdrop-grayscale": ["", C, x, h]
3895
+ }],
3896
+ /**
3897
+ * Backdrop Hue Rotate
3898
+ * @see https://tailwindcss.com/docs/backdrop-hue-rotate
3899
+ */
3900
+ "backdrop-hue-rotate": [{
3901
+ "backdrop-hue-rotate": [C, x, h]
3902
+ }],
3903
+ /**
3904
+ * Backdrop Invert
3905
+ * @see https://tailwindcss.com/docs/backdrop-invert
3906
+ */
3907
+ "backdrop-invert": [{
3908
+ "backdrop-invert": ["", C, x, h]
3909
+ }],
3910
+ /**
3911
+ * Backdrop Opacity
3912
+ * @see https://tailwindcss.com/docs/backdrop-opacity
3913
+ */
3914
+ "backdrop-opacity": [{
3915
+ "backdrop-opacity": [C, x, h]
3916
+ }],
3917
+ /**
3918
+ * Backdrop Saturate
3919
+ * @see https://tailwindcss.com/docs/backdrop-saturate
3920
+ */
3921
+ "backdrop-saturate": [{
3922
+ "backdrop-saturate": [C, x, h]
3923
+ }],
3924
+ /**
3925
+ * Backdrop Sepia
3926
+ * @see https://tailwindcss.com/docs/backdrop-sepia
3927
+ */
3928
+ "backdrop-sepia": [{
3929
+ "backdrop-sepia": ["", C, x, h]
3930
+ }],
3931
+ // --------------
3932
+ // --- Tables ---
3933
+ // --------------
3934
+ /**
3935
+ * Border Collapse
3936
+ * @see https://tailwindcss.com/docs/border-collapse
3937
+ */
3938
+ "border-collapse": [{
3939
+ border: ["collapse", "separate"]
3940
+ }],
3941
+ /**
3942
+ * Border Spacing
3943
+ * @see https://tailwindcss.com/docs/border-spacing
3944
+ */
3945
+ "border-spacing": [{
3946
+ "border-spacing": v()
3947
+ }],
3948
+ /**
3949
+ * Border Spacing X
3950
+ * @see https://tailwindcss.com/docs/border-spacing
3951
+ */
3952
+ "border-spacing-x": [{
3953
+ "border-spacing-x": v()
3954
+ }],
3955
+ /**
3956
+ * Border Spacing Y
3957
+ * @see https://tailwindcss.com/docs/border-spacing
3958
+ */
3959
+ "border-spacing-y": [{
3960
+ "border-spacing-y": v()
3961
+ }],
3962
+ /**
3963
+ * Table Layout
3964
+ * @see https://tailwindcss.com/docs/table-layout
3965
+ */
3966
+ "table-layout": [{
3967
+ table: ["auto", "fixed"]
3968
+ }],
3969
+ /**
3970
+ * Caption Side
3971
+ * @see https://tailwindcss.com/docs/caption-side
3972
+ */
3973
+ caption: [{
3974
+ caption: ["top", "bottom"]
3975
+ }],
3976
+ // ---------------------------------
3977
+ // --- Transitions and Animation ---
3978
+ // ---------------------------------
3979
+ /**
3980
+ * Transition Property
3981
+ * @see https://tailwindcss.com/docs/transition-property
3982
+ */
3983
+ transition: [{
3984
+ transition: ["", "all", "colors", "opacity", "shadow", "transform", "none", x, h]
3985
+ }],
3986
+ /**
3987
+ * Transition Behavior
3988
+ * @see https://tailwindcss.com/docs/transition-behavior
3989
+ */
3990
+ "transition-behavior": [{
3991
+ transition: ["normal", "discrete"]
3992
+ }],
3993
+ /**
3994
+ * Transition Duration
3995
+ * @see https://tailwindcss.com/docs/transition-duration
3996
+ */
3997
+ duration: [{
3998
+ duration: [C, "initial", x, h]
3999
+ }],
4000
+ /**
4001
+ * Transition Timing Function
4002
+ * @see https://tailwindcss.com/docs/transition-timing-function
4003
+ */
4004
+ ease: [{
4005
+ ease: ["linear", "initial", k, x, h]
4006
+ }],
4007
+ /**
4008
+ * Transition Delay
4009
+ * @see https://tailwindcss.com/docs/transition-delay
4010
+ */
4011
+ delay: [{
4012
+ delay: [C, x, h]
4013
+ }],
4014
+ /**
4015
+ * Animation
4016
+ * @see https://tailwindcss.com/docs/animation
4017
+ */
4018
+ animate: [{
4019
+ animate: ["none", F, x, h]
4020
+ }],
4021
+ // ------------------
4022
+ // --- Transforms ---
4023
+ // ------------------
4024
+ /**
4025
+ * Backface Visibility
4026
+ * @see https://tailwindcss.com/docs/backface-visibility
4027
+ */
4028
+ backface: [{
4029
+ backface: ["hidden", "visible"]
4030
+ }],
4031
+ /**
4032
+ * Perspective
4033
+ * @see https://tailwindcss.com/docs/perspective
4034
+ */
4035
+ perspective: [{
4036
+ perspective: [$, x, h]
4037
+ }],
4038
+ /**
4039
+ * Perspective Origin
4040
+ * @see https://tailwindcss.com/docs/perspective-origin
4041
+ */
4042
+ "perspective-origin": [{
4043
+ "perspective-origin": te()
4044
+ }],
4045
+ /**
4046
+ * Rotate
4047
+ * @see https://tailwindcss.com/docs/rotate
4048
+ */
4049
+ rotate: [{
4050
+ rotate: K()
4051
+ }],
4052
+ /**
4053
+ * Rotate X
4054
+ * @see https://tailwindcss.com/docs/rotate
4055
+ */
4056
+ "rotate-x": [{
4057
+ "rotate-x": K()
4058
+ }],
4059
+ /**
4060
+ * Rotate Y
4061
+ * @see https://tailwindcss.com/docs/rotate
4062
+ */
4063
+ "rotate-y": [{
4064
+ "rotate-y": K()
4065
+ }],
4066
+ /**
4067
+ * Rotate Z
4068
+ * @see https://tailwindcss.com/docs/rotate
4069
+ */
4070
+ "rotate-z": [{
4071
+ "rotate-z": K()
4072
+ }],
4073
+ /**
4074
+ * Scale
4075
+ * @see https://tailwindcss.com/docs/scale
4076
+ */
4077
+ scale: [{
4078
+ scale: le()
4079
+ }],
4080
+ /**
4081
+ * Scale X
4082
+ * @see https://tailwindcss.com/docs/scale
4083
+ */
4084
+ "scale-x": [{
4085
+ "scale-x": le()
4086
+ }],
4087
+ /**
4088
+ * Scale Y
4089
+ * @see https://tailwindcss.com/docs/scale
4090
+ */
4091
+ "scale-y": [{
4092
+ "scale-y": le()
4093
+ }],
4094
+ /**
4095
+ * Scale Z
4096
+ * @see https://tailwindcss.com/docs/scale
4097
+ */
4098
+ "scale-z": [{
4099
+ "scale-z": le()
4100
+ }],
4101
+ /**
4102
+ * Scale 3D
4103
+ * @see https://tailwindcss.com/docs/scale
4104
+ */
4105
+ "scale-3d": ["scale-3d"],
4106
+ /**
4107
+ * Skew
4108
+ * @see https://tailwindcss.com/docs/skew
4109
+ */
4110
+ skew: [{
4111
+ skew: Re()
4112
+ }],
4113
+ /**
4114
+ * Skew X
4115
+ * @see https://tailwindcss.com/docs/skew
4116
+ */
4117
+ "skew-x": [{
4118
+ "skew-x": Re()
4119
+ }],
4120
+ /**
4121
+ * Skew Y
4122
+ * @see https://tailwindcss.com/docs/skew
4123
+ */
4124
+ "skew-y": [{
4125
+ "skew-y": Re()
4126
+ }],
4127
+ /**
4128
+ * Transform
4129
+ * @see https://tailwindcss.com/docs/transform
4130
+ */
4131
+ transform: [{
4132
+ transform: [x, h, "", "none", "gpu", "cpu"]
4133
+ }],
4134
+ /**
4135
+ * Transform Origin
4136
+ * @see https://tailwindcss.com/docs/transform-origin
4137
+ */
4138
+ "transform-origin": [{
4139
+ origin: te()
4140
+ }],
4141
+ /**
4142
+ * Transform Style
4143
+ * @see https://tailwindcss.com/docs/transform-style
4144
+ */
4145
+ "transform-style": [{
4146
+ transform: ["3d", "flat"]
4147
+ }],
4148
+ /**
4149
+ * Translate
4150
+ * @see https://tailwindcss.com/docs/translate
4151
+ */
4152
+ translate: [{
4153
+ translate: ge()
4154
+ }],
4155
+ /**
4156
+ * Translate X
4157
+ * @see https://tailwindcss.com/docs/translate
4158
+ */
4159
+ "translate-x": [{
4160
+ "translate-x": ge()
4161
+ }],
4162
+ /**
4163
+ * Translate Y
4164
+ * @see https://tailwindcss.com/docs/translate
4165
+ */
4166
+ "translate-y": [{
4167
+ "translate-y": ge()
4168
+ }],
4169
+ /**
4170
+ * Translate Z
4171
+ * @see https://tailwindcss.com/docs/translate
4172
+ */
4173
+ "translate-z": [{
4174
+ "translate-z": ge()
4175
+ }],
4176
+ /**
4177
+ * Translate None
4178
+ * @see https://tailwindcss.com/docs/translate
4179
+ */
4180
+ "translate-none": ["translate-none"],
4181
+ // ---------------------
4182
+ // --- Interactivity ---
4183
+ // ---------------------
4184
+ /**
4185
+ * Accent Color
4186
+ * @see https://tailwindcss.com/docs/accent-color
4187
+ */
4188
+ accent: [{
4189
+ accent: b()
4190
+ }],
4191
+ /**
4192
+ * Appearance
4193
+ * @see https://tailwindcss.com/docs/appearance
4194
+ */
4195
+ appearance: [{
4196
+ appearance: ["none", "auto"]
4197
+ }],
4198
+ /**
4199
+ * Caret Color
4200
+ * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
4201
+ */
4202
+ "caret-color": [{
4203
+ caret: b()
4204
+ }],
4205
+ /**
4206
+ * Color Scheme
4207
+ * @see https://tailwindcss.com/docs/color-scheme
4208
+ */
4209
+ "color-scheme": [{
4210
+ scheme: ["normal", "dark", "light", "light-dark", "only-dark", "only-light"]
4211
+ }],
4212
+ /**
4213
+ * Cursor
4214
+ * @see https://tailwindcss.com/docs/cursor
4215
+ */
4216
+ cursor: [{
4217
+ cursor: ["auto", "default", "pointer", "wait", "text", "move", "help", "not-allowed", "none", "context-menu", "progress", "cell", "crosshair", "vertical-text", "alias", "copy", "no-drop", "grab", "grabbing", "all-scroll", "col-resize", "row-resize", "n-resize", "e-resize", "s-resize", "w-resize", "ne-resize", "nw-resize", "se-resize", "sw-resize", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "zoom-in", "zoom-out", x, h]
4218
+ }],
4219
+ /**
4220
+ * Field Sizing
4221
+ * @see https://tailwindcss.com/docs/field-sizing
4222
+ */
4223
+ "field-sizing": [{
4224
+ "field-sizing": ["fixed", "content"]
4225
+ }],
4226
+ /**
4227
+ * Pointer Events
4228
+ * @see https://tailwindcss.com/docs/pointer-events
4229
+ */
4230
+ "pointer-events": [{
4231
+ "pointer-events": ["auto", "none"]
4232
+ }],
4233
+ /**
4234
+ * Resize
4235
+ * @see https://tailwindcss.com/docs/resize
4236
+ */
4237
+ resize: [{
4238
+ resize: ["none", "", "y", "x"]
4239
+ }],
4240
+ /**
4241
+ * Scroll Behavior
4242
+ * @see https://tailwindcss.com/docs/scroll-behavior
4243
+ */
4244
+ "scroll-behavior": [{
4245
+ scroll: ["auto", "smooth"]
4246
+ }],
4247
+ /**
4248
+ * Scroll Margin
4249
+ * @see https://tailwindcss.com/docs/scroll-margin
4250
+ */
4251
+ "scroll-m": [{
4252
+ "scroll-m": v()
4253
+ }],
4254
+ /**
4255
+ * Scroll Margin X
4256
+ * @see https://tailwindcss.com/docs/scroll-margin
4257
+ */
4258
+ "scroll-mx": [{
4259
+ "scroll-mx": v()
4260
+ }],
4261
+ /**
4262
+ * Scroll Margin Y
4263
+ * @see https://tailwindcss.com/docs/scroll-margin
4264
+ */
4265
+ "scroll-my": [{
4266
+ "scroll-my": v()
4267
+ }],
4268
+ /**
4269
+ * Scroll Margin Start
4270
+ * @see https://tailwindcss.com/docs/scroll-margin
4271
+ */
4272
+ "scroll-ms": [{
4273
+ "scroll-ms": v()
4274
+ }],
4275
+ /**
4276
+ * Scroll Margin End
4277
+ * @see https://tailwindcss.com/docs/scroll-margin
4278
+ */
4279
+ "scroll-me": [{
4280
+ "scroll-me": v()
4281
+ }],
4282
+ /**
4283
+ * Scroll Margin Top
4284
+ * @see https://tailwindcss.com/docs/scroll-margin
4285
+ */
4286
+ "scroll-mt": [{
4287
+ "scroll-mt": v()
4288
+ }],
4289
+ /**
4290
+ * Scroll Margin Right
4291
+ * @see https://tailwindcss.com/docs/scroll-margin
4292
+ */
4293
+ "scroll-mr": [{
4294
+ "scroll-mr": v()
4295
+ }],
4296
+ /**
4297
+ * Scroll Margin Bottom
4298
+ * @see https://tailwindcss.com/docs/scroll-margin
4299
+ */
4300
+ "scroll-mb": [{
4301
+ "scroll-mb": v()
4302
+ }],
4303
+ /**
4304
+ * Scroll Margin Left
4305
+ * @see https://tailwindcss.com/docs/scroll-margin
4306
+ */
4307
+ "scroll-ml": [{
4308
+ "scroll-ml": v()
4309
+ }],
4310
+ /**
4311
+ * Scroll Padding
4312
+ * @see https://tailwindcss.com/docs/scroll-padding
4313
+ */
4314
+ "scroll-p": [{
4315
+ "scroll-p": v()
4316
+ }],
4317
+ /**
4318
+ * Scroll Padding X
4319
+ * @see https://tailwindcss.com/docs/scroll-padding
4320
+ */
4321
+ "scroll-px": [{
4322
+ "scroll-px": v()
4323
+ }],
4324
+ /**
4325
+ * Scroll Padding Y
4326
+ * @see https://tailwindcss.com/docs/scroll-padding
4327
+ */
4328
+ "scroll-py": [{
4329
+ "scroll-py": v()
4330
+ }],
4331
+ /**
4332
+ * Scroll Padding Start
4333
+ * @see https://tailwindcss.com/docs/scroll-padding
4334
+ */
4335
+ "scroll-ps": [{
4336
+ "scroll-ps": v()
4337
+ }],
4338
+ /**
4339
+ * Scroll Padding End
4340
+ * @see https://tailwindcss.com/docs/scroll-padding
4341
+ */
4342
+ "scroll-pe": [{
4343
+ "scroll-pe": v()
4344
+ }],
4345
+ /**
4346
+ * Scroll Padding Top
4347
+ * @see https://tailwindcss.com/docs/scroll-padding
4348
+ */
4349
+ "scroll-pt": [{
4350
+ "scroll-pt": v()
4351
+ }],
4352
+ /**
4353
+ * Scroll Padding Right
4354
+ * @see https://tailwindcss.com/docs/scroll-padding
4355
+ */
4356
+ "scroll-pr": [{
4357
+ "scroll-pr": v()
4358
+ }],
4359
+ /**
4360
+ * Scroll Padding Bottom
4361
+ * @see https://tailwindcss.com/docs/scroll-padding
4362
+ */
4363
+ "scroll-pb": [{
4364
+ "scroll-pb": v()
4365
+ }],
4366
+ /**
4367
+ * Scroll Padding Left
4368
+ * @see https://tailwindcss.com/docs/scroll-padding
4369
+ */
4370
+ "scroll-pl": [{
4371
+ "scroll-pl": v()
4372
+ }],
4373
+ /**
4374
+ * Scroll Snap Align
4375
+ * @see https://tailwindcss.com/docs/scroll-snap-align
4376
+ */
4377
+ "snap-align": [{
4378
+ snap: ["start", "end", "center", "align-none"]
4379
+ }],
4380
+ /**
4381
+ * Scroll Snap Stop
4382
+ * @see https://tailwindcss.com/docs/scroll-snap-stop
4383
+ */
4384
+ "snap-stop": [{
4385
+ snap: ["normal", "always"]
4386
+ }],
4387
+ /**
4388
+ * Scroll Snap Type
4389
+ * @see https://tailwindcss.com/docs/scroll-snap-type
4390
+ */
4391
+ "snap-type": [{
4392
+ snap: ["none", "x", "y", "both"]
4393
+ }],
4394
+ /**
4395
+ * Scroll Snap Type Strictness
4396
+ * @see https://tailwindcss.com/docs/scroll-snap-type
4397
+ */
4398
+ "snap-strictness": [{
4399
+ snap: ["mandatory", "proximity"]
4400
+ }],
4401
+ /**
4402
+ * Touch Action
4403
+ * @see https://tailwindcss.com/docs/touch-action
4404
+ */
4405
+ touch: [{
4406
+ touch: ["auto", "none", "manipulation"]
4407
+ }],
4408
+ /**
4409
+ * Touch Action X
4410
+ * @see https://tailwindcss.com/docs/touch-action
4411
+ */
4412
+ "touch-x": [{
4413
+ "touch-pan": ["x", "left", "right"]
4414
+ }],
4415
+ /**
4416
+ * Touch Action Y
4417
+ * @see https://tailwindcss.com/docs/touch-action
4418
+ */
4419
+ "touch-y": [{
4420
+ "touch-pan": ["y", "up", "down"]
4421
+ }],
4422
+ /**
4423
+ * Touch Action Pinch Zoom
4424
+ * @see https://tailwindcss.com/docs/touch-action
4425
+ */
4426
+ "touch-pz": ["touch-pinch-zoom"],
4427
+ /**
4428
+ * User Select
4429
+ * @see https://tailwindcss.com/docs/user-select
4430
+ */
4431
+ select: [{
4432
+ select: ["none", "text", "all", "auto"]
4433
+ }],
4434
+ /**
4435
+ * Will Change
4436
+ * @see https://tailwindcss.com/docs/will-change
4437
+ */
4438
+ "will-change": [{
4439
+ "will-change": ["auto", "scroll", "contents", "transform", x, h]
4440
+ }],
4441
+ // -----------
4442
+ // --- SVG ---
4443
+ // -----------
4444
+ /**
4445
+ * Fill
4446
+ * @see https://tailwindcss.com/docs/fill
4447
+ */
4448
+ fill: [{
4449
+ fill: ["none", ...b()]
4450
+ }],
4451
+ /**
4452
+ * Stroke Width
4453
+ * @see https://tailwindcss.com/docs/stroke-width
4454
+ */
4455
+ "stroke-w": [{
4456
+ stroke: [C, Fe, ye, Ye]
4457
+ }],
4458
+ /**
4459
+ * Stroke
4460
+ * @see https://tailwindcss.com/docs/stroke
4461
+ */
4462
+ stroke: [{
4463
+ stroke: ["none", ...b()]
4464
+ }],
4465
+ // ---------------------
4466
+ // --- Accessibility ---
4467
+ // ---------------------
4468
+ /**
4469
+ * Forced Color Adjust
4470
+ * @see https://tailwindcss.com/docs/forced-color-adjust
4471
+ */
4472
+ "forced-color-adjust": [{
4473
+ "forced-color-adjust": ["auto", "none"]
4474
+ }]
4475
+ },
4476
+ conflictingClassGroups: {
4477
+ overflow: ["overflow-x", "overflow-y"],
4478
+ overscroll: ["overscroll-x", "overscroll-y"],
4479
+ inset: ["inset-x", "inset-y", "start", "end", "top", "right", "bottom", "left"],
4480
+ "inset-x": ["right", "left"],
4481
+ "inset-y": ["top", "bottom"],
4482
+ flex: ["basis", "grow", "shrink"],
4483
+ gap: ["gap-x", "gap-y"],
4484
+ p: ["px", "py", "ps", "pe", "pt", "pr", "pb", "pl"],
4485
+ px: ["pr", "pl"],
4486
+ py: ["pt", "pb"],
4487
+ m: ["mx", "my", "ms", "me", "mt", "mr", "mb", "ml"],
4488
+ mx: ["mr", "ml"],
4489
+ my: ["mt", "mb"],
4490
+ size: ["w", "h"],
4491
+ "font-size": ["leading"],
4492
+ "fvn-normal": ["fvn-ordinal", "fvn-slashed-zero", "fvn-figure", "fvn-spacing", "fvn-fraction"],
4493
+ "fvn-ordinal": ["fvn-normal"],
4494
+ "fvn-slashed-zero": ["fvn-normal"],
4495
+ "fvn-figure": ["fvn-normal"],
4496
+ "fvn-spacing": ["fvn-normal"],
4497
+ "fvn-fraction": ["fvn-normal"],
4498
+ "line-clamp": ["display", "overflow"],
4499
+ rounded: ["rounded-s", "rounded-e", "rounded-t", "rounded-r", "rounded-b", "rounded-l", "rounded-ss", "rounded-se", "rounded-ee", "rounded-es", "rounded-tl", "rounded-tr", "rounded-br", "rounded-bl"],
4500
+ "rounded-s": ["rounded-ss", "rounded-es"],
4501
+ "rounded-e": ["rounded-se", "rounded-ee"],
4502
+ "rounded-t": ["rounded-tl", "rounded-tr"],
4503
+ "rounded-r": ["rounded-tr", "rounded-br"],
4504
+ "rounded-b": ["rounded-br", "rounded-bl"],
4505
+ "rounded-l": ["rounded-tl", "rounded-bl"],
4506
+ "border-spacing": ["border-spacing-x", "border-spacing-y"],
4507
+ "border-w": ["border-w-x", "border-w-y", "border-w-s", "border-w-e", "border-w-t", "border-w-r", "border-w-b", "border-w-l"],
4508
+ "border-w-x": ["border-w-r", "border-w-l"],
4509
+ "border-w-y": ["border-w-t", "border-w-b"],
4510
+ "border-color": ["border-color-x", "border-color-y", "border-color-s", "border-color-e", "border-color-t", "border-color-r", "border-color-b", "border-color-l"],
4511
+ "border-color-x": ["border-color-r", "border-color-l"],
4512
+ "border-color-y": ["border-color-t", "border-color-b"],
4513
+ translate: ["translate-x", "translate-y", "translate-none"],
4514
+ "translate-none": ["translate", "translate-x", "translate-y", "translate-z"],
4515
+ "scroll-m": ["scroll-mx", "scroll-my", "scroll-ms", "scroll-me", "scroll-mt", "scroll-mr", "scroll-mb", "scroll-ml"],
4516
+ "scroll-mx": ["scroll-mr", "scroll-ml"],
4517
+ "scroll-my": ["scroll-mt", "scroll-mb"],
4518
+ "scroll-p": ["scroll-px", "scroll-py", "scroll-ps", "scroll-pe", "scroll-pt", "scroll-pr", "scroll-pb", "scroll-pl"],
4519
+ "scroll-px": ["scroll-pr", "scroll-pl"],
4520
+ "scroll-py": ["scroll-pt", "scroll-pb"],
4521
+ touch: ["touch-x", "touch-y", "touch-pz"],
4522
+ "touch-x": ["touch"],
4523
+ "touch-y": ["touch"],
4524
+ "touch-pz": ["touch"]
4525
+ },
4526
+ conflictingClassGroupModifiers: {
4527
+ "font-size": ["leading"]
4528
+ },
4529
+ orderSensitiveModifiers: ["*", "**", "after", "backdrop", "before", "details-content", "file", "first-letter", "first-line", "marker", "placeholder", "selection"]
4530
+ };
4531
+ }, qs = /* @__PURE__ */ js(Gs), Ds = (e) => {
4532
+ const { path: s, className: n } = e, [o, a] = T("");
4533
+ return U(() => {
4534
+ Tt.invokeBackend("get_file_icon", { path: s }).then((d) => {
4535
+ d && a(d);
4536
+ });
4537
+ }, [s]), /* @__PURE__ */ t.jsx(Ot, { name: o, className: qs("min-w-8 h-8", n) });
4538
+ }, Us = (e) => {
4539
+ const {
4540
+ id: s,
4541
+ name: n,
4542
+ path: o,
4543
+ extname: a,
4544
+ size: d,
4545
+ uploaded: c,
4546
+ attachmentId: f,
4547
+ uploadFailed: i,
4548
+ failedMessage: m,
4549
+ deletable: u,
4550
+ onDelete: y
4551
+ } = e, { t: g } = he();
4552
+ return /* @__PURE__ */ t.jsx("div", { className: "w-1/3 px-1", children: /* @__PURE__ */ t.jsxs("div", { className: "relative group flex items-center gap-1 p-1 rounded-[4px] bg-[#dedede] dark:bg-[#202126]", children: [
4553
+ (i || f) && u && /* @__PURE__ */ t.jsx(
4554
+ "div",
4555
+ {
4556
+ className: "absolute flex justify-center items-center size-[14px] bg-red-600 top-0 right-0 rounded-full cursor-pointer translate-x-[5px] -translate-y-[5px] transition opacity-0 group-hover:opacity-100 ",
4557
+ onClick: () => {
4558
+ y?.(s);
4559
+ },
4560
+ children: /* @__PURE__ */ t.jsx(Ar, { className: "size-[10px] text-white" })
4561
+ }
4562
+ ),
4563
+ /* @__PURE__ */ t.jsx(Ds, { path: o }),
4564
+ /* @__PURE__ */ t.jsxs("div", { className: "flex flex-col justify-between overflow-hidden", children: [
4565
+ /* @__PURE__ */ t.jsx("div", { className: "truncate text-sm text-[#333333] dark:text-[#D8D8D8]", children: n }),
4566
+ /* @__PURE__ */ t.jsx("div", { className: "text-xs", children: i && m ? /* @__PURE__ */ t.jsx(rs, { content: m, children: /* @__PURE__ */ t.jsx("span", { className: "text-red-500", children: "Upload Failed" }) }) : /* @__PURE__ */ t.jsx("div", { className: "text-[#999]", children: c ? /* @__PURE__ */ t.jsxs("div", { className: "flex gap-2", children: [
4567
+ a && /* @__PURE__ */ t.jsx("span", { children: a }),
4568
+ /* @__PURE__ */ t.jsx("span", { children: Gr(d) })
4569
+ ] }) : /* @__PURE__ */ t.jsx("span", { children: g("assistant.fileList.uploading") }) }) })
4570
+ ] })
4571
+ ] }) }, s);
4572
+ }, Ys = Qe(() => ({
4573
+ addError: (e) => console.error(e)
4574
+ })), Js = (e) => {
4575
+ const { message: s, attachments: n } = e, [o, a] = T(!1), { currentService: d } = Je(), [c, f] = T([]), { addError: i } = Ys(), m = (u) => {
4576
+ if (typeof window < "u" && typeof document < "u") {
4577
+ const y = window.getSelection(), g = document.createRange();
4578
+ if (u.currentTarget && y && g)
4579
+ try {
4580
+ g.selectNodeContents(u.currentTarget), y.removeAllRanges(), y.addRange(g);
4581
+ } catch (N) {
4582
+ console.error("Selection failed:", N);
4583
+ }
4584
+ }
4585
+ };
4586
+ return Or(async () => {
4587
+ try {
4588
+ if (n.length === 0) return;
4589
+ const u = await Tt.commands(
4590
+ "get_attachment_by_ids",
4591
+ {
4592
+ serverId: d.id,
4593
+ attachments: n
4594
+ }
4595
+ );
4596
+ f(u?.hits?.hits);
4597
+ } catch (u) {
4598
+ i(String(u));
4599
+ }
4600
+ }, [n]), /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
4601
+ s && /* @__PURE__ */ t.jsxs(
4602
+ "div",
4603
+ {
4604
+ className: "flex gap-1 items-center justify-end",
4605
+ onMouseEnter: () => a(!0),
4606
+ onMouseLeave: () => a(!1),
4607
+ children: [
4608
+ /* @__PURE__ */ t.jsx(
4609
+ "div",
4610
+ {
4611
+ className: de("size-6 transition", {
4612
+ "opacity-0": !o
4613
+ }),
4614
+ children: /* @__PURE__ */ t.jsx(ts, { textToCopy: s })
4615
+ }
4616
+ ),
4617
+ /* @__PURE__ */ t.jsx(
4618
+ "div",
4619
+ {
4620
+ className: "max-w-[85%] overflow-auto text-left px-3 py-2 bg-white dark:bg-[#202126] rounded-xl border border-black/12 dark:border-black/15 font-normal text-sm text-[#333333] dark:text-[#D8D8D8] cursor-pointer user-select-text whitespace-pre-wrap",
4621
+ onDoubleClick: m,
4622
+ children: s
4623
+ }
4624
+ )
4625
+ ]
4626
+ }
4627
+ ),
4628
+ c && /* @__PURE__ */ t.jsx(
4629
+ "div",
4630
+ {
4631
+ className: de("flex justify-end flex-wrap gap-y-2 w-full", {
4632
+ "mt-3": s
4633
+ }),
4634
+ children: c.map((u) => {
4635
+ const { id: y, name: g, size: N, icon: P } = u._source;
4636
+ return /* @__PURE__ */ xr(
4637
+ Us,
4638
+ {
4639
+ ...u._source,
4640
+ key: y,
4641
+ uploading: !1,
4642
+ uploaded: !0,
4643
+ id: y,
4644
+ extname: P,
4645
+ attachmentId: y,
4646
+ name: g,
4647
+ path: g,
4648
+ size: N,
4649
+ deletable: !1
4650
+ }
4651
+ );
4652
+ })
4653
+ }
4654
+ )
4655
+ ] });
4656
+ };
4657
+ function Ks() {
4658
+ const [e, s] = T(), [n, o] = T(), [a, d] = T(), [c, f] = T(), [i, m] = T(), [u, y] = T(), [g, N] = T(), P = {
4659
+ deal_query_intent: ke((_) => {
4660
+ s((k) => k ? {
4661
+ ...k,
4662
+ message_chunk: (k.message_chunk || "") + (_.message_chunk || "")
4663
+ } : _);
4664
+ }, []),
4665
+ deal_tools: ke((_) => {
4666
+ o((k) => k ? {
4667
+ ...k,
4668
+ message_chunk: (k.message_chunk || "") + (_.message_chunk || "")
4669
+ } : _);
4670
+ }, []),
4671
+ deal_fetch_source: ke((_) => {
4672
+ d((k) => k ? {
4673
+ ...k,
4674
+ message_chunk: (k.message_chunk || "") + (_.message_chunk || "")
4675
+ } : _);
4676
+ }, []),
4677
+ deal_pick_source: ke((_) => {
4678
+ f((k) => k ? {
4679
+ ...k,
4680
+ message_chunk: (k.message_chunk || "") + (_.message_chunk || "")
4681
+ } : _);
4682
+ }, []),
4683
+ deal_deep_read: ke((_) => {
4684
+ m((k) => k ? {
4685
+ ...k,
4686
+ message_chunk: (k.message_chunk || "") + "&" + (_.message_chunk || "")
4687
+ } : _);
4688
+ }, []),
4689
+ deal_think: ke((_) => {
4690
+ y((k) => k ? {
4691
+ ...k,
4692
+ message_chunk: (k.message_chunk || "") + (_.message_chunk || "")
4693
+ } : _);
4694
+ }, []),
4695
+ deal_response: ke((_) => {
4696
+ N((k) => k ? {
4697
+ ...k,
4698
+ message_chunk: (k.message_chunk || "") + (_.message_chunk || "")
4699
+ } : _);
4700
+ }, [])
4701
+ };
4702
+ return {
4703
+ data: {
4704
+ query_intent: e,
4705
+ tools: n,
4706
+ fetch_source: a,
4707
+ pick_source: c,
4708
+ deep_read: i,
4709
+ think: u,
4710
+ response: g
4711
+ },
4712
+ handlers: P,
4713
+ clearAllChunkData: () => new Promise((_) => {
4714
+ s(void 0), o(void 0), d(void 0), f(void 0), m(void 0), y(void 0), N(void 0), setTimeout(_, 0);
4715
+ })
4716
+ };
4717
+ }
4718
+ function Xs(e) {
4719
+ if (e)
4720
+ return e === "light" ? "light" : e === "dark" || typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
4721
+ }
4722
+ const Qs = wt(jt(function({
4723
+ message: s,
4724
+ isTyping: n,
4725
+ onResend: o,
4726
+ hide_assistant: a = !1,
4727
+ rootClassName: d,
4728
+ actionClassName: c,
4729
+ actionIconSize: f,
4730
+ copyButtonId: i,
4731
+ formatUrl: m,
4732
+ theme: u,
4733
+ locale: y
4734
+ }, g) {
4735
+ const { t: N, i18n: P } = he(), $ = Xs(u), _ = Je((w) => w.currentAssistant), k = Je((w) => w.assistantList), [F, Q] = T({}), {
4736
+ data: {
4737
+ query_intent: ee,
4738
+ tools: te,
4739
+ fetch_source: H,
4740
+ pick_source: ne,
4741
+ deep_read: v,
4742
+ think: M,
4743
+ response: ue
4744
+ },
4745
+ handlers: Z,
4746
+ clearAllChunkData: ae
4747
+ } = Ks(), [V, Y] = T({
4748
+ query_intent: !1,
4749
+ tools: !1,
4750
+ fetch_source: !1,
4751
+ pick_source: !1,
4752
+ deep_read: !1,
4753
+ think: !1,
4754
+ response: !1
4755
+ }), G = gr(!1);
4756
+ br(g, () => ({
4757
+ addChunk: (w) => {
4758
+ if (Y(() => ({
4759
+ query_intent: !1,
4760
+ tools: !1,
4761
+ fetch_source: !1,
4762
+ pick_source: !1,
4763
+ deep_read: !1,
4764
+ think: !1,
4765
+ response: !1,
4766
+ [w.chunk_type || ""]: !0
4767
+ })), w.chunk_type === "query_intent")
4768
+ Z.deal_query_intent(w);
4769
+ else if (w.chunk_type === "tools")
4770
+ Z.deal_tools(w);
4771
+ else if (w.chunk_type === "fetch_source")
4772
+ Z.deal_fetch_source(w);
4773
+ else if (w.chunk_type === "pick_source")
4774
+ Z.deal_pick_source(w);
4775
+ else if (w.chunk_type === "deep_read")
4776
+ Z.deal_deep_read(w);
4777
+ else if (w.chunk_type === "think")
4778
+ Z.deal_think(w);
4779
+ else if (w.chunk_type === "response") {
4780
+ const K = w.message_chunk;
4781
+ if (typeof K == "string") {
4782
+ if (K.includes("<think>") || K.includes("<think>")) {
4783
+ G.current = !0;
4784
+ return;
4785
+ } else if (K.includes("</think>") || K.includes("</think>")) {
4786
+ G.current = !1;
4787
+ return;
4788
+ }
4789
+ G.current ? Z.deal_think({ ...w, chunk_type: "think" }) : Z.deal_response(w);
4790
+ }
4791
+ }
4792
+ },
4793
+ reset: () => {
4794
+ ae(), Y({
4795
+ query_intent: !1,
4796
+ tools: !1,
4797
+ fetch_source: !1,
4798
+ pick_source: !1,
4799
+ deep_read: !1,
4800
+ think: !1,
4801
+ response: !1
4802
+ }), G.current = !1;
4803
+ }
4804
+ }));
4805
+ const I = s?._source?.type === "assistant", J = s?._source?.assistant_id, b = s?._source?.assistant_item;
4806
+ U(() => {
4807
+ y && P.language !== y && P.changeLanguage(y);
4808
+ }, [y, P]), U(() => {
4809
+ if (b) {
4810
+ Q(b);
4811
+ return;
4812
+ }
4813
+ if (I && J && Array.isArray(k)) {
4814
+ Q(
4815
+ k.find((w) => w._id === J) ?? {}
4816
+ );
4817
+ return;
4818
+ }
4819
+ Q(_);
4820
+ }, [
4821
+ I,
4822
+ b,
4823
+ J,
4824
+ k,
4825
+ _
4826
+ ]);
4827
+ const oe = s?._source?.message || "", xe = s?._source?.attachments ?? [], re = s?._source?.details || [], ie = s?._source?.question || "", z = n === !1 && (oe || ue?.message_chunk), [q, fe] = T([]), me = (w) => {
4828
+ fe(w);
4829
+ }, O = () => I ? /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
4830
+ /* @__PURE__ */ t.jsx(
4831
+ $r,
4832
+ {
4833
+ Detail: re.find((w) => w.type === "query_intent"),
4834
+ ChunkData: ee,
4835
+ getSuggestion: me,
4836
+ loading: V?.query_intent
4837
+ }
4838
+ ),
4839
+ /* @__PURE__ */ t.jsx(
4840
+ Br,
4841
+ {
4842
+ Detail: re.find((w) => w.type === "tools"),
4843
+ ChunkData: te,
4844
+ loading: V?.tools
4845
+ }
4846
+ ),
4847
+ /* @__PURE__ */ t.jsx(
4848
+ Dr,
4849
+ {
4850
+ Detail: re.find((w) => w.type === "fetch_source"),
4851
+ ChunkData: H,
4852
+ loading: V?.fetch_source,
4853
+ formatUrl: m
4854
+ }
4855
+ ),
4856
+ /* @__PURE__ */ t.jsx(
4857
+ Yr,
4858
+ {
4859
+ Detail: re.find((w) => w.type === "pick_source"),
4860
+ ChunkData: ne,
4861
+ loading: V?.pick_source
4862
+ }
4863
+ ),
4864
+ /* @__PURE__ */ t.jsx(
4865
+ Kr,
4866
+ {
4867
+ Detail: re.find((w) => w.type === "deep_read"),
4868
+ ChunkData: v,
4869
+ loading: V?.deep_read
4870
+ }
4871
+ ),
4872
+ /* @__PURE__ */ t.jsx(
4873
+ Xr,
4874
+ {
4875
+ Detail: re.find((w) => w.type === "think"),
4876
+ ChunkData: M,
4877
+ loading: V?.think
4878
+ }
4879
+ ),
4880
+ /* @__PURE__ */ t.jsx(Ct, { content: oe || ue?.message_chunk || "" }),
4881
+ n && /* @__PURE__ */ t.jsx("div", { className: "inline-block w-1.5 h-5 ml-0.5 -mb-0.5 bg-[#666666] dark:bg-[#A3A3A3] rounded-sm animate-typing" }),
4882
+ z && /* @__PURE__ */ t.jsx(
4883
+ Zr,
4884
+ {
4885
+ id: s._id ?? "",
4886
+ content: oe || ue?.message_chunk || "",
4887
+ question: ie,
4888
+ actionClassName: c,
4889
+ actionIconSize: f,
4890
+ copyButtonId: i,
4891
+ onResend: () => {
4892
+ o && o(ie);
4893
+ }
4894
+ }
4895
+ ),
4896
+ !n && /* @__PURE__ */ t.jsx(
4897
+ es,
4898
+ {
4899
+ suggestions: q,
4900
+ onSelect: (w) => o && o(w)
4901
+ }
4902
+ )
4903
+ ] }) : /* @__PURE__ */ t.jsx(Js, { message: oe, attachments: xe });
4904
+ return /* @__PURE__ */ t.jsx(
4905
+ "div",
4906
+ {
4907
+ className: de(
4908
+ "w-full py-8 flex",
4909
+ [I ? "justify-start" : "justify-end"],
4910
+ $ === "dark" && "dark",
4911
+ d
4912
+ ),
4913
+ children: /* @__PURE__ */ t.jsx(
4914
+ "div",
4915
+ {
4916
+ className: `w-full px-4 flex gap-4 ${I ? "w-full" : "flex-row-reverse"}`,
4917
+ children: /* @__PURE__ */ t.jsxs(
4918
+ "div",
4919
+ {
4920
+ className: `w-full space-y-2 ${I ? "text-left" : "text-right"}`,
4921
+ children: [
4922
+ !a && /* @__PURE__ */ t.jsxs("div", { className: "w-full flex items-center gap-1 font-semibold text-sm text-[#333] dark:text-[#d8d8d8]", children: [
4923
+ I ? /* @__PURE__ */ t.jsx("div", { className: "w-6 h-6 flex justify-center items-center rounded-full bg-white border border-[#E6E6E6]", children: F?._source?.icon?.startsWith("font_") ? /* @__PURE__ */ t.jsx(
4924
+ Ot,
4925
+ {
4926
+ name: F._source.icon,
4927
+ className: "w-4 h-4"
4928
+ }
4929
+ ) : /* @__PURE__ */ t.jsx(
4930
+ "img",
4931
+ {
4932
+ src: zr,
4933
+ className: "w-4 h-4",
4934
+ alt: N("assistant.message.logo")
4935
+ }
4936
+ ) }) : null,
4937
+ I ? F?._source?.name || "Coco AI" : ""
4938
+ ] }),
4939
+ /* @__PURE__ */ t.jsx("div", { className: "w-full prose dark:prose-invert prose-sm max-w-none", children: /* @__PURE__ */ t.jsx("div", { className: "w-full pl-7 text-[#333] dark:text-[#d8d8d8] leading-relaxed", children: O() }) })
4940
+ ]
4941
+ }
4942
+ )
4943
+ }
4944
+ )
4945
+ }
4946
+ );
4947
+ })), an = wt(jt((e, s) => /* @__PURE__ */ t.jsx(yr, { i18n: Et, children: /* @__PURE__ */ t.jsx(Qs, { ...e, ref: s }) })));
4948
+ export {
4949
+ an as ChatMessage
4950
+ };