gentiq 0.9.0 → 0.10.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.
@@ -1,10 +1,10 @@
1
- import { jsx as i, jsxs as x, Fragment as ce } from "react/jsx-runtime";
1
+ import { jsx as i, jsxs as w, Fragment as ce } from "react/jsx-runtime";
2
2
  import * as Ye from "react";
3
3
  import { createContext as pe, useContext as ye, useState as P, useEffect as Y, useCallback as V, useMemo as ue, useRef as Q, Children as Pn, memo as Te } from "react";
4
4
  import { useTranslation as z, initReactI18next as Mn } from "react-i18next";
5
5
  import { Slot as Wt } from "@radix-ui/react-slot";
6
6
  import { cva as tt } from "class-variance-authority";
7
- import { QuoteIcon as Ae, CheckIcon as Ie, SendIcon as zn, ArrowDownIcon as Un, ChevronDownIcon as ve, BookIcon as qn, XIcon as me, ArrowUpIcon as $n, Loader2Icon as Bn, SquareIcon as Hn, FileIcon as Vt, PaperclipIcon as jn, MessageCircle as Gn, RefreshCcwIcon as Wn, ThumbsUpIcon as Vn, ThumbsDownIcon as Yn, CopyIcon as Yt, BrainIcon as Xn, WrenchIcon as Kn, ImagePlusIcon as Zn, CodeIcon as Qn, DownloadIcon as Ee, GlobeIcon as Jn, XCircleIcon as Xt, CheckCircleIcon as eo, ClockIcon as to, CircleIcon as no, ChevronUpIcon as oo } from "lucide-react";
7
+ import { QuoteIcon as Ae, CheckIcon as Ie, SendIcon as zn, ArrowDownIcon as Un, ChevronDownIcon as _e, BookIcon as qn, XIcon as me, ArrowUpIcon as $n, Loader2Icon as Bn, SquareIcon as Hn, FileIcon as Vt, PaperclipIcon as jn, MessageCircle as Gn, RefreshCcwIcon as Wn, ThumbsUpIcon as Vn, ThumbsDownIcon as Yn, CopyIcon as Yt, BrainIcon as Xn, WrenchIcon as Kn, ImagePlusIcon as Zn, CodeIcon as Qn, DownloadIcon as Ee, GlobeIcon as Jn, XCircleIcon as Xt, CheckCircleIcon as eo, ClockIcon as to, CircleIcon as no, ChevronUpIcon as oo } from "lucide-react";
8
8
  import * as le from "@radix-ui/react-tooltip";
9
9
  import { toast as ro } from "sonner";
10
10
  import { createPortal as ao } from "react-dom";
@@ -21,7 +21,7 @@ import { StickToBottom as Zt, useStickToBottomContext as Qt } from "use-stick-to
21
21
  import so from "i18next";
22
22
  import * as M from "@radix-ui/react-select";
23
23
  import * as fe from "@radix-ui/react-dropdown-menu";
24
- import * as gt from "@radix-ui/react-checkbox";
24
+ import * as ht from "@radix-ui/react-checkbox";
25
25
  import { clsx as co } from "clsx";
26
26
  import { twMerge as uo } from "tailwind-merge";
27
27
  const po = {
@@ -44,22 +44,22 @@ function ul({
44
44
  return d === "system" || d === "light" || d === "dark" ? d : void 0;
45
45
  }), [c, s] = P(
46
46
  () => window.localStorage.getItem(n + "-accent") || void 0
47
- ), [u, g] = P(
47
+ ), [u, h] = P(
48
48
  () => window.localStorage.getItem(n + "-radius") || "1.25rem"
49
49
  ), { i18n: m } = z(["theme"]), f = a ?? o?.defaultTheme ?? t, p = c ?? o?.accent;
50
50
  Y(() => {
51
51
  const d = window.document.documentElement;
52
52
  if (d.classList.remove("light", "dark"), f === "system") {
53
- const k = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
54
- d.classList.add(k);
53
+ const v = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
54
+ d.classList.add(v);
55
55
  return;
56
56
  }
57
57
  d.classList.add(f);
58
58
  }, [f]), Y(() => {
59
- const d = window.document.documentElement, k = m.language?.split("-")[0] || m.language;
60
- let _ = o?.typography?.fontFamily;
61
- if (typeof _ == "object" && _ !== null && (_ = _[m.language] || _[k] || _.en || Object.values(_)[0]), _) {
62
- const E = _.includes(" ") && !_.startsWith("'") && !_.startsWith('"') ? `"${_}"` : _;
59
+ const d = window.document.documentElement, v = m.language?.split("-")[0] || m.language;
60
+ let k = o?.typography?.fontFamily;
61
+ if (typeof k == "object" && k !== null && (k = k[m.language] || k[v] || k.en || Object.values(k)[0]), k) {
62
+ const E = k.includes(" ") && !k.startsWith("'") && !k.startsWith('"') ? `"${k}"` : k;
63
63
  d.style.setProperty("--gentiq-font-family", E), d.style.fontFamily = E, window.document.body && (window.document.body.style.fontFamily = E);
64
64
  }
65
65
  const y = u || (typeof o?.radius == "number" ? `${o.radius}px` : o?.radius);
@@ -76,7 +76,7 @@ function ul({
76
76
  },
77
77
  radius: u,
78
78
  setRadius: (d) => {
79
- d ? window.localStorage.setItem(n + "-radius", d) : window.localStorage.removeItem(n + "-radius"), g(d);
79
+ d ? window.localStorage.setItem(n + "-radius", d) : window.localStorage.removeItem(n + "-radius"), h(d);
80
80
  }
81
81
  };
82
82
  return /* @__PURE__ */ i(Jt.Provider, { ...r, value: b, children: e });
@@ -92,7 +92,7 @@ function pl({ api: e, children: t }) {
92
92
  return /* @__PURE__ */ i(en.Provider, { value: e, children: t });
93
93
  }
94
94
  const $ = (e) => e;
95
- function go(e, t) {
95
+ function ho(e, t) {
96
96
  const n = ot(), [o, r] = P(
97
97
  e.metadata?.feedback
98
98
  ), a = V((c) => {
@@ -104,7 +104,7 @@ function go(e, t) {
104
104
  const s = o === c ? void 0 : c;
105
105
  r(s);
106
106
  try {
107
- const u = e.parts.find((f) => f.type === "data-message-id"), g = u ? $(u) : void 0, m = g ? g.data[0].message_id : e.id;
107
+ const u = e.parts.find((f) => f.type === "data-message-id"), h = u ? $(u) : void 0, m = h ? h.data[0].message_id : e.id;
108
108
  await n.saveFeedback(t, m, s ?? null);
109
109
  } catch (u) {
110
110
  console.error("Error saving feedback:", u);
@@ -118,7 +118,7 @@ function go(e, t) {
118
118
  copy: a
119
119
  };
120
120
  }
121
- const ho = /* @__PURE__ */ new Set([
121
+ const go = /* @__PURE__ */ new Set([
122
122
  "ar",
123
123
  "fa",
124
124
  "he",
@@ -142,7 +142,7 @@ function mo() {
142
142
  language: e.language || s?.language || "en",
143
143
  showToolDetails: s?.showToolDetails ?? !0
144
144
  };
145
- }, [e.language, t, n]), r = (o.language ?? "").split("-")[0].toLowerCase(), a = ho.has(r), l = t?.language;
145
+ }, [e.language, t, n]), r = (o.language ?? "").split("-")[0].toLowerCase(), a = go.has(r), l = t?.language;
146
146
  return Y(() => {
147
147
  if (typeof window > "u") return;
148
148
  const c = localStorage.getItem("gentiq-last-default-lang");
@@ -157,10 +157,10 @@ function mo() {
157
157
  error: null
158
158
  };
159
159
  }
160
- function v(...e) {
160
+ function _(...e) {
161
161
  return uo(co(e));
162
162
  }
163
- function gl(e, t) {
163
+ function hl(e, t) {
164
164
  if (t === "/") return e;
165
165
  const n = e.endsWith("/") ? e.slice(0, -1) : e, o = t.startsWith("/") ? t : "/" + t;
166
166
  return n + o;
@@ -168,7 +168,7 @@ function gl(e, t) {
168
168
  const tn = pe(null), q = (e) => e.replace(/\s+/g, " ").trim(), Fe = (e, t) => {
169
169
  const n = q(e);
170
170
  return n.length <= t ? n : `${n.slice(0, Math.max(0, t - 1)).trim()}...`;
171
- }, ht = (e) => [
171
+ }, gt = (e) => [
172
172
  e.sourceId,
173
173
  e.messageId,
174
174
  e.partIndex,
@@ -221,7 +221,7 @@ const tn = pe(null), q = (e) => e.replace(/\s+/g, " ").trim(), Fe = (e, t) => {
221
221
  }
222
222
  t += r, n.push(a), o = !1;
223
223
  }), t.endsWith(" ") && (t = t.slice(0, -1), n.pop()), { normalized: t, map: n };
224
- }, vo = (e) => {
224
+ }, _o = (e) => {
225
225
  let t = e.parentElement;
226
226
  for (; t; ) {
227
227
  const n = window.getComputedStyle(t);
@@ -229,8 +229,8 @@ const tn = pe(null), q = (e) => e.replace(/\s+/g, " ").trim(), Fe = (e, t) => {
229
229
  t = t.parentElement;
230
230
  }
231
231
  return null;
232
- }, ko = (e) => {
233
- const t = vo(e);
232
+ }, vo = (e) => {
233
+ const t = _o(e);
234
234
  if (!t) {
235
235
  e.scrollIntoView({ behavior: "smooth", block: "center" });
236
236
  return;
@@ -240,10 +240,10 @@ const tn = pe(null), q = (e) => e.replace(/\s+/g, " ").trim(), Fe = (e, t) => {
240
240
  top: Math.max(0, r),
241
241
  behavior: "smooth"
242
242
  });
243
- }, xe = (e) => typeof CSS < "u" && CSS.escape ? CSS.escape(e) : e.replace(/"/g, '\\"'), _o = (e) => {
243
+ }, we = (e) => typeof CSS < "u" && CSS.escape ? CSS.escape(e) : e.replace(/"/g, '\\"'), ko = (e) => {
244
244
  if (e.sourceId) {
245
245
  const r = document.querySelector(
246
- `[data-gentiq-reference-source-id="${xe(e.sourceId)}"]`
246
+ `[data-gentiq-reference-source-id="${we(e.sourceId)}"]`
247
247
  );
248
248
  if (r) return r;
249
249
  }
@@ -252,7 +252,7 @@ const tn = pe(null), q = (e) => e.replace(/\s+/g, " ").trim(), Fe = (e, t) => {
252
252
  const r = Array.from(
253
253
  document.querySelectorAll("[data-gentiq-reference-source-id]")
254
254
  ), a = e.messageId, c = (a ? r.filter(
255
- (u) => u.closest(`[data-gentiq-message-id="${xe(a)}"]`)
255
+ (u) => u.closest(`[data-gentiq-message-id="${we(a)}"]`)
256
256
  ) : r).find(
257
257
  (u) => Ne(u.textContent || "") === t
258
258
  );
@@ -274,7 +274,7 @@ const tn = pe(null), q = (e) => e.replace(/\s+/g, " ").trim(), Fe = (e, t) => {
274
274
  }
275
275
  if (e.messageId) {
276
276
  const a = document.querySelector(
277
- `[data-gentiq-message-id="${xe(e.messageId)}"]`
277
+ `[data-gentiq-message-id="${we(e.messageId)}"]`
278
278
  )?.querySelector('[data-gentiq-reference-kind="text"]');
279
279
  if (a) return a;
280
280
  }
@@ -289,11 +289,11 @@ const tn = pe(null), q = (e) => e.replace(/\s+/g, " ").trim(), Fe = (e, t) => {
289
289
  if (e.kind !== "text") {
290
290
  const r = q(e.excerpt || ""), a = q(e.label || ""), c = Array.from(
291
291
  document.querySelectorAll(
292
- `[data-gentiq-reference-kind="${xe(e.kind)}"]`
292
+ `[data-gentiq-reference-kind="${we(e.kind)}"]`
293
293
  )
294
294
  ).find((s) => {
295
- const u = q(s.textContent || ""), g = q(s.dataset.gentiqReferenceLabel || ""), m = q(s.dataset.gentiqReferenceExcerpt || "");
296
- return !!r && (u.includes(r) || m === r) || !!a && g === a && !!r && u.includes(r);
295
+ const u = q(s.textContent || ""), h = q(s.dataset.gentiqReferenceLabel || ""), m = q(s.dataset.gentiqReferenceExcerpt || "");
296
+ return !!r && (u.includes(r) || m === r) || !!a && h === a && !!r && u.includes(r);
297
297
  });
298
298
  if (c) return c;
299
299
  }
@@ -322,7 +322,7 @@ const tn = pe(null), q = (e) => e.replace(/\s+/g, " ").trim(), Fe = (e, t) => {
322
322
  u.removeChild(s), u.normalize();
323
323
  }
324
324
  }, 1800), s;
325
- }, xo = (e, t) => {
325
+ }, wo = (e, t) => {
326
326
  const n = e.textContent || "", o = t.replace(/\.\.\.$/, "").trim();
327
327
  if (!o) return !1;
328
328
  let r = n.indexOf(o), a = r + o.length;
@@ -336,42 +336,42 @@ const tn = pe(null), q = (e) => e.replace(/\s+/g, " ").trim(), Fe = (e, t) => {
336
336
  }
337
337
  return r === -1 || a <= r ? !1 : on(e, r, a);
338
338
  };
339
- function hl({
339
+ function gl({
340
340
  enabled: e = !0,
341
341
  readonly: t = !1,
342
342
  maxItems: n = 5,
343
343
  maxExcerptLength: o = 500,
344
344
  children: r
345
345
  }) {
346
- const { t: a } = z(["chat"]), [l, c] = P([]), [s, u] = P(null), g = Q(/* @__PURE__ */ new Map()), m = Q(null), f = e && !t, p = V((w) => {
347
- w.sourceId && g.current.set(w.sourceId, w);
348
- }, []), b = V((w) => {
349
- w && g.current.delete(w);
346
+ const { t: a } = z(["chat"]), [l, c] = P([]), [s, u] = P(null), h = Q(/* @__PURE__ */ new Map()), m = Q(null), f = e && !t, p = V((x) => {
347
+ x.sourceId && h.current.set(x.sourceId, x);
348
+ }, []), b = V((x) => {
349
+ x && h.current.delete(x);
350
350
  }, []), d = V(
351
- (w) => {
351
+ (x) => {
352
352
  if (!f) return null;
353
353
  const C = {
354
- ...w,
355
- id: w.id || `ref_${Kt(10)}`,
356
- label: Fe(w.label || a("reference"), 90),
357
- excerpt: Fe(w.excerpt, o)
354
+ ...x,
355
+ id: x.id || `ref_${Kt(10)}`,
356
+ label: Fe(x.label || a("reference"), 90),
357
+ excerpt: Fe(x.excerpt, o)
358
358
  };
359
359
  return C.excerpt ? (c((O) => {
360
- const U = ht(C), F = O.filter((R) => ht(R) !== U);
360
+ const U = gt(C), F = O.filter((R) => gt(R) !== U);
361
361
  return [C, ...F].slice(0, n);
362
362
  }), C) : null;
363
363
  },
364
364
  [f, o, n, a]
365
- ), k = V((w) => {
366
- c((C) => C.filter((O) => O.id !== w));
367
- }, []), _ = V(() => {
365
+ ), v = V((x) => {
366
+ c((C) => C.filter((O) => O.id !== x));
367
+ }, []), k = V(() => {
368
368
  c([]);
369
- }, []), y = V((w) => {
369
+ }, []), y = V((x) => {
370
370
  if (typeof document > "u") return !1;
371
- const C = _o(w);
371
+ const C = ko(x);
372
372
  if (!C) return !1;
373
- const O = typeof w.metadata?.textStart == "number" ? w.metadata.textStart : void 0, U = typeof w.metadata?.textEnd == "number" ? w.metadata.textEnd : void 0, F = w.kind === "text" ? O !== void 0 && U !== void 0 ? on(C, O, U) : xo(C, w.excerpt) : !1;
374
- return ko(F || C), F || (C.classList.add("gentiq-reference-highlight"), m.current && window.clearTimeout(m.current), m.current = window.setTimeout(() => {
373
+ const O = typeof x.metadata?.textStart == "number" ? x.metadata.textStart : void 0, U = typeof x.metadata?.textEnd == "number" ? x.metadata.textEnd : void 0, F = x.kind === "text" ? O !== void 0 && U !== void 0 ? on(C, O, U) : wo(C, x.excerpt) : !1;
374
+ return vo(F || C), F || (C.classList.add("gentiq-reference-highlight"), m.current && window.clearTimeout(m.current), m.current = window.setTimeout(() => {
375
375
  C.classList.remove("gentiq-reference-highlight"), m.current = null;
376
376
  }, 1800)), !0;
377
377
  }, []);
@@ -380,7 +380,7 @@ function hl({
380
380
  u(null);
381
381
  return;
382
382
  }
383
- const w = () => {
383
+ const x = () => {
384
384
  window.setTimeout(() => {
385
385
  const O = window.getSelection();
386
386
  if (!O || O.isCollapsed || O.rangeCount === 0) {
@@ -402,7 +402,7 @@ function hl({
402
402
  u(null);
403
403
  return;
404
404
  }
405
- const ee = g.current.get(L.dataset.gentiqReferenceSourceId || "") || fo(L), Le = L.textContent || "";
405
+ const ee = h.current.get(L.dataset.gentiqReferenceSourceId || "") || fo(L), Le = L.textContent || "";
406
406
  u({
407
407
  top: Math.max(8, H.top - 42),
408
408
  left: H.left + H.width / 2,
@@ -422,8 +422,8 @@ function hl({
422
422
  const O = window.getSelection();
423
423
  (!O || O.isCollapsed) && u(null);
424
424
  };
425
- return document.addEventListener("mouseup", w), document.addEventListener("touchend", w), document.addEventListener("selectionchange", C), () => {
426
- document.removeEventListener("mouseup", w), document.removeEventListener("touchend", w), document.removeEventListener("selectionchange", C);
425
+ return document.addEventListener("mouseup", x), document.addEventListener("touchend", x), document.addEventListener("selectionchange", C), () => {
426
+ document.removeEventListener("mouseup", x), document.removeEventListener("touchend", x), document.removeEventListener("selectionchange", C);
427
427
  };
428
428
  }, [f, o]), Y(
429
429
  () => () => {
@@ -435,8 +435,8 @@ function hl({
435
435
  () => ({
436
436
  references: l,
437
437
  addReference: d,
438
- removeReference: k,
439
- clearReferences: _,
438
+ removeReference: v,
439
+ clearReferences: k,
440
440
  focusReference: y,
441
441
  registerSource: p,
442
442
  unregisterSource: b,
@@ -445,15 +445,15 @@ function hl({
445
445
  [
446
446
  l,
447
447
  d,
448
+ v,
448
449
  k,
449
- _,
450
450
  y,
451
451
  p,
452
452
  b,
453
453
  e
454
454
  ]
455
455
  );
456
- return /* @__PURE__ */ x(tn.Provider, { value: E, children: [
456
+ return /* @__PURE__ */ w(tn.Provider, { value: E, children: [
457
457
  r,
458
458
  s && typeof document < "u" && ao(
459
459
  /* @__PURE__ */ i(
@@ -462,7 +462,7 @@ function hl({
462
462
  type: "button",
463
463
  className: "fixed z-50 flex size-9 -translate-x-1/2 items-center justify-center rounded-lg bg-background text-foreground shadow-lg ring-1 ring-border/60 transition hover:scale-105 hover:bg-muted",
464
464
  style: { top: s.top, left: s.left },
465
- onMouseDown: (w) => w.preventDefault(),
465
+ onMouseDown: (x) => x.preventDefault(),
466
466
  onClick: () => {
467
467
  d(s.reference), window.getSelection()?.removeAllRanges(), u(null);
468
468
  },
@@ -499,7 +499,7 @@ function Xe({
499
499
  children: o,
500
500
  ...r
501
501
  }) {
502
- const { t: a } = z(["chat"]), { addReference: l, registerSource: c, unregisterSource: s, enabled: u } = rt(), g = Q(null), m = Q(`source_${Kt(8)}`), f = ue(
502
+ const { t: a } = z(["chat"]), { addReference: l, registerSource: c, unregisterSource: s, enabled: u } = rt(), h = Q(null), m = Q(`source_${Kt(8)}`), f = ue(
503
503
  () => e.sourceId || [e.messageId, e.partIndex, e.kind].filter(Boolean).join("-") || m.current,
504
504
  [e.kind, e.messageId, e.partIndex, e.sourceId]
505
505
  ), p = ue(
@@ -509,7 +509,7 @@ function Xe({
509
509
  }),
510
510
  [e, f]
511
511
  ), b = V(() => {
512
- const d = g.current?.textContent || "";
512
+ const d = h.current?.textContent || "";
513
513
  return {
514
514
  ...p,
515
515
  metadata: {
@@ -518,11 +518,11 @@ function Xe({
518
518
  }
519
519
  };
520
520
  }, [p]);
521
- return Y(() => (c(b()), () => s(f)), [c, s, b, f]), /* @__PURE__ */ x(
521
+ return Y(() => (c(b()), () => s(f)), [c, s, b, f]), /* @__PURE__ */ w(
522
522
  "div",
523
523
  {
524
- ref: g,
525
- className: v("group/reference relative rounded-md transition-colors", n),
524
+ ref: h,
525
+ className: _("group/reference relative rounded-md transition-colors", n),
526
526
  "data-gentiq-reference-source-id": f,
527
527
  "data-gentiq-reference-kind": p.kind,
528
528
  "data-gentiq-reference-message-id": p.messageId,
@@ -550,18 +550,18 @@ function Xe({
550
550
  }
551
551
  );
552
552
  }
553
- const bt = "<GENTIQ_CHOICE_QUESTION>", wo = "</GENTIQ_CHOICE_QUESTION>";
554
- function he(e) {
555
- if (Array.isArray(e)) return he(e[0]);
553
+ const bt = "<GENTIQ_CHOICE_QUESTION>", xo = "</GENTIQ_CHOICE_QUESTION>";
554
+ function ge(e) {
555
+ if (Array.isArray(e)) return ge(e[0]);
556
556
  if (typeof e == "string")
557
557
  try {
558
- return he(JSON.parse(e));
558
+ return ge(JSON.parse(e));
559
559
  } catch {
560
560
  return null;
561
561
  }
562
562
  if (!e || typeof e != "object") return null;
563
563
  const t = e;
564
- if (!t.question && t.data) return he(t.data);
564
+ if (!t.question && t.data) return ge(t.data);
565
565
  if (typeof t.question != "string" || !Array.isArray(t.choices)) return null;
566
566
  const n = t.choices.map((o) => {
567
567
  if (!o || typeof o.label != "string") return null;
@@ -579,17 +579,17 @@ function So(e) {
579
579
  if (!e) return null;
580
580
  const t = e.indexOf(bt);
581
581
  if (t < 0) return null;
582
- const n = t + bt.length, o = e.indexOf(wo, n);
582
+ const n = t + bt.length, o = e.indexOf(xo, n);
583
583
  if (o < 0) return null;
584
584
  const r = e.slice(n, o).trim();
585
- return he(r);
585
+ return ge(r);
586
586
  }
587
587
  function Eo({ part: e, disabled: t, onAnswer: n }) {
588
- const o = ue(() => he(e.data), [e.data]), [r, a] = P(""), [l, c] = P(null), [s, u] = P(!1);
588
+ const o = ue(() => ge(e.data), [e.data]), [r, a] = P(""), [l, c] = P(null), [s, u] = P(!1);
589
589
  if (!o) return null;
590
- const g = t || s || l !== null || !n, m = async (p) => {
590
+ const h = t || s || l !== null || !n, m = async (p) => {
591
591
  const b = p.trim();
592
- if (!(!b || g)) {
592
+ if (!(!b || h)) {
593
593
  u(!0), c(b);
594
594
  try {
595
595
  await n?.(b);
@@ -602,19 +602,19 @@ function Eo({ part: e, disabled: t, onAnswer: n }) {
602
602
  }, f = (p) => {
603
603
  p.preventDefault(), m(r);
604
604
  };
605
- return /* @__PURE__ */ i("div", { className: "my-3 flex w-full justify-start animate-in-bubble", children: /* @__PURE__ */ x("div", { className: "w-full max-w-xl rounded-xl border border-border/70 bg-card/90 p-3.5 shadow-sm", children: [
605
+ return /* @__PURE__ */ i("div", { className: "my-3 flex w-full justify-start animate-in-bubble", children: /* @__PURE__ */ w("div", { className: "w-full max-w-xl rounded-xl border border-border/70 bg-card/90 p-3.5 shadow-sm", children: [
606
606
  /* @__PURE__ */ i("div", { className: "text-sm font-semibold leading-snug text-foreground", dir: "auto", children: o.question }),
607
607
  /* @__PURE__ */ i("div", { className: "mt-3 grid gap-2", children: o.choices.map((p) => {
608
608
  const b = l === p.label;
609
- return /* @__PURE__ */ x(
609
+ return /* @__PURE__ */ w(
610
610
  "button",
611
611
  {
612
612
  type: "button",
613
- disabled: g,
613
+ disabled: h,
614
614
  onClick: () => {
615
615
  m(p.label);
616
616
  },
617
- className: v(
617
+ className: _(
618
618
  "group flex min-h-10 w-full items-center justify-between gap-3 rounded-lg border border-border/65 bg-muted/25 px-3 py-2 text-left text-sm transition",
619
619
  "hover:border-primary/35 hover:bg-primary/8 focus-visible:ring-2 focus-visible:ring-primary/30 disabled:cursor-not-allowed disabled:opacity-70",
620
620
  b && "border-primary/45 bg-primary/10 text-primary"
@@ -624,7 +624,7 @@ function Eo({ part: e, disabled: t, onAnswer: n }) {
624
624
  /* @__PURE__ */ i(
625
625
  "span",
626
626
  {
627
- className: v(
627
+ className: _(
628
628
  "flex size-5 shrink-0 items-center justify-center rounded-full border border-border/70 text-transparent transition",
629
629
  b && "border-primary bg-primary text-primary-foreground"
630
630
  ),
@@ -636,12 +636,12 @@ function Eo({ part: e, disabled: t, onAnswer: n }) {
636
636
  p.label
637
637
  );
638
638
  }) }),
639
- o.allowCustom && /* @__PURE__ */ x("form", { onSubmit: f, className: "mt-3 flex items-center gap-2", children: [
639
+ o.allowCustom && /* @__PURE__ */ w("form", { onSubmit: f, className: "mt-3 flex items-center gap-2", children: [
640
640
  /* @__PURE__ */ i(
641
641
  "input",
642
642
  {
643
643
  value: r,
644
- disabled: g,
644
+ disabled: h,
645
645
  onChange: (p) => a(p.target.value),
646
646
  placeholder: "Other",
647
647
  className: "min-h-10 min-w-0 flex-1 rounded-lg border border-input bg-background px-3 text-sm outline-none transition placeholder:text-muted-foreground/70 focus-visible:ring-2 focus-visible:ring-primary/30 disabled:cursor-not-allowed disabled:opacity-70"
@@ -651,7 +651,7 @@ function Eo({ part: e, disabled: t, onAnswer: n }) {
651
651
  "button",
652
652
  {
653
653
  type: "submit",
654
- disabled: g || !r.trim(),
654
+ disabled: h || !r.trim(),
655
655
  className: "flex size-10 shrink-0 items-center justify-center rounded-lg bg-primary text-primary-foreground transition hover:bg-primary/90 focus-visible:ring-2 focus-visible:ring-primary/30 disabled:cursor-not-allowed disabled:opacity-50",
656
656
  "aria-label": "Send custom answer",
657
657
  title: "Send custom answer",
@@ -672,19 +672,19 @@ function No(e) {
672
672
  conversationId: c,
673
673
  isFinished: s,
674
674
  renderMessagePart: u,
675
- chat: g,
675
+ chat: h,
676
676
  readonly: m
677
677
  } = e, { showToolDetails: f } = mo(), {
678
678
  TextPart: p,
679
679
  ReasoningPart: b,
680
680
  ToolPart: d,
681
- FilePart: k,
682
- ReferencePart: _,
681
+ FilePart: v,
682
+ ReferencePart: k,
683
683
  ChoiceQuestionPart: y,
684
684
  toolComponents: E,
685
- referenceAdapters: w,
685
+ referenceAdapters: x,
686
686
  threadActions: C
687
- } = re(), { feedback: O, handleFeedback: U, copy: F } = go(n, c), R = (N) => {
687
+ } = re(), { feedback: O, handleFeedback: U, copy: F } = ho(n, c), R = (N) => {
688
688
  if (N.toolName) return N.toolName;
689
689
  if (typeof N.type == "string" && N.type.startsWith("tool-")) {
690
690
  const j = N.type.slice(5);
@@ -697,14 +697,14 @@ function No(e) {
697
697
  const W = Object.values(j).filter((De) => ["string", "number", "boolean"].includes(typeof De)).slice(0, 3).map(String);
698
698
  if (W.length > 0) return W.join(" · ");
699
699
  }
700
- const _e = N.input;
701
- if (_e && typeof _e == "object") {
702
- const W = Object.values(_e).filter((De) => ["string", "number", "boolean"].includes(typeof De)).slice(0, 3).map(String);
700
+ const ke = N.input;
701
+ if (ke && typeof ke == "object") {
702
+ const W = Object.values(ke).filter((De) => ["string", "number", "boolean"].includes(typeof De)).slice(0, 3).map(String);
703
703
  if (W.length > 0) return W.join(" · ");
704
704
  }
705
705
  return R(N) || "Tool result";
706
706
  }, L = (N, j) => {
707
- const W = (j ? w?.[j] : void 0)?.({ part: t, message: n, toolName: j, chat: g }) || {};
707
+ const W = (j ? x?.[j] : void 0)?.({ part: t, message: n, toolName: j, chat: h }) || {};
708
708
  return {
709
709
  ...N,
710
710
  ...W,
@@ -727,7 +727,7 @@ function No(e) {
727
727
  "data-title"
728
728
  ].includes(t.type)) return null;
729
729
  if (t.type === "data-reference")
730
- return /* @__PURE__ */ i(_, { part: t, message: n });
730
+ return /* @__PURE__ */ i(k, { part: t, message: n });
731
731
  if (t.type === "data-choice-question")
732
732
  return /* @__PURE__ */ i(
733
733
  y,
@@ -735,7 +735,7 @@ function No(e) {
735
735
  part: t,
736
736
  message: n,
737
737
  disabled: m || !l || !s || o !== "ready",
738
- onAnswer: g?.sendMessage
738
+ onAnswer: h?.sendMessage
739
739
  }
740
740
  );
741
741
  if (t.type === "text" && n.parts.some((N) => N.type === "data-choice-question"))
@@ -751,7 +751,7 @@ function No(e) {
751
751
  },
752
752
  message: n,
753
753
  disabled: m || !l || !s || o !== "ready",
754
- onAnswer: g?.sendMessage
754
+ onAnswer: h?.sendMessage
755
755
  }
756
756
  );
757
757
  const ee = n.parts.filter(
@@ -820,7 +820,7 @@ function No(e) {
820
820
  {
821
821
  part: t,
822
822
  message: n,
823
- chat: g,
823
+ chat: h,
824
824
  toolComponents: E,
825
825
  showToolCalls: !!f
826
826
  }
@@ -843,13 +843,13 @@ function No(e) {
843
843
  excerpt: N.filename || N.mediaType || "File attachment",
844
844
  data: t
845
845
  },
846
- children: /* @__PURE__ */ i(k, { part: t, message: n })
846
+ children: /* @__PURE__ */ i(v, { part: t, message: n })
847
847
  }
848
848
  );
849
849
  }
850
850
  return null;
851
851
  }
852
- const Pe = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: v("flex items-center gap-1.5 px-1 py-3", e), ...t, children: [0, 1, 2].map((n) => /* @__PURE__ */ i(
852
+ const Pe = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: _("flex items-center gap-1.5 px-1 py-3", e), ...t, children: [0, 1, 2].map((n) => /* @__PURE__ */ i(
853
853
  "span",
854
854
  {
855
855
  className: "size-2 rounded-full bg-primary/70",
@@ -902,12 +902,12 @@ function de({
902
902
  asChild: o = !1,
903
903
  ...r
904
904
  }) {
905
- return /* @__PURE__ */ i(o ? Wt : "button", { "data-slot": "button", className: v(To({ variant: t, size: n, className: e })), ...r });
905
+ return /* @__PURE__ */ i(o ? Wt : "button", { "data-slot": "button", className: _(To({ variant: t, size: n, className: e })), ...r });
906
906
  }
907
907
  const Ao = ({ className: e, ...t }) => /* @__PURE__ */ i(
908
908
  Zt,
909
909
  {
910
- className: v("relative flex-1 overflow-hidden", e),
910
+ className: _("relative flex-1 overflow-hidden", e),
911
911
  initial: "smooth",
912
912
  resize: "smooth",
913
913
  role: "log",
@@ -916,7 +916,7 @@ const Ao = ({ className: e, ...t }) => /* @__PURE__ */ i(
916
916
  ), Io = ({ className: e, ...t }) => /* @__PURE__ */ i(
917
917
  Zt.Content,
918
918
  {
919
- className: v("p-4 pb-6 stick-to-bottom", e),
919
+ className: _("p-4 pb-6 stick-to-bottom", e),
920
920
  scrollClassName: "custom-scrollbar",
921
921
  ...t
922
922
  }
@@ -935,7 +935,7 @@ const Ao = ({ className: e, ...t }) => /* @__PURE__ */ i(
935
935
  return n ? null : /* @__PURE__ */ i(
936
936
  "button",
937
937
  {
938
- className: v(
938
+ className: _(
939
939
  "absolute bottom-32 left-1/2 -translate-x-1/2 z-10",
940
940
  "flex items-center gap-1.5 px-4 py-2 rounded-full text-sm font-medium",
941
941
  "glass border border-border/50 shadow-lg shadow-black/10",
@@ -962,23 +962,23 @@ function it({ ...e }) {
962
962
  function lt({ ...e }) {
963
963
  return /* @__PURE__ */ i(nt.CollapsibleContent, { "data-slot": "collapsible-content", ...e });
964
964
  }
965
- const Lo = ({ className: e, ...t }) => /* @__PURE__ */ i(at, { className: v("not-prose mb-4 text-primary text-xs", e), ...t }), Do = ({ className: e, count: t, children: n, ...o }) => {
965
+ const Lo = ({ className: e, ...t }) => /* @__PURE__ */ i(at, { className: _("not-prose mb-4 text-primary text-xs", e), ...t }), Do = ({ className: e, count: t, children: n, ...o }) => {
966
966
  const { t: r } = z(["chat"]);
967
- return /* @__PURE__ */ i(it, { className: v("flex items-center gap-2", e), ...o, children: n ?? /* @__PURE__ */ x(ce, { children: [
967
+ return /* @__PURE__ */ i(it, { className: _("flex items-center gap-2", e), ...o, children: n ?? /* @__PURE__ */ w(ce, { children: [
968
968
  /* @__PURE__ */ i("p", { className: "font-medium", children: r("used_sources", { count: t }) }),
969
- /* @__PURE__ */ i(ve, { className: "h-4 w-4" })
969
+ /* @__PURE__ */ i(_e, { className: "h-4 w-4" })
970
970
  ] }) });
971
971
  }, Fo = ({ className: e, ...t }) => /* @__PURE__ */ i(
972
972
  lt,
973
973
  {
974
- className: v(
974
+ className: _(
975
975
  "mt-3 flex w-fit flex-col gap-2",
976
976
  "data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 outline-none data-[state=closed]:animate-out data-[state=open]:animate-in",
977
977
  e
978
978
  ),
979
979
  ...t
980
980
  }
981
- ), Po = ({ href: e, title: t, children: n, ...o }) => /* @__PURE__ */ i("a", { className: "flex items-center gap-2", href: e, rel: "noreferrer", target: "_blank", ...o, children: n ?? /* @__PURE__ */ x(ce, { children: [
981
+ ), Po = ({ href: e, title: t, children: n, ...o }) => /* @__PURE__ */ i("a", { className: "flex items-center gap-2", href: e, rel: "noreferrer", target: "_blank", ...o, children: n ?? /* @__PURE__ */ w(ce, { children: [
982
982
  /* @__PURE__ */ i(qn, { className: "h-4 w-4" }),
983
983
  /* @__PURE__ */ i("span", { className: "block font-medium", children: t })
984
984
  ] }) }), Mo = ({
@@ -990,25 +990,25 @@ const Lo = ({ className: e, ...t }) => /* @__PURE__ */ i(at, { className: v("not
990
990
  const p = $(f);
991
991
  return p.type === "text" && (p.text || "").trim().length > 0 || p.type === "tool-invocation" || p.type === "tool-call" || p.type === "data-choice-question";
992
992
  }) && o !== "running")) return null;
993
- const u = o === "running", g = o === "error", m = Re(r);
993
+ const u = o === "running", h = o === "error", m = Re(r);
994
994
  return /* @__PURE__ */ i(
995
995
  "div",
996
996
  {
997
- className: v(
997
+ className: _(
998
998
  "flex w-full py-3 mx-auto max-w-4xl px-4 md:px-0 animate-in-bubble",
999
999
  m === "rtl" ? "justify-end" : "justify-start"
1000
1000
  ),
1001
- children: /* @__PURE__ */ x(
1001
+ children: /* @__PURE__ */ w(
1002
1002
  "div",
1003
1003
  {
1004
- className: v(
1004
+ className: _(
1005
1005
  "flex items-center gap-3 text-sm text-muted-foreground",
1006
1006
  m === "rtl" && "flex-row-reverse"
1007
1007
  ),
1008
1008
  dir: m,
1009
1009
  children: [
1010
- u ? /* @__PURE__ */ i("div", { className: "size-4 animate-spin rounded-full border-2 border-primary border-r-transparent shrink-0" }) : g ? /* @__PURE__ */ i(me, { className: "size-4 text-destructive shrink-0" }) : /* @__PURE__ */ i(Ie, { className: "size-4 text-green-500 shrink-0" }),
1011
- /* @__PURE__ */ i("span", { className: v("font-medium", u && "animate-pulse"), children: r })
1010
+ u ? /* @__PURE__ */ i("div", { className: "size-4 animate-spin rounded-full border-2 border-primary border-r-transparent shrink-0" }) : h ? /* @__PURE__ */ i(me, { className: "size-4 text-destructive shrink-0" }) : /* @__PURE__ */ i(Ie, { className: "size-4 text-green-500 shrink-0" }),
1011
+ /* @__PURE__ */ i("span", { className: _("font-medium", u && "animate-pulse"), children: r })
1012
1012
  ]
1013
1013
  }
1014
1014
  )
@@ -1027,77 +1027,77 @@ function zo({
1027
1027
  className: s,
1028
1028
  readonly: u
1029
1029
  }) {
1030
- const { i18n: g, t: m } = z(["chat", "translation"]), f = g.language === "fa", { WelcomeScreen: p } = re(), b = e[e.length - 1], d = b?.role === "assistant" && (t === "ready" || b.parts.some((k) => k.type === "data-chat-finished"));
1031
- return /* @__PURE__ */ x(Ao, { className: v("min-h-0 flex-1", s), children: [
1030
+ const { i18n: h, t: m } = z(["chat", "translation"]), f = h.language === "fa", { WelcomeScreen: p } = re(), b = e[e.length - 1], d = b?.role === "assistant" && (t === "ready" || b.parts.some((v) => v.type === "data-chat-finished"));
1031
+ return /* @__PURE__ */ w(Ao, { className: _("min-h-0 flex-1", s), children: [
1032
1032
  /* @__PURE__ */ i(Ro, { status: t }),
1033
- /* @__PURE__ */ x(Io, { className: "max-w-4xl mx-auto w-full px-4 md:px-0 pb-32", dir: "ltr", children: [
1034
- e.length === 0 && !n ? /* @__PURE__ */ i(p, { onSuggestionClick: l }) : e.map((k) => /* @__PURE__ */ x(
1033
+ /* @__PURE__ */ w(Io, { className: "max-w-4xl mx-auto w-full px-4 md:px-0 pb-32", dir: "ltr", children: [
1034
+ e.length === 0 && !n ? /* @__PURE__ */ i(p, { onSuggestionClick: l }) : e.map((v) => /* @__PURE__ */ w(
1035
1035
  "div",
1036
1036
  {
1037
- "data-gentiq-message-id": k.id,
1038
- "data-gentiq-message-role": k.role,
1037
+ "data-gentiq-message-id": v.id,
1038
+ "data-gentiq-message-role": v.role,
1039
1039
  children: [
1040
- k.role === "assistant" && k.parts.filter((_) => _.type === "source-url").length > 0 && /* @__PURE__ */ x(Lo, { children: [
1040
+ v.role === "assistant" && v.parts.filter((k) => k.type === "source-url").length > 0 && /* @__PURE__ */ w(Lo, { children: [
1041
1041
  /* @__PURE__ */ i(
1042
1042
  Do,
1043
1043
  {
1044
- count: k.parts.filter((_) => _.type === "source-url").length
1044
+ count: v.parts.filter((k) => k.type === "source-url").length
1045
1045
  }
1046
1046
  ),
1047
- k.parts.filter((_) => _.type === "source-url").map((_, y) => {
1048
- const E = $(_).url;
1049
- return /* @__PURE__ */ i(Fo, { children: /* @__PURE__ */ i(Po, { href: E, title: E }, `${k.id}-${y}`) }, `${k.id}-${y}`);
1047
+ v.parts.filter((k) => k.type === "source-url").map((k, y) => {
1048
+ const E = $(k).url;
1049
+ return /* @__PURE__ */ i(Fo, { children: /* @__PURE__ */ i(Po, { href: E, title: E }, `${v.id}-${y}`) }, `${v.id}-${y}`);
1050
1050
  })
1051
1051
  ] }),
1052
- k.parts.map((_, y) => /* @__PURE__ */ i(
1052
+ v.parts.map((k, y) => /* @__PURE__ */ i(
1053
1053
  No,
1054
1054
  {
1055
- part: _,
1056
- message: k,
1055
+ part: k,
1056
+ message: v,
1057
1057
  status: t,
1058
1058
  index: y,
1059
1059
  regen: a,
1060
- lastMessage: k.id === e.at(-1)?.id,
1060
+ lastMessage: v.id === e.at(-1)?.id,
1061
1061
  conversationId: r,
1062
1062
  isFinished: d,
1063
1063
  chat: c,
1064
1064
  readonly: u
1065
1065
  },
1066
- `${k.id}-${y}`
1066
+ `${v.id}-${y}`
1067
1067
  ))
1068
1068
  ]
1069
1069
  },
1070
- k.id
1070
+ v.id
1071
1071
  )),
1072
1072
  (() => {
1073
1073
  if (!b || b.role !== "assistant") return null;
1074
- const k = b.parts.filter((y) => y.type === "data-progress-update");
1075
- if (k.length === 0) return null;
1076
- const _ = k[k.length - 1];
1077
- return _ ? /* @__PURE__ */ i(Mo, { latestProgress: _, parts: b.parts }) : null;
1074
+ const v = b.parts.filter((y) => y.type === "data-progress-update");
1075
+ if (v.length === 0) return null;
1076
+ const k = v[v.length - 1];
1077
+ return k ? /* @__PURE__ */ i(Mo, { latestProgress: k, parts: b.parts }) : null;
1078
1078
  })(),
1079
1079
  (n || t === "submitted") && /* @__PURE__ */ i("div", { className: "animate-in-bubble", children: /* @__PURE__ */ i(Pe, {}) }),
1080
1080
  t === "streaming" && (() => {
1081
- const k = e[e.length - 1];
1082
- return !k || k.role === "user" ? /* @__PURE__ */ i(Pe, {}) : k.parts?.some((y) => {
1081
+ const v = e[e.length - 1];
1082
+ return !v || v.role === "user" ? /* @__PURE__ */ i(Pe, {}) : v.parts?.some((y) => {
1083
1083
  const E = $(y);
1084
1084
  return E.type === "text" && (E.text?.trim().length ?? 0) > 0 || E.type === "reasoning" || E.type === "tool-invocation" || E.type === "tool-call" || E.type === "data-choice-question";
1085
1085
  }) ? null : /* @__PURE__ */ i(Pe, {});
1086
1086
  })(),
1087
- t === "error" && o && /* @__PURE__ */ i("div", { className: "mx-auto max-w-4xl w-full px-4 my-3 animate-in-bubble", children: /* @__PURE__ */ x(
1087
+ t === "error" && o && /* @__PURE__ */ i("div", { className: "mx-auto max-w-4xl w-full px-4 my-3 animate-in-bubble", children: /* @__PURE__ */ w(
1088
1088
  "div",
1089
1089
  {
1090
- className: v(
1090
+ className: _(
1091
1091
  "flex w-full items-start gap-3 px-4 py-3.5 rounded-xl bg-destructive/8 border border-destructive/15",
1092
1092
  f ? "border-r-2 border-r-destructive/60" : "border-l-2 border-l-destructive/60"
1093
1093
  ),
1094
1094
  dir: f ? "rtl" : "ltr",
1095
1095
  children: [
1096
1096
  /* @__PURE__ */ i("div", { className: "size-1.5 rounded-full bg-destructive mt-2 shrink-0" }),
1097
- /* @__PURE__ */ x(
1097
+ /* @__PURE__ */ w(
1098
1098
  "div",
1099
1099
  {
1100
- className: v(
1100
+ className: _(
1101
1101
  "text-sm text-destructive/90 leading-relaxed flex-1",
1102
1102
  f ? "text-right" : "text-left"
1103
1103
  ),
@@ -1120,7 +1120,7 @@ function Uo({ className: e, ...t }) {
1120
1120
  "textarea",
1121
1121
  {
1122
1122
  "data-slot": "textarea",
1123
- className: v(
1123
+ className: _(
1124
1124
  "border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
1125
1125
  e
1126
1126
  ),
@@ -1131,7 +1131,7 @@ function Uo({ className: e, ...t }) {
1131
1131
  const qo = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg-transparent w-full", children: /* @__PURE__ */ i(
1132
1132
  "form",
1133
1133
  {
1134
- className: v(
1134
+ className: _(
1135
1135
  "w-full flex items-end gap-2 overflow-hidden",
1136
1136
  "rounded-lg bg-surface glow-primary",
1137
1137
  "px-3 py-2",
@@ -1162,7 +1162,7 @@ const qo = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg
1162
1162
  Uo,
1163
1163
  {
1164
1164
  dir: l,
1165
- className: v(
1165
+ className: _(
1166
1166
  "flex-1 resize-none rounded-none border-none shadow-none outline-none ring-0",
1167
1167
  "px-2 py-2.5",
1168
1168
  "field-sizing-content max-h-[6lh] bg-transparent dark:bg-transparent",
@@ -1180,7 +1180,7 @@ const qo = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg
1180
1180
  ...o
1181
1181
  }
1182
1182
  );
1183
- }, Bo = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: v("flex shrink-0 items-center gap-1.5 pb-1", e), ...t }), Ho = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: v("flex items-center gap-0.5", e), ...t }), jo = ({
1183
+ }, Bo = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: _("flex shrink-0 items-center gap-1.5 pb-1", e), ...t }), Ho = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: _("flex items-center gap-0.5", e), ...t }), jo = ({
1184
1184
  variant: e = "ghost",
1185
1185
  className: t,
1186
1186
  size: n,
@@ -1190,7 +1190,7 @@ const qo = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg
1190
1190
  return /* @__PURE__ */ i(
1191
1191
  de,
1192
1192
  {
1193
- className: v(
1193
+ className: _(
1194
1194
  "shrink-0 gap-1.5 rounded-xl",
1195
1195
  "text-muted-foreground hover:text-foreground",
1196
1196
  "hover:bg-accent/60 transition-all duration-200",
@@ -1217,7 +1217,7 @@ const qo = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg
1217
1217
  de,
1218
1218
  {
1219
1219
  "aria-label": c,
1220
- className: v(
1220
+ className: _(
1221
1221
  "shrink-0 rounded-lg size-9",
1222
1222
  "bg-gradient-to-br from-primary to-primary/80",
1223
1223
  "text-primary-foreground",
@@ -1254,12 +1254,12 @@ function sn({
1254
1254
  children: n,
1255
1255
  ...o
1256
1256
  }) {
1257
- return /* @__PURE__ */ i(le.Portal, { children: /* @__PURE__ */ x(
1257
+ return /* @__PURE__ */ i(le.Portal, { children: /* @__PURE__ */ w(
1258
1258
  le.Content,
1259
1259
  {
1260
1260
  "data-slot": "tooltip-content",
1261
1261
  sideOffset: t,
1262
- className: v(
1262
+ className: _(
1263
1263
  "bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-sm text-balance",
1264
1264
  e
1265
1265
  ),
@@ -1292,13 +1292,13 @@ function Vo({
1292
1292
  conversationId: a,
1293
1293
  className: l
1294
1294
  }) {
1295
- const { t: c } = z(["chat", "translation"]), { composer: s } = re(), [u, g] = P(""), [m, f] = P([]), p = Wo(), {
1295
+ const { t: c } = z(["chat", "translation"]), { composer: s } = re(), [u, h] = P(""), [m, f] = P([]), p = Wo(), {
1296
1296
  references: b,
1297
1297
  removeReference: d,
1298
- clearReferences: k,
1299
- focusReference: _,
1298
+ clearReferences: v,
1299
+ focusReference: k,
1300
1300
  enabled: y
1301
- } = rt(), E = Q(null), w = Q(null);
1301
+ } = rt(), E = Q(null), x = Q(null);
1302
1302
  Y(() => {
1303
1303
  !p && a === "/" && E.current && E.current.focus();
1304
1304
  }, [a, p]);
@@ -1324,33 +1324,33 @@ function Vo({
1324
1324
  }, []), F = t === "streaming" && !n, R = (T) => {
1325
1325
  if (T.preventDefault(), !F && (u.trim() || m.length > 0 || b.length > 0)) {
1326
1326
  const L = new DataTransfer();
1327
- m.forEach((K) => L.items.add(K)), e(u, L.files, b), g(""), f([]), k();
1327
+ m.forEach((K) => L.items.add(K)), e(u, L.files, b), h(""), f([]), v();
1328
1328
  }
1329
1329
  };
1330
- return /* @__PURE__ */ i("div", { className: v("shrink-0 px-4 pb-5 pt-2 md:px-6 md:pb-6 w-full", l), children: /* @__PURE__ */ i("div", { className: "max-w-4xl mx-auto w-full", children: /* @__PURE__ */ x(qo, { onSubmit: R, children: [
1330
+ return /* @__PURE__ */ i("div", { className: _("shrink-0 px-4 pb-5 pt-2 md:px-6 md:pb-6 w-full", l), children: /* @__PURE__ */ i("div", { className: "max-w-4xl mx-auto w-full", children: /* @__PURE__ */ w(qo, { onSubmit: R, children: [
1331
1331
  /* @__PURE__ */ i(
1332
1332
  "input",
1333
1333
  {
1334
1334
  type: "file",
1335
- ref: w,
1335
+ ref: x,
1336
1336
  onChange: O,
1337
1337
  multiple: !0,
1338
1338
  accept: s?.attachments?.types?.join(",") || "image/*,text/*,.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx",
1339
1339
  className: "hidden"
1340
1340
  }
1341
1341
  ),
1342
- /* @__PURE__ */ x("div", { className: "flex flex-col flex-1 gap-2", children: [
1343
- y && b.length > 0 && /* @__PURE__ */ i("div", { className: "flex flex-wrap gap-2 px-2 pt-2", children: b.map((T) => /* @__PURE__ */ x(
1342
+ /* @__PURE__ */ w("div", { className: "flex flex-col flex-1 gap-2", children: [
1343
+ y && b.length > 0 && /* @__PURE__ */ i("div", { className: "flex flex-wrap gap-2 px-2 pt-2", children: b.map((T) => /* @__PURE__ */ w(
1344
1344
  "div",
1345
1345
  {
1346
1346
  className: "group/reference-chip flex min-w-0 max-w-[min(100%,260px)] items-center gap-2 rounded-lg border border-primary/15 bg-primary/8 px-2.5 py-1.5 text-left text-xs shadow-sm transition hover:bg-primary/12",
1347
1347
  title: T.excerpt,
1348
1348
  children: [
1349
- /* @__PURE__ */ x(
1349
+ /* @__PURE__ */ w(
1350
1350
  "button",
1351
1351
  {
1352
1352
  type: "button",
1353
- onClick: () => _(T),
1353
+ onClick: () => k(T),
1354
1354
  className: "flex min-w-0 flex-1 items-center gap-2 text-left",
1355
1355
  children: [
1356
1356
  /* @__PURE__ */ i(Ae, { className: "size-3.5 shrink-0 text-primary" }),
@@ -1375,7 +1375,7 @@ function Vo({
1375
1375
  },
1376
1376
  T.id
1377
1377
  )) }),
1378
- m.length > 0 && /* @__PURE__ */ i("div", { className: "flex flex-wrap gap-2 px-2 pt-2", children: m.map((T, L) => /* @__PURE__ */ x(
1378
+ m.length > 0 && /* @__PURE__ */ i("div", { className: "flex flex-wrap gap-2 px-2 pt-2", children: m.map((T, L) => /* @__PURE__ */ w(
1379
1379
  "div",
1380
1380
  {
1381
1381
  className: "group relative flex items-center gap-2 rounded-xl glass-surface px-2.5 py-1.5 text-sm shadow-sm",
@@ -1407,7 +1407,7 @@ function Vo({
1407
1407
  $o,
1408
1408
  {
1409
1409
  ref: E,
1410
- onChange: (T) => g(T.target.value),
1410
+ onChange: (T) => h(T.target.value),
1411
1411
  value: u,
1412
1412
  autoFocus: !p,
1413
1413
  placeholder: s?.placeholder ? c(s.placeholder) : c("input_placeholder"),
@@ -1416,13 +1416,13 @@ function Vo({
1416
1416
  }
1417
1417
  )
1418
1418
  ] }),
1419
- /* @__PURE__ */ x(Bo, { children: [
1420
- /* @__PURE__ */ i(Ho, { children: (s?.attachments?.enabled ?? !1) && /* @__PURE__ */ x(an, { children: [
1419
+ /* @__PURE__ */ w(Bo, { children: [
1420
+ /* @__PURE__ */ i(Ho, { children: (s?.attachments?.enabled ?? !1) && /* @__PURE__ */ w(an, { children: [
1421
1421
  /* @__PURE__ */ i(ln, { asChild: !0, children: /* @__PURE__ */ i(
1422
1422
  jo,
1423
1423
  {
1424
1424
  variant: "ghost",
1425
- onClick: () => w.current?.click(),
1425
+ onClick: () => x.current?.click(),
1426
1426
  disabled: F,
1427
1427
  "aria-label": c("attach_file"),
1428
1428
  children: /* @__PURE__ */ i(jn, { className: "size-4" })
@@ -1459,7 +1459,7 @@ const Yo = ({
1459
1459
  return /* @__PURE__ */ i(
1460
1460
  de,
1461
1461
  {
1462
- className: v("cursor-pointer rounded-full px-4", n),
1462
+ className: _("cursor-pointer rounded-full px-4", n),
1463
1463
  onClick: c,
1464
1464
  size: r,
1465
1465
  type: "button",
@@ -1484,38 +1484,38 @@ function Ko(e = {}) {
1484
1484
  const Zo = ({ onSuggestionClick: e, icons: t }) => {
1485
1485
  const { t: n, i18n: o } = z(["chat", "translation"]), { welcome: r } = re(), a = typeof r?.greeting == "function", { user: l, firstName: c, isLoading: s } = Ko({
1486
1486
  enabled: a
1487
- }), u = r?.prompts ?? [], g = u.map((d) => {
1488
- const k = typeof d == "string" ? d : d.text;
1489
- return n(k);
1487
+ }), u = r?.prompts ?? [], h = u.map((d) => {
1488
+ const v = typeof d == "string" ? d : d.text;
1489
+ return n(v);
1490
1490
  }).filter((d) => d !== null && d !== ""), m = o.dir() === "rtl", f = r?.greeting, p = typeof f == "function" ? f({ user: l, firstName: c, isLoading: s, t: n }) : f ? n(f) ?? f : n("welcome.title"), b = r?.subtitle ? n(r.subtitle) : null;
1491
- return /* @__PURE__ */ x(
1491
+ return /* @__PURE__ */ w(
1492
1492
  "div",
1493
1493
  {
1494
1494
  dir: m ? "rtl" : "ltr",
1495
1495
  className: "flex flex-col items-center justify-center min-h-[60vh] text-center px-6 animate-in fade-in duration-700 ease-out",
1496
1496
  children: [
1497
- r?.icon && /* @__PURE__ */ x("div", { className: "mb-8 relative flex items-center justify-center", children: [
1497
+ r?.icon && /* @__PURE__ */ w("div", { className: "mb-8 relative flex items-center justify-center", children: [
1498
1498
  /* @__PURE__ */ i("div", { className: "absolute size-24 rounded-full bg-primary/5 blur-[40px] animate-pulse" }),
1499
1499
  /* @__PURE__ */ i("div", { className: "relative size-12 md:size-16 rounded-xl bg-gradient-to-br from-surface to-secondary flex items-center justify-center border border-border/10 dark:border-border/5 shadow-xl shadow-black/10", children: typeof r.icon == "function" ? /* @__PURE__ */ i(r.icon, { className: "size-6 md:size-8 text-primary opacity-80" }) : r.icon })
1500
1500
  ] }),
1501
- (p || b) && /* @__PURE__ */ x("div", { className: "space-y-3 mb-12 max-w-xl mx-auto", children: [
1501
+ (p || b) && /* @__PURE__ */ w("div", { className: "space-y-3 mb-12 max-w-xl mx-auto", children: [
1502
1502
  p && /* @__PURE__ */ i("h1", { className: "text-2xl md:text-3xl font-black tracking-tight leading-tight text-foreground", children: p }),
1503
1503
  b && /* @__PURE__ */ i("p", { className: "text-muted-foreground text-base md:text-lg font-medium max-w-md mx-auto leading-relaxed opacity-85 dark:opacity-70", children: b })
1504
1504
  ] }),
1505
- g.length > 0 && /* @__PURE__ */ i("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-3 w-full max-w-xl", children: g.map((d, k) => {
1506
- const _ = u[k], y = typeof _ != "string" ? _.icon : null, E = t && t[k % t.length] ? t[k % t.length] : Gn, w = y || E;
1505
+ h.length > 0 && /* @__PURE__ */ i("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-3 w-full max-w-xl", children: h.map((d, v) => {
1506
+ const k = u[v], y = typeof k != "string" ? k.icon : null, E = t && t[v % t.length] ? t[v % t.length] : Gn, x = y || E;
1507
1507
  return /* @__PURE__ */ i(
1508
1508
  "div",
1509
1509
  {
1510
1510
  className: "animate-in fade-in slide-in-from-bottom-3 duration-700 fill-mode-both",
1511
- style: { animationDelay: `${k * 80}ms` },
1512
- children: /* @__PURE__ */ x(
1511
+ style: { animationDelay: `${v * 80}ms` },
1512
+ children: /* @__PURE__ */ w(
1513
1513
  Yo,
1514
1514
  {
1515
1515
  onClick: () => e(d),
1516
1516
  suggestion: d,
1517
1517
  variant: "ghost",
1518
- className: v(
1518
+ className: _(
1519
1519
  "h-full py-4 px-5 justify-start text-start items-center whitespace-normal w-full",
1520
1520
  "group rounded-xl relative overflow-hidden",
1521
1521
  "bg-secondary/45 border border-border/12 dark:bg-secondary/20 dark:border-border/5",
@@ -1523,14 +1523,14 @@ const Zo = ({ onSuggestionClick: e, icons: t }) => {
1523
1523
  "hover:-translate-y-0.5 transition-[background-color,border-color,transform] duration-300 ease-out-quint"
1524
1524
  ),
1525
1525
  children: [
1526
- /* @__PURE__ */ x("div", { className: "flex items-center gap-3 w-full text-start", children: [
1527
- /* @__PURE__ */ i("div", { className: "size-8 rounded-lg bg-secondary/35 dark:bg-background/40 flex items-center justify-center shrink-0 border border-border/10 dark:border-border/5 group-hover:bg-primary group-hover:text-primary-foreground transition-colors duration-300", children: /* @__PURE__ */ i(w, { className: "size-4" }) }),
1526
+ /* @__PURE__ */ w("div", { className: "flex items-center gap-3 w-full text-start", children: [
1527
+ /* @__PURE__ */ i("div", { className: "size-8 rounded-lg bg-secondary/35 dark:bg-background/40 flex items-center justify-center shrink-0 border border-border/10 dark:border-border/5 group-hover:bg-primary group-hover:text-primary-foreground transition-colors duration-300", children: /* @__PURE__ */ i(x, { className: "size-4" }) }),
1528
1528
  /* @__PURE__ */ i("div", { className: "flex flex-col gap-0.5 overflow-hidden", children: /* @__PURE__ */ i("span", { className: "text-sm md:text-base font-semibold text-foreground/80 group-hover:text-foreground transition-colors", children: d.length > 60 ? d.substring(0, 60) + "..." : d }) })
1529
1529
  ] }),
1530
1530
  /* @__PURE__ */ i(
1531
1531
  "div",
1532
1532
  {
1533
- className: v(
1533
+ className: _(
1534
1534
  "absolute bottom-0 left-0 w-full h-[1.5px] bg-primary scale-x-0 group-hover:scale-x-100 transition-transform duration-500",
1535
1535
  m ? "origin-right" : "origin-left"
1536
1536
  )
@@ -1540,7 +1540,7 @@ const Zo = ({ onSuggestionClick: e, icons: t }) => {
1540
1540
  }
1541
1541
  )
1542
1542
  },
1543
- k
1543
+ v
1544
1544
  );
1545
1545
  }) })
1546
1546
  ]
@@ -1549,7 +1549,7 @@ const Zo = ({ onSuggestionClick: e, icons: t }) => {
1549
1549
  }, cn = ({ className: e, from: t, ...n }) => /* @__PURE__ */ i(
1550
1550
  "div",
1551
1551
  {
1552
- className: v(
1552
+ className: _(
1553
1553
  "group flex w-full items-end gap-3",
1554
1554
  t === "user" ? "is-user justify-end" : "is-assistant",
1555
1555
  e
@@ -1559,7 +1559,7 @@ const Zo = ({ onSuggestionClick: e, icons: t }) => {
1559
1559
  ), un = ({ children: e, className: t, isPlain: n, ...o }) => /* @__PURE__ */ i(
1560
1560
  "div",
1561
1561
  {
1562
- className: v(
1562
+ className: _(
1563
1563
  "flex flex-col gap-2 overflow-hidden text-[1.0625rem]",
1564
1564
  // User bubble: gradient pill with glow shadow
1565
1565
  !n && [
@@ -1583,7 +1583,7 @@ const Zo = ({ onSuggestionClick: e, icons: t }) => {
1583
1583
  ), Qo = ({ className: e, children: t, ...n }) => /* @__PURE__ */ i(
1584
1584
  "div",
1585
1585
  {
1586
- className: v(
1586
+ className: _(
1587
1587
  "flex items-center gap-0.5",
1588
1588
  "opacity-100",
1589
1589
  "transition-opacity duration-200",
@@ -1592,7 +1592,7 @@ const Zo = ({ onSuggestionClick: e, icons: t }) => {
1592
1592
  ...n,
1593
1593
  children: t
1594
1594
  }
1595
- ), we = ({
1595
+ ), xe = ({
1596
1596
  tooltip: e,
1597
1597
  children: t,
1598
1598
  label: n,
@@ -1601,10 +1601,10 @@ const Zo = ({ onSuggestionClick: e, icons: t }) => {
1601
1601
  size: a = "sm",
1602
1602
  ...l
1603
1603
  }) => {
1604
- const c = /* @__PURE__ */ x(
1604
+ const c = /* @__PURE__ */ w(
1605
1605
  de,
1606
1606
  {
1607
- className: v(
1607
+ className: _(
1608
1608
  "size-7 p-1 rounded-lg",
1609
1609
  "text-muted-foreground/60 hover:text-foreground",
1610
1610
  "hover:bg-accent/70",
@@ -1622,12 +1622,12 @@ const Zo = ({ onSuggestionClick: e, icons: t }) => {
1622
1622
  ]
1623
1623
  }
1624
1624
  );
1625
- return e ? /* @__PURE__ */ i(rn, { children: /* @__PURE__ */ x(an, { children: [
1625
+ return e ? /* @__PURE__ */ i(rn, { children: /* @__PURE__ */ w(an, { children: [
1626
1626
  /* @__PURE__ */ i(ln, { asChild: !0, children: c }),
1627
1627
  /* @__PURE__ */ i(sn, { children: /* @__PURE__ */ i("p", { children: e }) })
1628
1628
  ] }) }) : c;
1629
1629
  };
1630
- class ke {
1630
+ class ve {
1631
1631
  /**
1632
1632
  * @param {SchemaType['property']} property
1633
1633
  * Property.
@@ -1642,14 +1642,14 @@ class ke {
1642
1642
  this.normal = n, this.property = t, o && (this.space = o);
1643
1643
  }
1644
1644
  }
1645
- ke.prototype.normal = {};
1646
- ke.prototype.property = {};
1647
- ke.prototype.space = void 0;
1645
+ ve.prototype.normal = {};
1646
+ ve.prototype.property = {};
1647
+ ve.prototype.space = void 0;
1648
1648
  function dn(e, t) {
1649
1649
  const n = {}, o = {};
1650
1650
  for (const r of e)
1651
1651
  Object.assign(n, r.property), Object.assign(o, r.normal);
1652
- return new ke(n, o, t);
1652
+ return new ve(n, o, t);
1653
1653
  }
1654
1654
  function be(e) {
1655
1655
  return e.toLowerCase();
@@ -1680,7 +1680,7 @@ B.prototype.property = "";
1680
1680
  B.prototype.spaceSeparated = !1;
1681
1681
  B.prototype.space = void 0;
1682
1682
  let Jo = 0;
1683
- const S = ne(), D = ne(), Ke = ne(), h = ne(), A = ne(), se = ne(), G = ne();
1683
+ const S = ne(), D = ne(), Ke = ne(), g = ne(), A = ne(), se = ne(), G = ne();
1684
1684
  function ne() {
1685
1685
  return 2 ** ++Jo;
1686
1686
  }
@@ -1690,7 +1690,7 @@ const Ze = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1690
1690
  booleanish: D,
1691
1691
  commaOrSpaceSeparated: G,
1692
1692
  commaSeparated: se,
1693
- number: h,
1693
+ number: g,
1694
1694
  overloadedBoolean: Ke,
1695
1695
  spaceSeparated: A
1696
1696
  }, Symbol.toStringTag, { value: "Module" })), ze = (
@@ -1724,7 +1724,7 @@ st.prototype.defined = !0;
1724
1724
  function yt(e, t, n) {
1725
1725
  n && (e[t] = n);
1726
1726
  }
1727
- function ge(e) {
1727
+ function he(e) {
1728
1728
  const t = {}, n = {};
1729
1729
  for (const [o, r] of Object.entries(e.properties)) {
1730
1730
  const a = new st(
@@ -1735,18 +1735,18 @@ function ge(e) {
1735
1735
  );
1736
1736
  e.mustUseProperty && e.mustUseProperty.includes(o) && (a.mustUseProperty = !0), t[o] = a, n[be(o)] = o, n[be(a.attribute)] = o;
1737
1737
  }
1738
- return new ke(t, n, e.space);
1738
+ return new ve(t, n, e.space);
1739
1739
  }
1740
- const pn = ge({
1740
+ const pn = he({
1741
1741
  properties: {
1742
1742
  ariaActiveDescendant: null,
1743
1743
  ariaAtomic: D,
1744
1744
  ariaAutoComplete: null,
1745
1745
  ariaBusy: D,
1746
1746
  ariaChecked: D,
1747
- ariaColCount: h,
1748
- ariaColIndex: h,
1749
- ariaColSpan: h,
1747
+ ariaColCount: g,
1748
+ ariaColIndex: g,
1749
+ ariaColSpan: g,
1750
1750
  ariaControls: A,
1751
1751
  ariaCurrent: null,
1752
1752
  ariaDescribedBy: A,
@@ -1763,7 +1763,7 @@ const pn = ge({
1763
1763
  ariaKeyShortcuts: null,
1764
1764
  ariaLabel: null,
1765
1765
  ariaLabelledBy: A,
1766
- ariaLevel: h,
1766
+ ariaLevel: g,
1767
1767
  ariaLive: null,
1768
1768
  ariaModal: D,
1769
1769
  ariaMultiLine: D,
@@ -1771,21 +1771,21 @@ const pn = ge({
1771
1771
  ariaOrientation: null,
1772
1772
  ariaOwns: A,
1773
1773
  ariaPlaceholder: null,
1774
- ariaPosInSet: h,
1774
+ ariaPosInSet: g,
1775
1775
  ariaPressed: D,
1776
1776
  ariaReadOnly: D,
1777
1777
  ariaRelevant: null,
1778
1778
  ariaRequired: D,
1779
1779
  ariaRoleDescription: A,
1780
- ariaRowCount: h,
1781
- ariaRowIndex: h,
1782
- ariaRowSpan: h,
1780
+ ariaRowCount: g,
1781
+ ariaRowIndex: g,
1782
+ ariaRowSpan: g,
1783
1783
  ariaSelected: D,
1784
- ariaSetSize: h,
1784
+ ariaSetSize: g,
1785
1785
  ariaSort: null,
1786
- ariaValueMax: h,
1787
- ariaValueMin: h,
1788
- ariaValueNow: h,
1786
+ ariaValueMax: g,
1787
+ ariaValueMin: g,
1788
+ ariaValueNow: g,
1789
1789
  ariaValueText: null,
1790
1790
  role: null
1791
1791
  },
@@ -1793,13 +1793,13 @@ const pn = ge({
1793
1793
  return t === "role" ? t : "aria-" + t.slice(4).toLowerCase();
1794
1794
  }
1795
1795
  });
1796
- function gn(e, t) {
1796
+ function hn(e, t) {
1797
1797
  return t in e ? e[t] : t;
1798
1798
  }
1799
- function hn(e, t) {
1800
- return gn(e, t.toLowerCase());
1799
+ function gn(e, t) {
1800
+ return hn(e, t.toLowerCase());
1801
1801
  }
1802
- const er = ge({
1802
+ const er = he({
1803
1803
  attributes: {
1804
1804
  acceptcharset: "accept-charset",
1805
1805
  classname: "class",
@@ -1831,13 +1831,13 @@ const er = ge({
1831
1831
  checked: S,
1832
1832
  cite: null,
1833
1833
  className: A,
1834
- cols: h,
1834
+ cols: g,
1835
1835
  colSpan: null,
1836
1836
  content: null,
1837
1837
  contentEditable: D,
1838
1838
  controls: S,
1839
1839
  controlsList: A,
1840
- coords: h | se,
1840
+ coords: g | se,
1841
1841
  crossOrigin: null,
1842
1842
  data: null,
1843
1843
  dateTime: null,
@@ -1859,9 +1859,9 @@ const er = ge({
1859
1859
  formNoValidate: S,
1860
1860
  formTarget: null,
1861
1861
  headers: A,
1862
- height: h,
1862
+ height: g,
1863
1863
  hidden: Ke,
1864
- high: h,
1864
+ high: g,
1865
1865
  href: null,
1866
1866
  hrefLang: null,
1867
1867
  htmlFor: A,
@@ -1886,14 +1886,14 @@ const er = ge({
1886
1886
  list: null,
1887
1887
  loading: null,
1888
1888
  loop: S,
1889
- low: h,
1889
+ low: g,
1890
1890
  manifest: null,
1891
1891
  max: null,
1892
- maxLength: h,
1892
+ maxLength: g,
1893
1893
  media: null,
1894
1894
  method: null,
1895
1895
  min: null,
1896
- minLength: h,
1896
+ minLength: g,
1897
1897
  multiple: S,
1898
1898
  muted: S,
1899
1899
  name: null,
@@ -1989,7 +1989,7 @@ const er = ge({
1989
1989
  onWaiting: null,
1990
1990
  onWheel: null,
1991
1991
  open: S,
1992
- optimum: h,
1992
+ optimum: g,
1993
1993
  pattern: null,
1994
1994
  ping: A,
1995
1995
  placeholder: null,
@@ -2004,8 +2004,8 @@ const er = ge({
2004
2004
  rel: A,
2005
2005
  required: S,
2006
2006
  reversed: S,
2007
- rows: h,
2008
- rowSpan: h,
2007
+ rows: g,
2008
+ rowSpan: g,
2009
2009
  sandbox: A,
2010
2010
  scope: null,
2011
2011
  scoped: S,
@@ -2015,19 +2015,19 @@ const er = ge({
2015
2015
  shadowRootDelegatesFocus: S,
2016
2016
  shadowRootMode: null,
2017
2017
  shape: null,
2018
- size: h,
2018
+ size: g,
2019
2019
  sizes: null,
2020
2020
  slot: null,
2021
- span: h,
2021
+ span: g,
2022
2022
  spellCheck: D,
2023
2023
  src: null,
2024
2024
  srcDoc: null,
2025
2025
  srcLang: null,
2026
2026
  srcSet: null,
2027
- start: h,
2027
+ start: g,
2028
2028
  step: null,
2029
2029
  style: null,
2030
- tabIndex: h,
2030
+ tabIndex: g,
2031
2031
  target: null,
2032
2032
  title: null,
2033
2033
  translate: null,
@@ -2035,7 +2035,7 @@ const er = ge({
2035
2035
  typeMustMatch: S,
2036
2036
  useMap: null,
2037
2037
  value: D,
2038
- width: h,
2038
+ width: g,
2039
2039
  wrap: null,
2040
2040
  writingSuggestions: null,
2041
2041
  // Legacy.
@@ -2052,11 +2052,11 @@ const er = ge({
2052
2052
  // `<body>`. Use CSS `background-image` instead
2053
2053
  bgColor: null,
2054
2054
  // `<body>` and table elements. Use CSS `background-color` instead
2055
- border: h,
2055
+ border: g,
2056
2056
  // `<table>`. Use CSS `border-width` instead,
2057
2057
  borderColor: null,
2058
2058
  // `<table>`. Use CSS `border-color` instead,
2059
- bottomMargin: h,
2059
+ bottomMargin: g,
2060
2060
  // `<body>`
2061
2061
  cellPadding: null,
2062
2062
  // `<table>`
@@ -2090,9 +2090,9 @@ const er = ge({
2090
2090
  // `<table>`
2091
2091
  frameBorder: null,
2092
2092
  // `<iframe>`. Use CSS `border` instead
2093
- hSpace: h,
2093
+ hSpace: g,
2094
2094
  // `<img>` and `<object>`
2095
- leftMargin: h,
2095
+ leftMargin: g,
2096
2096
  // `<body>`
2097
2097
  link: null,
2098
2098
  // `<body>`. Use CSS `a:link {color: *}` instead
@@ -2100,9 +2100,9 @@ const er = ge({
2100
2100
  // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`
2101
2101
  lowSrc: null,
2102
2102
  // `<img>`. Use a `<picture>`
2103
- marginHeight: h,
2103
+ marginHeight: g,
2104
2104
  // `<body>`
2105
- marginWidth: h,
2105
+ marginWidth: g,
2106
2106
  // `<body>`
2107
2107
  noResize: S,
2108
2108
  // `<frame>`
@@ -2120,7 +2120,7 @@ const er = ge({
2120
2120
  // `<isindex>`
2121
2121
  rev: null,
2122
2122
  // `<link>`
2123
- rightMargin: h,
2123
+ rightMargin: g,
2124
2124
  // `<body>`
2125
2125
  rules: null,
2126
2126
  // `<table>`
@@ -2134,7 +2134,7 @@ const er = ge({
2134
2134
  // `<table>`
2135
2135
  text: null,
2136
2136
  // `<body>`. Use CSS `color` instead
2137
- topMargin: h,
2137
+ topMargin: g,
2138
2138
  // `<body>`
2139
2139
  valueType: null,
2140
2140
  // `<param>`
@@ -2144,7 +2144,7 @@ const er = ge({
2144
2144
  // Several. Use CSS `vertical-align` instead
2145
2145
  vLink: null,
2146
2146
  // `<body>`. Use CSS `a:visited {color}` instead
2147
- vSpace: h,
2147
+ vSpace: g,
2148
2148
  // `<img>` and `<object>`
2149
2149
  // Non-standard Properties.
2150
2150
  allowTransparency: null,
@@ -2154,13 +2154,13 @@ const er = ge({
2154
2154
  disableRemotePlayback: S,
2155
2155
  prefix: null,
2156
2156
  property: null,
2157
- results: h,
2157
+ results: g,
2158
2158
  security: null,
2159
2159
  unselectable: null
2160
2160
  },
2161
2161
  space: "html",
2162
- transform: hn
2163
- }), tr = ge({
2162
+ transform: gn
2163
+ }), tr = he({
2164
2164
  attributes: {
2165
2165
  accentHeight: "accent-height",
2166
2166
  alignmentBaseline: "alignment-baseline",
@@ -2338,27 +2338,27 @@ const er = ge({
2338
2338
  },
2339
2339
  properties: {
2340
2340
  about: G,
2341
- accentHeight: h,
2341
+ accentHeight: g,
2342
2342
  accumulate: null,
2343
2343
  additive: null,
2344
2344
  alignmentBaseline: null,
2345
- alphabetic: h,
2346
- amplitude: h,
2345
+ alphabetic: g,
2346
+ amplitude: g,
2347
2347
  arabicForm: null,
2348
- ascent: h,
2348
+ ascent: g,
2349
2349
  attributeName: null,
2350
2350
  attributeType: null,
2351
- azimuth: h,
2351
+ azimuth: g,
2352
2352
  bandwidth: null,
2353
2353
  baselineShift: null,
2354
2354
  baseFrequency: null,
2355
2355
  baseProfile: null,
2356
2356
  bbox: null,
2357
2357
  begin: null,
2358
- bias: h,
2358
+ bias: g,
2359
2359
  by: null,
2360
2360
  calcMode: null,
2361
- capHeight: h,
2361
+ capHeight: g,
2362
2362
  className: A,
2363
2363
  clip: null,
2364
2364
  clipPath: null,
@@ -2379,26 +2379,26 @@ const er = ge({
2379
2379
  d: null,
2380
2380
  dataType: null,
2381
2381
  defaultAction: null,
2382
- descent: h,
2383
- diffuseConstant: h,
2382
+ descent: g,
2383
+ diffuseConstant: g,
2384
2384
  direction: null,
2385
2385
  display: null,
2386
2386
  dur: null,
2387
- divisor: h,
2387
+ divisor: g,
2388
2388
  dominantBaseline: null,
2389
2389
  download: S,
2390
2390
  dx: null,
2391
2391
  dy: null,
2392
2392
  edgeMode: null,
2393
2393
  editable: null,
2394
- elevation: h,
2394
+ elevation: g,
2395
2395
  enableBackground: null,
2396
2396
  end: null,
2397
2397
  event: null,
2398
- exponent: h,
2398
+ exponent: g,
2399
2399
  externalResourcesRequired: null,
2400
2400
  fill: null,
2401
- fillOpacity: h,
2401
+ fillOpacity: g,
2402
2402
  fillRule: null,
2403
2403
  filter: null,
2404
2404
  filterRes: null,
@@ -2428,27 +2428,27 @@ const er = ge({
2428
2428
  gradientTransform: null,
2429
2429
  gradientUnits: null,
2430
2430
  handler: null,
2431
- hanging: h,
2431
+ hanging: g,
2432
2432
  hatchContentUnits: null,
2433
2433
  hatchUnits: null,
2434
2434
  height: null,
2435
2435
  href: null,
2436
2436
  hrefLang: null,
2437
- horizAdvX: h,
2438
- horizOriginX: h,
2439
- horizOriginY: h,
2437
+ horizAdvX: g,
2438
+ horizOriginX: g,
2439
+ horizOriginY: g,
2440
2440
  id: null,
2441
- ideographic: h,
2441
+ ideographic: g,
2442
2442
  imageRendering: null,
2443
2443
  initialVisibility: null,
2444
2444
  in: null,
2445
2445
  in2: null,
2446
- intercept: h,
2447
- k: h,
2448
- k1: h,
2449
- k2: h,
2450
- k3: h,
2451
- k4: h,
2446
+ intercept: g,
2447
+ k: g,
2448
+ k1: g,
2449
+ k2: g,
2450
+ k3: g,
2451
+ k4: g,
2452
2452
  kernelMatrix: G,
2453
2453
  kernelUnitLength: null,
2454
2454
  keyPoints: null,
@@ -2462,7 +2462,7 @@ const er = ge({
2462
2462
  lengthAdjust: null,
2463
2463
  letterSpacing: null,
2464
2464
  lightingColor: null,
2465
- limitingConeAngle: h,
2465
+ limitingConeAngle: g,
2466
2466
  local: null,
2467
2467
  markerEnd: null,
2468
2468
  markerMid: null,
@@ -2478,7 +2478,7 @@ const er = ge({
2478
2478
  media: null,
2479
2479
  mediaCharacterEncoding: null,
2480
2480
  mediaContentEncodings: null,
2481
- mediaSize: h,
2481
+ mediaSize: g,
2482
2482
  mediaTime: null,
2483
2483
  method: null,
2484
2484
  min: null,
@@ -2584,12 +2584,12 @@ const er = ge({
2584
2584
  origin: null,
2585
2585
  overflow: null,
2586
2586
  overlay: null,
2587
- overlinePosition: h,
2588
- overlineThickness: h,
2587
+ overlinePosition: g,
2588
+ overlineThickness: g,
2589
2589
  paintOrder: null,
2590
2590
  panose1: null,
2591
2591
  path: null,
2592
- pathLength: h,
2592
+ pathLength: g,
2593
2593
  patternContentUnits: null,
2594
2594
  patternTransform: null,
2595
2595
  patternUnits: null,
@@ -2599,9 +2599,9 @@ const er = ge({
2599
2599
  playbackOrder: null,
2600
2600
  pointerEvents: null,
2601
2601
  points: null,
2602
- pointsAtX: h,
2603
- pointsAtY: h,
2604
- pointsAtZ: h,
2602
+ pointsAtX: g,
2603
+ pointsAtY: g,
2604
+ pointsAtZ: g,
2605
2605
  preserveAlpha: null,
2606
2606
  preserveAspectRatio: null,
2607
2607
  primitiveUnits: null,
@@ -2633,8 +2633,8 @@ const er = ge({
2633
2633
  side: null,
2634
2634
  slope: null,
2635
2635
  snapshotTime: null,
2636
- specularConstant: h,
2637
- specularExponent: h,
2636
+ specularConstant: g,
2637
+ specularExponent: g,
2638
2638
  spreadMethod: null,
2639
2639
  spacing: null,
2640
2640
  startOffset: null,
@@ -2644,30 +2644,30 @@ const er = ge({
2644
2644
  stitchTiles: null,
2645
2645
  stopColor: null,
2646
2646
  stopOpacity: null,
2647
- strikethroughPosition: h,
2648
- strikethroughThickness: h,
2647
+ strikethroughPosition: g,
2648
+ strikethroughThickness: g,
2649
2649
  string: null,
2650
2650
  stroke: null,
2651
2651
  strokeDashArray: G,
2652
2652
  strokeDashOffset: null,
2653
2653
  strokeLineCap: null,
2654
2654
  strokeLineJoin: null,
2655
- strokeMiterLimit: h,
2656
- strokeOpacity: h,
2655
+ strokeMiterLimit: g,
2656
+ strokeOpacity: g,
2657
2657
  strokeWidth: null,
2658
2658
  style: null,
2659
- surfaceScale: h,
2659
+ surfaceScale: g,
2660
2660
  syncBehavior: null,
2661
2661
  syncBehaviorDefault: null,
2662
2662
  syncMaster: null,
2663
2663
  syncTolerance: null,
2664
2664
  syncToleranceDefault: null,
2665
2665
  systemLanguage: G,
2666
- tabIndex: h,
2666
+ tabIndex: g,
2667
2667
  tableValues: null,
2668
2668
  target: null,
2669
- targetX: h,
2670
- targetY: h,
2669
+ targetX: g,
2670
+ targetY: g,
2671
2671
  textAnchor: null,
2672
2672
  textDecoration: null,
2673
2673
  textRendering: null,
@@ -2682,22 +2682,22 @@ const er = ge({
2682
2682
  transformOrigin: null,
2683
2683
  u1: null,
2684
2684
  u2: null,
2685
- underlinePosition: h,
2686
- underlineThickness: h,
2685
+ underlinePosition: g,
2686
+ underlineThickness: g,
2687
2687
  unicode: null,
2688
2688
  unicodeBidi: null,
2689
2689
  unicodeRange: null,
2690
- unitsPerEm: h,
2690
+ unitsPerEm: g,
2691
2691
  values: null,
2692
- vAlphabetic: h,
2693
- vMathematical: h,
2692
+ vAlphabetic: g,
2693
+ vMathematical: g,
2694
2694
  vectorEffect: null,
2695
- vHanging: h,
2696
- vIdeographic: h,
2695
+ vHanging: g,
2696
+ vIdeographic: g,
2697
2697
  version: null,
2698
- vertAdvY: h,
2699
- vertOriginX: h,
2700
- vertOriginY: h,
2698
+ vertAdvY: g,
2699
+ vertOriginX: g,
2700
+ vertOriginY: g,
2701
2701
  viewBox: null,
2702
2702
  viewTarget: null,
2703
2703
  visibility: null,
@@ -2709,7 +2709,7 @@ const er = ge({
2709
2709
  x1: null,
2710
2710
  x2: null,
2711
2711
  xChannelSelector: null,
2712
- xHeight: h,
2712
+ xHeight: g,
2713
2713
  y: null,
2714
2714
  y1: null,
2715
2715
  y2: null,
@@ -2718,8 +2718,8 @@ const er = ge({
2718
2718
  zoomAndPan: null
2719
2719
  },
2720
2720
  space: "svg",
2721
- transform: gn
2722
- }), mn = ge({
2721
+ transform: hn
2722
+ }), mn = he({
2723
2723
  properties: {
2724
2724
  xLinkActuate: null,
2725
2725
  xLinkArcRole: null,
@@ -2733,18 +2733,18 @@ const er = ge({
2733
2733
  transform(e, t) {
2734
2734
  return "xlink:" + t.slice(5).toLowerCase();
2735
2735
  }
2736
- }), fn = ge({
2736
+ }), fn = he({
2737
2737
  attributes: { xmlnsxlink: "xmlns:xlink" },
2738
2738
  properties: { xmlnsXLink: null, xmlns: null },
2739
2739
  space: "xmlns",
2740
- transform: hn
2741
- }), bn = ge({
2740
+ transform: gn
2741
+ }), bn = he({
2742
2742
  properties: { xmlBase: null, xmlLang: null, xmlSpace: null },
2743
2743
  space: "xml",
2744
2744
  transform(e, t) {
2745
2745
  return "xml:" + t.slice(3).toLowerCase();
2746
2746
  }
2747
- }), nr = /[A-Z]/g, vt = /-[a-z]/g, or = /^data[-\w.:]+$/i;
2747
+ }), nr = /[A-Z]/g, _t = /-[a-z]/g, or = /^data[-\w.:]+$/i;
2748
2748
  function rr(e, t) {
2749
2749
  const n = be(t);
2750
2750
  let o = t, r = B;
@@ -2752,11 +2752,11 @@ function rr(e, t) {
2752
2752
  return e.property[e.normal[n]];
2753
2753
  if (n.length > 4 && n.slice(0, 4) === "data" && or.test(t)) {
2754
2754
  if (t.charAt(4) === "-") {
2755
- const a = t.slice(5).replace(vt, ir);
2755
+ const a = t.slice(5).replace(_t, ir);
2756
2756
  o = "data" + a.charAt(0).toUpperCase() + a.slice(1);
2757
2757
  } else {
2758
2758
  const a = t.slice(4);
2759
- if (!vt.test(a)) {
2759
+ if (!_t.test(a)) {
2760
2760
  let l = a.replace(nr, ar);
2761
2761
  l.charAt(0) !== "-" && (l = "-" + l), t = "data" + l;
2762
2762
  }
@@ -2772,7 +2772,7 @@ function ir(e) {
2772
2772
  return e.charAt(1).toUpperCase();
2773
2773
  }
2774
2774
  const lr = dn([pn, er, mn, fn, bn], "html"), sr = dn([pn, tr, mn, fn, bn], "svg");
2775
- function kt(e) {
2775
+ function vt(e) {
2776
2776
  const t = [], n = String(e || "");
2777
2777
  let o = n.indexOf(","), r = 0, a = !1;
2778
2778
  for (; !a; ) {
@@ -2782,13 +2782,13 @@ function kt(e) {
2782
2782
  }
2783
2783
  return t;
2784
2784
  }
2785
- const _t = /[#.]/g;
2785
+ const kt = /[#.]/g;
2786
2786
  function cr(e, t) {
2787
2787
  const n = e || "", o = {};
2788
2788
  let r = 0, a, l;
2789
2789
  for (; r < n.length; ) {
2790
- _t.lastIndex = r;
2791
- const c = _t.exec(n), s = n.slice(r, c ? c.index : n.length);
2790
+ kt.lastIndex = r;
2791
+ const c = kt.exec(n), s = n.slice(r, c ? c.index : n.length);
2792
2792
  s && (a ? a === "#" ? o.id = s : Array.isArray(o.className) ? o.className.push(s) : o.className = [s] : l = s, r += s.length), c && (a = c[0], r++);
2793
2793
  }
2794
2794
  return {
@@ -2799,12 +2799,12 @@ function cr(e, t) {
2799
2799
  children: []
2800
2800
  };
2801
2801
  }
2802
- function xt(e) {
2802
+ function wt(e) {
2803
2803
  const t = String(e || "").trim();
2804
2804
  return t ? t.split(/[ \t\n\r\f]+/g) : [];
2805
2805
  }
2806
2806
  function yn(e, t, n) {
2807
- const o = n ? gr(n) : void 0;
2807
+ const o = n ? hr(n) : void 0;
2808
2808
  function r(a, l, ...c) {
2809
2809
  let s;
2810
2810
  if (a == null) {
@@ -2816,8 +2816,8 @@ function yn(e, t, n) {
2816
2816
  c.unshift(u);
2817
2817
  } else {
2818
2818
  s = cr(a, t);
2819
- const u = s.tagName.toLowerCase(), g = o ? o.get(u) : void 0;
2820
- if (s.tagName = g || u, ur(l))
2819
+ const u = s.tagName.toLowerCase(), h = o ? o.get(u) : void 0;
2820
+ if (s.tagName = h || u, ur(l))
2821
2821
  c.unshift(l);
2822
2822
  else
2823
2823
  for (const [m, f] of Object.entries(l))
@@ -2859,13 +2859,13 @@ function dr(e, t, n, o) {
2859
2859
  if (typeof o == "number") {
2860
2860
  if (Number.isNaN(o)) return;
2861
2861
  a = o;
2862
- } else typeof o == "boolean" ? a = o : typeof o == "string" ? r.spaceSeparated ? a = xt(o) : r.commaSeparated ? a = kt(o) : r.commaOrSpaceSeparated ? a = xt(kt(o).join(" ")) : a = wt(r, r.property, o) : Array.isArray(o) ? a = [...o] : a = r.property === "style" ? pr(o) : String(o);
2862
+ } else typeof o == "boolean" ? a = o : typeof o == "string" ? r.spaceSeparated ? a = wt(o) : r.commaSeparated ? a = vt(o) : r.commaOrSpaceSeparated ? a = wt(vt(o).join(" ")) : a = xt(r, r.property, o) : Array.isArray(o) ? a = [...o] : a = r.property === "style" ? pr(o) : String(o);
2863
2863
  if (Array.isArray(a)) {
2864
2864
  const l = [];
2865
2865
  for (const c of a)
2866
2866
  l.push(
2867
2867
  /** @type {number | string} */
2868
- wt(r, r.property, c)
2868
+ xt(r, r.property, c)
2869
2869
  );
2870
2870
  a = l;
2871
2871
  }
@@ -2886,7 +2886,7 @@ function Qe(e, t) {
2886
2886
  else
2887
2887
  throw new Error("Expected node, nodes, or string, got `" + t + "`");
2888
2888
  }
2889
- function wt(e, t, n) {
2889
+ function xt(e, t, n) {
2890
2890
  if (typeof n == "string") {
2891
2891
  if (e.number && n && !Number.isNaN(Number(n)))
2892
2892
  return Number(n);
@@ -2901,13 +2901,13 @@ function pr(e) {
2901
2901
  t.push([n, o].join(": "));
2902
2902
  return t.join("; ");
2903
2903
  }
2904
- function gr(e) {
2904
+ function hr(e) {
2905
2905
  const t = /* @__PURE__ */ new Map();
2906
2906
  for (const n of e)
2907
2907
  t.set(n.toLowerCase(), n);
2908
2908
  return t;
2909
2909
  }
2910
- const hr = [
2910
+ const gr = [
2911
2911
  "altGlyph",
2912
2912
  "altGlyphDef",
2913
2913
  "altGlyphItem",
@@ -2947,28 +2947,28 @@ const hr = [
2947
2947
  "solidColor",
2948
2948
  "textArea",
2949
2949
  "textPath"
2950
- ], mr = yn(lr, "div"), fr = yn(sr, "g", hr), Ue = {
2950
+ ], mr = yn(lr, "div"), fr = yn(sr, "g", gr), Ue = {
2951
2951
  html: "http://www.w3.org/1999/xhtml",
2952
2952
  svg: "http://www.w3.org/2000/svg"
2953
2953
  };
2954
2954
  function br(e, t) {
2955
- return vn(e, {}) || { type: "root", children: [] };
2955
+ return _n(e, {}) || { type: "root", children: [] };
2956
2956
  }
2957
- function vn(e, t) {
2957
+ function _n(e, t) {
2958
2958
  const n = yr(e, t);
2959
2959
  return n && t.afterTransform && t.afterTransform(e, n), n;
2960
2960
  }
2961
2961
  function yr(e, t) {
2962
2962
  switch (e.nodeType) {
2963
2963
  case 1:
2964
- return xr(
2964
+ return wr(
2965
2965
  /** @type {Element} */
2966
2966
  e,
2967
2967
  t
2968
2968
  );
2969
2969
  // Ignore: Attr (2).
2970
2970
  case 3:
2971
- return kr(
2971
+ return vr(
2972
2972
  /** @type {Text} */
2973
2973
  e
2974
2974
  );
@@ -2977,7 +2977,7 @@ function yr(e, t) {
2977
2977
  // Removed: Entity (6)
2978
2978
  // Ignore: Processing instruction (7).
2979
2979
  case 8:
2980
- return _r(
2980
+ return kr(
2981
2981
  /** @type {Comment} */
2982
2982
  e
2983
2983
  );
@@ -2988,7 +2988,7 @@ function yr(e, t) {
2988
2988
  t
2989
2989
  );
2990
2990
  case 10:
2991
- return vr();
2991
+ return _r();
2992
2992
  case 11:
2993
2993
  return St(
2994
2994
  /** @type {DocumentFragment} */
@@ -3000,18 +3000,18 @@ function yr(e, t) {
3000
3000
  }
3001
3001
  }
3002
3002
  function St(e, t) {
3003
- return { type: "root", children: kn(e, t) };
3003
+ return { type: "root", children: vn(e, t) };
3004
3004
  }
3005
- function vr() {
3005
+ function _r() {
3006
3006
  return { type: "doctype" };
3007
3007
  }
3008
- function kr(e) {
3008
+ function vr(e) {
3009
3009
  return { type: "text", value: e.nodeValue || "" };
3010
3010
  }
3011
- function _r(e) {
3011
+ function kr(e) {
3012
3012
  return { type: "comment", value: e.nodeValue || "" };
3013
3013
  }
3014
- function xr(e, t) {
3014
+ function wr(e, t) {
3015
3015
  const n = e.namespaceURI, o = n === Ue.svg ? fr : mr, r = n === Ue.html ? e.tagName.toLowerCase() : e.tagName, a = (
3016
3016
  // @ts-expect-error: DOM types are wrong, content can exist.
3017
3017
  n === Ue.html && r === "template" ? e.content : e
@@ -3019,19 +3019,19 @@ function xr(e, t) {
3019
3019
  let s = -1;
3020
3020
  for (; ++s < l.length; )
3021
3021
  c[l[s]] = e.getAttribute(l[s]) || "";
3022
- return o(r, c, kn(a, t));
3022
+ return o(r, c, vn(a, t));
3023
3023
  }
3024
- function kn(e, t) {
3024
+ function vn(e, t) {
3025
3025
  const n = e.childNodes, o = [];
3026
3026
  let r = -1;
3027
3027
  for (; ++r < n.length; ) {
3028
- const a = vn(n[r], t);
3028
+ const a = _n(n[r], t);
3029
3029
  a !== void 0 && o.push(a);
3030
3030
  }
3031
3031
  return o;
3032
3032
  }
3033
3033
  new DOMParser();
3034
- function wr(e, t) {
3034
+ function xr(e, t) {
3035
3035
  const n = Sr(e);
3036
3036
  return (
3037
3037
  /** @type {Root} */
@@ -3236,7 +3236,7 @@ const Nt = /\n/g, Ct = /[\t ]+/g, Je = oe("br"), Tt = oe($r), Dr = oe("p"), At =
3236
3236
  qr,
3237
3237
  // From: <https://html.spec.whatwg.org/multipage/rendering.html#flow-content-3>
3238
3238
  Br
3239
- ]), _n = oe([
3239
+ ]), kn = oe([
3240
3240
  "address",
3241
3241
  // Flow content
3242
3242
  "article",
@@ -3319,11 +3319,11 @@ const Nt = /\n/g, Ct = /[\t ]+/g, Je = oe("br"), Tt = oe($r), Dr = oe("p"), At =
3319
3319
  // Flow content (legacy)
3320
3320
  ]);
3321
3321
  function Pr(e, t) {
3322
- const n = t || {}, o = "children" in e ? e.children : [], r = _n(e), a = Sn(e, {
3322
+ const n = t || {}, o = "children" in e ? e.children : [], r = kn(e), a = Sn(e, {
3323
3323
  whitespace: n.whitespace || "normal"
3324
3324
  }), l = [];
3325
3325
  (e.type === "text" || e.type === "comment") && l.push(
3326
- ...wn(e, {
3326
+ ...xn(e, {
3327
3327
  breakBefore: !0,
3328
3328
  breakAfter: !0
3329
3329
  })
@@ -3331,7 +3331,7 @@ function Pr(e, t) {
3331
3331
  let c = -1;
3332
3332
  for (; ++c < o.length; )
3333
3333
  l.push(
3334
- ...xn(
3334
+ ...wn(
3335
3335
  o[c],
3336
3336
  // @ts-expect-error: `tree` is a parent if we’re here.
3337
3337
  e,
@@ -3345,14 +3345,14 @@ function Pr(e, t) {
3345
3345
  const s = [];
3346
3346
  let u;
3347
3347
  for (c = -1; ++c < l.length; ) {
3348
- const g = l[c];
3349
- typeof g == "number" ? u !== void 0 && g > u && (u = g) : g && (u !== void 0 && u > -1 && s.push(`
3350
- `.repeat(u) || " "), u = -1, s.push(g));
3348
+ const h = l[c];
3349
+ typeof h == "number" ? u !== void 0 && h > u && (u = h) : h && (u !== void 0 && u > -1 && s.push(`
3350
+ `.repeat(u) || " "), u = -1, s.push(h));
3351
3351
  }
3352
3352
  return s.join("");
3353
3353
  }
3354
- function xn(e, t, n) {
3355
- return e.type === "element" ? Mr(e, t, n) : e.type === "text" ? n.whitespace === "normal" ? wn(e, n) : zr(e) : [];
3354
+ function wn(e, t, n) {
3355
+ return e.type === "element" ? Mr(e, t, n) : e.type === "text" ? n.whitespace === "normal" ? xn(e, n) : zr(e) : [];
3356
3356
  }
3357
3357
  function Mr(e, t, n) {
3358
3358
  const o = Sn(e, n), r = e.children || [];
@@ -3362,9 +3362,9 @@ function Mr(e, t, n) {
3362
3362
  let c, s;
3363
3363
  for (Je(e) || At(e) && // @ts-expect-error: something up with types of parents.
3364
3364
  Et(t, e, At) ? s = `
3365
- ` : Dr(e) ? (c = 2, s = 2) : _n(e) && (c = 1, s = 1); ++a < r.length; )
3365
+ ` : Dr(e) ? (c = 2, s = 2) : kn(e) && (c = 1, s = 1); ++a < r.length; )
3366
3366
  l = l.concat(
3367
- xn(r[a], e, {
3367
+ wn(r[a], e, {
3368
3368
  whitespace: o,
3369
3369
  breakBefore: a ? void 0 : c,
3370
3370
  breakAfter: a < r.length - 1 ? Je(r[a + 1]) : s
@@ -3373,7 +3373,7 @@ function Mr(e, t, n) {
3373
3373
  return Tt(e) && // @ts-expect-error: something up with types of parents.
3374
3374
  Et(t, e, Tt) && l.push(" "), c && l.unshift(c), s && l.push(s), l;
3375
3375
  }
3376
- function wn(e, t) {
3376
+ function xn(e, t) {
3377
3377
  const n = String(e.value), o = [], r = [];
3378
3378
  let a = 0;
3379
3379
  for (; a <= n.length; ) {
@@ -3446,7 +3446,7 @@ function jr(e, t, n, o) {
3446
3446
  r = t;
3447
3447
  const a = ct(r), l = 1;
3448
3448
  c(e, void 0, [])();
3449
- function c(s, u, g) {
3449
+ function c(s, u, h) {
3450
3450
  const m = (
3451
3451
  /** @type {Record<string, unknown>} */
3452
3452
  s && typeof s == "object" ? s : {}
@@ -3465,18 +3465,18 @@ function jr(e, t, n, o) {
3465
3465
  }
3466
3466
  return f;
3467
3467
  function f() {
3468
- let p = En, b, d, k;
3469
- if (a(s, u, g[g.length - 1] || void 0) && (p = Gr(n(s, g)), p[0] === It))
3468
+ let p = En, b, d, v;
3469
+ if (a(s, u, h[h.length - 1] || void 0) && (p = Gr(n(s, h)), p[0] === It))
3470
3470
  return p;
3471
3471
  if ("children" in s && s.children) {
3472
- const _ = (
3472
+ const k = (
3473
3473
  /** @type {UnistParent} */
3474
3474
  s
3475
3475
  );
3476
- if (_.children && p[0] !== Nn)
3477
- for (d = -1 + l, k = g.concat(_); d > -1 && d < _.children.length; ) {
3478
- const y = _.children[d];
3479
- if (b = c(y, d, k)(), b[0] === It)
3476
+ if (k.children && p[0] !== Nn)
3477
+ for (d = -1 + l, v = h.concat(k); d > -1 && d < k.children.length; ) {
3478
+ const y = k.children[d];
3479
+ if (b = c(y, d, v)(), b[0] === It)
3480
3480
  return b;
3481
3481
  d = typeof b[1] == "number" ? b[1] : d + l;
3482
3482
  }
@@ -3494,27 +3494,27 @@ function Yr(e) {
3494
3494
  return function(n, o) {
3495
3495
  jr(n, "element", function(r, a) {
3496
3496
  const l = Array.isArray(r.properties.className) ? r.properties.className : Vr, c = l.includes("language-math"), s = l.includes("math-display"), u = l.includes("math-inline");
3497
- let g = s;
3497
+ let h = s;
3498
3498
  if (!c && !s && !u)
3499
3499
  return;
3500
3500
  let m = a[a.length - 1], f = r;
3501
- if (r.tagName === "code" && c && m && m.type === "element" && m.tagName === "pre" && (f = m, m = a[a.length - 2], g = !0), !m) return;
3501
+ if (r.tagName === "code" && c && m && m.type === "element" && m.tagName === "pre" && (f = m, m = a[a.length - 2], h = !0), !m) return;
3502
3502
  const p = Pr(f, { whitespace: "pre" });
3503
3503
  let b;
3504
3504
  try {
3505
3505
  b = dt.renderToString(p, {
3506
3506
  ...t,
3507
- displayMode: g,
3507
+ displayMode: h,
3508
3508
  throwOnError: !0
3509
3509
  });
3510
- } catch (k) {
3511
- const _ = (
3510
+ } catch (v) {
3511
+ const k = (
3512
3512
  /** @type {Error} */
3513
- k
3514
- ), y = _.name.toLowerCase();
3513
+ v
3514
+ ), y = k.name.toLowerCase();
3515
3515
  o.message("Could not render math with KaTeX", {
3516
3516
  ancestors: [...a, r],
3517
- cause: _,
3517
+ cause: k,
3518
3518
  place: r.position,
3519
3519
  ruleId: y,
3520
3520
  source: "rehype-katex"
@@ -3522,7 +3522,7 @@ function Yr(e) {
3522
3522
  try {
3523
3523
  b = dt.renderToString(p, {
3524
3524
  ...t,
3525
- displayMode: g,
3525
+ displayMode: h,
3526
3526
  strict: "ignore",
3527
3527
  throwOnError: !1
3528
3528
  });
@@ -3534,7 +3534,7 @@ function Yr(e) {
3534
3534
  properties: {
3535
3535
  className: ["katex-error"],
3536
3536
  style: "color:" + (t.errorColor || "#cc0000"),
3537
- title: String(k)
3537
+ title: String(v)
3538
3538
  },
3539
3539
  children: [{ type: "text", value: p }]
3540
3540
  }
@@ -3542,7 +3542,7 @@ function Yr(e) {
3542
3542
  }
3543
3543
  }
3544
3544
  typeof b == "string" && (b = /** @type {Array<ElementContent>} */
3545
- wr(b).children);
3545
+ xr(b).children);
3546
3546
  const d = m.children.indexOf(f);
3547
3547
  return m.children.splice(d, 1, ...b), Nn;
3548
3548
  });
@@ -3599,11 +3599,11 @@ function Kr() {
3599
3599
  this.data.mathFlowInside || (this.buffer(), this.data.mathFlowInside = !0);
3600
3600
  }
3601
3601
  function r(s) {
3602
- const u = this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g, ""), g = this.stack[this.stack.length - 1];
3603
- g.type, this.exit(s), g.value = u;
3602
+ const u = this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g, ""), h = this.stack[this.stack.length - 1];
3603
+ h.type, this.exit(s), h.value = u;
3604
3604
  const m = (
3605
3605
  /** @type {HastElement} */
3606
- g.data.hChildren[0]
3606
+ h.data.hChildren[0]
3607
3607
  );
3608
3608
  m.type, m.tagName, m.children.push({ type: "text", value: u }), this.data.mathFlowInside = void 0;
3609
3609
  }
@@ -3622,10 +3622,10 @@ function Kr() {
3622
3622
  ), this.buffer();
3623
3623
  }
3624
3624
  function l(s) {
3625
- const u = this.resume(), g = this.stack[this.stack.length - 1];
3626
- g.type, this.exit(s), g.value = u, /** @type {Array<HastElementContent>} */
3625
+ const u = this.resume(), h = this.stack[this.stack.length - 1];
3626
+ h.type, this.exit(s), h.value = u, /** @type {Array<HastElementContent>} */
3627
3627
  // @ts-expect-error: we defined it in `enterMathFlow`.
3628
- g.data.hChildren.push({ type: "text", value: u });
3628
+ h.data.hChildren.push({ type: "text", value: u });
3629
3629
  }
3630
3630
  function c(s) {
3631
3631
  this.config.enter.data.call(this, s), this.config.exit.data.call(this, s);
@@ -3649,29 +3649,29 @@ function Zr(e) {
3649
3649
  handlers: { math: n, inlineMath: o }
3650
3650
  };
3651
3651
  function n(a, l, c, s) {
3652
- const u = a.value || "", g = c.createTracker(s), m = "$".repeat(Math.max(Xr(u, "$") + 1, 2)), f = c.enter("mathFlow");
3653
- let p = g.move(m);
3652
+ const u = a.value || "", h = c.createTracker(s), m = "$".repeat(Math.max(Xr(u, "$") + 1, 2)), f = c.enter("mathFlow");
3653
+ let p = h.move(m);
3654
3654
  if (a.meta) {
3655
3655
  const b = c.enter("mathFlowMeta");
3656
- p += g.move(
3656
+ p += h.move(
3657
3657
  c.safe(a.meta, {
3658
3658
  after: `
3659
3659
  `,
3660
3660
  before: p,
3661
3661
  encode: ["$"],
3662
- ...g.current()
3662
+ ...h.current()
3663
3663
  })
3664
3664
  ), b();
3665
3665
  }
3666
- return p += g.move(`
3667
- `), u && (p += g.move(u + `
3668
- `)), p += g.move(m), f(), p;
3666
+ return p += h.move(`
3667
+ `), u && (p += h.move(u + `
3668
+ `)), p += h.move(m), f(), p;
3669
3669
  }
3670
3670
  function o(a, l, c) {
3671
3671
  let s = a.value || "", u = 1;
3672
3672
  for (t || u++; new RegExp("(^|[^$])" + "\\$".repeat(u) + "([^$]|$)").test(s); )
3673
3673
  u++;
3674
- const g = "$".repeat(u);
3674
+ const h = "$".repeat(u);
3675
3675
  // Contains non-space.
3676
3676
  /[^ \r\n]/.test(s) && // Starts with space and ends with space.
3677
3677
  (/^[ \r\n]/.test(s) && /[ \r\n]$/.test(s) || // Starts or ends with dollar.
@@ -3687,7 +3687,7 @@ function Zr(e) {
3687
3687
  s.codePointAt(d) === 10 && s.codePointAt(d - 1) === 13 && d--, s = s.slice(0, d) + " " + s.slice(b.index + 1);
3688
3688
  }
3689
3689
  }
3690
- return g + s + g;
3690
+ return h + s + h;
3691
3691
  }
3692
3692
  function r() {
3693
3693
  return "$";
@@ -3731,43 +3731,43 @@ function Jr(e, t, n) {
3731
3731
  function u(y) {
3732
3732
  return y === null || te(y) ? m(y) : (e.enter("mathFlowFenceMeta"), e.enter("chunkString", {
3733
3733
  contentType: "string"
3734
- }), g(y));
3734
+ }), h(y));
3735
3735
  }
3736
- function g(y) {
3737
- return y === null || te(y) ? (e.exit("chunkString"), e.exit("mathFlowFenceMeta"), m(y)) : y === 36 ? n(y) : (e.consume(y), g);
3736
+ function h(y) {
3737
+ return y === null || te(y) ? (e.exit("chunkString"), e.exit("mathFlowFenceMeta"), m(y)) : y === 36 ? n(y) : (e.consume(y), h);
3738
3738
  }
3739
3739
  function m(y) {
3740
- return e.exit("mathFlowFence"), o.interrupt ? t(y) : e.attempt(Ot, f, k)(y);
3740
+ return e.exit("mathFlowFence"), o.interrupt ? t(y) : e.attempt(Ot, f, v)(y);
3741
3741
  }
3742
3742
  function f(y) {
3743
3743
  return e.attempt({
3744
- tokenize: _,
3744
+ tokenize: k,
3745
3745
  partial: !0
3746
- }, k, p)(y);
3746
+ }, v, p)(y);
3747
3747
  }
3748
3748
  function p(y) {
3749
3749
  return (a ? Se(e, b, "linePrefix", a + 1) : b)(y);
3750
3750
  }
3751
3751
  function b(y) {
3752
- return y === null ? k(y) : te(y) ? e.attempt(Ot, f, k)(y) : (e.enter("mathFlowValue"), d(y));
3752
+ return y === null ? v(y) : te(y) ? e.attempt(Ot, f, v)(y) : (e.enter("mathFlowValue"), d(y));
3753
3753
  }
3754
3754
  function d(y) {
3755
3755
  return y === null || te(y) ? (e.exit("mathFlowValue"), b(y)) : (e.consume(y), d);
3756
3756
  }
3757
- function k(y) {
3757
+ function v(y) {
3758
3758
  return e.exit("mathFlow"), t(y);
3759
3759
  }
3760
- function _(y, E, w) {
3760
+ function k(y, E, x) {
3761
3761
  let C = 0;
3762
3762
  return Se(y, O, "linePrefix", o.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4);
3763
3763
  function O(R) {
3764
3764
  return y.enter("mathFlowFence"), y.enter("mathFlowFenceSequence"), U(R);
3765
3765
  }
3766
3766
  function U(R) {
3767
- return R === 36 ? (C++, y.consume(R), U) : C < l ? w(R) : (y.exit("mathFlowFenceSequence"), Se(y, F, "whitespace")(R));
3767
+ return R === 36 ? (C++, y.consume(R), U) : C < l ? x(R) : (y.exit("mathFlowFenceSequence"), Se(y, F, "whitespace")(R));
3768
3768
  }
3769
3769
  function F(R) {
3770
- return R === null || te(R) ? (y.exit("mathFlowFence"), E(R)) : w(R);
3770
+ return R === null || te(R) ? (y.exit("mathFlowFence"), E(R)) : x(R);
3771
3771
  }
3772
3772
  }
3773
3773
  }
@@ -3791,8 +3791,8 @@ function ta(e) {
3791
3791
  };
3792
3792
  function o(r, a, l) {
3793
3793
  let c = 0, s, u;
3794
- return g;
3795
- function g(d) {
3794
+ return h;
3795
+ function h(d) {
3796
3796
  return r.enter("mathText"), r.enter("mathTextSequence"), m(d);
3797
3797
  }
3798
3798
  function m(d) {
@@ -3855,7 +3855,7 @@ const Ce = Te(
3855
3855
  ({ className: e, ...t }) => /* @__PURE__ */ i(
3856
3856
  lo,
3857
3857
  {
3858
- className: v("size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 code-bg ", e),
3858
+ className: _("size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 code-bg ", e),
3859
3859
  ...t,
3860
3860
  remarkPlugins: [Lt.remarkPlugin, ...t.remarkPlugins || []],
3861
3861
  rehypePlugins: [Lt.rehypePlugin, ...t.rehypePlugins || []]
@@ -3875,36 +3875,36 @@ function sa({
3875
3875
  feedback: c,
3876
3876
  handleFeedback: s,
3877
3877
  copyHost: u,
3878
- feedbackEnabled: g,
3878
+ feedbackEnabled: h,
3879
3879
  retryEnabled: m,
3880
3880
  reference: f
3881
3881
  }) {
3882
- const { t: p } = z(["chat"]), { textComponents: b, remarkPlugins: d, rehypePlugins: k } = re(), _ = Re(e.text), y = !o && r && (n === "streaming" || n === "submitted"), E = l || (() => {
3882
+ const { t: p } = z(["chat"]), { textComponents: b, remarkPlugins: d, rehypePlugins: v } = re(), k = Re(e.text), y = !o && r && (n === "streaming" || n === "submitted"), E = l || (() => {
3883
3883
  });
3884
- return /* @__PURE__ */ x("div", { className: "group py-2 first:pt-4 animate-in-bubble", children: [
3885
- /* @__PURE__ */ i(cn, { from: t.role, children: /* @__PURE__ */ i(un, { dir: _, children: f ? /* @__PURE__ */ i(Xe, { showAction: !1, reference: f, children: /* @__PURE__ */ i(
3884
+ return /* @__PURE__ */ w("div", { className: "group py-2 first:pt-4 animate-in-bubble", children: [
3885
+ /* @__PURE__ */ i(cn, { from: t.role, children: /* @__PURE__ */ i(un, { dir: k, children: f ? /* @__PURE__ */ i(Xe, { showAction: !1, reference: f, children: /* @__PURE__ */ i(
3886
3886
  Ce,
3887
3887
  {
3888
- className: v(t.role === "user" && "whitespace-pre-wrap break-words"),
3888
+ className: _(t.role === "user" && "whitespace-pre-wrap break-words"),
3889
3889
  components: b,
3890
3890
  remarkPlugins: d,
3891
- rehypePlugins: k,
3891
+ rehypePlugins: v,
3892
3892
  children: e.text
3893
3893
  }
3894
3894
  ) }) : /* @__PURE__ */ i(
3895
3895
  Ce,
3896
3896
  {
3897
- className: v(t.role === "user" && "whitespace-pre-wrap break-words"),
3897
+ className: _(t.role === "user" && "whitespace-pre-wrap break-words"),
3898
3898
  components: b,
3899
3899
  remarkPlugins: d,
3900
- rehypePlugins: k,
3900
+ rehypePlugins: v,
3901
3901
  children: e.text
3902
3902
  }
3903
3903
  ) }) }),
3904
- a && !y && /* @__PURE__ */ x(Qo, { className: v("mt-1.5 ml-0.5", t.role === "user" && "justify-end"), children: [
3905
- t.role === "assistant" && /* @__PURE__ */ x(ce, { children: [
3904
+ a && !y && /* @__PURE__ */ w(Qo, { className: _("mt-1.5 ml-0.5", t.role === "user" && "justify-end"), children: [
3905
+ t.role === "assistant" && /* @__PURE__ */ w(ce, { children: [
3906
3906
  r && m && /* @__PURE__ */ i(
3907
- we,
3907
+ xe,
3908
3908
  {
3909
3909
  onClick: () => E(t.id),
3910
3910
  label: p("retry"),
@@ -3912,9 +3912,9 @@ function sa({
3912
3912
  children: /* @__PURE__ */ i(Wn, { className: "size-3" })
3913
3913
  }
3914
3914
  ),
3915
- g && /* @__PURE__ */ x(ce, { children: [
3915
+ h && /* @__PURE__ */ w(ce, { children: [
3916
3916
  /* @__PURE__ */ i(
3917
- we,
3917
+ xe,
3918
3918
  {
3919
3919
  onClick: () => s("like"),
3920
3920
  label: p("like"),
@@ -3924,7 +3924,7 @@ function sa({
3924
3924
  }
3925
3925
  ),
3926
3926
  /* @__PURE__ */ i(
3927
- we,
3927
+ xe,
3928
3928
  {
3929
3929
  onClick: () => s("dislike"),
3930
3930
  label: p("dislike"),
@@ -3936,7 +3936,7 @@ function sa({
3936
3936
  ] })
3937
3937
  ] }),
3938
3938
  /* @__PURE__ */ i(
3939
- we,
3939
+ xe,
3940
3940
  {
3941
3941
  onClick: () => {
3942
3942
  u(e.text);
@@ -3970,7 +3970,7 @@ const Cn = pe(null), ca = () => {
3970
3970
  prop: n,
3971
3971
  defaultProp: o,
3972
3972
  onChange: r
3973
- }), [g, m] = pt({
3973
+ }), [h, m] = pt({
3974
3974
  prop: a,
3975
3975
  defaultProp: 0
3976
3976
  }), [f, p] = P(!1), [b, d] = P(null);
@@ -3978,22 +3978,22 @@ const Cn = pe(null), ca = () => {
3978
3978
  t ? b === null && d(Date.now()) : b !== null && (m(Math.ceil((Date.now() - b) / da)), d(null));
3979
3979
  }, [t, b, m]), Y(() => {
3980
3980
  if (o && !t && s && !f) {
3981
- const _ = setTimeout(() => {
3981
+ const k = setTimeout(() => {
3982
3982
  u(!1), p(!0);
3983
3983
  }, ua);
3984
3984
  return () => {
3985
- clearTimeout(_);
3985
+ clearTimeout(k);
3986
3986
  };
3987
3987
  }
3988
3988
  }, [t, s, o, u, f]);
3989
- const k = (_) => {
3990
- u(_);
3989
+ const v = (k) => {
3990
+ u(k);
3991
3991
  };
3992
- return /* @__PURE__ */ i(Cn.Provider, { value: { isStreaming: t, isOpen: s, setIsOpen: u, duration: g }, children: /* @__PURE__ */ i(
3992
+ return /* @__PURE__ */ i(Cn.Provider, { value: { isStreaming: t, isOpen: s, setIsOpen: u, duration: h }, children: /* @__PURE__ */ i(
3993
3993
  at,
3994
3994
  {
3995
- className: v("not-prose mb-4", e),
3996
- onOpenChange: k,
3995
+ className: _("not-prose mb-4", e),
3996
+ onOpenChange: v,
3997
3997
  open: s,
3998
3998
  ...c,
3999
3999
  children: l
@@ -4005,20 +4005,20 @@ const Cn = pe(null), ca = () => {
4005
4005
  return /* @__PURE__ */ i(
4006
4006
  it,
4007
4007
  {
4008
- className: v("flex items-center gap-2 text-muted-foreground text-sm", e),
4008
+ className: _("flex items-center gap-2 text-muted-foreground text-sm", e),
4009
4009
  ...n,
4010
- children: t ?? /* @__PURE__ */ x(ce, { children: [
4010
+ children: t ?? /* @__PURE__ */ w(ce, { children: [
4011
4011
  /* @__PURE__ */ i(Xn, { className: "size-4" }),
4012
- o || a === 0 ? /* @__PURE__ */ i("p", { children: "Thinking..." }) : /* @__PURE__ */ x("p", { children: [
4012
+ o || a === 0 ? /* @__PURE__ */ i("p", { children: "Thinking..." }) : /* @__PURE__ */ w("p", { children: [
4013
4013
  "Thought for ",
4014
4014
  a,
4015
4015
  " ",
4016
4016
  a === 1 ? "second" : "seconds"
4017
4017
  ] }),
4018
4018
  /* @__PURE__ */ i(
4019
- ve,
4019
+ _e,
4020
4020
  {
4021
- className: v(
4021
+ className: _(
4022
4022
  "size-4 text-muted-foreground transition-transform",
4023
4023
  r ? "rotate-180" : "rotate-0"
4024
4024
  )
@@ -4030,7 +4030,7 @@ const Cn = pe(null), ca = () => {
4030
4030
  }), In = Te(({ className: e, children: t, ...n }) => /* @__PURE__ */ i(
4031
4031
  lt,
4032
4032
  {
4033
- className: v(
4033
+ className: _(
4034
4034
  "mt-4 text-base",
4035
4035
  "data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in",
4036
4036
  e
@@ -4050,7 +4050,7 @@ function pa({
4050
4050
  lastMessage: r
4051
4051
  }) {
4052
4052
  const a = Re(e.text);
4053
- return /* @__PURE__ */ x(
4053
+ return /* @__PURE__ */ w(
4054
4054
  Tn,
4055
4055
  {
4056
4056
  className: "w-full animate-in-bubble",
@@ -4062,7 +4062,7 @@ function pa({
4062
4062
  }
4063
4063
  );
4064
4064
  }
4065
- const ga = tt(
4065
+ const ha = tt(
4066
4066
  "inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
4067
4067
  {
4068
4068
  variants: {
@@ -4078,13 +4078,13 @@ const ga = tt(
4078
4078
  }
4079
4079
  }
4080
4080
  );
4081
- function ha({
4081
+ function ga({
4082
4082
  className: e,
4083
4083
  variant: t,
4084
4084
  asChild: n = !1,
4085
4085
  ...o
4086
4086
  }) {
4087
- return /* @__PURE__ */ i(n ? Wt : "span", { "data-slot": "badge", className: v(ga({ variant: t }), e), ...o });
4087
+ return /* @__PURE__ */ i(n ? Wt : "span", { "data-slot": "badge", className: _(ha({ variant: t }), e), ...o });
4088
4088
  }
4089
4089
  function ma({ ...e }) {
4090
4090
  return /* @__PURE__ */ i(Z.Root, { "data-slot": "dialog", ...e });
@@ -4103,7 +4103,7 @@ function ya({ className: e, ...t }) {
4103
4103
  Z.Overlay,
4104
4104
  {
4105
4105
  "data-slot": "dialog-overlay",
4106
- className: v(
4106
+ className: _(
4107
4107
  "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
4108
4108
  e
4109
4109
  ),
@@ -4111,26 +4111,26 @@ function ya({ className: e, ...t }) {
4111
4111
  }
4112
4112
  );
4113
4113
  }
4114
- function va({
4114
+ function _a({
4115
4115
  className: e,
4116
4116
  children: t,
4117
4117
  showCloseButton: n = !0,
4118
4118
  ...o
4119
4119
  }) {
4120
- return /* @__PURE__ */ x(ba, { "data-slot": "dialog-portal", children: [
4120
+ return /* @__PURE__ */ w(ba, { "data-slot": "dialog-portal", children: [
4121
4121
  /* @__PURE__ */ i(ya, {}),
4122
- /* @__PURE__ */ x(
4122
+ /* @__PURE__ */ w(
4123
4123
  Z.Content,
4124
4124
  {
4125
4125
  "data-slot": "dialog-content",
4126
- className: v(
4126
+ className: _(
4127
4127
  "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",
4128
4128
  e
4129
4129
  ),
4130
4130
  ...o,
4131
4131
  children: [
4132
4132
  t,
4133
- n && /* @__PURE__ */ x(
4133
+ n && /* @__PURE__ */ w(
4134
4134
  Z.Close,
4135
4135
  {
4136
4136
  "data-slot": "dialog-close",
@@ -4146,12 +4146,12 @@ function va({
4146
4146
  )
4147
4147
  ] });
4148
4148
  }
4149
- function ka({ className: e, ...t }) {
4149
+ function va({ className: e, ...t }) {
4150
4150
  return /* @__PURE__ */ i(
4151
4151
  "div",
4152
4152
  {
4153
4153
  "data-slot": "dialog-header",
4154
- className: v("flex flex-col gap-2 text-center sm:text-start", e),
4154
+ className: _("flex flex-col gap-2 text-center sm:text-start", e),
4155
4155
  ...t
4156
4156
  }
4157
4157
  );
@@ -4161,17 +4161,17 @@ function fl({ className: e, ...t }) {
4161
4161
  "div",
4162
4162
  {
4163
4163
  "data-slot": "dialog-footer",
4164
- className: v("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", e),
4164
+ className: _("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", e),
4165
4165
  ...t
4166
4166
  }
4167
4167
  );
4168
4168
  }
4169
- function _a({ className: e, ...t }) {
4169
+ function ka({ className: e, ...t }) {
4170
4170
  return /* @__PURE__ */ i(
4171
4171
  Z.Title,
4172
4172
  {
4173
4173
  "data-slot": "dialog-title",
4174
- className: v("text-xl leading-none font-semibold", e),
4174
+ className: _("text-xl leading-none font-semibold", e),
4175
4175
  ...t
4176
4176
  }
4177
4177
  );
@@ -4181,12 +4181,12 @@ function bl({ className: e, ...t }) {
4181
4181
  Z.Description,
4182
4182
  {
4183
4183
  "data-slot": "dialog-description",
4184
- className: v("text-muted-foreground text-base", e),
4184
+ className: _("text-muted-foreground text-base", e),
4185
4185
  ...t
4186
4186
  }
4187
4187
  );
4188
4188
  }
4189
- const xa = {
4189
+ const wa = {
4190
4190
  'code[class*="language-"]': {
4191
4191
  background: "hsl(220, 13%, 18%)",
4192
4192
  color: "hsl(220, 14%, 71%)",
@@ -4686,7 +4686,7 @@ const xa = {
4686
4686
  ".prism-previewer-easing.prism-previewer-easing line": {
4687
4687
  stroke: "hsl(220, 14%, 71%)"
4688
4688
  }
4689
- }, wa = {
4689
+ }, xa = {
4690
4690
  'code[class*="language-"]': {
4691
4691
  background: "hsl(230, 1%, 98%)",
4692
4692
  color: "hsl(230, 8%, 24%)",
@@ -5747,14 +5747,14 @@ function Ba() {
5747
5747
  return /[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source;
5748
5748
  }
5749
5749
  ), c = /"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;
5750
- function s(u, g) {
5751
- g = (g || "").replace(/m/g, "") + "m";
5750
+ function s(u, h) {
5751
+ h = (h || "").replace(/m/g, "") + "m";
5752
5752
  var m = /([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g, function() {
5753
5753
  return a;
5754
5754
  }).replace(/<<value>>/g, function() {
5755
5755
  return u;
5756
5756
  });
5757
- return RegExp(m, g);
5757
+ return RegExp(m, h);
5758
5758
  }
5759
5759
  n.languages.yaml = {
5760
5760
  scalar: {
@@ -6088,17 +6088,17 @@ function Ga() {
6088
6088
  return;
6089
6089
  function p(b) {
6090
6090
  if (!(!b || typeof b == "string"))
6091
- for (var d = 0, k = b.length; d < k; d++) {
6092
- var _ = b[d];
6093
- if (_.type !== "code") {
6094
- p(_.content);
6091
+ for (var d = 0, v = b.length; d < v; d++) {
6092
+ var k = b[d];
6093
+ if (k.type !== "code") {
6094
+ p(k.content);
6095
6095
  continue;
6096
6096
  }
6097
- var y = _.content[1], E = _.content[3];
6097
+ var y = k.content[1], E = k.content[3];
6098
6098
  if (y && E && y.type === "code-language" && E.type === "code-block" && typeof y.content == "string") {
6099
- var w = y.content.replace(/\b#/g, "sharp").replace(/\b\+\+/g, "pp");
6100
- w = (/[a-z][\w-]*/i.exec(w) || [""])[0].toLowerCase();
6101
- var C = "language-" + w;
6099
+ var x = y.content.replace(/\b#/g, "sharp").replace(/\b\+\+/g, "pp");
6100
+ x = (/[a-z][\w-]*/i.exec(x) || [""])[0].toLowerCase();
6101
+ var C = "language-" + x;
6102
6102
  E.alias ? typeof E.alias == "string" ? E.alias = [E.alias, C] : E.alias.push(C) : E.alias = [C];
6103
6103
  }
6104
6104
  }
@@ -6107,9 +6107,9 @@ function Ga() {
6107
6107
  }), n.hooks.add("wrap", function(f) {
6108
6108
  if (f.type === "code-block") {
6109
6109
  for (var p = "", b = 0, d = f.classes.length; b < d; b++) {
6110
- var k = f.classes[b], _ = /language-(.+)/.exec(k);
6111
- if (_) {
6112
- p = _[1];
6110
+ var v = f.classes[b], k = /language-(.+)/.exec(v);
6111
+ if (k) {
6112
+ p = k[1];
6113
6113
  break;
6114
6114
  }
6115
6115
  }
@@ -6123,9 +6123,9 @@ function Ga() {
6123
6123
  else if (p && p !== "none" && n.plugins.autoloader) {
6124
6124
  var E = "md-" + (/* @__PURE__ */ new Date()).valueOf() + "-" + Math.floor(Math.random() * 1e16);
6125
6125
  f.attributes.id = E, n.plugins.autoloader.loadLanguages(p, function() {
6126
- var w = document.getElementById(E);
6127
- w && (w.innerHTML = n.highlight(
6128
- w.textContent,
6126
+ var x = document.getElementById(E);
6127
+ x && (x.innerHTML = n.highlight(
6128
+ x.textContent,
6129
6129
  n.languages[p],
6130
6130
  p
6131
6131
  ));
@@ -6138,16 +6138,16 @@ function Ga() {
6138
6138
  lt: "<",
6139
6139
  gt: ">",
6140
6140
  quot: '"'
6141
- }, g = String.fromCodePoint || String.fromCharCode;
6141
+ }, h = String.fromCodePoint || String.fromCharCode;
6142
6142
  function m(f) {
6143
6143
  var p = f.replace(s, "");
6144
6144
  return p = p.replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi, function(b, d) {
6145
6145
  if (d = d.toLowerCase(), d[0] === "#") {
6146
- var k;
6147
- return d[1] === "x" ? k = parseInt(d.slice(2), 16) : k = Number(d.slice(1)), g(k);
6146
+ var v;
6147
+ return d[1] === "x" ? v = parseInt(d.slice(2), 16) : v = Number(d.slice(1)), h(v);
6148
6148
  } else {
6149
- var _ = u[d];
6150
- return _ || b;
6149
+ var k = u[d];
6150
+ return k || b;
6151
6151
  }
6152
6152
  }), p;
6153
6153
  }
@@ -6178,13 +6178,13 @@ const Ya = pe({
6178
6178
  }) => /* @__PURE__ */ i(Ya.Provider, { value: { code: e }, children: /* @__PURE__ */ i(
6179
6179
  "div",
6180
6180
  {
6181
- className: v(
6181
+ className: _(
6182
6182
  "relative w-full overflow-hidden rounded-md border bg-background text-foreground",
6183
6183
  o
6184
6184
  ),
6185
6185
  dir: "ltr",
6186
6186
  ...a,
6187
- children: /* @__PURE__ */ x("div", { className: "relative", children: [
6187
+ children: /* @__PURE__ */ w("div", { className: "relative", children: [
6188
6188
  /* @__PURE__ */ i(
6189
6189
  X,
6190
6190
  {
@@ -6206,7 +6206,7 @@ const Ya = pe({
6206
6206
  minWidth: "2.5rem"
6207
6207
  },
6208
6208
  showLineNumbers: n,
6209
- style: wa,
6209
+ style: xa,
6210
6210
  children: e
6211
6211
  }
6212
6212
  ),
@@ -6231,7 +6231,7 @@ const Ya = pe({
6231
6231
  minWidth: "2.5rem"
6232
6232
  },
6233
6233
  showLineNumbers: n,
6234
- style: xa,
6234
+ style: wa,
6235
6235
  children: e
6236
6236
  }
6237
6237
  ),
@@ -6247,14 +6247,14 @@ function Xa(e, t = "size-4") {
6247
6247
  image_generation: /* @__PURE__ */ i(Zn, { className: t })
6248
6248
  }[e] ?? /* @__PURE__ */ i(Kn, { className: t });
6249
6249
  }
6250
- const Ka = ({ className: e, ...t }) => /* @__PURE__ */ i(at, { className: v("not-prose mb-4 w-full rounded-md border", e), ...t }), Za = ({ status: e }) => {
6250
+ const Ka = ({ className: e, ...t }) => /* @__PURE__ */ i(at, { className: _("not-prose mb-4 w-full rounded-md border", e), ...t }), Za = ({ status: e }) => {
6251
6251
  const { t } = z(["tools_ui"]), n = {
6252
6252
  "input-streaming": t("pending"),
6253
6253
  "input-available": t("running"),
6254
6254
  "output-available": t("completed"),
6255
6255
  "output-error": t("error")
6256
6256
  };
6257
- return /* @__PURE__ */ x(ha, { className: "gap-1.5 rounded-full text-xs", variant: "secondary", children: [
6257
+ return /* @__PURE__ */ w(ga, { className: "gap-1.5 rounded-full text-xs", variant: "secondary", children: [
6258
6258
  {
6259
6259
  "input-streaming": /* @__PURE__ */ i(no, { className: "size-4" }),
6260
6260
  "input-available": /* @__PURE__ */ i(to, { className: "size-4 animate-pulse" }),
@@ -6265,25 +6265,25 @@ const Ka = ({ className: e, ...t }) => /* @__PURE__ */ i(at, { className: v("not
6265
6265
  ] });
6266
6266
  }, Qa = ({ className: e, type: t, state: n, toolName: o, ...r }) => {
6267
6267
  const a = o || (t.startsWith("tool-") ? t.slice(5) : t), l = Xa(a, "size-4 text-muted-foreground");
6268
- return /* @__PURE__ */ x(
6268
+ return /* @__PURE__ */ w(
6269
6269
  it,
6270
6270
  {
6271
- className: v("flex w-full items-center justify-between gap-4 p-3", e),
6271
+ className: _("flex w-full items-center justify-between gap-4 p-3", e),
6272
6272
  ...r,
6273
6273
  children: [
6274
- /* @__PURE__ */ x("div", { className: "flex items-center gap-2", children: [
6274
+ /* @__PURE__ */ w("div", { className: "flex items-center gap-2", children: [
6275
6275
  l,
6276
6276
  /* @__PURE__ */ i("span", { className: "font-medium text-sm", children: a }),
6277
6277
  /* @__PURE__ */ i(Za, { status: n })
6278
6278
  ] }),
6279
- /* @__PURE__ */ i(ve, { className: "size-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180" })
6279
+ /* @__PURE__ */ i(_e, { className: "size-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180" })
6280
6280
  ]
6281
6281
  }
6282
6282
  );
6283
6283
  }, Ja = ({ className: e, ...t }) => /* @__PURE__ */ i(
6284
6284
  lt,
6285
6285
  {
6286
- className: v(
6286
+ className: _(
6287
6287
  "data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in",
6288
6288
  e
6289
6289
  ),
@@ -6299,7 +6299,7 @@ const Ka = ({ className: e, ...t }) => /* @__PURE__ */ i(at, { className: v("not
6299
6299
  return JSON.stringify(e, null, 2);
6300
6300
  }, ei = ({ className: e, input: t, ...n }) => {
6301
6301
  const { t: o } = z(["tools_ui"]);
6302
- return /* @__PURE__ */ x("div", { className: v("space-y-2 overflow-hidden p-4", e), ...n, children: [
6302
+ return /* @__PURE__ */ w("div", { className: _("space-y-2 overflow-hidden p-4", e), ...n, children: [
6303
6303
  /* @__PURE__ */ i("h4", { className: "font-medium text-muted-foreground text-xs uppercase tracking-wide", children: o("parameters") }),
6304
6304
  /* @__PURE__ */ i("div", { className: "rounded-md bg-muted/50", children: /* @__PURE__ */ i(et, { code: Rn(t), language: "json" }) })
6305
6305
  ] });
@@ -6321,18 +6321,18 @@ const Ka = ({ className: e, ...t }) => /* @__PURE__ */ i(at, { className: v("not
6321
6321
  }
6322
6322
  return typeof t == "object" && t !== null && !("$$typeof" in t) ? /* @__PURE__ */ i(et, { code: JSON.stringify(t, null, 2), language: "json" }) : t;
6323
6323
  };
6324
- return /* @__PURE__ */ x("div", { className: v("space-y-2 p-4", e), ...o, children: [
6324
+ return /* @__PURE__ */ w("div", { className: _("space-y-2 p-4", e), ...o, children: [
6325
6325
  /* @__PURE__ */ i("h4", { className: "font-medium text-muted-foreground text-xs uppercase tracking-wide", children: r(n ? "error" : "result") }),
6326
- n && /* @__PURE__ */ x(ma, { children: [
6327
- /* @__PURE__ */ i(fa, { asChild: !0, children: /* @__PURE__ */ x(de, { variant: "destructive", size: "sm", children: [
6326
+ n && /* @__PURE__ */ w(ma, { children: [
6327
+ /* @__PURE__ */ i(fa, { asChild: !0, children: /* @__PURE__ */ w(de, { variant: "destructive", size: "sm", children: [
6328
6328
  /* @__PURE__ */ i(Xt, { className: "mr-1.5 size-4" }),
6329
6329
  r("view_error")
6330
6330
  ] }) }),
6331
- /* @__PURE__ */ x(va, { className: "max-w-2xl", children: [
6332
- /* @__PURE__ */ i(ka, { children: /* @__PURE__ */ i(_a, { className: "text-destructive", children: r("tool_error") }) }),
6333
- /* @__PURE__ */ x("div", { className: "space-y-4", children: [
6331
+ /* @__PURE__ */ w(_a, { className: "max-w-2xl", children: [
6332
+ /* @__PURE__ */ i(va, { children: /* @__PURE__ */ i(ka, { className: "text-destructive", children: r("tool_error") }) }),
6333
+ /* @__PURE__ */ w("div", { className: "space-y-4", children: [
6334
6334
  /* @__PURE__ */ i("div", { className: "max-h-96 overflow-auto rounded-md bg-destructive/10 p-4 text-destructive text-sm", children: /* @__PURE__ */ i("pre", { className: "whitespace-pre-wrap break-words", children: Rn(n) }) }),
6335
- /* @__PURE__ */ x(de, { variant: "outline", size: "sm", onClick: c, children: [
6335
+ /* @__PURE__ */ w(de, { variant: "outline", size: "sm", onClick: c, children: [
6336
6336
  /* @__PURE__ */ i(Yt, { className: "mr-1.5 size-4" }),
6337
6337
  r(a ? "copied" : "copy_error")
6338
6338
  ] })
@@ -6352,8 +6352,8 @@ function ni({ part: e, message: t, chat: n, toolComponents: o, showToolCalls: r
6352
6352
  if (!l && a.toolCallId && Array.isArray(t.parts))
6353
6353
  try {
6354
6354
  const c = t.parts.find((u) => {
6355
- const g = $(u);
6356
- return g && typeof g == "object" && g.toolCallId === a.toolCallId && (g.toolName || g.type?.startsWith("tool-"));
6355
+ const h = $(u);
6356
+ return h && typeof h == "object" && h.toolCallId === a.toolCallId && (h.toolName || h.type?.startsWith("tool-"));
6357
6357
  }), s = c ? $(c) : void 0;
6358
6358
  s && (l = s.toolName || (s.type.startsWith("tool-") ? s.type.slice(5) : void 0));
6359
6359
  } catch (c) {
@@ -6363,7 +6363,7 @@ function ni({ part: e, message: t, chat: n, toolComponents: o, showToolCalls: r
6363
6363
  const c = o[l];
6364
6364
  return /* @__PURE__ */ i(c, { part: e, message: t, chat: n });
6365
6365
  }
6366
- return r ? /* @__PURE__ */ x(Ka, { className: "animate-in-bubble", children: [
6366
+ return r ? /* @__PURE__ */ w(Ka, { className: "animate-in-bubble", children: [
6367
6367
  /* @__PURE__ */ i(
6368
6368
  Qa,
6369
6369
  {
@@ -6372,7 +6372,7 @@ function ni({ part: e, message: t, chat: n, toolComponents: o, showToolCalls: r
6372
6372
  toolName: l
6373
6373
  }
6374
6374
  ),
6375
- /* @__PURE__ */ x(Ja, { children: [
6375
+ /* @__PURE__ */ w(Ja, { children: [
6376
6376
  /* @__PURE__ */ i(ei, { input: a.input }),
6377
6377
  (a.state === "output-available" || a.state === "output-error") && /* @__PURE__ */ i(ti, { errorText: a.errorText, output: a.output })
6378
6378
  ] })
@@ -6384,7 +6384,7 @@ function oi({ part: e, message: t }) {
6384
6384
  const s = document.createElement("a");
6385
6385
  s.href = o.url, s.download = a, document.body.appendChild(s), s.click(), document.body.removeChild(s);
6386
6386
  };
6387
- return /* @__PURE__ */ i("div", { className: "py-2 animate-in-bubble", children: /* @__PURE__ */ i(cn, { from: t.role, children: /* @__PURE__ */ i(un, { isPlain: !0, children: r ? /* @__PURE__ */ x("div", { className: "group relative max-w-[280px] rounded-xl overflow-hidden border border-border/5 transition-all duration-300 hover:border-primary/30 hover:shadow-[0_0_20px_var(--glow)]", children: [
6387
+ return /* @__PURE__ */ i("div", { className: "py-2 animate-in-bubble", children: /* @__PURE__ */ i(cn, { from: t.role, children: /* @__PURE__ */ i(un, { isPlain: !0, children: r ? /* @__PURE__ */ w("div", { className: "group relative max-w-[280px] rounded-xl overflow-hidden border border-border/5 transition-all duration-300 hover:border-primary/30 hover:shadow-[0_0_20px_var(--glow)]", children: [
6388
6388
  /* @__PURE__ */ i(
6389
6389
  "img",
6390
6390
  {
@@ -6393,7 +6393,7 @@ function oi({ part: e, message: t }) {
6393
6393
  className: "max-h-[280px] w-full rounded-xl object-cover transition-transform duration-500 group-hover:scale-105"
6394
6394
  }
6395
6395
  ),
6396
- /* @__PURE__ */ x("div", { className: "absolute inset-x-0 bottom-0 p-3 bg-gradient-to-t from-black/80 via-black/40 to-transparent opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-between", children: [
6396
+ /* @__PURE__ */ w("div", { className: "absolute inset-x-0 bottom-0 p-3 bg-gradient-to-t from-black/80 via-black/40 to-transparent opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-between", children: [
6397
6397
  /* @__PURE__ */ i("span", { className: "text-[10px] text-white truncate max-w-[150px] font-medium drop-shadow-sm", children: a }),
6398
6398
  /* @__PURE__ */ i(
6399
6399
  "button",
@@ -6413,9 +6413,9 @@ function oi({ part: e, message: t }) {
6413
6413
  children: /* @__PURE__ */ i(Ee, { className: "size-4" })
6414
6414
  }
6415
6415
  ) })
6416
- ] }) : /* @__PURE__ */ i("div", { className: "flex flex-col gap-1.5", children: /* @__PURE__ */ x("div", { className: "group inline-flex items-center gap-3 rounded-xl p-3 text-sm transition-all duration-300 bg-secondary/10 border border-border/5 hover:border-primary/30 hover:bg-secondary/20 hover:shadow-[0_0_15px_var(--glow)]", children: [
6416
+ ] }) : /* @__PURE__ */ i("div", { className: "flex flex-col gap-1.5", children: /* @__PURE__ */ w("div", { className: "group inline-flex items-center gap-3 rounded-xl p-3 text-sm transition-all duration-300 bg-secondary/10 border border-border/5 hover:border-primary/30 hover:bg-secondary/20 hover:shadow-[0_0_15px_var(--glow)]", children: [
6417
6417
  /* @__PURE__ */ i("div", { className: "p-2.5 rounded-lg bg-background/50 border border-border/10 group-hover:border-primary/20 group-hover:text-primary transition-colors", children: /* @__PURE__ */ i(Vt, { className: "size-4 shrink-0" }) }),
6418
- /* @__PURE__ */ x("div", { className: "flex flex-col min-w-0 mr-4", children: [
6418
+ /* @__PURE__ */ w("div", { className: "flex flex-col min-w-0 mr-4", children: [
6419
6419
  /* @__PURE__ */ i("span", { className: "truncate max-w-[180px] font-semibold text-foreground/90 leading-none mb-1 group-hover:text-foreground transition-colors", children: a }),
6420
6420
  (o.mediaType || o.media_type) && /* @__PURE__ */ i("span", { className: "text-[10px] text-muted-foreground uppercase font-bold tracking-widest opacity-60", children: (o.mediaType || o.media_type)?.split("/").pop() })
6421
6421
  ] }),
@@ -6434,11 +6434,11 @@ function ri({ part: e, message: t }) {
6434
6434
  const { t: n } = z(["chat"]), { focusReference: o } = rt(), [r, a] = P(!1), l = e.data || e.reference;
6435
6435
  if (!l) return null;
6436
6436
  const c = l.excerpt || l.label || n("source_unavailable"), s = l.label && l.label !== c ? l.label : n("referenced_context");
6437
- return /* @__PURE__ */ i("div", { className: v("my-1.5 flex", t.role === "user" && "justify-end"), children: /* @__PURE__ */ x(
6437
+ return /* @__PURE__ */ i("div", { className: _("my-1.5 flex", t.role === "user" && "justify-end"), children: /* @__PURE__ */ w(
6438
6438
  "button",
6439
6439
  {
6440
6440
  type: "button",
6441
- className: v(
6441
+ className: _(
6442
6442
  "inline-flex max-w-[min(100%,34rem)] items-start gap-2 rounded-lg border border-border/60 bg-muted/35 px-3 py-2 text-left text-xs text-foreground transition hover:border-primary/30 hover:bg-muted/55 focus-visible:ring-2 focus-visible:ring-primary/30",
6443
6443
  r && "ring-2 ring-primary/35"
6444
6444
  ),
@@ -6528,7 +6528,7 @@ function yl({
6528
6528
  app: c,
6529
6529
  i18n: s,
6530
6530
  settings: u,
6531
- children: g
6531
+ children: h
6532
6532
  }) {
6533
6533
  const m = ue(
6534
6534
  () => ({
@@ -6561,7 +6561,7 @@ function yl({
6561
6561
  }),
6562
6562
  [e, t, n, o, r, a, l, c, s, u]
6563
6563
  );
6564
- return /* @__PURE__ */ i(On.Provider, { value: m, children: g });
6564
+ return /* @__PURE__ */ i(On.Provider, { value: m, children: h });
6565
6565
  }
6566
6566
  const {
6567
6567
  slice: ai,
@@ -6725,7 +6725,7 @@ const jt = () => {
6725
6725
  }
6726
6726
  return ae;
6727
6727
  };
6728
- var gi = {
6728
+ var hi = {
6729
6729
  name: "localStorage",
6730
6730
  // Deconstruct the options object and extract the lookupLocalStorage property
6731
6731
  lookup(e) {
@@ -6756,7 +6756,7 @@ const Gt = () => {
6756
6756
  }
6757
6757
  return ie;
6758
6758
  };
6759
- var hi = {
6759
+ var gi = {
6760
6760
  name: "sessionStorage",
6761
6761
  lookup(e) {
6762
6762
  let {
@@ -6827,7 +6827,7 @@ try {
6827
6827
  }
6828
6828
  const Dn = ["querystring", "cookie", "localStorage", "sessionStorage", "navigator", "htmlTag"];
6829
6829
  Ln || Dn.splice(1, 1);
6830
- const vi = () => ({
6830
+ const _i = () => ({
6831
6831
  order: Dn,
6832
6832
  lookupQuerystring: "lng",
6833
6833
  lookupCookie: "i18next",
@@ -6849,7 +6849,7 @@ class Fn {
6849
6849
  let t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {
6850
6850
  languageUtils: {}
6851
6851
  }, n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, o = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
6852
- this.services = t, this.options = li(n, this.options || {}, vi()), typeof this.options.convertDetectedLanguage == "string" && this.options.convertDetectedLanguage.indexOf("15897") > -1 && (this.options.convertDetectedLanguage = (r) => r.replace("-", "_")), this.options.lookupFromUrlIndex && (this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex), this.i18nOptions = o, this.addDetector(ui), this.addDetector(di), this.addDetector(gi), this.addDetector(hi), this.addDetector(mi), this.addDetector(fi), this.addDetector(bi), this.addDetector(yi), this.addDetector(pi);
6852
+ this.services = t, this.options = li(n, this.options || {}, _i()), typeof this.options.convertDetectedLanguage == "string" && this.options.convertDetectedLanguage.indexOf("15897") > -1 && (this.options.convertDetectedLanguage = (r) => r.replace("-", "_")), this.options.lookupFromUrlIndex && (this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex), this.i18nOptions = o, this.addDetector(ui), this.addDetector(di), this.addDetector(hi), this.addDetector(gi), this.addDetector(mi), this.addDetector(fi), this.addDetector(bi), this.addDetector(yi), this.addDetector(pi);
6853
6853
  }
6854
6854
  addDetector(t) {
6855
6855
  return this.detectors[t.name] = t, this;
@@ -6871,16 +6871,16 @@ class Fn {
6871
6871
  }
6872
6872
  }
6873
6873
  Fn.type = "languageDetector";
6874
- const ki = { new_conversation: "New conversation", tooltip_new_conversation: "Start a new conversation", delete_conversation: "Delete", delete_confirm_title: "Delete conversation?", delete_confirm_description: "Are you sure you want to delete this chat? This action cannot be undone.", cancel: "Cancel", delete: "Delete", chat_deleted_success: "Chat deleted successfully", logout: "Logout", new_chat: "New Chat", rename_conversation: "Rename", rename_success: "Conversation renamed successfully", rename_failed: "Failed to rename conversation", search_conversations: "Search conversations...", save: "Save", no_conversations: "No conversations yet", loading_more: "Loading more...", pinned_success: "Conversation pinned", unpinned_success: "Conversation unpinned", pin_failed: "Failed to pin conversation", share_success: "Link copied", share_description: "The shareable link has been copied to your clipboard.", share_failed: "Failed to generate share link", pin_conversation: "Pin", unpin_conversation: "Unpin", share_conversation: "Share" }, _i = { tools: "Tools", error: "Error:", input_placeholder: "Ask something...", insufficient_balance: "Insufficient balance. Please recharge your account to continue.", regenerate: "Regenerate", retry: "Retry", copy: "Copy", like: "Like", dislike: "Dislike", attach_file: "Attach file", remove_file: "Remove file", reference: "Reference", reference_selection: "Reference selection", remove_reference: "Remove reference", referenced_context: "Referenced context", source_unavailable: "Source unavailable", tool_reference: "Tool reference", card_reference: "Card reference", used_sources: "Used {{count}} sources", welcome: { title: "Hello! How can I help you today?", subtitle: "Ask me anything and I'll do my best to help.", suggestions: ["What can you help me with?", "Tell me something interesting", "Help me write an email", "Explain a concept to me"] }, disclaimer: "AI can make mistakes. Check important info." }, xi = { pending: "Pending", running: "Running", completed: "Completed", error: "Error", parameters: "Parameters", result: "Result", view_error: "View Error", tool_error: "Tool Error", copied: "Copied!", copy_error: "Copy Error" }, wi = { login_tab: "Login", signup_tab: "Sign Up", phone: "Phone", phone_placeholder: "Phone number", password: "Password", name: "Name", name_placeholder: "First Name", surname: "Surname", surname_placeholder: "Last Name", loading: "Loading...", logging_in: "Logging in...", signing_up: "Signing up...", auth_page_disabled_title: "The sign-in page is currently disabled.", auth_page_disabled_description: "Please contact the administrator for access.", select_placeholder: "Select an option", login_button: "Login", signup_button: "Sign Up" }, Si = { toggle: "Change theme", light: "Switch to light theme", dark: "Switch to dark theme", system: "Switch to system theme" }, Ei = /* @__PURE__ */ JSON.parse(`{"select_placeholder":"Select an option","loading":"Loading...","retry":"Retry","save":"Save","saving":"Saving...","cancel":"Cancel","delete":"Delete","edit":"Edit","search":"Search","search_placeholder":"Search...","no_data":"No data available","loading_more":"Loading more...","confirm_delete":"Are you sure you want to delete?","error_loading":"Error loading data","dashboard":{"title":"Admin Panel","logout":"Logout","tabs":{"analytics":"Analytics","chat_history":"Chats","users":"Users","admins":"Admins","settings":"Settings"}},"app_settings":{"title":"System Settings","subtitle":"Manage global configuration for application appearance and behavior.","sections":{"general":"Basic Information","chat":"Chat Experience","user_billing":"User & Billing"},"general":{"app_name":"App Name","admin_title":"Admin Panel Title","language":"Default Language","language_help":"The language users see on their first visit (if not auto-detected).","appearance":"Default Appearance","appearance_help":"These values apply when a user has not saved their own appearance preferences.","default_theme":"Default Theme","default_accent":"Default Accent Color","default_accent_help":"Enter any browser-supported CSS color, such as #3b82f6, rgb(59 130 246), or oklch(0.623 0.214 259.815).","default_accent_invalid":"Enter a valid browser-supported CSS color.","default_accent_preview":"Accent color preview"},"chat":{"welcome_greeting":"Welcome Greeting","welcome_subtitle":"Welcome Subtitle","disclaimer":"Disclaimer Text","show_tool_details":"Show technical tool details","show_tool_details_help":"Enable this to show professional technical details of AI tools to users.","show_settings":"Show settings icon for users","show_settings_help":"Show a settings gear icon in the chat interface for user customization.","show_version_in_settings":"Show app version in user settings","show_version_in_settings_help":"Show the app version at the bottom of the user settings dialog. This does not affect the admin settings page.","disable_signup":"Disable signup","disable_signup_help":"Hide the signup tab so users can only log in.","disable_auth_page":"Disable login/signup page","disable_auth_page_help":"Hide the entire auth page and prevent users from reaching login or signup forms.","composer_attachments":"Enable File Attachments","composer_attachments_help":"Allow users to upload and attach files to their messages.","thread_actions_feedback":"Enable Feedback Buttons","thread_actions_feedback_help":"Show like/dislike buttons on AI responses.","thread_actions_retry":"Enable Retry Button","thread_actions_retry_help":"Show a retry button to regenerate the last AI response.","history_enabled":"Enable Chat History Sidebar","history_enabled_help":"Show the sidebar containing previous conversations.","history_show_delete":"Allow Deleting Conversations","history_show_rename":"Allow Renaming Conversations","history_show_share":"Allow Sharing Conversations","history_show_pin":"Allow Pinning Conversations","sections_modes":"Settings Tab Modes","sections_modes_help":"Control visibility and interactability of settings tabs for users.","mode_editable":"Enable (Editable)","mode_faded":"Fade (Readonly)","mode_hidden":"Hide (Disable)","general_tab":"General Tab","profile_tab":"Profile Tab","account_tab":"Account Tab","inner_fields_modes":"Inner Fields Visibility","inner_fields_modes_help":"Configure visibility for individual fields within each tab."},"user_billing":{"initial_balance_tokens":"Default Initial Tokens","initial_balance_requests":"Default Initial Requests","initial_balance_help":"These values will be assigned to new users by default if not specified during creation."},"save_success":"Settings saved successfully","save_error":"Failed to save settings","save":"Save Changes","translations_management":"Translations Management","editor_tips":"All changes are saved automatically to local state. Don't forget to push 'Save Changes' to persist.","sync_from_code":"Sync from Code","reset_button":"Reset to Defaults","reset_confirm_title":"Reset Settings?","reset_confirm_description":"This will reset all fields to their original default values from the code. Current unsaved changes will be lost.","preview":"Preview","tips_label":"TIPS"},"analytics":{"title":"Analytics & Statistics","days":"{{count}} Days","total_users":"Total Users","total_threads":"Total Threads","total_messages":"Total Messages","total_token_usage":"Total Token Usage","usage_cost":"Usage & Cost","input":"Input","output":"Output","cost":"Cost","threads_chart":"Threads","messages_chart":"Messages","token_usage_chart":"Token Usage","cost_chart":"Cost Per Day","active_users":"Active Users","conversations":"conversations","threads":"threads","feedback":"User Feedback","total_feedback":"Total Feedback","positive":"Positive","negative":"Negative","loading_analytics":"Loading analytics...","error_loading":"Error loading data"},"chat_history":{"title":"Chat History Management","search_placeholder":"Search by name, phone, thread title, or ID...","search_button":"Search","threads_list":"Threads List","thread_count":"{{count}}","no_thread_title":"Untitled conversation","messages":"Messages","messages_for":"Messages for: {{title}}","select_thread":"Select a conversation to view","no_threads":"No conversations found","empty_thread":"This conversation is empty","loading_threads":"Loading...","loading_messages":"Loading messages...","user_label":"User","assistant_label":"AI Assistant","input_tokens":"Input: {{value}}","output_tokens":"Output: {{value}}","total_tokens":"Total: {{value}}","cost":"Cost: {{value}}","unpriced":"Unpriced","all_feedbacks":"All Conversations","liked_feedbacks":"Liked 👍","disliked_feedbacks":"Disliked 👎","any_feedback":"With Feedback","output_available":"Output Available","running":"Running...","unnamed_file":"Unnamed File","download_file":"Download File"},"users":{"title":"User Management","user_count":"User count: {{count}}","add_user":"Add New User","edit_user":"Edit User","phone":"Phone Number","phone_placeholder":"09123456789","name":"Name","surname":"Surname","initial_tokens":"Initial Tokens (optional)","initial_requests":"Initial Requests (optional)","balance":"Balance","requests_label":"Requests","tokens_label":"Tokens","token_limit":"Token Limit","request_limit":"Request Limit","tokens_usage":"Tokens Usage","requests_usage":"Requests Usage","actions":"Actions","copy_token":"Copy Token (auto-refresh)","token_copied":"Token copied successfully","no_token":"No token found for this user","recharge":"Recharge Balance","full_charge":"Full Charge","update_balance":"Update Balance","update_balance_for":"Update Balance for","token_count":"Token Count","request_count":"Request Count","updating":"Updating...","no_users":"No users found.","sort_ascending":"Sort ascending","sort_descending":"Sort descending","confirm_delete_user":"Are you sure you want to delete this user?","tokens_exceed_limit":"Tokens cannot exceed the specified limit","requests_exceed_limit":"Requests cannot exceed the specified limit","metadata":"Metadata (JSON)","initial_balance":"Initial Balance","custom_fields":"Additional Fields","metadata_raw":"Metadata (Raw JSON)","advanced_usage":"Advanced usage","invalid_json":"Invalid JSON format","auto_recharge":"Automatic Balance Renewal","auto_recharge_help":"Restore this user's balance to its limits on a recurring schedule.","enabled":"Enabled","recharge_interval":"Every","recharge_unit":"Interval Unit","recharge_unit_minute":"Minute(s)","recharge_unit_hour":"Hour(s)","recharge_unit_day":"Day(s)","recharge_unit_week":"Week(s)","recharge_unit_month":"Month(s)","recharge_schedule_help":"New schedules begin when saved. Existing schedules keep their current cycle anchor.","next_recharge":"Next renewal","last_recharge":"Last automatic renewal","not_available":"Not available","recharge_interval_invalid":"The renewal interval must be a positive whole number","recharge_policy_not_saved":"The backend did not save the renewal policy. Restart or update the backend to the version that supports automatic renewal.","usage_summary":"Usage Summary","input_tokens":"Input Tokens","output_tokens":"Output Tokens","total_tokens":"Total Tokens","requests_made":"Requests Made","total_cost":"Total Cost","renewals":"Balance Renewals","unpriced_requests":"Unpriced Requests","bulk_balance":"Bulk Balance","bulk_balance_help":"Apply a balance change to all matching users using search, explicit IDs, and metadata filters.","bulk_operation":"Operation","bulk_operation_add":"Add to balance","bulk_operation_set":"Set exact balance","bulk_operation_full_charge":"Fill to limits","bulk_use_current_search":"Use current search text","bulk_user_ids":"User IDs (optional)","bulk_metadata_filters":"Metadata Filters (JSON)","bulk_available_metadata":"Available metadata keys","bulk_preview_empty":"Affected users will be checked before applying.","bulk_preview_count":"{{count}} users match","apply_bulk_balance":"Apply Change","bulk_balance_confirm":"Apply this balance change to {{count}} users?","matching_users":"matching","bulk_apply_balance":"Update balances","bulk_apply_renewal":"Update renewal policy","bulk_select_change":"Select at least one bulk change to apply.","bulk_renewal_policy":"Renewal Policy","bulk_renewal_policy_help":"Enable or disable automatic renewal for every matched user.","bulk_renewal_anchor":"First renewal time (optional)"},"admins":{"title":"Admin Management","admin_count":"Admin count: {{count}}","add_admin":"Add New Admin","edit_admin":"Edit Admin","username":"Username","name":"Name","password":"Password","password_edit":"New Password (leave empty to keep current)","permissions":"Permissions","perm_chat_history":"Chat History","perm_admin_management":"Admin Management","perm_user_management":"User Management","perm_analytics":"Analytics","perm_settings":"Settings","no_admins":"No admins found.","confirm_delete_admin":"Are you sure you want to delete this admin?"},"errors":{"access_denied_title":"Access Denied","access_denied_message":"You don't have the necessary permissions to access this page. You can contact the administrator!","back_to_dashboard":"Back to Dashboard"},"login":{"title":"Admin Panel","setup_title":"Initial Setup","setup_description":"No admin account exists yet. Set a password for the default admin user to get started.","set_password":"Set Password","set_password_placeholder":"Choose a strong password","confirm_password":"Confirm Password","confirm_password_placeholder":"Re-enter the password","passwords_mismatch":"Passwords do not match","password_too_short":"Password must be at least 4 characters","create_admin":"Create Admin & Login","setting_up":"Setting up...","username":"Username","username_placeholder":"Username","password":"Password","password_placeholder":"••••••••","submit":"Login","logging_in":"Logging in...","error":"Login failed","copyright":"© 2026 AI Chatbot Platform"}}`), Ni = { title: "Settings", sections: { profile: "Profile", general: "General", account: "Account" }, profile: { title: "Profile Information", subtitle: "Update your personal details below.", name: "First Name", surname: "Last Name", phone: "Phone Number", password: "New Password", password_placeholder: "Leave empty to keep current", save: "Save Changes", saving: "Saving...", success: "Profile updated successfully", error: "Failed to update profile", select_placeholder: "Select an option" }, general: { title: "General Settings", subtitle: "Configure look and feel and language.", theme: "Theme", language: "Language", themes: { light: "Light", dark: "Dark", system: "System" }, accent: "Accent Color", radius: "Rounded Corners", radius_levels: { sharp: "Sharp", round: "Round" }, languages: { en: "English", fa: "Persian" } }, account: { title: "Account & Usage", subtitle: "Monitor your quotas and manage your session.", balance: "Current Balance", tokens: "Tokens", requests: "Requests", logout: "Logout", logout_confirm: "Are you sure you want to logout?", last_recharge: "Last balance update on" } }, Ci = { unauthorized: "Authentication required. Please login again.", invalid_credentials: "Invalid phone number or password.", phone_required: "Phone number is required.", password_required: "Password is required.", name_surname_required: "Name and surname are required.", phone_already_exists: "This phone number is already registered.", invalid_token: "Your session has expired. Please login again.", user_not_found: "User not found.", insufficient_balance: "Insufficient balance. Please recharge your account.", me_update_failed: "Failed to update profile information.", thread_not_found: "Conversation not found.", access_denied: "You do not have permission to perform this action.", feedback_save_failed: "Failed to save feedback.", thread_update_failed: "Failed to update conversation.", thread_delete_failed: "Failed to delete conversation.", attachment_not_found: "Attachment not found.", thread_share_failed: "Failed to share conversation.", model_quota_reached_error: "The system cannot respond at this time. Please try again later.", admin_already_exists: "Admin with this username already exists.", admin_not_found: "Admin not found.", cannot_delete_self: "You cannot delete your own admin account.", admin_update_failed: "Failed to update admin information.", internal_error: "An internal server error occurred. Please try again later.", validation_error: "Invalid data provided. Please check your input.", not_found: "The requested resource was not found." }, Ti = {
6875
- sidebar: ki,
6876
- chat: _i,
6877
- tools_ui: xi,
6878
- login: wi,
6874
+ const vi = { new_conversation: "New conversation", tooltip_new_conversation: "Start a new conversation", delete_conversation: "Delete", delete_confirm_title: "Delete conversation?", delete_confirm_description: "Are you sure you want to delete this chat? This action cannot be undone.", cancel: "Cancel", delete: "Delete", chat_deleted_success: "Chat deleted successfully", logout: "Logout", new_chat: "New Chat", rename_conversation: "Rename", rename_success: "Conversation renamed successfully", rename_failed: "Failed to rename conversation", search_conversations: "Search conversations...", save: "Save", no_conversations: "No conversations yet", loading_more: "Loading more...", pinned_success: "Conversation pinned", unpinned_success: "Conversation unpinned", pin_failed: "Failed to pin conversation", share_success: "Link copied", share_description: "The shareable link has been copied to your clipboard.", share_failed: "Failed to generate share link", pin_conversation: "Pin", unpin_conversation: "Unpin", share_conversation: "Share" }, ki = { tools: "Tools", error: "Error:", input_placeholder: "Ask something...", insufficient_balance: "Insufficient balance. Please recharge your account to continue.", regenerate: "Regenerate", retry: "Retry", copy: "Copy", like: "Like", dislike: "Dislike", attach_file: "Attach file", remove_file: "Remove file", reference: "Reference", reference_selection: "Reference selection", remove_reference: "Remove reference", referenced_context: "Referenced context", source_unavailable: "Source unavailable", tool_reference: "Tool reference", card_reference: "Card reference", used_sources: "Used {{count}} sources", welcome: { title: "Hello! How can I help you today?", subtitle: "Ask me anything and I'll do my best to help.", suggestions: ["What can you help me with?", "Tell me something interesting", "Help me write an email", "Explain a concept to me"] }, disclaimer: "AI can make mistakes. Check important info." }, wi = { pending: "Pending", running: "Running", completed: "Completed", error: "Error", parameters: "Parameters", result: "Result", view_error: "View Error", tool_error: "Tool Error", copied: "Copied!", copy_error: "Copy Error" }, xi = { login_tab: "Login", signup_tab: "Sign Up", phone: "Phone", phone_placeholder: "Phone number", password: "Password", name: "Name", name_placeholder: "First Name", surname: "Surname", surname_placeholder: "Last Name", loading: "Loading...", logging_in: "Logging in...", signing_up: "Signing up...", auth_page_disabled_title: "The sign-in page is currently disabled.", auth_page_disabled_description: "Please contact the administrator for access.", select_placeholder: "Select an option", login_button: "Login", signup_button: "Sign Up" }, Si = { toggle: "Change theme", light: "Switch to light theme", dark: "Switch to dark theme", system: "Switch to system theme" }, Ei = /* @__PURE__ */ JSON.parse(`{"select_placeholder":"Select an option","loading":"Loading...","retry":"Retry","save":"Save","saving":"Saving...","cancel":"Cancel","delete":"Delete","edit":"Edit","search":"Search","search_placeholder":"Search...","no_data":"No data available","loading_more":"Loading more...","confirm_delete":"Are you sure you want to delete?","error_loading":"Error loading data","close":"Close","jobs":{"section_title":"Maintenance Jobs","no_jobs":"No jobs are registered for this deployment.","run":"Run","run_dry":"Dry run","run_started":"Started \\"{{name}}\\"","run_failed":"Failed to start job","history":"Run history","history_help":"Recent runs. Click a row to see its inputs and output.","view_history":"View run history","inputs":"Inputs","no_runs":"No runs yet.","dry_run":"Dry run","dry_run_help":"Simulate the job without writing any changes.","confirm_destructive":"This is a destructive job. Type \\"{{name}}\\" to confirm.","output":"Output","no_output":"(no output)","output_truncated":"...[output truncated]","result":"Result","cancel_run":"Cancel run","triggered_by":"Triggered by {{user}}","triggered_by_api":"Triggered via API key","danger":{"safe":"safe","caution":"caution","destructive":"destructive"},"status":{"queued":"Queued","processing":"Running","completed":"Completed","failed":"Failed","cancelled":"Cancelled"},"raw":{"title":"Run raw Python","warning":"This executes arbitrary Python on the server with full process privileges. There is no sandbox — only access control and an audit log. Use only when you know exactly what you are doing.","confirm_label":"Type \\"{{phrase}}\\" to enable running.","run":"Execute"}},"dashboard":{"title":"Admin Panel","logout":"Logout","tabs":{"analytics":"Analytics","chat_history":"Chats","users":"Users","admins":"Admins","settings":"Settings"}},"app_settings":{"title":"System Settings","subtitle":"Manage global configuration for application appearance and behavior.","sections":{"general":"Basic Information","chat":"Chat Experience","user_billing":"User & Billing"},"general":{"app_name":"App Name","admin_title":"Admin Panel Title","language":"Default Language","language_help":"The language users see on their first visit (if not auto-detected).","appearance":"Default Appearance","appearance_help":"These values apply when a user has not saved their own appearance preferences.","default_theme":"Default Theme","default_accent":"Default Accent Color","default_accent_help":"Enter any browser-supported CSS color, such as #3b82f6, rgb(59 130 246), or oklch(0.623 0.214 259.815).","default_accent_invalid":"Enter a valid browser-supported CSS color.","default_accent_preview":"Accent color preview"},"chat":{"welcome_greeting":"Welcome Greeting","welcome_subtitle":"Welcome Subtitle","disclaimer":"Disclaimer Text","show_tool_details":"Show technical tool details","show_tool_details_help":"Enable this to show professional technical details of AI tools to users.","show_settings":"Show settings icon for users","show_settings_help":"Show a settings gear icon in the chat interface for user customization.","show_version_in_settings":"Show app version in user settings","show_version_in_settings_help":"Show the app version at the bottom of the user settings dialog. This does not affect the admin settings page.","disable_signup":"Disable signup","disable_signup_help":"Hide the signup tab so users can only log in.","disable_auth_page":"Disable login/signup page","disable_auth_page_help":"Hide the entire auth page and prevent users from reaching login or signup forms.","composer_attachments":"Enable File Attachments","composer_attachments_help":"Allow users to upload and attach files to their messages.","thread_actions_feedback":"Enable Feedback Buttons","thread_actions_feedback_help":"Show like/dislike buttons on AI responses.","thread_actions_retry":"Enable Retry Button","thread_actions_retry_help":"Show a retry button to regenerate the last AI response.","history_enabled":"Enable Chat History Sidebar","history_enabled_help":"Show the sidebar containing previous conversations.","history_show_delete":"Allow Deleting Conversations","history_show_rename":"Allow Renaming Conversations","history_show_share":"Allow Sharing Conversations","history_show_pin":"Allow Pinning Conversations","sections_modes":"Settings Tab Modes","sections_modes_help":"Control visibility and interactability of settings tabs for users.","mode_editable":"Enable (Editable)","mode_faded":"Fade (Readonly)","mode_hidden":"Hide (Disable)","general_tab":"General Tab","profile_tab":"Profile Tab","account_tab":"Account Tab","inner_fields_modes":"Inner Fields Visibility","inner_fields_modes_help":"Configure visibility for individual fields within each tab."},"user_billing":{"initial_balance_tokens":"Default Initial Tokens","initial_balance_requests":"Default Initial Requests","initial_balance_help":"These values will be assigned to new users by default if not specified during creation."},"save_success":"Settings saved successfully","save_error":"Failed to save settings","save":"Save Changes","translations_management":"Translations Management","editor_tips":"All changes are saved automatically to local state. Don't forget to push 'Save Changes' to persist.","sync_from_code":"Sync from Code","reset_button":"Reset to Defaults","reset_confirm_title":"Reset Settings?","reset_confirm_description":"This will reset all fields to their original default values from the code. Current unsaved changes will be lost.","preview":"Preview","tips_label":"TIPS"},"analytics":{"title":"Analytics & Statistics","days":"{{count}} Days","time_range_label":"Last","days_unit":"days","total_users":"Total Users","total_threads":"Total Threads","total_messages":"Total Messages","total_token_usage":"Total Token Usage","usage_cost":"Usage & Cost","input":"Input","output":"Output","cost":"Cost","threads_chart":"Threads","messages_chart":"Messages","token_usage_chart":"Token Usage","cost_chart":"Cost Per Day","active_users":"Active Users","conversations":"conversations","threads":"threads","feedback":"User Feedback","total_feedback":"Total Feedback","positive":"Positive","negative":"Negative","loading_analytics":"Loading analytics...","error_loading":"Error loading data","source_human":"Users","source_service":"Service","source_all":"All","source_caption_human":"Showing real users only","source_caption_service":"Showing service traffic only","source_caption_all":"Showing all traffic"},"chat_history":{"title":"Chat History Management","search_placeholder":"Search by name, phone, thread title, or ID...","search_button":"Search","threads_list":"Threads List","thread_count":"{{count}}","no_thread_title":"Untitled conversation","messages":"Messages","messages_for":"Messages for: {{title}}","select_thread":"Select a conversation to view","no_threads":"No conversations found","empty_thread":"This conversation is empty","loading_threads":"Loading...","loading_messages":"Loading messages...","user_label":"User","assistant_label":"AI Assistant","input_tokens":"Input: {{value}}","output_tokens":"Output: {{value}}","total_tokens":"Total: {{value}}","cost":"Cost: {{value}}","unpriced":"Unpriced","all_feedbacks":"All Conversations","liked_feedbacks":"Liked 👍","disliked_feedbacks":"Disliked 👎","any_feedback":"With Feedback","output_available":"Output Available","running":"Running...","unnamed_file":"Unnamed File","download_file":"Download File","source_human":"Users","source_service":"Service","source_all":"All sources","external_user_id":"Service ref"},"users":{"title":"User Management","user_count":"User count: {{count}}","add_user":"Add New User","edit_user":"Edit User","phone":"Phone Number","phone_placeholder":"09123456789","name":"Name","surname":"Surname","initial_tokens":"Initial Tokens (optional)","initial_requests":"Initial Requests (optional)","balance":"Balance","requests_label":"Requests","tokens_label":"Tokens","token_limit":"Token Limit","request_limit":"Request Limit","tokens_usage":"Tokens Usage","requests_usage":"Requests Usage","actions":"Actions","copy_token":"Copy Token (auto-refresh)","token_copied":"Token copied successfully","no_token":"No token found for this user","recharge":"Recharge Balance","full_charge":"Full Charge","update_balance":"Update Balance","update_balance_for":"Update Balance for","token_count":"Token Count","request_count":"Request Count","updating":"Updating...","no_users":"No users found.","sort_ascending":"Sort ascending","sort_descending":"Sort descending","confirm_delete_user":"Are you sure you want to delete this user?","tokens_exceed_limit":"Tokens cannot exceed the specified limit","requests_exceed_limit":"Requests cannot exceed the specified limit","metadata":"Metadata (JSON)","initial_balance":"Initial Balance","custom_fields":"Additional Fields","metadata_raw":"Metadata (Raw JSON)","advanced_usage":"Advanced usage","invalid_json":"Invalid JSON format","auto_recharge":"Automatic Balance Renewal","auto_recharge_help":"Restore this user's balance to its limits on a recurring schedule.","enabled":"Enabled","recharge_interval":"Every","recharge_unit":"Interval Unit","recharge_unit_minute":"Minute(s)","recharge_unit_hour":"Hour(s)","recharge_unit_day":"Day(s)","recharge_unit_week":"Week(s)","recharge_unit_month":"Month(s)","recharge_schedule_help":"New schedules begin when saved. Existing schedules keep their current cycle anchor.","next_recharge":"Next renewal","last_recharge":"Last automatic renewal","not_available":"Not available","recharge_interval_invalid":"The renewal interval must be a positive whole number","recharge_policy_not_saved":"The backend did not save the renewal policy. Restart or update the backend to the version that supports automatic renewal.","usage_summary":"Usage Summary","input_tokens":"Input Tokens","output_tokens":"Output Tokens","total_tokens":"Total Tokens","requests_made":"Requests Made","total_cost":"Total Cost","renewals":"Balance Renewals","unpriced_requests":"Unpriced Requests","bulk_balance":"Bulk Balance","bulk_balance_help":"Apply a balance change to all matching users using search, explicit IDs, and metadata filters.","bulk_operation":"Operation","bulk_operation_add":"Add to balance","bulk_operation_set":"Set exact balance","bulk_operation_full_charge":"Fill to limits","bulk_use_current_search":"Use current search text","bulk_user_ids":"User IDs (optional)","bulk_metadata_filters":"Metadata Filters (JSON)","bulk_available_metadata":"Available metadata keys","bulk_preview_empty":"Affected users will be checked before applying.","bulk_preview_count":"{{count}} users match","apply_bulk_balance":"Apply Change","bulk_balance_confirm":"Apply this balance change to {{count}} users?","matching_users":"matching","bulk_apply_balance":"Update balances","bulk_apply_renewal":"Update renewal policy","bulk_select_change":"Select at least one bulk change to apply.","bulk_renewal_policy":"Renewal Policy","bulk_renewal_policy_help":"Enable or disable automatic renewal for every matched user.","bulk_renewal_anchor":"First renewal time (optional)","source_human":"Users","source_service":"Service","source_all":"All","account_type":"Account type","account_type_human":"Human user","account_type_service":"Service (external API)","account_type_service_help":"External API consumer. Phone is optional; share this account’s token with the integrating service.","service_name":"Service name","service_name_placeholder":"e.g. Acme CRM integration","optional":"optional"},"admins":{"title":"Admin Management","admin_count":"Admin count: {{count}}","add_admin":"Add New Admin","edit_admin":"Edit Admin","username":"Username","name":"Name","password":"Password","password_edit":"New Password (leave empty to keep current)","permissions":"Permissions","perm_chat_history":"Chat History","perm_admin_management":"Admin Management","perm_user_management":"User Management","perm_analytics":"Analytics","perm_settings":"Settings","no_admins":"No admins found.","confirm_delete_admin":"Are you sure you want to delete this admin?"},"errors":{"access_denied_title":"Access Denied","access_denied_message":"You don't have the necessary permissions to access this page. You can contact the administrator!","back_to_dashboard":"Back to Dashboard"},"login":{"title":"Admin Panel","setup_title":"Initial Setup","setup_description":"No admin account exists yet. Set a password for the default admin user to get started.","set_password":"Set Password","set_password_placeholder":"Choose a strong password","confirm_password":"Confirm Password","confirm_password_placeholder":"Re-enter the password","passwords_mismatch":"Passwords do not match","password_too_short":"Password must be at least 4 characters","create_admin":"Create Admin & Login","setting_up":"Setting up...","username":"Username","username_placeholder":"Username","password":"Password","password_placeholder":"••••••••","submit":"Login","logging_in":"Logging in...","error":"Login failed","copyright":"© 2026 AI Chatbot Platform"}}`), Ni = { title: "Settings", sections: { profile: "Profile", general: "General", account: "Account" }, profile: { title: "Profile Information", subtitle: "Update your personal details below.", name: "First Name", surname: "Last Name", phone: "Phone Number", password: "New Password", password_placeholder: "Leave empty to keep current", save: "Save Changes", saving: "Saving...", success: "Profile updated successfully", error: "Failed to update profile", select_placeholder: "Select an option" }, general: { title: "General Settings", subtitle: "Configure look and feel and language.", theme: "Theme", language: "Language", themes: { light: "Light", dark: "Dark", system: "System" }, accent: "Accent Color", radius: "Rounded Corners", radius_levels: { sharp: "Sharp", round: "Round" }, languages: { en: "English", fa: "Persian" } }, account: { title: "Account & Usage", subtitle: "Monitor your quotas and manage your session.", balance: "Current Balance", tokens: "Tokens", requests: "Requests", logout: "Logout", logout_confirm: "Are you sure you want to logout?", last_recharge: "Last balance update on" } }, Ci = { unauthorized: "Authentication required. Please login again.", invalid_credentials: "Invalid phone number or password.", phone_required: "Phone number is required.", password_required: "Password is required.", name_surname_required: "Name and surname are required.", phone_already_exists: "This phone number is already registered.", invalid_token: "Your session has expired. Please login again.", user_not_found: "User not found.", insufficient_balance: "Insufficient balance. Please recharge your account.", me_update_failed: "Failed to update profile information.", thread_not_found: "Conversation not found.", access_denied: "You do not have permission to perform this action.", feedback_save_failed: "Failed to save feedback.", thread_update_failed: "Failed to update conversation.", thread_delete_failed: "Failed to delete conversation.", attachment_not_found: "Attachment not found.", thread_share_failed: "Failed to share conversation.", model_quota_reached_error: "The system cannot respond at this time. Please try again later.", admin_already_exists: "Admin with this username already exists.", admin_not_found: "Admin not found.", cannot_delete_self: "You cannot delete your own admin account.", admin_update_failed: "Failed to update admin information.", internal_error: "An internal server error occurred. Please try again later.", validation_error: "Invalid data provided. Please check your input.", not_found: "The requested resource was not found." }, Ti = {
6875
+ sidebar: vi,
6876
+ chat: ki,
6877
+ tools_ui: wi,
6878
+ login: xi,
6879
6879
  theme: Si,
6880
6880
  admin: Ei,
6881
6881
  settings: Ni,
6882
6882
  errors: Ci
6883
- }, Ai = { new_conversation: "گفتگوی جدید", tooltip_new_conversation: "شروع یک گفتگوی جدید", delete_conversation: "حذف", delete_confirm_title: "حذف گفتگو؟", delete_confirm_description: "آیا از حذف این گفتگو اطمینان دارید؟ این عمل قابل بازگشت نیست.", cancel: "انصراف", delete: "حذف", chat_deleted_success: "گفتگو با موفقیت حذف شد", logout: "خروج", new_chat: "گفتگوی جدید", rename_conversation: "تغییر نام", rename_success: "نام گفتگو با موفقیت تغییر کرد", rename_failed: "خطا در تغییر نام گفتگو", search_conversations: "جستجوی گفتگوها...", save: "ذخیره", no_conversations: "هنوز گفتگویی ندارید", loading_more: "در حال بارگذاری...", pinned_success: "گفتگو پین شد", unpinned_success: "گفتگو از حالت پین خارج شد", pin_failed: "خطا در پین کردن گفتگو", share_success: "لینک کپی شد", share_description: "لینک اشتراک‌گذاری در حافظه موقت کپی شد.", share_failed: "خطا در ایجاد لینک اشتراک‌گذاری", pin_conversation: "پین", unpin_conversation: "برداشتن پین", share_conversation: "اشتراک‌گذاری" }, Ii = { tools: "ابزارها", error: "خطا:", input_placeholder: "سوالتو اینجا بپرس...", insufficient_balance: "موجودی حساب شما کافی نیست. لطفا برای ادامه، حساب خود را شارژ کنید.", regenerate: "تولید مجدد", retry: "تلاش مجدد", copy: "کپی", like: "پسندیدم", dislike: "نپسندیدم", attach_file: "پیوست فایل", remove_file: "حذف فایل", reference: "ارجاع", reference_selection: "ارجاع به بخش انتخاب‌شده", remove_reference: "حذف ارجاع", referenced_context: "بخش ارجاع‌شده", source_unavailable: "منبع در دسترس نیست", tool_reference: "ارجاع به ابزار", card_reference: "ارجاع به کارت", used_sources: "از {{count}} منبع استفاده شد", welcome: { title: "سلام! چطور می‌تونم کمکت کنم؟", subtitle: "هر سوالی داری بپرس، تمام تلاشمو می‌کنم کمکت کنم.", suggestions: ["چه کارهایی می‌تونی انجام بدی؟", "یه چیز جالب بهم بگو", "کمکم کن یه ایمیل بنویسم", "یه مفهوم رو برام توضیح بده"] }, disclaimer: "هوش مصنوعی ممکن است اشتباه کند. اطلاعات مهم را بررسی کنید." }, Ri = { pending: "در انتظار", running: "در حال اجرا", completed: "تکمیل شده", error: "خطا", parameters: "پارامترها", result: "نتیجه", view_error: "نمایش خطا", tool_error: "خطای ابزار", copied: "کپی شد!", copy_error: "کپی خطا" }, Oi = { login_tab: "ورود", signup_tab: "ثبت نام", phone: "شماره تلفن", phone_placeholder: "شماره تلفن", password: "رمز عبور", name: "نام", name_placeholder: "نام", surname: "نام خانوادگی", surname_placeholder: "نام خانوادگی", logging_in: "در حال ورود...", signing_up: "در حال ثبت نام...", auth_page_disabled_title: "صفحه ورود غیرفعال شده است.", auth_page_disabled_description: "برای دسترسی با مدیر سامانه تماس بگیرید.", select_placeholder: "انتخاب کنید", login_button: "ورود", signup_button: "ثبت نام" }, Li = { toggle: "تغییر تم", light: "تغییر به تم روشن", dark: "تغییر به تم تاریک", system: "تغییر به تم سیستم" }, Di = /* @__PURE__ */ JSON.parse('{"select_placeholder":"انتخاب کنید","loading":"در حال بارگذاری...","retry":"تلاش مجدد","save":"ذخیره","saving":"در حال ذخیره...","cancel":"انصراف","delete":"حذف","edit":"ویرایش","search":"جستجو","search_placeholder":"جستجو...","no_data":"داده‌ای موجود نیست","loading_more":"در حال بارگذاری بیشتر...","confirm_delete":"آیا از حذف اطمینان دارید؟","error_loading":"خطا در بارگذاری داده‌ها","dashboard":{"title":"پنل ادمین","logout":"خروج","tabs":{"analytics":"تحلیل و آمار","chat_history":"گفتگوها","users":"کاربران","admins":"ادمین‌ها","settings":"تنظیمات"}},"app_settings":{"title":"تنظیمات سامانه","subtitle":"پیکربندی کلی ظاهر و رفتار سامانه را مدیریت کنید.","sections":{"general":"اطلاعات پایه","chat":"تنظیمات گفتگو","user_billing":"کاربری و مالی"},"general":{"app_name":"نام سامانه","admin_title":"عنوان پنل ادمین","language":"زبان پیش‌فرض","language_help":"زبانی که کاربر در اولین ورود مشاهده می‌کند (در صورت عدم تشخیص خودکار).","appearance":"ظاهر پیش‌فرض","appearance_help":"این مقادیر زمانی اعمال می‌شوند که کاربر تنظیمات ظاهری خود را ذخیره نکرده باشد.","default_theme":"پوسته پیش‌فرض","default_accent":"رنگ اصلی پیش‌فرض","default_accent_help":"هر رنگ CSS پشتیبانی‌شده توسط مرورگر را وارد کنید؛ مانند #3b82f6 یا rgb(59 130 246).","default_accent_invalid":"یک رنگ CSS معتبر و پشتیبانی‌شده توسط مرورگر وارد کنید.","default_accent_preview":"پیش‌نمایش رنگ اصلی"},"chat":{"welcome_greeting":"پیام خوش‌آمدگویی","welcome_subtitle":"زیرعنوان خوش‌آمدگویی","disclaimer":"متن سلب مسئولیت","show_tool_details":"نمایش جزئیات فنی ابزارها (Tools)","show_tool_details_help":"برای نمایش جزئیات فنی و نحوه عملکرد ابزارهای هوش مصنوعی به کاربران، این گزینه را فعال کنید.","show_settings":"نمایش آیکون تنظیمات برای کاربران","show_settings_help":"نمایش چرخ‌دنده تنظیمات در محیط چت برای شخصی‌سازی توسط کاربر.","show_version_in_settings":"نمایش نسخه برنامه در تنظیمات کاربر","show_version_in_settings_help":"نسخه برنامه را در پایین پنجره تنظیمات کاربر نمایش می‌دهد. این گزینه روی صفحه تنظیمات ادمین اثری ندارد.","disable_signup":"غیرفعال‌سازی ثبت‌نام","disable_signup_help":"تب ثبت‌نام را مخفی می‌کند تا کاربران فقط بتوانند وارد شوند.","disable_auth_page":"غیرفعال‌سازی صفحه ورود/ثبت‌نام","disable_auth_page_help":"کل صفحه احراز هویت را مخفی می‌کند و دسترسی به فرم‌های ورود و ثبت‌نام را می‌بندد.","composer_attachments":"فعال‌سازی پیوست فایل","composer_attachments_help":"اجازه به کاربران برای آپلود و پیوست فایل به پیام‌ها.","thread_actions_feedback":"فعال‌سازی دکمه‌های بازخورد","thread_actions_feedback_help":"نمایش دکمه‌های پسندیدن/نپسندیدن در پاسخ‌های هوش مصنوعی.","thread_actions_retry":"فعال‌سازی دکمه تلاش مجدد","thread_actions_retry_help":"نمایش دکمه تلاش مجدد برای تولید دوباره آخرین پاسخ هوش مصنوعی.","history_enabled":"فعال‌سازی سایدبار تاریخچه","history_enabled_help":"نمایش منوی کناری شامل گفتگوهای قبلی.","history_show_delete":"اجازه حذف گفتگوها","history_show_rename":"اجازه تغییر نام گفتگوها","history_show_share":"اجازه اشتراک‌گذاری گفتگوها","history_show_pin":"اجازه پین کردن گفتگوها","sections_modes":"وضعیت نمایش تب‌های تنظیمات","sections_modes_help":"کنترل نمایش یا غیرفعال بودن تب‌های مختلف در بخش تنظیمات کاربر.","mode_editable":"فعال (قابل ویرایش)","mode_faded":"محو (فقط خواندنی)","mode_hidden":"مخفی (غیرفعال)","general_tab":"تب عمومی","profile_tab":"تب پروفایل","account_tab":"تب حساب کاربری","inner_fields_modes":"مشاهده‌پذیری فیلدهای داخلی","inner_fields_modes_help":"وضعیت نمایش فیلدهای هر تب را به‌صورت مجزا پیکربندی کنید."},"user_billing":{"initial_balance_tokens":"توکن اولیه پیش‌فرض","initial_balance_requests":"تعداد درخواست اولیه پیش‌فرض","initial_balance_help":"این مقادیر به‌صورت خودکار به کاربران جدید اختصاص داده می‌شوند، مگر اینکه هنگام ایجاد کاربر مقدار دیگری تعیین شود."},"save_success":"تنظیمات با موفقیت ذخیره شد","save_error":"خطا در ذخیره‌سازی تنظیمات","save":"ذخیره تغییرات","translations_management":"مدیریت ترجمه‌ها","editor_tips":"تمام تغییرات به‌صورت خودکار در حالت محلی ذخیره می‌شوند. برای نهایی‌سازی، دکمه «ذخیره تغییرات» را بزنید.","sync_from_code":"همگام‌سازی از کد","reset_button":"بازنشانی به تنظیمات اولیه","reset_confirm_title":"بازنشانی تنظیمات؟","reset_confirm_description":"این عمل تمام فیلدها را به مقادیر پیش‌فرض در کد بازمی‌گرداند. تغییرات ذخیره نشده فعلی از بین خواهند رفت.","preview":"پیش‌نمایش","tips_label":"نکته"},"analytics":{"title":"تحلیل و آمار","days":"{{count}} روز","total_users":"تعداد کاربران","total_threads":"تعداد گفتگوها","total_messages":"تعداد پیام‌ها","total_token_usage":"مصرف کل توکن","usage_cost":"مصرف و هزینه","input":"ورودی","output":"خروجی","cost":"هزینه","threads_chart":"گفتگوها","messages_chart":"پیام‌ها","token_usage_chart":"مصرف توکن","cost_chart":"هزینه روزانه","active_users":"کاربران فعال","conversations":"گفتگو","threads":"گفتگو","feedback":"نظرات کاربران","total_feedback":"کل نظرات","positive":"مثبت","negative":"منفی","loading_analytics":"در حال بارگذاری تحلیل‌ها...","error_loading":"خطا در بارگذاری داده‌ها"},"chat_history":{"title":"مدیریت تاریخچه گفتگوها","search_placeholder":"جستجو بر اساس نام، شماره تماس، عنوان گفتگو یا شناسه...","search_button":"جستجو","threads_list":"لیست گفتگوها","thread_count":"{{count}}","no_thread_title":"گفتگو بدون عنوان","messages":"پیام‌ها","messages_for":"پیام‌های گفتگو: {{title}}","select_thread":"یک گفتگو را برای مشاهده انتخاب کنید","no_threads":"هیچ گفتگویی یافت نشد","empty_thread":"این گفتگو خالی است","loading_threads":"در حال بارگذاری...","loading_messages":"در حال بارگذاری پیام‌ها...","user_label":"کاربر","assistant_label":"دستیار هوشمند","input_tokens":"ورودی: {{value}}","output_tokens":"خروجی: {{value}}","total_tokens":"کل: {{value}}","cost":"هزینه: {{value}}","unpriced":"بدون هزینه","all_feedbacks":"همه گفتگوها","liked_feedbacks":"پسندیده شده 👍","disliked_feedbacks":"نپسندیده شده 👎","any_feedback":"دارای بازخورد","output_available":"خروجی موجود است","running":"در حال اجرا...","unnamed_file":"فایل بدون نام","download_file":"دانلود فایل"},"users":{"title":"مدیریت کاربران","user_count":"تعداد کاربران: {{count}}","add_user":"افزودن کاربر جدید","edit_user":"ویرایش کاربر","phone":"شماره تلفن","phone_placeholder":"۰۹۱۲۳۴۵۶۷۸۹","name":"نام","surname":"نام خانوادگی","initial_tokens":"تعداد توکن اولیه (اختیاری)","initial_requests":"تعداد درخواست اولیه (اختیاری)","balance":"موجودی","requests_label":"درخواست‌ها","tokens_label":"توکن‌ها","token_limit":"سقف توکن","request_limit":"سقف درخواست","tokens_usage":"میزان مصرف توکن","requests_usage":"میزان مصرف درخواست","actions":"عملیات","copy_token":"کپی توکن (با بروزرسانی خودکار)","token_copied":"توکن با موفقیت کپی شد","no_token":"توکنی برای این کاربر یافت نشد","recharge":"شارژ موجودی","full_charge":"شارژ کامل","update_balance":"بروزرسانی موجودی","update_balance_for":"بروزرسانی موجودی","token_count":"تعداد توکن","request_count":"تعداد درخواست","updating":"در حال بروزرسانی...","no_users":"هیچ کاربری یافت نشد.","sort_ascending":"مرتب‌سازی صعودی","sort_descending":"مرتب‌سازی نزولی","confirm_delete_user":"آیا از حذف این کاربر اطمینان دارید؟","tokens_exceed_limit":"تعداد توکن نمی‌تواند بیشتر از سقف مجاز باشد","requests_exceed_limit":"تعداد درخواست نمی‌تواند بیشتر از سقف مجاز باشد","metadata":"متادیتا (JSON)","initial_balance":"موجودی اولیه","custom_fields":"فیلدهای اضافه","metadata_raw":"متادیتا (JSON خام)","advanced_usage":"استفاده پیشرفته","invalid_json":"فرمت JSON نامعتبر است","auto_recharge":"تمدید خودکار موجودی","auto_recharge_help":"موجودی این کاربر را طبق یک برنامه تکرارشونده تا سقف تعیین‌شده بازنشانی می‌کند.","enabled":"فعال","recharge_interval":"هر","recharge_unit":"واحد بازه","recharge_unit_minute":"دقیقه","recharge_unit_hour":"ساعت","recharge_unit_day":"روز","recharge_unit_week":"هفته","recharge_unit_month":"ماه","recharge_schedule_help":"برنامه جدید از زمان ذخیره آغاز می‌شود. برنامه موجود مبدأ دوره فعلی خود را حفظ می‌کند.","next_recharge":"تمدید بعدی","last_recharge":"آخرین تمدید خودکار","not_available":"در دسترس نیست","recharge_interval_invalid":"بازه تمدید باید یک عدد صحیح مثبت باشد","recharge_policy_not_saved":"سرور تنظیمات تمدید خودکار را ذخیره نکرد. سرور را راه‌اندازی مجدد یا به نسخه پشتیبان‌کننده از تمدید خودکار بروزرسانی کنید.","usage_summary":"خلاصه مصرف","input_tokens":"توکن‌های ورودی","output_tokens":"توکن‌های خروجی","total_tokens":"کل توکن‌ها","requests_made":"تعداد درخواست‌ها","total_cost":"هزینه کل","renewals":"دفعات شارژ موجودی","unpriced_requests":"درخواست‌های بدون هزینه‌ی ثبت شده","bulk_balance":"تغییر گروهی موجودی","bulk_balance_help":"تغییر موجودی را روی کاربران مطابق جستجو، شناسه‌های مشخص و فیلترهای متادیتا اعمال کنید.","bulk_operation":"عملیات","bulk_operation_add":"افزودن به موجودی","bulk_operation_set":"تنظیم مقدار دقیق","bulk_operation_full_charge":"شارژ تا سقف","bulk_use_current_search":"استفاده از جستجوی فعلی","bulk_user_ids":"شناسه کاربران (اختیاری)","bulk_metadata_filters":"فیلترهای متادیتا (JSON)","bulk_available_metadata":"کلیدهای متادیتای در دسترس","bulk_preview_empty":"تعداد کاربران مطابق قبل از اعمال بررسی می‌شود.","bulk_preview_count":"{{count}} کاربر مطابق هستند","apply_bulk_balance":"اعمال تغییر","bulk_balance_confirm":"این تغییر موجودی برای {{count}} کاربر اعمال شود؟","matching_users":"کاربران مطابق","bulk_apply_balance":"بروزرسانی موجودی","bulk_apply_renewal":"بروزرسانی سیاست تمدید","bulk_select_change":"حداقل یک تغییر گروهی را برای اعمال انتخاب کنید.","bulk_renewal_policy":"سیاست تمدید","bulk_renewal_policy_help":"تمدید خودکار را برای همه کاربران مطابق فعال یا غیرفعال کنید.","bulk_renewal_anchor":"زمان اولین تمدید (اختیاری)"},"admins":{"title":"مدیریت ادمین‌ها","admin_count":"تعداد ادمین‌ها: {{count}}","add_admin":"افزودن ادمین جدید","edit_admin":"ویرایش ادمین","username":"نام کاربری","name":"نام","password":"رمز عبور","password_edit":"رمز عبور جدید (خالی بگذارید تا تغییر نکند)","permissions":"دسترسی‌ها","perm_chat_history":"تاریخچه گفتگوها","perm_admin_management":"مدیریت ادمین‌ها","perm_user_management":"مدیریت کاربران","perm_analytics":"تحلیل و آمار","perm_settings":"تنظیمات","no_admins":"هیچ ادمینی یافت نشد.","confirm_delete_admin":"آیا از حذف این ادمین اطمینان دارید؟"},"errors":{"access_denied_title":"عدم دسترسی","access_denied_message":"شما مجوزهای لازم برای دسترسی به این صفحه را ندارید. می‌توانید با مدیر سیستم تماس بگیرید.","back_to_dashboard":"بازگشت به پیشخوان"},"login":{"title":"پنل ادمین","setup_title":"راه‌اندازی اولیه","setup_description":"هنوز حساب ادمینی وجود ندارد. برای شروع، یک رمز عبور برای کاربر ادمین پیش‌فرض تنظیم کنید.","set_password":"تعیین رمز عبور","set_password_placeholder":"یک رمز عبور قوی انتخاب کنید","confirm_password":"تأیید رمز عبور","confirm_password_placeholder":"رمز عبور را دوباره وارد کنید","passwords_mismatch":"رمزهای عبور مطابقت ندارند","password_too_short":"رمز عبور باید حداقل ۴ کاراکتر باشد","create_admin":"ایجاد ادمین و ورود","setting_up":"در حال راه‌اندازی...","username":"نام کاربری","username_placeholder":"نام کاربری","password":"رمز عبور","password_placeholder":"••••••••","submit":"ورود به پنل","logging_in":"در حال ورود...","error":"خطا در ورود","copyright":"© ۲۰۲۶ پلتفرم چت‌بات هوشمند"}}'), Fi = { title: "تنظیمات", sections: { profile: "پروفایل", general: "عمومی", account: "حساب کاربری" }, profile: { title: "اطلاعات پروفایل", subtitle: "اطلاعات شخصی خود را در زیر بروز کنید.", name: "نام", surname: "نام خانوادگی", phone: "شماره تلفن", password: "رمز عبور جدید", password_placeholder: "برای عدم تغییر خالی بگذارید", save: "ذخیره تغییرات", saving: "در حال ذخیره...", success: "پروفایل با موفقیت بروزرسانی شد", error: "خطا در بروزرسانی پروفایل", select_placeholder: "انتخاب کنید" }, general: { title: "تنظیمات عمومی", subtitle: "ظاهر و زبان برنامه را تنظیم کنید.", theme: "تم", language: "زبان", themes: { light: "روشن", dark: "تاریک", system: "سیستم" }, accent: "رنگ اصلی", radius: "میزان گردی لبه‌ها", radius_levels: { sharp: "تیز", round: "گرد" }, languages: { en: "English", fa: "فارسی" } }, account: { title: "حساب و میزان مصرف", subtitle: "سهمیه مصرف و نشست خود را مدیریت کنید.", balance: "موجود فعلی", tokens: "توکن‌ها", requests: "درخواست‌ها", logout: "خروج از حساب", logout_confirm: "آیا از خروج اطمینان دارید؟", last_recharge: "آخرین بروزرسانی اعتبار در تاریخ" } }, Pi = { unauthorized: "دسترسی مجاز نیست. لطفاً دوباره وارد شوید.", invalid_credentials: "شماره تلفن یا رمز عبور اشتباه است.", phone_required: "شماره تلفن الزامی است.", password_required: "رمز عبور الزامی است.", name_surname_required: "نام و نام خانوادگی الزامی است.", phone_already_exists: "این شماره تلفن قبلاً ثبت شده است.", invalid_token: "نشست شما منقضی شده است. لطفاً دوباره وارد شوید.", user_not_found: "کاربر یافت نشد.", insufficient_balance: "موجودی کافی نیست. لطفاً حساب خود را شارژ کنید.", me_update_failed: "خطا در بروزرسانی اطلاعات پروفایل.", thread_not_found: "گفتگو یافت نشد.", access_denied: "شما اجازه انجام این عملیات را ندارید.", feedback_save_failed: "خطا در ثبت بازخورد.", thread_update_failed: "خطا در بروزرسانی گفتگو.", thread_delete_failed: "خطا در حذف گفتگو.", attachment_not_found: "فایل پیوست یافت نشد.", thread_share_failed: "خطا در اشتراک‌گذاری گفتگو.", model_quota_reached_error: "سامانه در حال حاضر قادر به پاسخ‌گویی نیست. لطفاً بعداً دوباره تلاش کنید.", admin_already_exists: "ادمین با این نام کاربری قبلاً ایجاد شده است.", admin_not_found: "ادمین یافت نشد.", cannot_delete_self: "شما نمی‌توانید حساب مدیریت خود را حذف کنید.", admin_update_failed: "خطا در بروزرسانی اطلاعات ادمین.", internal_error: "یک خطای داخلی در سرور رخ داده است. لطفاً بعداً تلاش کنید.", validation_error: "داده‌های ارسالی معتبر نیستند. لطفاً ورودی‌های خود را بررسی کنید.", not_found: "منبع مورد نظر یافت نشد." }, Mi = {
6883
+ }, Ai = { new_conversation: "گفتگوی جدید", tooltip_new_conversation: "شروع یک گفتگوی جدید", delete_conversation: "حذف", delete_confirm_title: "حذف گفتگو؟", delete_confirm_description: "آیا از حذف این گفتگو اطمینان دارید؟ این عمل قابل بازگشت نیست.", cancel: "انصراف", delete: "حذف", chat_deleted_success: "گفتگو با موفقیت حذف شد", logout: "خروج", new_chat: "گفتگوی جدید", rename_conversation: "تغییر نام", rename_success: "نام گفتگو با موفقیت تغییر کرد", rename_failed: "خطا در تغییر نام گفتگو", search_conversations: "جستجوی گفتگوها...", save: "ذخیره", no_conversations: "هنوز گفتگویی ندارید", loading_more: "در حال بارگذاری...", pinned_success: "گفتگو پین شد", unpinned_success: "گفتگو از حالت پین خارج شد", pin_failed: "خطا در پین کردن گفتگو", share_success: "لینک کپی شد", share_description: "لینک اشتراک‌گذاری در حافظه موقت کپی شد.", share_failed: "خطا در ایجاد لینک اشتراک‌گذاری", pin_conversation: "پین", unpin_conversation: "برداشتن پین", share_conversation: "اشتراک‌گذاری" }, Ii = { tools: "ابزارها", error: "خطا:", input_placeholder: "سوالتو اینجا بپرس...", insufficient_balance: "موجودی حساب شما کافی نیست. لطفا برای ادامه، حساب خود را شارژ کنید.", regenerate: "تولید مجدد", retry: "تلاش مجدد", copy: "کپی", like: "پسندیدم", dislike: "نپسندیدم", attach_file: "پیوست فایل", remove_file: "حذف فایل", reference: "ارجاع", reference_selection: "ارجاع به بخش انتخاب‌شده", remove_reference: "حذف ارجاع", referenced_context: "بخش ارجاع‌شده", source_unavailable: "منبع در دسترس نیست", tool_reference: "ارجاع به ابزار", card_reference: "ارجاع به کارت", used_sources: "از {{count}} منبع استفاده شد", welcome: { title: "سلام! چطور می‌تونم کمکت کنم؟", subtitle: "هر سوالی داری بپرس، تمام تلاشمو می‌کنم کمکت کنم.", suggestions: ["چه کارهایی می‌تونی انجام بدی؟", "یه چیز جالب بهم بگو", "کمکم کن یه ایمیل بنویسم", "یه مفهوم رو برام توضیح بده"] }, disclaimer: "هوش مصنوعی ممکن است اشتباه کند. اطلاعات مهم را بررسی کنید." }, Ri = { pending: "در انتظار", running: "در حال اجرا", completed: "تکمیل شده", error: "خطا", parameters: "پارامترها", result: "نتیجه", view_error: "نمایش خطا", tool_error: "خطای ابزار", copied: "کپی شد!", copy_error: "کپی خطا" }, Oi = { login_tab: "ورود", signup_tab: "ثبت نام", phone: "شماره تلفن", phone_placeholder: "شماره تلفن", password: "رمز عبور", name: "نام", name_placeholder: "نام", surname: "نام خانوادگی", surname_placeholder: "نام خانوادگی", logging_in: "در حال ورود...", signing_up: "در حال ثبت نام...", auth_page_disabled_title: "صفحه ورود غیرفعال شده است.", auth_page_disabled_description: "برای دسترسی با مدیر سامانه تماس بگیرید.", select_placeholder: "انتخاب کنید", login_button: "ورود", signup_button: "ثبت نام" }, Li = { toggle: "تغییر تم", light: "تغییر به تم روشن", dark: "تغییر به تم تاریک", system: "تغییر به تم سیستم" }, Di = /* @__PURE__ */ JSON.parse('{"select_placeholder":"انتخاب کنید","loading":"در حال بارگذاری...","retry":"تلاش مجدد","save":"ذخیره","saving":"در حال ذخیره...","cancel":"انصراف","delete":"حذف","edit":"ویرایش","search":"جستجو","search_placeholder":"جستجو...","no_data":"داده‌ای موجود نیست","loading_more":"در حال بارگذاری بیشتر...","confirm_delete":"آیا از حذف اطمینان دارید؟","error_loading":"خطا در بارگذاری داده‌ها","close":"بستن","jobs":{"section_title":"کارهای سیستمی","no_jobs":"هیچ کاری برای این برنامه تعریف نشده است.","run":"اجرا","run_dry":"اجرای آزمایشی","run_started":"کار «{{name}}» اجرا شد","run_failed":"اجرای کار با خطا مواجه شد","history":"تاریخچهٔ اجراها","history_help":"اجراهای اخیر. برای دیدن ورودی‌ها و خروجی هر اجرا روی آن کلیک کنید.","view_history":"مشاهدهٔ تاریخچهٔ اجراها","inputs":"ورودی‌ها","no_runs":"هنوز هیچ کاری اجرا نشده است.","dry_run":"اجرای آزمایشی","dry_run_help":"کار را بدون اعمال هیچ تغییری شبیه‌سازی می‌کند.","confirm_destructive":"این یک کار مخرب است. برای تأیید، نام «{{name}}» را وارد کنید.","output":"خروجی","no_output":"(خروجی‌ای ثبت نشد)","output_truncated":"...[خروجی کوتاه شد]","result":"نتیجه","cancel_run":"لغو اجرا","triggered_by":"اجرا شده توسط {{user}}","triggered_by_api":"اجرا شده با کلید API","danger":{"safe":"بی‌خطر","caution":"نیازمند احتیاط","destructive":"مخرب"},"status":{"queued":"در صف","processing":"در حال اجرا","completed":"انجام شد","failed":"ناموفق","cancelled":"لغو شد"},"raw":{"title":"اجرای کد پایتون","warning":"این بخش کد پایتون دلخواه را با دسترسی کامل روی سرور اجرا می‌کند. هیچ ایزوله‌سازی‌ای در کار نیست؛ تنها محافظت، کنترل دسترسی و ثبت در گزارش است. فقط زمانی استفاده کنید که از کاری که انجام می‌دهید کاملاً مطمئن هستید.","confirm_label":"برای فعال شدن دکمهٔ اجرا، عبارت «{{phrase}}» را وارد کنید.","run":"اجرای کد"}},"dashboard":{"title":"پنل ادمین","logout":"خروج","tabs":{"analytics":"تحلیل و آمار","chat_history":"گفتگوها","users":"کاربران","admins":"ادمین‌ها","settings":"تنظیمات"}},"app_settings":{"title":"تنظیمات سامانه","subtitle":"پیکربندی کلی ظاهر و رفتار سامانه را مدیریت کنید.","sections":{"general":"اطلاعات پایه","chat":"تنظیمات گفتگو","user_billing":"کاربری و مالی"},"general":{"app_name":"نام سامانه","admin_title":"عنوان پنل ادمین","language":"زبان پیش‌فرض","language_help":"زبانی که کاربر در اولین ورود مشاهده می‌کند (در صورت عدم تشخیص خودکار).","appearance":"ظاهر پیش‌فرض","appearance_help":"این مقادیر زمانی اعمال می‌شوند که کاربر تنظیمات ظاهری خود را ذخیره نکرده باشد.","default_theme":"پوسته پیش‌فرض","default_accent":"رنگ اصلی پیش‌فرض","default_accent_help":"هر رنگ CSS پشتیبانی‌شده توسط مرورگر را وارد کنید؛ مانند #3b82f6 یا rgb(59 130 246).","default_accent_invalid":"یک رنگ CSS معتبر و پشتیبانی‌شده توسط مرورگر وارد کنید.","default_accent_preview":"پیش‌نمایش رنگ اصلی"},"chat":{"welcome_greeting":"پیام خوش‌آمدگویی","welcome_subtitle":"زیرعنوان خوش‌آمدگویی","disclaimer":"متن سلب مسئولیت","show_tool_details":"نمایش جزئیات فنی ابزارها (Tools)","show_tool_details_help":"برای نمایش جزئیات فنی و نحوه عملکرد ابزارهای هوش مصنوعی به کاربران، این گزینه را فعال کنید.","show_settings":"نمایش آیکون تنظیمات برای کاربران","show_settings_help":"نمایش چرخ‌دنده تنظیمات در محیط چت برای شخصی‌سازی توسط کاربر.","show_version_in_settings":"نمایش نسخه برنامه در تنظیمات کاربر","show_version_in_settings_help":"نسخه برنامه را در پایین پنجره تنظیمات کاربر نمایش می‌دهد. این گزینه روی صفحه تنظیمات ادمین اثری ندارد.","disable_signup":"غیرفعال‌سازی ثبت‌نام","disable_signup_help":"تب ثبت‌نام را مخفی می‌کند تا کاربران فقط بتوانند وارد شوند.","disable_auth_page":"غیرفعال‌سازی صفحه ورود/ثبت‌نام","disable_auth_page_help":"کل صفحه احراز هویت را مخفی می‌کند و دسترسی به فرم‌های ورود و ثبت‌نام را می‌بندد.","composer_attachments":"فعال‌سازی پیوست فایل","composer_attachments_help":"اجازه به کاربران برای آپلود و پیوست فایل به پیام‌ها.","thread_actions_feedback":"فعال‌سازی دکمه‌های بازخورد","thread_actions_feedback_help":"نمایش دکمه‌های پسندیدن/نپسندیدن در پاسخ‌های هوش مصنوعی.","thread_actions_retry":"فعال‌سازی دکمه تلاش مجدد","thread_actions_retry_help":"نمایش دکمه تلاش مجدد برای تولید دوباره آخرین پاسخ هوش مصنوعی.","history_enabled":"فعال‌سازی سایدبار تاریخچه","history_enabled_help":"نمایش منوی کناری شامل گفتگوهای قبلی.","history_show_delete":"اجازه حذف گفتگوها","history_show_rename":"اجازه تغییر نام گفتگوها","history_show_share":"اجازه اشتراک‌گذاری گفتگوها","history_show_pin":"اجازه پین کردن گفتگوها","sections_modes":"وضعیت نمایش تب‌های تنظیمات","sections_modes_help":"کنترل نمایش یا غیرفعال بودن تب‌های مختلف در بخش تنظیمات کاربر.","mode_editable":"فعال (قابل ویرایش)","mode_faded":"محو (فقط خواندنی)","mode_hidden":"مخفی (غیرفعال)","general_tab":"تب عمومی","profile_tab":"تب پروفایل","account_tab":"تب حساب کاربری","inner_fields_modes":"مشاهده‌پذیری فیلدهای داخلی","inner_fields_modes_help":"وضعیت نمایش فیلدهای هر تب را به‌صورت مجزا پیکربندی کنید."},"user_billing":{"initial_balance_tokens":"توکن اولیه پیش‌فرض","initial_balance_requests":"تعداد درخواست اولیه پیش‌فرض","initial_balance_help":"این مقادیر به‌صورت خودکار به کاربران جدید اختصاص داده می‌شوند، مگر اینکه هنگام ایجاد کاربر مقدار دیگری تعیین شود."},"save_success":"تنظیمات با موفقیت ذخیره شد","save_error":"خطا در ذخیره‌سازی تنظیمات","save":"ذخیره تغییرات","translations_management":"مدیریت ترجمه‌ها","editor_tips":"تمام تغییرات به‌صورت خودکار در حالت محلی ذخیره می‌شوند. برای نهایی‌سازی، دکمه «ذخیره تغییرات» را بزنید.","sync_from_code":"همگام‌سازی از کد","reset_button":"بازنشانی به تنظیمات اولیه","reset_confirm_title":"بازنشانی تنظیمات؟","reset_confirm_description":"این عمل تمام فیلدها را به مقادیر پیش‌فرض در کد بازمی‌گرداند. تغییرات ذخیره نشده فعلی از بین خواهند رفت.","preview":"پیش‌نمایش","tips_label":"نکته"},"analytics":{"title":"تحلیل و آمار","days":"{{count}} روز","time_range_label":"بازه","days_unit":"روز","total_users":"تعداد کاربران","total_threads":"تعداد گفتگوها","total_messages":"تعداد پیام‌ها","total_token_usage":"مصرف کل توکن","usage_cost":"مصرف و هزینه","input":"ورودی","output":"خروجی","cost":"هزینه","threads_chart":"گفتگوها","messages_chart":"پیام‌ها","token_usage_chart":"مصرف توکن","cost_chart":"هزینه روزانه","active_users":"کاربران فعال","conversations":"گفتگو","threads":"گفتگو","feedback":"نظرات کاربران","total_feedback":"کل نظرات","positive":"مثبت","negative":"منفی","loading_analytics":"در حال بارگذاری تحلیل‌ها...","error_loading":"خطا در بارگذاری داده‌ها","source_human":"کاربران","source_service":"سرویس","source_all":"همه","source_caption_human":"نمایش فقط کاربران واقعی","source_caption_service":"نمایش فقط ترافیک سرویس","source_caption_all":"نمایش همهٔ ترافیک"},"chat_history":{"title":"مدیریت تاریخچه گفتگوها","search_placeholder":"جستجو بر اساس نام، شماره تماس، عنوان گفتگو یا شناسه...","search_button":"جستجو","threads_list":"لیست گفتگوها","thread_count":"{{count}}","no_thread_title":"گفتگو بدون عنوان","messages":"پیام‌ها","messages_for":"پیام‌های گفتگو: {{title}}","select_thread":"یک گفتگو را برای مشاهده انتخاب کنید","no_threads":"هیچ گفتگویی یافت نشد","empty_thread":"این گفتگو خالی است","loading_threads":"در حال بارگذاری...","loading_messages":"در حال بارگذاری پیام‌ها...","user_label":"کاربر","assistant_label":"دستیار هوشمند","input_tokens":"ورودی: {{value}}","output_tokens":"خروجی: {{value}}","total_tokens":"کل: {{value}}","cost":"هزینه: {{value}}","unpriced":"بدون هزینه","all_feedbacks":"همه گفتگوها","liked_feedbacks":"پسندیده شده 👍","disliked_feedbacks":"نپسندیده شده 👎","any_feedback":"دارای بازخورد","output_available":"خروجی موجود است","running":"در حال اجرا...","unnamed_file":"فایل بدون نام","download_file":"دانلود فایل","source_human":"کاربران","source_service":"سرویس","source_all":"همهٔ منابع","external_user_id":"شناسهٔ سرویس"},"users":{"title":"مدیریت کاربران","user_count":"تعداد کاربران: {{count}}","add_user":"افزودن کاربر جدید","edit_user":"ویرایش کاربر","phone":"شماره تلفن","phone_placeholder":"۰۹۱۲۳۴۵۶۷۸۹","name":"نام","surname":"نام خانوادگی","initial_tokens":"تعداد توکن اولیه (اختیاری)","initial_requests":"تعداد درخواست اولیه (اختیاری)","balance":"موجودی","requests_label":"درخواست‌ها","tokens_label":"توکن‌ها","token_limit":"سقف توکن","request_limit":"سقف درخواست","tokens_usage":"میزان مصرف توکن","requests_usage":"میزان مصرف درخواست","actions":"عملیات","copy_token":"کپی توکن (با بروزرسانی خودکار)","token_copied":"توکن با موفقیت کپی شد","no_token":"توکنی برای این کاربر یافت نشد","recharge":"شارژ موجودی","full_charge":"شارژ کامل","update_balance":"بروزرسانی موجودی","update_balance_for":"بروزرسانی موجودی","token_count":"تعداد توکن","request_count":"تعداد درخواست","updating":"در حال بروزرسانی...","no_users":"هیچ کاربری یافت نشد.","sort_ascending":"مرتب‌سازی صعودی","sort_descending":"مرتب‌سازی نزولی","confirm_delete_user":"آیا از حذف این کاربر اطمینان دارید؟","tokens_exceed_limit":"تعداد توکن نمی‌تواند بیشتر از سقف مجاز باشد","requests_exceed_limit":"تعداد درخواست نمی‌تواند بیشتر از سقف مجاز باشد","metadata":"متادیتا (JSON)","initial_balance":"موجودی اولیه","custom_fields":"فیلدهای اضافه","metadata_raw":"متادیتا (JSON خام)","advanced_usage":"استفاده پیشرفته","invalid_json":"فرمت JSON نامعتبر است","auto_recharge":"تمدید خودکار موجودی","auto_recharge_help":"موجودی این کاربر را طبق یک برنامه تکرارشونده تا سقف تعیین‌شده بازنشانی می‌کند.","enabled":"فعال","recharge_interval":"هر","recharge_unit":"واحد بازه","recharge_unit_minute":"دقیقه","recharge_unit_hour":"ساعت","recharge_unit_day":"روز","recharge_unit_week":"هفته","recharge_unit_month":"ماه","recharge_schedule_help":"برنامه جدید از زمان ذخیره آغاز می‌شود. برنامه موجود مبدأ دوره فعلی خود را حفظ می‌کند.","next_recharge":"تمدید بعدی","last_recharge":"آخرین تمدید خودکار","not_available":"در دسترس نیست","recharge_interval_invalid":"بازه تمدید باید یک عدد صحیح مثبت باشد","recharge_policy_not_saved":"سرور تنظیمات تمدید خودکار را ذخیره نکرد. سرور را راه‌اندازی مجدد یا به نسخه پشتیبان‌کننده از تمدید خودکار بروزرسانی کنید.","usage_summary":"خلاصه مصرف","input_tokens":"توکن‌های ورودی","output_tokens":"توکن‌های خروجی","total_tokens":"کل توکن‌ها","requests_made":"تعداد درخواست‌ها","total_cost":"هزینه کل","renewals":"دفعات شارژ موجودی","unpriced_requests":"درخواست‌های بدون هزینه‌ی ثبت شده","bulk_balance":"تغییر گروهی موجودی","bulk_balance_help":"تغییر موجودی را روی کاربران مطابق جستجو، شناسه‌های مشخص و فیلترهای متادیتا اعمال کنید.","bulk_operation":"عملیات","bulk_operation_add":"افزودن به موجودی","bulk_operation_set":"تنظیم مقدار دقیق","bulk_operation_full_charge":"شارژ تا سقف","bulk_use_current_search":"استفاده از جستجوی فعلی","bulk_user_ids":"شناسه کاربران (اختیاری)","bulk_metadata_filters":"فیلترهای متادیتا (JSON)","bulk_available_metadata":"کلیدهای متادیتای در دسترس","bulk_preview_empty":"تعداد کاربران مطابق قبل از اعمال بررسی می‌شود.","bulk_preview_count":"{{count}} کاربر مطابق هستند","apply_bulk_balance":"اعمال تغییر","bulk_balance_confirm":"این تغییر موجودی برای {{count}} کاربر اعمال شود؟","matching_users":"کاربران مطابق","bulk_apply_balance":"بروزرسانی موجودی","bulk_apply_renewal":"بروزرسانی سیاست تمدید","bulk_select_change":"حداقل یک تغییر گروهی را برای اعمال انتخاب کنید.","bulk_renewal_policy":"سیاست تمدید","bulk_renewal_policy_help":"تمدید خودکار را برای همه کاربران مطابق فعال یا غیرفعال کنید.","bulk_renewal_anchor":"زمان اولین تمدید (اختیاری)","source_human":"کاربران","source_service":"سرویس","source_all":"همه","account_type":"نوع حساب","account_type_human":"کاربر انسانی","account_type_service":"سرویس","account_type_service_help":"مصرف‌کنندهٔ سرویس خارجی. شمارهٔ تلفن اختیاری است؛ توکن این حساب را با سرویس یکپارچه‌شونده به اشتراک بگذارید.","service_name":"نام سرویس","service_name_placeholder":"مثلاً یکپارچه‌سازی CRM","optional":"اختیاری"},"admins":{"title":"مدیریت ادمین‌ها","admin_count":"تعداد ادمین‌ها: {{count}}","add_admin":"افزودن ادمین جدید","edit_admin":"ویرایش ادمین","username":"نام کاربری","name":"نام","password":"رمز عبور","password_edit":"رمز عبور جدید (خالی بگذارید تا تغییر نکند)","permissions":"دسترسی‌ها","perm_chat_history":"تاریخچه گفتگوها","perm_admin_management":"مدیریت ادمین‌ها","perm_user_management":"مدیریت کاربران","perm_analytics":"تحلیل و آمار","perm_settings":"تنظیمات","no_admins":"هیچ ادمینی یافت نشد.","confirm_delete_admin":"آیا از حذف این ادمین اطمینان دارید؟"},"errors":{"access_denied_title":"عدم دسترسی","access_denied_message":"شما مجوزهای لازم برای دسترسی به این صفحه را ندارید. می‌توانید با مدیر سیستم تماس بگیرید.","back_to_dashboard":"بازگشت به پیشخوان"},"login":{"title":"پنل ادمین","setup_title":"راه‌اندازی اولیه","setup_description":"هنوز حساب ادمینی وجود ندارد. برای شروع، یک رمز عبور برای کاربر ادمین پیش‌فرض تنظیم کنید.","set_password":"تعیین رمز عبور","set_password_placeholder":"یک رمز عبور قوی انتخاب کنید","confirm_password":"تأیید رمز عبور","confirm_password_placeholder":"رمز عبور را دوباره وارد کنید","passwords_mismatch":"رمزهای عبور مطابقت ندارند","password_too_short":"رمز عبور باید حداقل ۴ کاراکتر باشد","create_admin":"ایجاد ادمین و ورود","setting_up":"در حال راه‌اندازی...","username":"نام کاربری","username_placeholder":"نام کاربری","password":"رمز عبور","password_placeholder":"••••••••","submit":"ورود به پنل","logging_in":"در حال ورود...","error":"خطا در ورود","copyright":"© ۲۰۲۶ پلتفرم چت‌بات هوشمند"}}'), Fi = { title: "تنظیمات", sections: { profile: "پروفایل", general: "عمومی", account: "حساب کاربری" }, profile: { title: "اطلاعات پروفایل", subtitle: "اطلاعات شخصی خود را در زیر بروز کنید.", name: "نام", surname: "نام خانوادگی", phone: "شماره تلفن", password: "رمز عبور جدید", password_placeholder: "برای عدم تغییر خالی بگذارید", save: "ذخیره تغییرات", saving: "در حال ذخیره...", success: "پروفایل با موفقیت بروزرسانی شد", error: "خطا در بروزرسانی پروفایل", select_placeholder: "انتخاب کنید" }, general: { title: "تنظیمات عمومی", subtitle: "ظاهر و زبان برنامه را تنظیم کنید.", theme: "تم", language: "زبان", themes: { light: "روشن", dark: "تاریک", system: "سیستم" }, accent: "رنگ اصلی", radius: "میزان گردی لبه‌ها", radius_levels: { sharp: "تیز", round: "گرد" }, languages: { en: "English", fa: "فارسی" } }, account: { title: "حساب و میزان مصرف", subtitle: "سهمیه مصرف و نشست خود را مدیریت کنید.", balance: "موجود فعلی", tokens: "توکن‌ها", requests: "درخواست‌ها", logout: "خروج از حساب", logout_confirm: "آیا از خروج اطمینان دارید؟", last_recharge: "آخرین بروزرسانی اعتبار در تاریخ" } }, Pi = { unauthorized: "دسترسی مجاز نیست. لطفاً دوباره وارد شوید.", invalid_credentials: "شماره تلفن یا رمز عبور اشتباه است.", phone_required: "شماره تلفن الزامی است.", password_required: "رمز عبور الزامی است.", name_surname_required: "نام و نام خانوادگی الزامی است.", phone_already_exists: "این شماره تلفن قبلاً ثبت شده است.", invalid_token: "نشست شما منقضی شده است. لطفاً دوباره وارد شوید.", user_not_found: "کاربر یافت نشد.", insufficient_balance: "موجودی کافی نیست. لطفاً حساب خود را شارژ کنید.", me_update_failed: "خطا در بروزرسانی اطلاعات پروفایل.", thread_not_found: "گفتگو یافت نشد.", access_denied: "شما اجازه انجام این عملیات را ندارید.", feedback_save_failed: "خطا در ثبت بازخورد.", thread_update_failed: "خطا در بروزرسانی گفتگو.", thread_delete_failed: "خطا در حذف گفتگو.", attachment_not_found: "فایل پیوست یافت نشد.", thread_share_failed: "خطا در اشتراک‌گذاری گفتگو.", model_quota_reached_error: "سامانه در حال حاضر قادر به پاسخ‌گویی نیست. لطفاً بعداً دوباره تلاش کنید.", admin_already_exists: "ادمین با این نام کاربری قبلاً ایجاد شده است.", admin_not_found: "ادمین یافت نشد.", cannot_delete_self: "شما نمی‌توانید حساب مدیریت خود را حذف کنید.", admin_update_failed: "خطا در بروزرسانی اطلاعات ادمین.", internal_error: "یک خطای داخلی در سرور رخ داده است. لطفاً بعداً تلاش کنید.", validation_error: "داده‌های ارسالی معتبر نیستند. لطفاً ورودی‌های خود را بررسی کنید.", not_found: "منبع مورد نظر یافت نشد." }, Mi = {
6884
6884
  sidebar: Ai,
6885
6885
  chat: Ii,
6886
6886
  tools_ui: Ri,
@@ -6940,7 +6940,7 @@ const qi = {
6940
6940
  VALIDATION_ERROR: "validation_error",
6941
6941
  NOT_FOUND: "not_found"
6942
6942
  };
6943
- class vl extends Error {
6943
+ class _l extends Error {
6944
6944
  code;
6945
6945
  status;
6946
6946
  details;
@@ -6948,20 +6948,20 @@ class vl extends Error {
6948
6948
  super(t.error.message), this.name = "GentiqError", this.code = t.error.code, this.status = n, this.details = t.error.details;
6949
6949
  }
6950
6950
  }
6951
- function kl(e, t) {
6951
+ function vl(e, t) {
6952
6952
  const n = typeof e == "string", o = e, r = n ? e : o?.message ?? "", a = n ? e : o?.code || (Object.values(qi).includes(r) ? r : void 0);
6953
6953
  if (typeof a != "string")
6954
6954
  return r || String(e);
6955
6955
  const l = `errors:${a}`, c = t(l);
6956
6956
  return c === l ? !n && r ? r : a.replace(/_/g, " ").replace(/\b\w/g, (s) => s.toUpperCase()) : c;
6957
6957
  }
6958
- function _l({ className: e, type: t, ...n }) {
6958
+ function kl({ className: e, type: t, ...n }) {
6959
6959
  return /* @__PURE__ */ i(
6960
6960
  "input",
6961
6961
  {
6962
6962
  type: t,
6963
6963
  "data-slot": "input",
6964
- className: v(
6964
+ className: _(
6965
6965
  "file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
6966
6966
  "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
6967
6967
  "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
@@ -6971,18 +6971,18 @@ function _l({ className: e, type: t, ...n }) {
6971
6971
  }
6972
6972
  );
6973
6973
  }
6974
- const xl = "data:image/svg+xml,%3csvg%20version='1.2'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201280%201280'%20width='500'%20height='500'%3e%3cstyle%3e%20.s0%20{%20opacity:%201;fill:%20%2317535d%20}%20.s1%20{%20opacity:%20.99;fill:%20%23fab185%20}%20%3c/style%3e%3cg%20id='gentiq%20(7)'%3e%3cpath%20id='Path%201'%20fill-rule='evenodd'%20class='s0'%20d='m616.5%2012.22c19.25-0.09%2038.15%200.29%2042%200.84%203.85%200.54%2011.73%201.43%2017.5%201.98%205.77%200.55%2016.35%201.85%2023.5%202.91%207.15%201.05%2016.6%202.62%2021%203.49%204.4%200.88%209.8%202.02%2012%202.53%202.2%200.52%207.15%201.65%2011%202.5%203.85%200.86%208.58%202%2010.5%202.54%201.92%200.54%207.77%202.15%2013%203.6%205.23%201.44%2016.02%204.77%2024%207.4%207.98%202.63%2017.65%205.99%2021.5%207.48%203.85%201.48%2011.95%204.74%2018%207.24%206.05%202.5%2014.6%206.16%2019%208.14%204.4%201.98%2013.4%206.35%2020%209.72%206.6%203.36%2014.48%207.47%2017.5%209.11%203.02%201.65%2011.35%206.5%2018.5%2010.77%207.15%204.27%2018.17%2011.2%2024.49%2015.4%206.32%204.2%2012.17%208.16%2013%208.82%200.83%200.65%207.36%205.55%2014.51%2010.88%207.15%205.33%2013.23%209.97%2013.5%2010.31%200.27%200.34%202.73%202.42%205.45%204.62%202.72%202.2%205.43%204.45%206.02%205%200.59%200.55%204.89%204.35%209.55%208.45%204.67%204.1%2015.04%2014%2023.05%2022%208.02%208%2018.22%2018.6%2022.67%2023.55%204.46%204.95%2011.4%2013.07%2015.43%2018.04%204.03%204.97%2011.43%2014.42%2016.43%2021%205.01%206.58%2012.65%2017.36%2016.97%2023.96%204.33%206.6%208.56%2013.15%209.4%2014.57%200.84%201.41%204.08%206.81%207.19%2012%203.11%205.18%207.29%2012.36%209.29%2015.93%202%203.57%207.6%2014.6%2012.44%2024.5%204.84%209.9%2010.51%2022.05%2012.6%2027%202.08%204.95%204.36%2010.35%205.07%2012%200.71%201.65%202.26%205.48%203.44%208.5%201.19%203.02%204.44%2012.25%207.22%2020.5%202.79%208.25%205.42%2016.35%205.84%2018%200.43%201.65%201.72%206.15%202.87%2010%201.15%203.85%203.86%2014.43%206.03%2023.5%202.16%209.07%204.38%2019.2%204.94%2022.5%200.56%203.3%201.5%208.7%202.1%2012%200.59%203.3%201.68%2010.05%202.43%2015%200.74%204.95%201.85%2013.27%202.47%2018.5%200.61%205.23%201.56%2018.95%202.11%2030.5%200.55%2011.55%200.99%2034.61%200.99%2051.25%200%2019.16-0.37%2030.43-1%2030.75-0.55%200.27-1%202.64-1.01%205.25%200%202.61-0.43%207.45-0.96%2010.75-0.52%203.3-1.7%2011.17-2.62%2017.5-0.92%206.33-2.02%2013.52-2.44%2016-0.43%202.48-1.29%207.42-1.93%2011-0.63%203.58-2.7%2013.02-4.6%2021-1.9%207.98-3.93%2016.3-4.51%2018.5-0.58%202.2-2.41%208.5-4.05%2014-1.64%205.5-4.8%2015.4-7.01%2022-2.21%206.6-4.39%2012.9-4.85%2014-0.46%201.1-2.22%205.71-3.92%2010.25-1.71%204.54-3.44%208.24-3.85%208.22-0.41-0.02-2.55-1.5-4.75-3.29-2.2-1.8-6.25-4.85-9-6.79-2.75-1.94-9.95-6.45-16-10.03-6.05-3.58-14.83-8.34-19.5-10.57-4.67-2.23-10.64-5.01-13.25-6.18-2.61-1.16-8.91-3.51-14-5.21-5.09-1.71-10.71-3.51-12.5-4-1.79-0.5-4.94-1.38-7-1.96-2.06-0.58-6.9-1.73-10.75-2.54-3.85-0.82-9.47-1.94-12.5-2.48-3.02-0.54-10.9-1.64-17.5-2.44-6.6-0.81-18.52-1.46-26.5-1.45-7.98%200-20.13%200.68-27%201.5-6.88%200.81-13.85%201.75-15.5%202.08-1.65%200.32-7.27%201.43-12.5%202.47-5.23%201.04-12.65%202.83-16.5%203.98-3.85%201.16-9.02%202.67-11.5%203.38-2.48%200.7-9.45%203.31-15.5%205.8-6.05%202.49-14.6%206.3-19%208.46-4.4%202.17-12.05%206.39-17%209.38-4.95%203-13.5%208.66-19%2012.58-5.5%203.92-12.7%209.48-16%2012.36-3.3%202.88-8.88%207.99-12.41%2011.36-3.52%203.36-9.6%209.72-13.5%2014.12-3.9%204.4-7.32%208.23-7.59%208.5-0.27%200.27-2.09%202.52-4.04%205-1.94%202.48-4.39%205.85-5.43%207.5-1.04%201.65-2.38%203.47-2.96%204.05-0.59%200.58-3.12%204.4-5.63%208.5-2.5%204.1-5.89%209.7-7.53%2012.45-1.63%202.75-4.16%207.48-5.61%2010.5-1.45%203.02-4.03%208.42-5.73%2012-1.71%203.58-3.1%206.95-3.09%207.5%200%200.55-0.69%202.35-1.54%204-0.85%201.65-2.83%206.83-4.39%2011.5-1.56%204.67-4.24%2014.12-5.95%2021-1.71%206.87-4.01%2019.25-5.1%2027.5-1.42%2010.7-1.99%2020.73-1.99%2035%200%2014.2%200.58%2024.35%201.98%2035%201.09%208.25%203.53%2021.08%205.43%2028.5%201.9%207.42%204.63%2016.87%206.07%2021%201.44%204.12%203.03%208.4%203.54%209.5%200.5%201.1%201.87%204.47%203.03%207.5%201.16%203.03%204.23%209.78%206.82%2015%202.59%205.22%205.48%2010.62%206.42%2012%200.94%201.37%201.73%202.72%201.74%203%200.01%200.28-1.91%201.07-4.26%201.77-2.35%200.7-8.55%202.17-13.78%203.28-5.23%201.11-11.98%202.47-15%203.03-3.02%200.55-7.75%201.43-10.5%201.95-2.75%200.52-10.63%201.65-17.5%202.53-6.88%200.87-16.33%202-21%202.5-4.67%200.5-17.27%201.4-28%202.01-11.32%200.65-29.56%200.85-43.5%200.48-13.2-0.35-27.83-1.06-32.5-1.57-4.67-0.52-14.8-1.66-22.5-2.54-7.7-0.88-17.6-2.21-22-2.95-4.4-0.75-14.98-2.78-23.5-4.5-8.52-1.73-18.88-4.05-23-5.15-4.13-1.1-10.2-2.68-13.5-3.51-3.3-0.83-10.27-2.86-15.5-4.51-5.23-1.65-12.88-4.1-17-5.45-4.13-1.35-8.4-2.85-9.5-3.33-1.1-0.47-6.5-2.54-12-4.6-5.5-2.05-11.8-4.52-14-5.49-2.2-0.97-8.73-3.88-14.5-6.47-5.77-2.59-15.45-7.18-21.5-10.21-6.05-3.02-14.38-7.3-18.5-9.51-4.13-2.2-7.95-4.36-8.5-4.78-0.55-0.42-3.25-2.02-6-3.54-2.75-1.52-12.65-7.69-22-13.71-9.35-6.02-23.75-16.02-32-22.22-8.25-6.21-16.78-12.8-18.96-14.65-2.18-1.85-8.68-7.41-14.44-12.36-5.77-4.95-17.28-15.75-25.58-24-8.3-8.25-17.33-17.48-20.07-20.5-2.74-3.02-7.71-8.65-11.05-12.5-3.34-3.85-9.97-11.95-14.75-18-4.77-6.05-9.02-11.45-9.44-12-0.42-0.55-3.51-4.83-6.87-9.5-3.36-4.67-8.78-12.55-12.05-17.5-3.26-4.95-8.45-13.05-11.52-18-3.07-4.95-8.47-14.17-11.99-20.5-3.53-6.33-9.38-17.58-13-25-3.63-7.42-7.59-15.75-8.8-18.5-1.21-2.75-3.22-7.25-4.45-10-1.24-2.75-2.6-6.13-3.02-7.5-0.43-1.38-1.6-4.3-2.61-6.5-1.01-2.2-3.68-9.17-5.94-15.5-2.27-6.33-4.71-13.3-5.43-15.5-0.73-2.2-2.52-8.05-3.99-13-1.46-4.95-3.06-10.13-3.55-11.5-0.49-1.38-2.5-9.25-4.47-17.5-1.98-8.25-4.02-16.8-4.54-19-0.52-2.2-1.42-6.7-2-10-0.58-3.3-1.67-9.6-2.42-14-0.75-4.4-1.83-11.6-2.41-16-0.58-4.4-1.54-12.5-2.13-18-0.59-5.5-1.51-10.11-2.05-10.25-0.6-0.16-0.97-11.89-0.96-31%200-16.91%200.44-39.3%200.97-49.75%200.53-10.45%201.45-23.73%202.03-29.5%200.59-5.77%201.55-14.1%202.13-18.5%200.58-4.4%201.67-11.6%202.42-16%200.75-4.4%201.84-10.7%202.42-14%200.58-3.3%201.48-7.8%202-10%200.52-2.2%202.56-10.75%204.54-19%201.97-8.25%203.98-16.13%204.47-17.5%200.48-1.38%201.84-5.88%203.02-10%201.18-4.13%204.4-14.02%207.15-22%202.75-7.98%205.36-15.4%205.81-16.5%200.44-1.1%201.97-4.7%203.39-8%201.43-3.3%202.6-6.34%202.61-6.75%200.02-0.41%201.2-3.34%202.64-6.5%201.43-3.16%203.3-7.32%204.15-9.25%200.86-1.93%204.59-9.8%208.3-17.5%203.71-7.7%209.76-19.4%2013.45-26%203.68-6.6%209.22-16.05%2012.3-21%203.08-4.95%208.58-13.5%2012.22-19%203.64-5.5%207.72-11.57%209.05-13.5%201.34-1.93%204.43-6.2%206.87-9.5%202.43-3.3%207.79-10.28%2011.91-15.5%204.11-5.22%2010.67-13.1%2014.56-17.5%203.89-4.4%209.08-10.25%2011.53-13%202.44-2.75%2010.77-11.3%2018.5-19.01%207.73-7.7%2019.23-18.52%2025.55-24.04%206.32-5.51%2015.1-12.94%2019.5-16.49%204.4-3.56%2010.02-7.96%2012.5-9.77%202.48-1.82%207.43-5.45%2011-8.06%203.57-2.62%209.43-6.72%2013-9.11%203.57-2.39%208.3-5.57%2010.5-7.06%202.2-1.49%209.85-6.21%2017-10.48%207.15-4.28%2015.48-9.13%2018.5-10.78%203.02-1.66%2010.92-5.75%2017.53-9.1%206.62-3.36%2015.17-7.53%2019-9.27%203.84-1.75%2010.12-4.52%2013.97-6.17%203.85-1.66%2012.4-5.11%2019-7.67%206.6-2.56%2018.64-6.87%2026.75-9.58%208.11-2.7%2016.44-5.33%2018.5-5.85%202.06-0.52%207.12-1.9%2011.25-3.06%204.12-1.17%2010.43-2.8%2014-3.63%203.57-0.84%208.07-1.88%2010-2.32%201.93-0.45%207.1-1.54%2011.5-2.42%204.4-0.89%2010.25-2.05%2013-2.58%202.75-0.53%207.25-1.24%2010-1.57%202.75-0.34%207.25-1.02%2010-1.52%202.75-0.5%2010.4-1.45%2017-2.1%206.6-0.65%2016.95-1.48%2023-1.84%206.05-0.36%2026.75-0.72%2046-0.8zm-42.29%20288.46c-6.99%200.78-16.76%202.31-21.71%203.4-4.95%201.09-11.48%202.67-14.5%203.51-3.02%200.84-7.98%202.24-11%203.12-3.02%200.88-10.45%203.5-16.5%205.83-6.05%202.33-14.82%206-19.5%208.16-4.68%202.15-12.77%206.32-18%209.26-5.23%202.94-13.32%207.87-18%2010.95-4.68%203.09-11.2%207.62-14.5%2010.08-3.3%202.45-8.93%206.92-12.5%209.92-3.57%203.01-12.15%2011.12-19.05%2018.03-6.9%206.91-15.61%2016.38-19.34%2021.06-3.73%204.68-10.49%2014.13-15.01%2021-4.53%206.88-9.98%2015.65-12.11%2019.5-2.13%203.85-5.64%2010.6-7.79%2015-2.15%204.4-5.5%2011.82-7.43%2016.5-1.94%204.68-4.38%2011.2-5.43%2014.5-1.06%203.3-3.22%2010.5-4.81%2016-1.59%205.5-3.42%2012.7-4.06%2016-0.64%203.3-1.58%208.25-2.08%2011-0.5%202.75-1.58%209.95-2.39%2016-0.95%207.05-1.49%2019.36-1.49%2034.25-0.01%2012.79%200.45%2026.51%201.02%2030.5%200.56%203.99%201.5%2010.17%202.07%2013.75%200.58%203.58%201.73%209.88%202.57%2014%200.84%204.13%202.88%2012.23%204.53%2018%201.65%205.77%204.12%2013.88%205.5%2018%201.37%204.13%202.84%207.95%203.27%208.5%200.42%200.55%201.68%203.48%202.79%206.5%201.11%203.02%203.79%209.1%205.94%2013.5%202.15%204.4%205.66%2011.15%207.78%2015%202.13%203.85%207.59%2012.63%2012.14%2019.5%204.54%206.88%2011.3%2016.33%2015.02%2021%203.73%204.67%2012.09%2013.9%2018.58%2020.5%206.5%206.6%2014.62%2014.29%2018.05%2017.09%203.43%202.8%2010.05%207.98%2014.73%2011.51%204.68%203.53%2012.1%208.74%2016.5%2011.58%204.4%202.83%2010.02%206.3%2012.5%207.7%202.48%201.4%209.45%204.99%2015.5%207.97%206.05%202.98%2013.25%206.42%2016%207.65%202.75%201.23%2012.2%204.61%2021%207.5%208.8%202.9%2021.62%206.44%2028.5%207.89%206.87%201.44%2014.52%203.04%2017%203.55%202.48%200.51%2013.27%201.48%2024%202.15%2015.34%200.97%2023.66%200.97%2039%200.01%2010.73-0.67%2021.3-1.6%2023.5-2.08%202.2-0.47%206.7-1.37%2010-1.99%203.3-0.63%208.92-1.82%2012.5-2.66%203.58-0.84%2010.1-2.58%2014.5-3.87%204.4-1.29%2012.27-3.89%2017.5-5.78%205.23-1.89%2011.51-4.29%2013.96-5.33%202.46-1.04%2010.33-4.84%2017.5-8.44%207.17-3.61%2018.21-9.87%2024.54-13.92%206.33-4.04%2012.68-8.3%2014.12-9.44%201.45-1.15%203.87-2.99%205.39-4.09%201.53-1.1%203.56-2.67%204.52-3.5%200.97-0.83%204.51-3.75%207.88-6.5%203.37-2.75%2011.85-10.86%2018.86-18.02%207-7.16%2016.15-17.51%2020.34-23%204.19-5.49%2010.3-14.03%2013.6-18.98%203.29-4.95%207.48-11.7%209.3-15%201.83-3.3%205.43-10.27%208.02-15.5%202.58-5.23%205.41-11.08%206.28-13%200.88-1.92%202.57-5.98%203.75-9%201.18-3.02%203.02-8.2%204.08-11.5%201.07-3.3%203.22-10.5%204.78-16%201.56-5.5%203.34-12.02%203.96-14.5%200.61-2.48%201.6-7.42%202.18-11%200.59-3.58%201.51-9.65%202.04-13.5%200.54-3.85%201.34-13.98%201.79-22.5%200.44-8.52%200.44-22.25%200-30.5-0.45-8.25-1.25-18.15-1.79-22-0.53-3.85-1.46-9.92-2.05-13.5-0.59-3.58-2.01-10.33-3.14-15-1.14-4.67-2.44-9.62-2.89-11-0.45-1.37-1.84-5.87-3.08-10-1.24-4.12-3.56-10.87-5.15-15-1.59-4.12-3.6-9.07-4.47-11-0.87-1.93-3.71-7.77-6.31-13-2.59-5.23-5.55-11.07-6.56-13-1.01-1.93-3.99-6.87-6.62-11-2.63-4.12-7.45-11.32-10.7-16-3.25-4.68-9.5-12.77-13.89-18-4.39-5.23-13.1-14.45-19.36-20.5-6.26-6.05-15.21-14.06-19.88-17.8-4.68-3.74-10.92-8.47-13.88-10.5-2.96-2.04-9.26-6.13-14-9.1-4.74-2.97-13.12-7.77-18.62-10.66-5.5-2.89-14.5-7.13-20-9.42-5.5-2.28-10.9-4.56-12-5.06-1.1-0.49-6.05-2.24-11-3.88-4.95-1.65-11.02-3.49-13.5-4.09-2.48-0.6-9.23-2.16-15-3.47-5.77-1.3-15.9-3.11-22.5-4.02-6.81-0.93-20.87-1.79-32.5-1.97-11.27-0.17-22.66-0.08-25.29%200.21-2.63%200.29-10.51%201.16-17.5%201.94z'/%3e%3cpath%20id='Path%202'%20class='s1'%20d='m953.5%20831.1c-2.75%200.49-7.7%201.38-11%201.99-3.3%200.61-8.48%201.77-11.5%202.57-3.02%200.81-9.33%202.84-14%204.52-4.67%201.68-13%205.31-18.5%208.06-5.5%202.75-12.48%206.61-15.5%208.58-3.02%201.97-8.2%205.61-11.5%208.08-3.3%202.47-9.33%207.44-13.39%2011.05-4.07%203.6-10.64%2010.38-14.61%2015.05-3.96%204.67-10.02%2012.77-13.46%2018-3.44%205.22-7.84%2012.65-9.78%2016.5-1.94%203.85-5.1%2011.05-7.02%2016-1.92%204.95-4.35%2011.92-5.39%2015.5-1.04%203.58-2.57%209.65-3.39%2013.5-0.83%203.85-2%2013.3-2.61%2021-0.81%2010.28-0.8%2017.79%200.02%2028.25%200.62%207.84%202.22%2018.86%203.55%2024.5%201.33%205.64%203.42%2013.17%204.65%2016.75%201.22%203.58%204%2010.55%206.17%2015.5%202.17%204.95%206.32%2013.05%209.22%2018%202.91%204.95%207.71%2012.22%2010.66%2016.15%202.96%203.94%208.08%2010.19%2011.38%2013.89%203.3%203.7%2010.05%2010.13%2015%2014.28%204.95%204.15%2013.05%2010.21%2018%2013.47%204.95%203.25%2011.92%207.4%2015.5%209.2%203.58%201.81%2010.55%204.92%2015.5%206.91%204.95%201.99%2012.83%204.69%2017.5%206%204.67%201.3%209.85%202.69%2011.5%203.07%201.65%200.39%206.83%201.33%2011.5%202.1%205.11%200.84%2015.89%201.4%2027%201.4%2010.17%200%2020.08-0.41%2022-0.92%201.92-0.5%206.2-1.45%209.5-2.1%203.3-0.65%2010.27-2.42%2015.5-3.93%205.22-1.5%2013.55-4.41%2018.5-6.46%204.95-2.05%2013.05-5.96%2018-8.68%204.95-2.73%2013.5-8.3%2019-12.39%205.5-4.08%2013.97-11.38%2018.82-16.21%204.86-4.83%2012.1-13.06%2016.09-18.28%203.99-5.22%209.09-12.65%2011.32-16.5%202.23-3.85%205.93-10.83%208.21-15.5%202.28-4.67%205.68-13.22%207.55-19%201.87-5.78%203.86-12.3%204.41-14.5%200.55-2.2%201.7-8.39%202.55-13.75%200.98-6.14%201.55-16.31%201.54-27.5%200-12.91-0.53-20.88-1.94-29.25-1.06-6.33-3.1-15.33-4.52-20-1.43-4.67-3.03-9.29-3.56-10.25-0.53-0.96-0.97-2.2-0.97-2.75%200-0.55-0.86-2.91-1.92-5.25-1.06-2.34-2.98-6.5-4.28-9.25-1.29-2.75-4.32-8.38-6.72-12.5-2.41-4.13-5.99-9.75-7.98-12.5-1.98-2.75-4.5-6.1-5.6-7.45-1.1-1.35-4.03-4.71-6.5-7.48-2.47-2.76-5.63-6.17-7-7.56-1.38-1.39-5.65-5.28-9.5-8.64-3.85-3.36-11.5-9.16-17-12.89-5.5-3.73-14.3-8.85-19.55-11.38-5.26-2.53-10.88-5.15-12.5-5.82-1.62-0.68-6.33-2.39-10.45-3.8-4.13-1.42-10.65-3.26-14.5-4.09-3.85-0.84-10.83-2.16-15.5-2.94-5.29-0.88-15.11-1.38-26-1.32-9.63%200.05-19.75%200.49-22.5%200.97z'/%3e%3c/g%3e%3c/svg%3e", $i = tt(
6974
+ const wl = "data:image/svg+xml,%3csvg%20version='1.2'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201280%201280'%20width='500'%20height='500'%3e%3cstyle%3e%20.s0%20{%20opacity:%201;fill:%20%2317535d%20}%20.s1%20{%20opacity:%20.99;fill:%20%23fab185%20}%20%3c/style%3e%3cg%20id='gentiq%20(7)'%3e%3cpath%20id='Path%201'%20fill-rule='evenodd'%20class='s0'%20d='m616.5%2012.22c19.25-0.09%2038.15%200.29%2042%200.84%203.85%200.54%2011.73%201.43%2017.5%201.98%205.77%200.55%2016.35%201.85%2023.5%202.91%207.15%201.05%2016.6%202.62%2021%203.49%204.4%200.88%209.8%202.02%2012%202.53%202.2%200.52%207.15%201.65%2011%202.5%203.85%200.86%208.58%202%2010.5%202.54%201.92%200.54%207.77%202.15%2013%203.6%205.23%201.44%2016.02%204.77%2024%207.4%207.98%202.63%2017.65%205.99%2021.5%207.48%203.85%201.48%2011.95%204.74%2018%207.24%206.05%202.5%2014.6%206.16%2019%208.14%204.4%201.98%2013.4%206.35%2020%209.72%206.6%203.36%2014.48%207.47%2017.5%209.11%203.02%201.65%2011.35%206.5%2018.5%2010.77%207.15%204.27%2018.17%2011.2%2024.49%2015.4%206.32%204.2%2012.17%208.16%2013%208.82%200.83%200.65%207.36%205.55%2014.51%2010.88%207.15%205.33%2013.23%209.97%2013.5%2010.31%200.27%200.34%202.73%202.42%205.45%204.62%202.72%202.2%205.43%204.45%206.02%205%200.59%200.55%204.89%204.35%209.55%208.45%204.67%204.1%2015.04%2014%2023.05%2022%208.02%208%2018.22%2018.6%2022.67%2023.55%204.46%204.95%2011.4%2013.07%2015.43%2018.04%204.03%204.97%2011.43%2014.42%2016.43%2021%205.01%206.58%2012.65%2017.36%2016.97%2023.96%204.33%206.6%208.56%2013.15%209.4%2014.57%200.84%201.41%204.08%206.81%207.19%2012%203.11%205.18%207.29%2012.36%209.29%2015.93%202%203.57%207.6%2014.6%2012.44%2024.5%204.84%209.9%2010.51%2022.05%2012.6%2027%202.08%204.95%204.36%2010.35%205.07%2012%200.71%201.65%202.26%205.48%203.44%208.5%201.19%203.02%204.44%2012.25%207.22%2020.5%202.79%208.25%205.42%2016.35%205.84%2018%200.43%201.65%201.72%206.15%202.87%2010%201.15%203.85%203.86%2014.43%206.03%2023.5%202.16%209.07%204.38%2019.2%204.94%2022.5%200.56%203.3%201.5%208.7%202.1%2012%200.59%203.3%201.68%2010.05%202.43%2015%200.74%204.95%201.85%2013.27%202.47%2018.5%200.61%205.23%201.56%2018.95%202.11%2030.5%200.55%2011.55%200.99%2034.61%200.99%2051.25%200%2019.16-0.37%2030.43-1%2030.75-0.55%200.27-1%202.64-1.01%205.25%200%202.61-0.43%207.45-0.96%2010.75-0.52%203.3-1.7%2011.17-2.62%2017.5-0.92%206.33-2.02%2013.52-2.44%2016-0.43%202.48-1.29%207.42-1.93%2011-0.63%203.58-2.7%2013.02-4.6%2021-1.9%207.98-3.93%2016.3-4.51%2018.5-0.58%202.2-2.41%208.5-4.05%2014-1.64%205.5-4.8%2015.4-7.01%2022-2.21%206.6-4.39%2012.9-4.85%2014-0.46%201.1-2.22%205.71-3.92%2010.25-1.71%204.54-3.44%208.24-3.85%208.22-0.41-0.02-2.55-1.5-4.75-3.29-2.2-1.8-6.25-4.85-9-6.79-2.75-1.94-9.95-6.45-16-10.03-6.05-3.58-14.83-8.34-19.5-10.57-4.67-2.23-10.64-5.01-13.25-6.18-2.61-1.16-8.91-3.51-14-5.21-5.09-1.71-10.71-3.51-12.5-4-1.79-0.5-4.94-1.38-7-1.96-2.06-0.58-6.9-1.73-10.75-2.54-3.85-0.82-9.47-1.94-12.5-2.48-3.02-0.54-10.9-1.64-17.5-2.44-6.6-0.81-18.52-1.46-26.5-1.45-7.98%200-20.13%200.68-27%201.5-6.88%200.81-13.85%201.75-15.5%202.08-1.65%200.32-7.27%201.43-12.5%202.47-5.23%201.04-12.65%202.83-16.5%203.98-3.85%201.16-9.02%202.67-11.5%203.38-2.48%200.7-9.45%203.31-15.5%205.8-6.05%202.49-14.6%206.3-19%208.46-4.4%202.17-12.05%206.39-17%209.38-4.95%203-13.5%208.66-19%2012.58-5.5%203.92-12.7%209.48-16%2012.36-3.3%202.88-8.88%207.99-12.41%2011.36-3.52%203.36-9.6%209.72-13.5%2014.12-3.9%204.4-7.32%208.23-7.59%208.5-0.27%200.27-2.09%202.52-4.04%205-1.94%202.48-4.39%205.85-5.43%207.5-1.04%201.65-2.38%203.47-2.96%204.05-0.59%200.58-3.12%204.4-5.63%208.5-2.5%204.1-5.89%209.7-7.53%2012.45-1.63%202.75-4.16%207.48-5.61%2010.5-1.45%203.02-4.03%208.42-5.73%2012-1.71%203.58-3.1%206.95-3.09%207.5%200%200.55-0.69%202.35-1.54%204-0.85%201.65-2.83%206.83-4.39%2011.5-1.56%204.67-4.24%2014.12-5.95%2021-1.71%206.87-4.01%2019.25-5.1%2027.5-1.42%2010.7-1.99%2020.73-1.99%2035%200%2014.2%200.58%2024.35%201.98%2035%201.09%208.25%203.53%2021.08%205.43%2028.5%201.9%207.42%204.63%2016.87%206.07%2021%201.44%204.12%203.03%208.4%203.54%209.5%200.5%201.1%201.87%204.47%203.03%207.5%201.16%203.03%204.23%209.78%206.82%2015%202.59%205.22%205.48%2010.62%206.42%2012%200.94%201.37%201.73%202.72%201.74%203%200.01%200.28-1.91%201.07-4.26%201.77-2.35%200.7-8.55%202.17-13.78%203.28-5.23%201.11-11.98%202.47-15%203.03-3.02%200.55-7.75%201.43-10.5%201.95-2.75%200.52-10.63%201.65-17.5%202.53-6.88%200.87-16.33%202-21%202.5-4.67%200.5-17.27%201.4-28%202.01-11.32%200.65-29.56%200.85-43.5%200.48-13.2-0.35-27.83-1.06-32.5-1.57-4.67-0.52-14.8-1.66-22.5-2.54-7.7-0.88-17.6-2.21-22-2.95-4.4-0.75-14.98-2.78-23.5-4.5-8.52-1.73-18.88-4.05-23-5.15-4.13-1.1-10.2-2.68-13.5-3.51-3.3-0.83-10.27-2.86-15.5-4.51-5.23-1.65-12.88-4.1-17-5.45-4.13-1.35-8.4-2.85-9.5-3.33-1.1-0.47-6.5-2.54-12-4.6-5.5-2.05-11.8-4.52-14-5.49-2.2-0.97-8.73-3.88-14.5-6.47-5.77-2.59-15.45-7.18-21.5-10.21-6.05-3.02-14.38-7.3-18.5-9.51-4.13-2.2-7.95-4.36-8.5-4.78-0.55-0.42-3.25-2.02-6-3.54-2.75-1.52-12.65-7.69-22-13.71-9.35-6.02-23.75-16.02-32-22.22-8.25-6.21-16.78-12.8-18.96-14.65-2.18-1.85-8.68-7.41-14.44-12.36-5.77-4.95-17.28-15.75-25.58-24-8.3-8.25-17.33-17.48-20.07-20.5-2.74-3.02-7.71-8.65-11.05-12.5-3.34-3.85-9.97-11.95-14.75-18-4.77-6.05-9.02-11.45-9.44-12-0.42-0.55-3.51-4.83-6.87-9.5-3.36-4.67-8.78-12.55-12.05-17.5-3.26-4.95-8.45-13.05-11.52-18-3.07-4.95-8.47-14.17-11.99-20.5-3.53-6.33-9.38-17.58-13-25-3.63-7.42-7.59-15.75-8.8-18.5-1.21-2.75-3.22-7.25-4.45-10-1.24-2.75-2.6-6.13-3.02-7.5-0.43-1.38-1.6-4.3-2.61-6.5-1.01-2.2-3.68-9.17-5.94-15.5-2.27-6.33-4.71-13.3-5.43-15.5-0.73-2.2-2.52-8.05-3.99-13-1.46-4.95-3.06-10.13-3.55-11.5-0.49-1.38-2.5-9.25-4.47-17.5-1.98-8.25-4.02-16.8-4.54-19-0.52-2.2-1.42-6.7-2-10-0.58-3.3-1.67-9.6-2.42-14-0.75-4.4-1.83-11.6-2.41-16-0.58-4.4-1.54-12.5-2.13-18-0.59-5.5-1.51-10.11-2.05-10.25-0.6-0.16-0.97-11.89-0.96-31%200-16.91%200.44-39.3%200.97-49.75%200.53-10.45%201.45-23.73%202.03-29.5%200.59-5.77%201.55-14.1%202.13-18.5%200.58-4.4%201.67-11.6%202.42-16%200.75-4.4%201.84-10.7%202.42-14%200.58-3.3%201.48-7.8%202-10%200.52-2.2%202.56-10.75%204.54-19%201.97-8.25%203.98-16.13%204.47-17.5%200.48-1.38%201.84-5.88%203.02-10%201.18-4.13%204.4-14.02%207.15-22%202.75-7.98%205.36-15.4%205.81-16.5%200.44-1.1%201.97-4.7%203.39-8%201.43-3.3%202.6-6.34%202.61-6.75%200.02-0.41%201.2-3.34%202.64-6.5%201.43-3.16%203.3-7.32%204.15-9.25%200.86-1.93%204.59-9.8%208.3-17.5%203.71-7.7%209.76-19.4%2013.45-26%203.68-6.6%209.22-16.05%2012.3-21%203.08-4.95%208.58-13.5%2012.22-19%203.64-5.5%207.72-11.57%209.05-13.5%201.34-1.93%204.43-6.2%206.87-9.5%202.43-3.3%207.79-10.28%2011.91-15.5%204.11-5.22%2010.67-13.1%2014.56-17.5%203.89-4.4%209.08-10.25%2011.53-13%202.44-2.75%2010.77-11.3%2018.5-19.01%207.73-7.7%2019.23-18.52%2025.55-24.04%206.32-5.51%2015.1-12.94%2019.5-16.49%204.4-3.56%2010.02-7.96%2012.5-9.77%202.48-1.82%207.43-5.45%2011-8.06%203.57-2.62%209.43-6.72%2013-9.11%203.57-2.39%208.3-5.57%2010.5-7.06%202.2-1.49%209.85-6.21%2017-10.48%207.15-4.28%2015.48-9.13%2018.5-10.78%203.02-1.66%2010.92-5.75%2017.53-9.1%206.62-3.36%2015.17-7.53%2019-9.27%203.84-1.75%2010.12-4.52%2013.97-6.17%203.85-1.66%2012.4-5.11%2019-7.67%206.6-2.56%2018.64-6.87%2026.75-9.58%208.11-2.7%2016.44-5.33%2018.5-5.85%202.06-0.52%207.12-1.9%2011.25-3.06%204.12-1.17%2010.43-2.8%2014-3.63%203.57-0.84%208.07-1.88%2010-2.32%201.93-0.45%207.1-1.54%2011.5-2.42%204.4-0.89%2010.25-2.05%2013-2.58%202.75-0.53%207.25-1.24%2010-1.57%202.75-0.34%207.25-1.02%2010-1.52%202.75-0.5%2010.4-1.45%2017-2.1%206.6-0.65%2016.95-1.48%2023-1.84%206.05-0.36%2026.75-0.72%2046-0.8zm-42.29%20288.46c-6.99%200.78-16.76%202.31-21.71%203.4-4.95%201.09-11.48%202.67-14.5%203.51-3.02%200.84-7.98%202.24-11%203.12-3.02%200.88-10.45%203.5-16.5%205.83-6.05%202.33-14.82%206-19.5%208.16-4.68%202.15-12.77%206.32-18%209.26-5.23%202.94-13.32%207.87-18%2010.95-4.68%203.09-11.2%207.62-14.5%2010.08-3.3%202.45-8.93%206.92-12.5%209.92-3.57%203.01-12.15%2011.12-19.05%2018.03-6.9%206.91-15.61%2016.38-19.34%2021.06-3.73%204.68-10.49%2014.13-15.01%2021-4.53%206.88-9.98%2015.65-12.11%2019.5-2.13%203.85-5.64%2010.6-7.79%2015-2.15%204.4-5.5%2011.82-7.43%2016.5-1.94%204.68-4.38%2011.2-5.43%2014.5-1.06%203.3-3.22%2010.5-4.81%2016-1.59%205.5-3.42%2012.7-4.06%2016-0.64%203.3-1.58%208.25-2.08%2011-0.5%202.75-1.58%209.95-2.39%2016-0.95%207.05-1.49%2019.36-1.49%2034.25-0.01%2012.79%200.45%2026.51%201.02%2030.5%200.56%203.99%201.5%2010.17%202.07%2013.75%200.58%203.58%201.73%209.88%202.57%2014%200.84%204.13%202.88%2012.23%204.53%2018%201.65%205.77%204.12%2013.88%205.5%2018%201.37%204.13%202.84%207.95%203.27%208.5%200.42%200.55%201.68%203.48%202.79%206.5%201.11%203.02%203.79%209.1%205.94%2013.5%202.15%204.4%205.66%2011.15%207.78%2015%202.13%203.85%207.59%2012.63%2012.14%2019.5%204.54%206.88%2011.3%2016.33%2015.02%2021%203.73%204.67%2012.09%2013.9%2018.58%2020.5%206.5%206.6%2014.62%2014.29%2018.05%2017.09%203.43%202.8%2010.05%207.98%2014.73%2011.51%204.68%203.53%2012.1%208.74%2016.5%2011.58%204.4%202.83%2010.02%206.3%2012.5%207.7%202.48%201.4%209.45%204.99%2015.5%207.97%206.05%202.98%2013.25%206.42%2016%207.65%202.75%201.23%2012.2%204.61%2021%207.5%208.8%202.9%2021.62%206.44%2028.5%207.89%206.87%201.44%2014.52%203.04%2017%203.55%202.48%200.51%2013.27%201.48%2024%202.15%2015.34%200.97%2023.66%200.97%2039%200.01%2010.73-0.67%2021.3-1.6%2023.5-2.08%202.2-0.47%206.7-1.37%2010-1.99%203.3-0.63%208.92-1.82%2012.5-2.66%203.58-0.84%2010.1-2.58%2014.5-3.87%204.4-1.29%2012.27-3.89%2017.5-5.78%205.23-1.89%2011.51-4.29%2013.96-5.33%202.46-1.04%2010.33-4.84%2017.5-8.44%207.17-3.61%2018.21-9.87%2024.54-13.92%206.33-4.04%2012.68-8.3%2014.12-9.44%201.45-1.15%203.87-2.99%205.39-4.09%201.53-1.1%203.56-2.67%204.52-3.5%200.97-0.83%204.51-3.75%207.88-6.5%203.37-2.75%2011.85-10.86%2018.86-18.02%207-7.16%2016.15-17.51%2020.34-23%204.19-5.49%2010.3-14.03%2013.6-18.98%203.29-4.95%207.48-11.7%209.3-15%201.83-3.3%205.43-10.27%208.02-15.5%202.58-5.23%205.41-11.08%206.28-13%200.88-1.92%202.57-5.98%203.75-9%201.18-3.02%203.02-8.2%204.08-11.5%201.07-3.3%203.22-10.5%204.78-16%201.56-5.5%203.34-12.02%203.96-14.5%200.61-2.48%201.6-7.42%202.18-11%200.59-3.58%201.51-9.65%202.04-13.5%200.54-3.85%201.34-13.98%201.79-22.5%200.44-8.52%200.44-22.25%200-30.5-0.45-8.25-1.25-18.15-1.79-22-0.53-3.85-1.46-9.92-2.05-13.5-0.59-3.58-2.01-10.33-3.14-15-1.14-4.67-2.44-9.62-2.89-11-0.45-1.37-1.84-5.87-3.08-10-1.24-4.12-3.56-10.87-5.15-15-1.59-4.12-3.6-9.07-4.47-11-0.87-1.93-3.71-7.77-6.31-13-2.59-5.23-5.55-11.07-6.56-13-1.01-1.93-3.99-6.87-6.62-11-2.63-4.12-7.45-11.32-10.7-16-3.25-4.68-9.5-12.77-13.89-18-4.39-5.23-13.1-14.45-19.36-20.5-6.26-6.05-15.21-14.06-19.88-17.8-4.68-3.74-10.92-8.47-13.88-10.5-2.96-2.04-9.26-6.13-14-9.1-4.74-2.97-13.12-7.77-18.62-10.66-5.5-2.89-14.5-7.13-20-9.42-5.5-2.28-10.9-4.56-12-5.06-1.1-0.49-6.05-2.24-11-3.88-4.95-1.65-11.02-3.49-13.5-4.09-2.48-0.6-9.23-2.16-15-3.47-5.77-1.3-15.9-3.11-22.5-4.02-6.81-0.93-20.87-1.79-32.5-1.97-11.27-0.17-22.66-0.08-25.29%200.21-2.63%200.29-10.51%201.16-17.5%201.94z'/%3e%3cpath%20id='Path%202'%20class='s1'%20d='m953.5%20831.1c-2.75%200.49-7.7%201.38-11%201.99-3.3%200.61-8.48%201.77-11.5%202.57-3.02%200.81-9.33%202.84-14%204.52-4.67%201.68-13%205.31-18.5%208.06-5.5%202.75-12.48%206.61-15.5%208.58-3.02%201.97-8.2%205.61-11.5%208.08-3.3%202.47-9.33%207.44-13.39%2011.05-4.07%203.6-10.64%2010.38-14.61%2015.05-3.96%204.67-10.02%2012.77-13.46%2018-3.44%205.22-7.84%2012.65-9.78%2016.5-1.94%203.85-5.1%2011.05-7.02%2016-1.92%204.95-4.35%2011.92-5.39%2015.5-1.04%203.58-2.57%209.65-3.39%2013.5-0.83%203.85-2%2013.3-2.61%2021-0.81%2010.28-0.8%2017.79%200.02%2028.25%200.62%207.84%202.22%2018.86%203.55%2024.5%201.33%205.64%203.42%2013.17%204.65%2016.75%201.22%203.58%204%2010.55%206.17%2015.5%202.17%204.95%206.32%2013.05%209.22%2018%202.91%204.95%207.71%2012.22%2010.66%2016.15%202.96%203.94%208.08%2010.19%2011.38%2013.89%203.3%203.7%2010.05%2010.13%2015%2014.28%204.95%204.15%2013.05%2010.21%2018%2013.47%204.95%203.25%2011.92%207.4%2015.5%209.2%203.58%201.81%2010.55%204.92%2015.5%206.91%204.95%201.99%2012.83%204.69%2017.5%206%204.67%201.3%209.85%202.69%2011.5%203.07%201.65%200.39%206.83%201.33%2011.5%202.1%205.11%200.84%2015.89%201.4%2027%201.4%2010.17%200%2020.08-0.41%2022-0.92%201.92-0.5%206.2-1.45%209.5-2.1%203.3-0.65%2010.27-2.42%2015.5-3.93%205.22-1.5%2013.55-4.41%2018.5-6.46%204.95-2.05%2013.05-5.96%2018-8.68%204.95-2.73%2013.5-8.3%2019-12.39%205.5-4.08%2013.97-11.38%2018.82-16.21%204.86-4.83%2012.1-13.06%2016.09-18.28%203.99-5.22%209.09-12.65%2011.32-16.5%202.23-3.85%205.93-10.83%208.21-15.5%202.28-4.67%205.68-13.22%207.55-19%201.87-5.78%203.86-12.3%204.41-14.5%200.55-2.2%201.7-8.39%202.55-13.75%200.98-6.14%201.55-16.31%201.54-27.5%200-12.91-0.53-20.88-1.94-29.25-1.06-6.33-3.1-15.33-4.52-20-1.43-4.67-3.03-9.29-3.56-10.25-0.53-0.96-0.97-2.2-0.97-2.75%200-0.55-0.86-2.91-1.92-5.25-1.06-2.34-2.98-6.5-4.28-9.25-1.29-2.75-4.32-8.38-6.72-12.5-2.41-4.13-5.99-9.75-7.98-12.5-1.98-2.75-4.5-6.1-5.6-7.45-1.1-1.35-4.03-4.71-6.5-7.48-2.47-2.76-5.63-6.17-7-7.56-1.38-1.39-5.65-5.28-9.5-8.64-3.85-3.36-11.5-9.16-17-12.89-5.5-3.73-14.3-8.85-19.55-11.38-5.26-2.53-10.88-5.15-12.5-5.82-1.62-0.68-6.33-2.39-10.45-3.8-4.13-1.42-10.65-3.26-14.5-4.09-3.85-0.84-10.83-2.16-15.5-2.94-5.29-0.88-15.11-1.38-26-1.32-9.63%200.05-19.75%200.49-22.5%200.97z'/%3e%3c/g%3e%3c/svg%3e", $i = tt(
6975
6975
  "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
6976
6976
  ), Bi = Ye.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ i(
6977
6977
  "label",
6978
6978
  {
6979
6979
  ref: n,
6980
- className: v($i(), e),
6980
+ className: _($i(), e),
6981
6981
  ...t
6982
6982
  }
6983
6983
  ));
6984
6984
  Bi.displayName = "Label";
6985
- function wl({ ...e }) {
6985
+ function xl({ ...e }) {
6986
6986
  return /* @__PURE__ */ i(M.Root, { "data-slot": "select", ...e });
6987
6987
  }
6988
6988
  function Sl({ ...e }) {
@@ -6997,19 +6997,19 @@ function Nl({
6997
6997
  children: n,
6998
6998
  ...o
6999
6999
  }) {
7000
- return /* @__PURE__ */ x(
7000
+ return /* @__PURE__ */ w(
7001
7001
  M.Trigger,
7002
7002
  {
7003
7003
  "data-slot": "select-trigger",
7004
7004
  "data-size": t,
7005
- className: v(
7005
+ className: _(
7006
7006
  "border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
7007
7007
  e
7008
7008
  ),
7009
7009
  ...o,
7010
7010
  children: [
7011
7011
  n,
7012
- /* @__PURE__ */ i(M.Icon, { asChild: !0, children: /* @__PURE__ */ i(ve, { className: "size-4 opacity-50" }) })
7012
+ /* @__PURE__ */ i(M.Icon, { asChild: !0, children: /* @__PURE__ */ i(_e, { className: "size-4 opacity-50" }) })
7013
7013
  ]
7014
7014
  }
7015
7015
  );
@@ -7020,11 +7020,11 @@ function Cl({
7020
7020
  position: n = "popper",
7021
7021
  ...o
7022
7022
  }) {
7023
- return /* @__PURE__ */ i(M.Portal, { children: /* @__PURE__ */ x(
7023
+ return /* @__PURE__ */ i(M.Portal, { children: /* @__PURE__ */ w(
7024
7024
  M.Content,
7025
7025
  {
7026
7026
  "data-slot": "select-content",
7027
- className: v(
7027
+ className: _(
7028
7028
  "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",
7029
7029
  n === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
7030
7030
  e
@@ -7036,7 +7036,7 @@ function Cl({
7036
7036
  /* @__PURE__ */ i(
7037
7037
  M.Viewport,
7038
7038
  {
7039
- className: v(
7039
+ className: _(
7040
7040
  "p-1",
7041
7041
  n === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
7042
7042
  ),
@@ -7053,23 +7053,23 @@ function Tl({ className: e, ...t }) {
7053
7053
  M.Label,
7054
7054
  {
7055
7055
  "data-slot": "select-label",
7056
- className: v("text-muted-foreground px-2 py-1.5 text-xs", e),
7056
+ className: _("text-muted-foreground px-2 py-1.5 text-xs", e),
7057
7057
  ...t
7058
7058
  }
7059
7059
  );
7060
7060
  }
7061
7061
  function Al({ className: e, children: t, ...n }) {
7062
- return /* @__PURE__ */ x(
7062
+ return /* @__PURE__ */ w(
7063
7063
  M.Item,
7064
7064
  {
7065
7065
  "data-slot": "select-item",
7066
- className: v(
7066
+ className: _(
7067
7067
  "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pe-8 ps-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 text-start",
7068
7068
  e
7069
7069
  ),
7070
7070
  ...n,
7071
7071
  children: [
7072
- /* @__PURE__ */ i("span", { className: "absolute inset-inline-end-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ i(M.ItemIndicator, { children: /* @__PURE__ */ i(Ie, { className: "size-4" }) }) }),
7072
+ /* @__PURE__ */ i("span", { className: "absolute end-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ i(M.ItemIndicator, { children: /* @__PURE__ */ i(Ie, { className: "size-4" }) }) }),
7073
7073
  /* @__PURE__ */ i(M.ItemText, { children: t })
7074
7074
  ]
7075
7075
  }
@@ -7080,7 +7080,7 @@ function Il({ className: e, ...t }) {
7080
7080
  M.Separator,
7081
7081
  {
7082
7082
  "data-slot": "select-separator",
7083
- className: v("bg-border pointer-events-none -mx-1 my-1 h-px", e),
7083
+ className: _("bg-border pointer-events-none -mx-1 my-1 h-px", e),
7084
7084
  ...t
7085
7085
  }
7086
7086
  );
@@ -7090,7 +7090,7 @@ function Hi({ className: e, ...t }) {
7090
7090
  M.ScrollUpButton,
7091
7091
  {
7092
7092
  "data-slot": "select-scroll-up-button",
7093
- className: v("flex cursor-default items-center justify-center py-1", e),
7093
+ className: _("flex cursor-default items-center justify-center py-1", e),
7094
7094
  ...t,
7095
7095
  children: /* @__PURE__ */ i(oo, { className: "size-4" })
7096
7096
  }
@@ -7104,9 +7104,9 @@ function ji({
7104
7104
  M.ScrollDownButton,
7105
7105
  {
7106
7106
  "data-slot": "select-scroll-down-button",
7107
- className: v("flex cursor-default items-center justify-center py-1", e),
7107
+ className: _("flex cursor-default items-center justify-center py-1", e),
7108
7108
  ...t,
7109
- children: /* @__PURE__ */ i(ve, { className: "size-4" })
7109
+ children: /* @__PURE__ */ i(_e, { className: "size-4" })
7110
7110
  }
7111
7111
  );
7112
7112
  }
@@ -7142,7 +7142,7 @@ function Dl({
7142
7142
  {
7143
7143
  "data-slot": "dropdown-menu-content",
7144
7144
  sideOffset: t,
7145
- className: v(
7145
+ className: _(
7146
7146
  "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",
7147
7147
  e
7148
7148
  ),
@@ -7162,7 +7162,7 @@ function Fl({
7162
7162
  "data-slot": "dropdown-menu-item",
7163
7163
  "data-inset": t,
7164
7164
  "data-variant": n,
7165
- className: v(
7165
+ className: _(
7166
7166
  "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
7167
7167
  e
7168
7168
  ),
@@ -7172,16 +7172,16 @@ function Fl({
7172
7172
  }
7173
7173
  function Pl({ className: e, ...t }) {
7174
7174
  return /* @__PURE__ */ i(
7175
- gt.Root,
7175
+ ht.Root,
7176
7176
  {
7177
7177
  "data-slot": "checkbox",
7178
- className: v(
7178
+ className: _(
7179
7179
  "peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
7180
7180
  e
7181
7181
  ),
7182
7182
  ...t,
7183
7183
  children: /* @__PURE__ */ i(
7184
- gt.Indicator,
7184
+ ht.Indicator,
7185
7185
  {
7186
7186
  "data-slot": "checkbox-indicator",
7187
7187
  className: "grid place-content-center text-current transition-none",
@@ -7199,19 +7199,19 @@ export {
7199
7199
  ma as D,
7200
7200
  Ol as E,
7201
7201
  Ll as F,
7202
- vl as G,
7202
+ _l as G,
7203
7203
  Dl as H,
7204
- _l as I,
7204
+ kl as I,
7205
7205
  Fl as J,
7206
- ka as K,
7206
+ va as K,
7207
7207
  Bi as L,
7208
- _a as M,
7208
+ ka as M,
7209
7209
  bl as N,
7210
7210
  fl as O,
7211
7211
  Pl as P,
7212
7212
  Pe as Q,
7213
7213
  Eo as R,
7214
- wl as S,
7214
+ xl as S,
7215
7215
  ul as T,
7216
7216
  oi as U,
7217
7217
  zo as V,
@@ -7232,17 +7232,18 @@ export {
7232
7232
  Ko as a8,
7233
7233
  So as a9,
7234
7234
  Uo as aa,
7235
- ml as ab,
7236
- Fn as ac,
7235
+ ga as ab,
7236
+ ml as ac,
7237
+ Fn as ad,
7237
7238
  mo as b,
7238
7239
  ot as c,
7239
7240
  zi as d,
7240
7241
  $ as e,
7241
- kl as f,
7242
+ vl as f,
7242
7243
  Ui as g,
7243
- hl as h,
7244
- v as i,
7245
- gl as j,
7244
+ gl as h,
7245
+ _ as i,
7246
+ hl as j,
7246
7247
  Wo as k,
7247
7248
  rn as l,
7248
7249
  an as m,
@@ -7251,12 +7252,12 @@ export {
7251
7252
  dl as p,
7252
7253
  Rl as q,
7253
7254
  fa as r,
7254
- va as s,
7255
+ _a as s,
7255
7256
  Nl as t,
7256
7257
  re as u,
7257
7258
  El as v,
7258
7259
  Cl as w,
7259
7260
  Al as x,
7260
7261
  Xo as y,
7261
- xl as z
7262
+ wl as z
7262
7263
  };