gentiq 0.7.31 → 0.8.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,35 +1,36 @@
1
- import { jsx as i, Fragment as Z, jsxs as _ } from "react/jsx-runtime";
1
+ import { jsx as i, Fragment as J, jsxs as w } from "react/jsx-runtime";
2
2
  import * as Ce from "react";
3
- import { createContext as de, useContext as Fe, useState as B, useEffect as J, useCallback as oe, useMemo as St, Children as cn, useRef as Ge, memo as pe } from "react";
3
+ import { createContext as de, useContext as Fe, useState as B, useEffect as Q, useCallback as oe, useMemo as St, Children as cn, useRef as Ge, memo as pe } from "react";
4
4
  import { useTranslation as M, initReactI18next as un } from "react-i18next";
5
5
  import { Slot as Et } from "@radix-ui/react-slot";
6
6
  import { cva as De } from "class-variance-authority";
7
- import { ArrowDownIcon as dn, ChevronDownIcon as ie, BookIcon as pn, XIcon as he, CheckIcon as Pe, ArrowUpIcon as hn, Loader2Icon as gn, SquareIcon as mn, FileIcon as Nt, PaperclipIcon as fn, MessageCircle as bn, RefreshCcwIcon as yn, ThumbsUpIcon as kn, ThumbsDownIcon as vn, CopyIcon as Tt, BrainIcon as wn, WrenchIcon as _n, ImagePlusIcon as xn, CodeIcon as Sn, DownloadIcon as ue, GlobeIcon as En, XCircleIcon as Ct, CheckCircleIcon as Nn, ClockIcon as Tn, CircleIcon as Cn, ChevronUpIcon as An } from "lucide-react";
8
- import * as X from "@radix-ui/react-tooltip";
7
+ import { ArrowDownIcon as dn, ChevronDownIcon as ie, BookIcon as pn, XIcon as he, CheckIcon as Pe, ArrowUpIcon as hn, Loader2Icon as gn, SquareIcon as mn, FileIcon as Nt, PaperclipIcon as fn, MessageCircle as bn, RefreshCcwIcon as yn, ThumbsUpIcon as kn, ThumbsDownIcon as vn, CopyIcon as Tt, BrainIcon as _n, WrenchIcon as wn, ImagePlusIcon as xn, CodeIcon as Sn, DownloadIcon as ue, GlobeIcon as En, XCircleIcon as Ct, CheckCircleIcon as Nn, ClockIcon as Tn, CircleIcon as Cn, ChevronUpIcon as An } from "lucide-react";
8
+ import * as K from "@radix-ui/react-tooltip";
9
9
  import { toast as In } from "sonner";
10
10
  import "@radix-ui/react-scroll-area";
11
- import { Streamdown as Rn } from "streamdown";
11
+ import { useQuery as Rn } from "@tanstack/react-query";
12
+ import { Streamdown as On } from "streamdown";
12
13
  import Ve from "katex";
13
14
  import { useControllableState as We } from "@radix-ui/react-use-controllable-state";
14
15
  import * as Me from "@radix-ui/react-collapsible";
15
16
  import * as H from "@radix-ui/react-dialog";
16
17
  import { PrismLight as U } from "react-syntax-highlighter";
17
- import { StickToBottom as At, useStickToBottomContext as On } from "use-stick-to-bottom";
18
- import Ln from "i18next";
18
+ import { StickToBottom as At, useStickToBottomContext as Ln } from "use-stick-to-bottom";
19
+ import Fn from "i18next";
19
20
  import * as F from "@radix-ui/react-select";
20
21
  import * as re from "@radix-ui/react-dropdown-menu";
21
22
  import * as Ye from "@radix-ui/react-checkbox";
22
- import { clsx as Fn } from "clsx";
23
- import { twMerge as Dn } from "tailwind-merge";
24
- const Pn = {
23
+ import { clsx as Dn } from "clsx";
24
+ import { twMerge as Pn } from "tailwind-merge";
25
+ const Mn = {
25
26
  theme: "system",
26
27
  setTheme: () => null,
27
28
  accent: void 0,
28
29
  setAccent: () => null,
29
30
  radius: void 0,
30
31
  setRadius: () => null
31
- }, It = de(Pn);
32
- function ki({
32
+ }, It = de(Mn);
33
+ function xi({
33
34
  children: e,
34
35
  defaultTheme: t = "system",
35
36
  storageKey: n = "chatbot-theme",
@@ -41,29 +42,29 @@ function ki({
41
42
  return u === "system" || u === "light" || u === "dark" ? u : void 0;
42
43
  }), [c, s] = B(
43
44
  () => window.localStorage.getItem(n + "-accent") || void 0
44
- ), [p, g] = B(
45
+ ), [p, f] = B(
45
46
  () => window.localStorage.getItem(n + "-radius") || "1.25rem"
46
- ), { i18n: m } = M(["theme"]), f = a ?? o?.defaultTheme ?? t, b = c ?? o?.accent;
47
- J(() => {
47
+ ), { i18n: m } = M(["theme"]), g = a ?? o?.defaultTheme ?? t, b = c ?? o?.accent;
48
+ Q(() => {
48
49
  const u = window.document.documentElement;
49
- if (u.classList.remove("light", "dark"), f === "system") {
50
- const w = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
51
- u.classList.add(w);
50
+ if (u.classList.remove("light", "dark"), g === "system") {
51
+ const _ = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
52
+ u.classList.add(_);
52
53
  return;
53
54
  }
54
- u.classList.add(f);
55
- }, [f]), J(() => {
56
- const u = window.document.documentElement, w = m.language?.split("-")[0] || m.language;
55
+ u.classList.add(g);
56
+ }, [g]), Q(() => {
57
+ const u = window.document.documentElement, _ = m.language?.split("-")[0] || m.language;
57
58
  let v = o?.typography?.fontFamily;
58
- if (typeof v == "object" && v !== null && (v = v[m.language] || v[w] || v.en || Object.values(v)[0]), v) {
59
+ if (typeof v == "object" && v !== null && (v = v[m.language] || v[_] || v.en || Object.values(v)[0]), v) {
59
60
  const C = v.includes(" ") && !v.startsWith("'") && !v.startsWith('"') ? `"${v}"` : v;
60
61
  u.style.setProperty("--gentiq-font-family", C), u.style.fontFamily = C, window.document.body && (window.document.body.style.fontFamily = C);
61
62
  }
62
63
  const h = p || (typeof o?.radius == "number" ? `${o.radius}px` : o?.radius);
63
64
  h !== void 0 && u.style.setProperty("--radius", h), b !== void 0 ? u.style.setProperty("--gentiq-primary", b) : u.style.removeProperty("--gentiq-primary"), window.document.documentElement.dir = m.dir();
64
65
  }, [o, m, m.language, b, p]);
65
- const k = {
66
- theme: f,
66
+ const y = {
67
+ theme: g,
67
68
  setTheme: (u) => {
68
69
  window.localStorage.setItem(n, u), l(u);
69
70
  },
@@ -73,12 +74,12 @@ function ki({
73
74
  },
74
75
  radius: p,
75
76
  setRadius: (u) => {
76
- u ? window.localStorage.setItem(n + "-radius", u) : window.localStorage.removeItem(n + "-radius"), g(u);
77
+ u ? window.localStorage.setItem(n + "-radius", u) : window.localStorage.removeItem(n + "-radius"), f(u);
77
78
  }
78
79
  };
79
- return /* @__PURE__ */ i(It.Provider, { ...r, value: k, children: e });
80
+ return /* @__PURE__ */ i(It.Provider, { ...r, value: y, children: e });
80
81
  }
81
- const vi = () => Fe(It), Mn = {
82
+ const Si = () => Fe(It), zn = {
82
83
  // Auth Errors
83
84
  UNAUTHORIZED: "unauthorized",
84
85
  INVALID_CREDENTIALS: "invalid_credentials",
@@ -118,8 +119,8 @@ class Xe extends Error {
118
119
  super(t.error.message), this.name = "GentiqError", this.code = t.error.code, this.status = n, this.details = t.error.details;
119
120
  }
120
121
  }
121
- function wi(e, t) {
122
- const n = typeof e == "string" ? e : e.message, o = typeof e == "string" ? e : e.code || (Object.values(Mn).includes(n) ? n : void 0);
122
+ function Ei(e, t) {
123
+ const n = typeof e == "string" ? e : e.message, o = typeof e == "string" ? e : e.code || (Object.values(zn).includes(n) ? n : void 0);
123
124
  if (typeof o != "string")
124
125
  return n || String(e);
125
126
  const r = `errors:${o}`, a = t(r);
@@ -134,7 +135,7 @@ let N = {
134
135
  cacheNamespace: "gentiq"
135
136
  }
136
137
  };
137
- const zn = {
138
+ const Un = {
138
139
  getToken: () => localStorage.getItem("token"),
139
140
  setToken: (e) => localStorage.setItem("token", e),
140
141
  clearToken: () => {
@@ -145,7 +146,7 @@ const zn = {
145
146
  return e ? { Authorization: `Bearer ${e}` } : {};
146
147
  }
147
148
  };
148
- let L = zn;
149
+ let L = Un;
149
150
  const S = {
150
151
  init: (e) => {
151
152
  if (N = {
@@ -354,7 +355,7 @@ const S = {
354
355
  return S.handleResponse(e, "Failed to fetch app configuration");
355
356
  }
356
357
  };
357
- function Un(e, t) {
358
+ function $n(e, t) {
358
359
  const [n, o] = B(
359
360
  e.metadata?.feedback
360
361
  ), r = oe((l) => {
@@ -365,7 +366,7 @@ function Un(e, t) {
365
366
  const c = n === l ? void 0 : l;
366
367
  o(c);
367
368
  try {
368
- const s = e.parts.find((g) => g.type === "data-message-id"), p = s ? s.data[0].message_id : e.id;
369
+ const s = e.parts.find((f) => f.type === "data-message-id"), p = s ? s.data[0].message_id : e.id;
369
370
  await S.saveFeedback(t, p, c ?? null);
370
371
  } catch (s) {
371
372
  console.error("Error saving feedback:", s);
@@ -377,9 +378,9 @@ function Un(e, t) {
377
378
  copy: r
378
379
  };
379
380
  }
380
- const $n = /* @__PURE__ */ new Set(["ar", "fa", "he", "ur", "yi", "ku", "ckb", "ps", "sd", "ug", "arc", "syc"]);
381
- function Bn() {
382
- const { i18n: e } = M(["translation"]), { app: t } = te(), n = St(() => {
381
+ const Bn = /* @__PURE__ */ new Set(["ar", "fa", "he", "ur", "yi", "ku", "ckb", "ps", "sd", "ug", "arc", "syc"]);
382
+ function Hn() {
383
+ const { i18n: e } = M(["translation"]), { app: t } = W(), n = St(() => {
383
384
  const l = S.getConfig(), c = t || l.app;
384
385
  return {
385
386
  name: c?.name || "Gentiq App",
@@ -388,8 +389,8 @@ function Bn() {
388
389
  language: e.language || c?.language || "en",
389
390
  showToolDetails: c?.showToolDetails ?? !0
390
391
  };
391
- }, [e.language, t]), o = (n.language ?? "").split("-")[0].toLowerCase(), r = $n.has(o), a = t?.language;
392
- return J(() => {
392
+ }, [e.language, t]), o = (n.language ?? "").split("-")[0].toLowerCase(), r = Bn.has(o), a = t?.language;
393
+ return Q(() => {
393
394
  if (typeof window > "u") return;
394
395
  const l = localStorage.getItem("gentiq-last-default-lang");
395
396
  a && a !== l && (e.changeLanguage(a), localStorage.setItem("gentiq-last-default-lang", a)), document.documentElement.dir = r ? "rtl" : "ltr", document.documentElement.lang = e.language;
@@ -403,7 +404,7 @@ function Bn() {
403
404
  error: null
404
405
  };
405
406
  }
406
- function Hn(e) {
407
+ function qn(e) {
407
408
  const {
408
409
  part: t,
409
410
  message: n,
@@ -414,13 +415,13 @@ function Hn(e) {
414
415
  conversationId: c,
415
416
  isFinished: s,
416
417
  renderMessagePart: p,
417
- chat: g,
418
+ chat: f,
418
419
  readonly: m
419
- } = e, { showToolDetails: f } = Bn(), { TextPart: b, ReasoningPart: k, ToolPart: u, FilePart: w, toolComponents: v, threadActions: h } = te(), { feedback: C, handleFeedback: E, copy: R } = Un(n, c);
420
+ } = e, { showToolDetails: g } = Hn(), { TextPart: b, ReasoningPart: y, ToolPart: u, FilePart: _, toolComponents: v, threadActions: h } = W(), { feedback: C, handleFeedback: E, copy: R } = $n(n, c);
420
421
  if (p) {
421
422
  const O = p(t, n);
422
423
  if (O !== void 0)
423
- return /* @__PURE__ */ i(Z, { children: O });
424
+ return /* @__PURE__ */ i(J, { children: O });
424
425
  }
425
426
  if (["data-progress-update", "data-message-id", "data-chat-finished", "data-title"].includes(t.type)) return null;
426
427
  const z = n.parts.filter(
@@ -443,7 +444,7 @@ function Hn(e) {
443
444
  retryEnabled: m ? !1 : h?.retry ?? !1
444
445
  }
445
446
  ) : t.type === "reasoning" ? /* @__PURE__ */ i(
446
- k,
447
+ y,
447
448
  {
448
449
  part: t,
449
450
  status: o,
@@ -456,22 +457,22 @@ function Hn(e) {
456
457
  {
457
458
  part: t,
458
459
  message: n,
459
- chat: g,
460
+ chat: f,
460
461
  toolComponents: v,
461
- showToolCalls: !!f
462
+ showToolCalls: !!g
462
463
  }
463
464
  ) : t.type === "file" ? /* @__PURE__ */ i(
464
- w,
465
+ _,
465
466
  {
466
467
  part: t,
467
468
  message: n
468
469
  }
469
470
  ) : null;
470
471
  }
471
- function y(...e) {
472
- return Dn(Fn(e));
472
+ function k(...e) {
473
+ return Pn(Dn(e));
473
474
  }
474
- function _i(e, t) {
475
+ function Ni(e, t) {
475
476
  if (t === "/") return e;
476
477
  const n = e.endsWith("/") ? e.slice(0, -1) : e, o = t.startsWith("/") ? t : "/" + t;
477
478
  return n + o;
@@ -479,7 +480,7 @@ function _i(e, t) {
479
480
  const fe = ({ className: e, ...t }) => /* @__PURE__ */ i(
480
481
  "div",
481
482
  {
482
- className: y(
483
+ className: k(
483
484
  "flex items-center gap-1.5 px-1 py-3",
484
485
  e
485
486
  ),
@@ -496,18 +497,18 @@ const fe = ({ className: e, ...t }) => /* @__PURE__ */ i(
496
497
  n
497
498
  ))
498
499
  }
499
- ), qn = /[\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC]/;
500
+ ), jn = /[\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC]/;
500
501
  function ge(e, t = "ltr") {
501
502
  if (!e) return t;
502
503
  for (const n of e) {
503
- if (qn.test(n))
504
+ if (jn.test(n))
504
505
  return "rtl";
505
506
  if (/[A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02B8]/.test(n))
506
507
  return "ltr";
507
508
  }
508
509
  return "ltr";
509
510
  }
510
- const jn = De(
511
+ const Gn = De(
511
512
  "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-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",
512
513
  {
513
514
  variants: {
@@ -532,39 +533,39 @@ const jn = De(
532
533
  }
533
534
  }
534
535
  );
535
- function Q({
536
+ function ee({
536
537
  className: e,
537
538
  variant: t,
538
539
  size: n,
539
540
  asChild: o = !1,
540
541
  ...r
541
542
  }) {
542
- return /* @__PURE__ */ i(o ? Et : "button", { "data-slot": "button", className: y(jn({ variant: t, size: n, className: e })), ...r });
543
+ return /* @__PURE__ */ i(o ? Et : "button", { "data-slot": "button", className: k(Gn({ variant: t, size: n, className: e })), ...r });
543
544
  }
544
- const Gn = ({ className: e, ...t }) => /* @__PURE__ */ i(
545
+ const Vn = ({ className: e, ...t }) => /* @__PURE__ */ i(
545
546
  At,
546
547
  {
547
- className: y("relative flex-1 overflow-hidden", e),
548
+ className: k("relative flex-1 overflow-hidden", e),
548
549
  initial: "smooth",
549
550
  resize: "smooth",
550
551
  role: "log",
551
552
  ...t
552
553
  }
553
- ), Vn = ({ className: e, ...t }) => /* @__PURE__ */ i(
554
+ ), Wn = ({ className: e, ...t }) => /* @__PURE__ */ i(
554
555
  At.Content,
555
556
  {
556
- className: y("p-4 pb-6 stick-to-bottom", e),
557
+ className: k("p-4 pb-6 stick-to-bottom", e),
557
558
  scrollClassName: "custom-scrollbar",
558
559
  ...t
559
560
  }
560
- ), Wn = ({ className: e, ...t }) => {
561
- const { isAtBottom: n, scrollToBottom: o } = On(), r = oe(() => {
561
+ ), Yn = ({ className: e, ...t }) => {
562
+ const { isAtBottom: n, scrollToBottom: o } = Ln(), r = oe(() => {
562
563
  o();
563
564
  }, [o]);
564
565
  return n ? null : /* @__PURE__ */ i(
565
566
  "button",
566
567
  {
567
- className: y(
568
+ className: k(
568
569
  "absolute bottom-32 left-1/2 -translate-x-1/2 z-10",
569
570
  "flex items-center gap-1.5 px-4 py-2 rounded-full text-sm font-medium",
570
571
  "glass border border-border/50 shadow-lg shadow-black/10",
@@ -590,40 +591,40 @@ function Ue({ ...e }) {
590
591
  function $e({ ...e }) {
591
592
  return /* @__PURE__ */ i(Me.CollapsibleContent, { "data-slot": "collapsible-content", ...e });
592
593
  }
593
- const Yn = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: y("not-prose mb-4 text-primary text-xs", e), ...t }), Xn = ({ className: e, count: t, children: n, ...o }) => {
594
+ const Xn = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: k("not-prose mb-4 text-primary text-xs", e), ...t }), Kn = ({ className: e, count: t, children: n, ...o }) => {
594
595
  const { t: r } = M(["chat"]);
595
- return /* @__PURE__ */ i(Ue, { className: y("flex items-center gap-2", e), ...o, children: n ?? /* @__PURE__ */ _(Z, { children: [
596
+ return /* @__PURE__ */ i(Ue, { className: k("flex items-center gap-2", e), ...o, children: n ?? /* @__PURE__ */ w(J, { children: [
596
597
  /* @__PURE__ */ i("p", { className: "font-medium", children: r("used_sources", { count: t }) }),
597
598
  /* @__PURE__ */ i(ie, { className: "h-4 w-4" })
598
599
  ] }) });
599
- }, Kn = ({ className: e, ...t }) => /* @__PURE__ */ i(
600
+ }, Zn = ({ className: e, ...t }) => /* @__PURE__ */ i(
600
601
  $e,
601
602
  {
602
- className: y(
603
+ className: k(
603
604
  "mt-3 flex w-fit flex-col gap-2",
604
605
  "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",
605
606
  e
606
607
  ),
607
608
  ...t
608
609
  }
609
- ), Zn = ({ 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__ */ _(Z, { children: [
610
+ ), Jn = ({ 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(J, { children: [
610
611
  /* @__PURE__ */ i(pn, { className: "h-4 w-4" }),
611
612
  /* @__PURE__ */ i("span", { className: "block font-medium", children: t })
612
- ] }) }), Jn = ({ latestProgress: e, parts: t }) => {
613
+ ] }) }), Qn = ({ latestProgress: e, parts: t }) => {
613
614
  const n = e.data[0].status, o = e.data[0].message, r = t.lastIndexOf(e);
614
615
  if (!!(t.slice(r + 1).some(
615
616
  (m) => m.type === "text" && (m.text || "").trim().length > 0 || m.type === "tool-invocation" || m.type === "tool-call"
616
617
  ) && n !== "running")) return null;
617
- const s = n === "running", p = n === "error", g = ge(o);
618
- return /* @__PURE__ */ i("div", { className: y(
618
+ const s = n === "running", p = n === "error", f = ge(o);
619
+ return /* @__PURE__ */ i("div", { className: k(
619
620
  "flex w-full py-3 mx-auto max-w-4xl px-4 md:px-0 animate-in-bubble",
620
- g === "rtl" ? "justify-end" : "justify-start"
621
- ), children: /* @__PURE__ */ _("div", { className: y("flex items-center gap-3 text-sm text-muted-foreground", g === "rtl" && "flex-row-reverse"), dir: g, children: [
621
+ f === "rtl" ? "justify-end" : "justify-start"
622
+ ), children: /* @__PURE__ */ w("div", { className: k("flex items-center gap-3 text-sm text-muted-foreground", f === "rtl" && "flex-row-reverse"), dir: f, children: [
622
623
  s ? /* @__PURE__ */ i("div", { className: "size-4 animate-spin rounded-full border-2 border-primary border-r-transparent shrink-0" }) : p ? /* @__PURE__ */ i(he, { className: "size-4 text-destructive shrink-0" }) : /* @__PURE__ */ i(Pe, { className: "size-4 text-green-500 shrink-0" }),
623
- /* @__PURE__ */ i("span", { className: y("font-medium", s && "animate-pulse"), children: o })
624
+ /* @__PURE__ */ i("span", { className: k("font-medium", s && "animate-pulse"), children: o })
624
625
  ] }) });
625
626
  };
626
- function Qn({
627
+ function eo({
627
628
  messages: e,
628
629
  status: t,
629
630
  isLoadingHistory: n,
@@ -635,66 +636,66 @@ function Qn({
635
636
  className: s,
636
637
  readonly: p
637
638
  }) {
638
- const { i18n: g, t: m } = M(["chat", "translation"]), f = g.language === "fa", { WelcomeScreen: b } = te(), k = e[e.length - 1], u = k?.role === "assistant" && (t === "ready" || k.parts.some((w) => w.type === "data-chat-finished"));
639
- return /* @__PURE__ */ _(Gn, { className: y("min-h-0 flex-1", s), children: [
640
- /* @__PURE__ */ _(Vn, { className: "max-w-4xl mx-auto w-full px-4 md:px-0 pb-32", dir: "ltr", children: [
641
- e.length === 0 && !n ? /* @__PURE__ */ i(b, { onSuggestionClick: l }) : e.map((w) => /* @__PURE__ */ _("div", { children: [
642
- w.role === "assistant" && w.parts.filter((v) => v.type === "source-url").length > 0 && /* @__PURE__ */ _(Yn, { children: [
643
- /* @__PURE__ */ i(Xn, { count: w.parts.filter((v) => v.type === "source-url").length }),
644
- w.parts.filter((v) => v.type === "source-url").map((v, h) => /* @__PURE__ */ i(Kn, { children: /* @__PURE__ */ i(Zn, { href: v.url, title: v.url }, `${w.id}-${h}`) }, `${w.id}-${h}`))
639
+ const { i18n: f, t: m } = M(["chat", "translation"]), g = f.language === "fa", { WelcomeScreen: b } = W(), y = e[e.length - 1], u = y?.role === "assistant" && (t === "ready" || y.parts.some((_) => _.type === "data-chat-finished"));
640
+ return /* @__PURE__ */ w(Vn, { className: k("min-h-0 flex-1", s), children: [
641
+ /* @__PURE__ */ w(Wn, { className: "max-w-4xl mx-auto w-full px-4 md:px-0 pb-32", dir: "ltr", children: [
642
+ e.length === 0 && !n ? /* @__PURE__ */ i(b, { onSuggestionClick: l }) : e.map((_) => /* @__PURE__ */ w("div", { children: [
643
+ _.role === "assistant" && _.parts.filter((v) => v.type === "source-url").length > 0 && /* @__PURE__ */ w(Xn, { children: [
644
+ /* @__PURE__ */ i(Kn, { count: _.parts.filter((v) => v.type === "source-url").length }),
645
+ _.parts.filter((v) => v.type === "source-url").map((v, h) => /* @__PURE__ */ i(Zn, { children: /* @__PURE__ */ i(Jn, { href: v.url, title: v.url }, `${_.id}-${h}`) }, `${_.id}-${h}`))
645
646
  ] }),
646
- w.parts.map((v, h) => /* @__PURE__ */ i(
647
- Hn,
647
+ _.parts.map((v, h) => /* @__PURE__ */ i(
648
+ qn,
648
649
  {
649
650
  part: v,
650
- message: w,
651
+ message: _,
651
652
  status: t,
652
653
  index: h,
653
654
  regen: a,
654
- lastMessage: w.id === e.at(-1)?.id,
655
+ lastMessage: _.id === e.at(-1)?.id,
655
656
  conversationId: r,
656
657
  isFinished: u,
657
658
  chat: c,
658
659
  readonly: p
659
660
  },
660
- `${w.id}-${h}`
661
+ `${_.id}-${h}`
661
662
  ))
662
- ] }, w.id)),
663
+ ] }, _.id)),
663
664
  (() => {
664
- if (!k || k.role !== "assistant") return null;
665
- const w = k.parts.filter((h) => h.type === "data-progress-update");
666
- if (w.length === 0) return null;
667
- const v = w[w.length - 1];
668
- return v ? /* @__PURE__ */ i(Jn, { latestProgress: v, parts: k.parts }) : null;
665
+ if (!y || y.role !== "assistant") return null;
666
+ const _ = y.parts.filter((h) => h.type === "data-progress-update");
667
+ if (_.length === 0) return null;
668
+ const v = _[_.length - 1];
669
+ return v ? /* @__PURE__ */ i(Qn, { latestProgress: v, parts: y.parts }) : null;
669
670
  })(),
670
671
  (n || t === "submitted") && /* @__PURE__ */ i("div", { className: "animate-in-bubble", children: /* @__PURE__ */ i(fe, {}) }),
671
672
  t === "streaming" && (() => {
672
- const w = e[e.length - 1];
673
- return !w || w.role === "user" ? /* @__PURE__ */ i(fe, {}) : w.parts?.some(
673
+ const _ = e[e.length - 1];
674
+ return !_ || _.role === "user" ? /* @__PURE__ */ i(fe, {}) : _.parts?.some(
674
675
  (h) => h.type === "text" && h.text?.trim().length > 0 || h.type === "reasoning" || h.type === "tool-invocation" || h.type === "tool-call"
675
676
  ) ? null : /* @__PURE__ */ i(fe, {});
676
677
  })(),
677
- t === "error" && o && /* @__PURE__ */ i("div", { className: "mx-auto max-w-4xl w-full px-4 my-3 animate-in-bubble", children: /* @__PURE__ */ _("div", { className: y(
678
+ t === "error" && o && /* @__PURE__ */ i("div", { className: "mx-auto max-w-4xl w-full px-4 my-3 animate-in-bubble", children: /* @__PURE__ */ w("div", { className: k(
678
679
  "flex w-full items-start gap-3 px-4 py-3.5 rounded-xl bg-destructive/8 border border-destructive/15",
679
- f ? "border-r-2 border-r-destructive/60" : "border-l-2 border-l-destructive/60"
680
- ), dir: f ? "rtl" : "ltr", children: [
680
+ g ? "border-r-2 border-r-destructive/60" : "border-l-2 border-l-destructive/60"
681
+ ), dir: g ? "rtl" : "ltr", children: [
681
682
  /* @__PURE__ */ i("div", { className: "size-1.5 rounded-full bg-destructive mt-2 shrink-0" }),
682
- /* @__PURE__ */ _("div", { className: y("text-sm text-destructive/90 leading-relaxed flex-1", f ? "text-right" : "text-left"), children: [
683
+ /* @__PURE__ */ w("div", { className: k("text-sm text-destructive/90 leading-relaxed flex-1", g ? "text-right" : "text-left"), children: [
683
684
  /* @__PURE__ */ i("span", { className: "font-semibold", children: m("error") }),
684
685
  " ",
685
686
  o.message
686
687
  ] })
687
688
  ] }) })
688
689
  ] }),
689
- /* @__PURE__ */ i(Wn, {})
690
+ /* @__PURE__ */ i(Yn, {})
690
691
  ] });
691
692
  }
692
- function eo({ className: e, ...t }) {
693
+ function to({ className: e, ...t }) {
693
694
  return /* @__PURE__ */ i(
694
695
  "textarea",
695
696
  {
696
697
  "data-slot": "textarea",
697
- className: y(
698
+ className: k(
698
699
  "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",
699
700
  e
700
701
  ),
@@ -702,10 +703,10 @@ function eo({ className: e, ...t }) {
702
703
  }
703
704
  );
704
705
  }
705
- const to = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg-transparent w-full", children: /* @__PURE__ */ i(
706
+ const no = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg-transparent w-full", children: /* @__PURE__ */ i(
706
707
  "form",
707
708
  {
708
- className: y(
709
+ className: k(
709
710
  "w-full flex items-end gap-2 overflow-hidden",
710
711
  "rounded-lg bg-surface glow-primary",
711
712
  "px-3 py-2",
@@ -717,7 +718,7 @@ const to = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg
717
718
  ),
718
719
  ...t
719
720
  }
720
- ) }), no = ({
721
+ ) }), oo = ({
721
722
  onChange: e,
722
723
  className: t,
723
724
  placeholder: n = "What would you like to know?",
@@ -733,10 +734,10 @@ const to = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg
733
734
  }
734
735
  }, { i18n: a } = M(["chat"]), l = ge(o.value, a.dir());
735
736
  return /* @__PURE__ */ i(
736
- eo,
737
+ to,
737
738
  {
738
739
  dir: l,
739
- className: y(
740
+ className: k(
740
741
  "flex-1 resize-none rounded-none border-none shadow-none outline-none ring-0",
741
742
  "px-2 py-2.5",
742
743
  "field-sizing-content max-h-[6lh] bg-transparent dark:bg-transparent",
@@ -754,12 +755,12 @@ const to = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg
754
755
  ...o
755
756
  }
756
757
  );
757
- }, oo = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: y("flex shrink-0 items-center gap-1.5 pb-1", e), ...t }), ro = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: y("flex items-center gap-0.5", e), ...t }), ao = ({ variant: e = "ghost", className: t, size: n, ...o }) => {
758
+ }, ro = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: k("flex shrink-0 items-center gap-1.5 pb-1", e), ...t }), ao = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: k("flex items-center gap-0.5", e), ...t }), io = ({ variant: e = "ghost", className: t, size: n, ...o }) => {
758
759
  const r = n ?? cn.count(o.children) > 1 ? "default" : "icon";
759
760
  return /* @__PURE__ */ i(
760
- Q,
761
+ ee,
761
762
  {
762
- className: y(
763
+ className: k(
763
764
  "shrink-0 gap-1.5 rounded-xl",
764
765
  "text-muted-foreground hover:text-foreground",
765
766
  "hover:bg-accent/60 transition-all duration-200",
@@ -773,7 +774,7 @@ const to = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg
773
774
  ...o
774
775
  }
775
776
  );
776
- }, io = ({
777
+ }, lo = ({
777
778
  className: e,
778
779
  variant: t = "default",
779
780
  size: n = "icon",
@@ -783,9 +784,9 @@ const to = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg
783
784
  }) => {
784
785
  let l = /* @__PURE__ */ i(hn, { className: "size-4" });
785
786
  return o === "submitted" ? l = /* @__PURE__ */ i(gn, { className: "size-4 animate-spin" }) : o === "streaming" ? l = /* @__PURE__ */ i(mn, { className: "size-3.5 fill-current" }) : o === "error" && (l = /* @__PURE__ */ i(he, { className: "size-4" })), /* @__PURE__ */ i(
786
- Q,
787
+ ee,
787
788
  {
788
- className: y(
789
+ className: k(
789
790
  "shrink-0 rounded-lg size-9",
790
791
  "bg-gradient-to-br from-primary to-primary/80",
791
792
  "text-primary-foreground",
@@ -808,13 +809,13 @@ const to = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg
808
809
  );
809
810
  };
810
811
  function Rt({ delayDuration: e = 400, ...t }) {
811
- return /* @__PURE__ */ i(X.Provider, { "data-slot": "tooltip-provider", delayDuration: e, ...t });
812
+ return /* @__PURE__ */ i(K.Provider, { "data-slot": "tooltip-provider", delayDuration: e, ...t });
812
813
  }
813
814
  function Ot({ ...e }) {
814
- return /* @__PURE__ */ i(Rt, { children: /* @__PURE__ */ i(X.Root, { "data-slot": "tooltip", ...e }) });
815
+ return /* @__PURE__ */ i(Rt, { children: /* @__PURE__ */ i(K.Root, { "data-slot": "tooltip", ...e }) });
815
816
  }
816
817
  function Lt({ ...e }) {
817
- return /* @__PURE__ */ i(X.Trigger, { "data-slot": "tooltip-trigger", ...e });
818
+ return /* @__PURE__ */ i(K.Trigger, { "data-slot": "tooltip-trigger", ...e });
818
819
  }
819
820
  function Ft({
820
821
  className: e,
@@ -822,25 +823,25 @@ function Ft({
822
823
  children: n,
823
824
  ...o
824
825
  }) {
825
- return /* @__PURE__ */ i(X.Portal, { children: /* @__PURE__ */ _(
826
- X.Content,
826
+ return /* @__PURE__ */ i(K.Portal, { children: /* @__PURE__ */ w(
827
+ K.Content,
827
828
  {
828
829
  "data-slot": "tooltip-content",
829
830
  sideOffset: t,
830
- className: y(
831
+ className: k(
831
832
  "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",
832
833
  e
833
834
  ),
834
835
  ...o,
835
836
  children: [
836
837
  n,
837
- /* @__PURE__ */ i(X.Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
838
+ /* @__PURE__ */ i(K.Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
838
839
  ]
839
840
  }
840
841
  ) });
841
842
  }
842
843
  const be = 768;
843
- function lo() {
844
+ function so() {
844
845
  const [e, t] = Ce.useState(void 0);
845
846
  return Ce.useEffect(() => {
846
847
  const n = window.matchMedia(`(max-width: ${be - 1}px)`), o = () => {
@@ -851,7 +852,7 @@ function lo() {
851
852
  };
852
853
  }, []), !!e;
853
854
  }
854
- function so({
855
+ function co({
855
856
  onSend: e,
856
857
  status: t,
857
858
  isLastMessageFinished: n,
@@ -860,64 +861,64 @@ function so({
860
861
  conversationId: a,
861
862
  className: l
862
863
  }) {
863
- const { t: c } = M(["chat", "translation"]), { composer: s } = te(), [p, g] = B(""), [m, f] = B([]), b = lo(), k = Ge(null), u = Ge(null);
864
- J(() => {
865
- !b && a === "/" && k.current && k.current.focus();
864
+ const { t: c } = M(["chat", "translation"]), { composer: s } = W(), [p, f] = B(""), [m, g] = B([]), b = so(), y = Ge(null), u = Ge(null);
865
+ Q(() => {
866
+ !b && a === "/" && y.current && y.current.focus();
866
867
  }, [a, b]);
867
- const w = oe((E) => {
868
+ const _ = oe((E) => {
868
869
  if (E.target.files) {
869
870
  const R = Array.from(E.target.files), $ = s?.attachments?.maxSize;
870
871
  if ($ && R.filter((ne) => ne.size > $).length > 0) {
871
872
  In.error(c("file_too_large", { size: $ }));
872
873
  return;
873
874
  }
874
- f((z) => [...z, ...R]);
875
+ g((z) => [...z, ...R]);
875
876
  }
876
877
  E.target.value = "";
877
878
  }, [s, c]), v = oe((E) => {
878
- f((R) => R.filter(($, z) => z !== E));
879
+ g((R) => R.filter(($, z) => z !== E));
879
880
  }, []), h = t === "streaming" && !n, C = (E) => {
880
881
  if (E.preventDefault(), !h && (p.trim() || m.length > 0)) {
881
882
  const R = new DataTransfer();
882
- m.forEach(($) => R.items.add($)), e(p, R.files), g(""), f([]);
883
+ m.forEach(($) => R.items.add($)), e(p, R.files), f(""), g([]);
883
884
  }
884
885
  };
885
- return /* @__PURE__ */ i("div", { className: y("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__ */ _(to, { onSubmit: C, children: [
886
+ return /* @__PURE__ */ i("div", { className: k("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(no, { onSubmit: C, children: [
886
887
  /* @__PURE__ */ i(
887
888
  "input",
888
889
  {
889
890
  type: "file",
890
891
  ref: u,
891
- onChange: w,
892
+ onChange: _,
892
893
  multiple: !0,
893
894
  accept: s?.attachments?.types?.join(",") || "image/*,text/*,.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx",
894
895
  className: "hidden"
895
896
  }
896
897
  ),
897
- /* @__PURE__ */ _("div", { className: "flex flex-col flex-1 gap-2", children: [
898
- m.length > 0 && /* @__PURE__ */ i("div", { className: "flex flex-wrap gap-2 px-2 pt-2", children: m.map((E, R) => /* @__PURE__ */ _("div", { className: "group relative flex items-center gap-2 rounded-xl glass-surface px-2.5 py-1.5 text-sm shadow-sm", children: [
898
+ /* @__PURE__ */ w("div", { className: "flex flex-col flex-1 gap-2", children: [
899
+ m.length > 0 && /* @__PURE__ */ i("div", { className: "flex flex-wrap gap-2 px-2 pt-2", children: m.map((E, R) => /* @__PURE__ */ w("div", { className: "group relative flex items-center gap-2 rounded-xl glass-surface px-2.5 py-1.5 text-sm shadow-sm", children: [
899
900
  E.type.startsWith("image/") ? /* @__PURE__ */ i("img", { src: URL.createObjectURL(E), alt: E.name, className: "size-7 rounded-lg object-cover ring-1 ring-border/50" }) : /* @__PURE__ */ i(Nt, { className: "size-3.5 text-muted-foreground shrink-0" }),
900
901
  /* @__PURE__ */ i("span", { className: "max-w-[120px] truncate text-xs font-medium text-foreground/80", children: E.name }),
901
902
  /* @__PURE__ */ i("button", { type: "button", onClick: () => v(R), className: "ml-0.5 flex items-center justify-center size-4 rounded-full hover:bg-destructive/15 text-muted-foreground/60 hover:text-destructive transition-all duration-150", children: /* @__PURE__ */ i(he, { className: "size-2.5" }) })
902
903
  ] }, `${E.name}-${R}`)) }),
903
904
  /* @__PURE__ */ i(
904
- no,
905
+ oo,
905
906
  {
906
- ref: k,
907
- onChange: (E) => g(E.target.value),
907
+ ref: y,
908
+ onChange: (E) => f(E.target.value),
908
909
  value: p,
909
910
  autoFocus: !b,
910
911
  placeholder: s?.placeholder ? c(s.placeholder) : c("input_placeholder")
911
912
  }
912
913
  )
913
914
  ] }),
914
- /* @__PURE__ */ _(oo, { children: [
915
- /* @__PURE__ */ i(ro, { children: (s?.attachments?.enabled ?? !1) && /* @__PURE__ */ _(Ot, { children: [
916
- /* @__PURE__ */ i(Lt, { asChild: !0, children: /* @__PURE__ */ i(ao, { variant: "ghost", onClick: () => u.current?.click(), disabled: h, children: /* @__PURE__ */ i(fn, { className: "size-4" }) }) }),
915
+ /* @__PURE__ */ w(ro, { children: [
916
+ /* @__PURE__ */ i(ao, { children: (s?.attachments?.enabled ?? !1) && /* @__PURE__ */ w(Ot, { children: [
917
+ /* @__PURE__ */ i(Lt, { asChild: !0, children: /* @__PURE__ */ i(io, { variant: "ghost", onClick: () => u.current?.click(), disabled: h, children: /* @__PURE__ */ i(fn, { className: "size-4" }) }) }),
917
918
  /* @__PURE__ */ i(Ft, { children: c("attach_file") })
918
919
  ] }) }),
919
920
  /* @__PURE__ */ i(
920
- io,
921
+ lo,
921
922
  {
922
923
  disabled: t !== "streaming" && !p && m.length === 0,
923
924
  status: r ? "error" : t === "error" ? void 0 : n ? "ready" : t,
@@ -927,7 +928,7 @@ function so({
927
928
  ] })
928
929
  ] }) }) });
929
930
  }
930
- const co = ({
931
+ const uo = ({
931
932
  suggestion: e,
932
933
  onClick: t,
933
934
  className: n,
@@ -940,9 +941,9 @@ const co = ({
940
941
  t?.(e);
941
942
  };
942
943
  return /* @__PURE__ */ i(
943
- Q,
944
+ ee,
944
945
  {
945
- className: y("cursor-pointer rounded-full px-4", n),
946
+ className: k("cursor-pointer rounded-full px-4", n),
946
947
  onClick: c,
947
948
  size: r,
948
949
  type: "button",
@@ -951,39 +952,54 @@ const co = ({
951
952
  children: a ?? e
952
953
  }
953
954
  );
954
- }, uo = ({ onSuggestionClick: e, icons: t }) => {
955
- const { t: n, i18n: o } = M(["chat", "translation"]), { welcome: r } = te(), a = r?.prompts ?? [], l = a.map((g) => {
956
- const m = typeof g == "string" ? g : g.text;
957
- return n(m);
958
- }).filter((g) => g !== null && g !== ""), c = o.dir() === "rtl", s = r?.greeting ? n(r.greeting) ?? r.greeting : n("welcome.title"), p = r?.subtitle ? n(r.subtitle) : null;
959
- return /* @__PURE__ */ _(
955
+ }, po = (e) => [e, "currentUser"];
956
+ function ho(e = {}) {
957
+ const { app: t } = W(), n = t?.cacheNamespace || "gentiq", o = Rn({
958
+ queryKey: po(n),
959
+ queryFn: () => S.getMe(),
960
+ enabled: e.enabled ?? !0
961
+ }), r = o.data ?? null, a = r?.name.trim() || null;
962
+ return {
963
+ ...o,
964
+ user: r,
965
+ firstName: a
966
+ };
967
+ }
968
+ const go = ({ onSuggestionClick: e, icons: t }) => {
969
+ const { t: n, i18n: o } = M(["chat", "translation"]), { welcome: r } = W(), a = typeof r?.greeting == "function", { user: l, firstName: c, isLoading: s } = ho({
970
+ enabled: a
971
+ }), p = r?.prompts ?? [], f = p.map((u) => {
972
+ const _ = typeof u == "string" ? u : u.text;
973
+ return n(_);
974
+ }).filter((u) => u !== null && u !== ""), m = o.dir() === "rtl", g = r?.greeting, b = typeof g == "function" ? g({ user: l, firstName: c, isLoading: s, t: n }) : g ? n(g) ?? g : n("welcome.title"), y = r?.subtitle ? n(r.subtitle) : null;
975
+ return /* @__PURE__ */ w(
960
976
  "div",
961
977
  {
962
- dir: c ? "rtl" : "ltr",
978
+ dir: m ? "rtl" : "ltr",
963
979
  className: "flex flex-col items-center justify-center min-h-[60vh] text-center px-6 animate-in fade-in duration-700 ease-out",
964
980
  children: [
965
- r?.icon && /* @__PURE__ */ _("div", { className: "mb-8 relative flex items-center justify-center", children: [
981
+ r?.icon && /* @__PURE__ */ w("div", { className: "mb-8 relative flex items-center justify-center", children: [
966
982
  /* @__PURE__ */ i("div", { className: "absolute size-24 rounded-full bg-primary/5 blur-[40px] animate-pulse" }),
967
983
  /* @__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 })
968
984
  ] }),
969
- (s || p) && /* @__PURE__ */ _("div", { className: "space-y-3 mb-12 max-w-xl mx-auto", children: [
970
- s && /* @__PURE__ */ i("h1", { className: "text-2xl md:text-3xl font-black tracking-tight leading-tight text-foreground", children: s }),
971
- p && /* @__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: p })
985
+ (b || y) && /* @__PURE__ */ w("div", { className: "space-y-3 mb-12 max-w-xl mx-auto", children: [
986
+ b && /* @__PURE__ */ i("h1", { className: "text-2xl md:text-3xl font-black tracking-tight leading-tight text-foreground", children: b }),
987
+ y && /* @__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: y })
972
988
  ] }),
973
- l.length > 0 && /* @__PURE__ */ i("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-3 w-full max-w-xl", children: l.map((g, m) => {
974
- const f = a[m], b = typeof f != "string" ? f.icon : null, k = t && t[m % t.length] ? t[m % t.length] : bn, u = b || k;
989
+ f.length > 0 && /* @__PURE__ */ i("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-3 w-full max-w-xl", children: f.map((u, _) => {
990
+ const v = p[_], h = typeof v != "string" ? v.icon : null, C = t && t[_ % t.length] ? t[_ % t.length] : bn, E = h || C;
975
991
  return /* @__PURE__ */ i(
976
992
  "div",
977
993
  {
978
994
  className: "animate-in fade-in slide-in-from-bottom-3 duration-700 fill-mode-both",
979
- style: { animationDelay: `${m * 80}ms` },
980
- children: /* @__PURE__ */ _(
981
- co,
995
+ style: { animationDelay: `${_ * 80}ms` },
996
+ children: /* @__PURE__ */ w(
997
+ uo,
982
998
  {
983
- onClick: () => e(g),
984
- suggestion: g,
999
+ onClick: () => e(u),
1000
+ suggestion: u,
985
1001
  variant: "ghost",
986
- className: y(
1002
+ className: k(
987
1003
  "h-full py-4 px-5 justify-start text-start items-center whitespace-normal w-full",
988
1004
  "group rounded-xl relative overflow-hidden",
989
1005
  "bg-secondary/45 border border-border/12 dark:bg-secondary/20 dark:border-border/5",
@@ -991,19 +1007,19 @@ const co = ({
991
1007
  "hover:-translate-y-0.5 transition-[background-color,border-color,transform] duration-300 ease-out-quint"
992
1008
  ),
993
1009
  children: [
994
- /* @__PURE__ */ _("div", { className: "flex items-center gap-3 w-full text-start", children: [
995
- /* @__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(u, { className: "size-4" }) }),
996
- /* @__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: g.length > 60 ? g.substring(0, 60) + "..." : g }) })
1010
+ /* @__PURE__ */ w("div", { className: "flex items-center gap-3 w-full text-start", children: [
1011
+ /* @__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(E, { className: "size-4" }) }),
1012
+ /* @__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: u.length > 60 ? u.substring(0, 60) + "..." : u }) })
997
1013
  ] }),
998
- /* @__PURE__ */ i("div", { className: y(
1014
+ /* @__PURE__ */ i("div", { className: k(
999
1015
  "absolute bottom-0 left-0 w-full h-[1.5px] bg-primary scale-x-0 group-hover:scale-x-100 transition-transform duration-500",
1000
- c ? "origin-right" : "origin-left"
1016
+ m ? "origin-right" : "origin-left"
1001
1017
  ) })
1002
1018
  ]
1003
1019
  }
1004
1020
  )
1005
1021
  },
1006
- m
1022
+ _
1007
1023
  );
1008
1024
  }) })
1009
1025
  ]
@@ -1012,7 +1028,7 @@ const co = ({
1012
1028
  }, Dt = ({ className: e, from: t, ...n }) => /* @__PURE__ */ i(
1013
1029
  "div",
1014
1030
  {
1015
- className: y(
1031
+ className: k(
1016
1032
  "group flex w-full items-end gap-3",
1017
1033
  t === "user" ? "is-user justify-end" : "is-assistant",
1018
1034
  e
@@ -1022,7 +1038,7 @@ const co = ({
1022
1038
  ), Pt = ({ children: e, className: t, isPlain: n, ...o }) => /* @__PURE__ */ i(
1023
1039
  "div",
1024
1040
  {
1025
- className: y(
1041
+ className: k(
1026
1042
  "flex flex-col gap-2 overflow-hidden text-[1.0625rem]",
1027
1043
  // User bubble: gradient pill with glow shadow
1028
1044
  !n && [
@@ -1043,10 +1059,10 @@ const co = ({
1043
1059
  ...o,
1044
1060
  children: e
1045
1061
  }
1046
- ), po = ({ className: e, children: t, ...n }) => /* @__PURE__ */ i(
1062
+ ), mo = ({ className: e, children: t, ...n }) => /* @__PURE__ */ i(
1047
1063
  "div",
1048
1064
  {
1049
- className: y(
1065
+ className: k(
1050
1066
  "flex items-center gap-0.5",
1051
1067
  "opacity-100",
1052
1068
  "transition-opacity duration-200",
@@ -1064,10 +1080,10 @@ const co = ({
1064
1080
  size: a = "sm",
1065
1081
  ...l
1066
1082
  }) => {
1067
- const c = /* @__PURE__ */ _(
1068
- Q,
1083
+ const c = /* @__PURE__ */ w(
1084
+ ee,
1069
1085
  {
1070
- className: y(
1086
+ className: k(
1071
1087
  "size-7 p-1 rounded-lg",
1072
1088
  "text-muted-foreground/60 hover:text-foreground",
1073
1089
  "hover:bg-accent/70",
@@ -1085,7 +1101,7 @@ const co = ({
1085
1101
  ]
1086
1102
  }
1087
1103
  );
1088
- return e ? /* @__PURE__ */ i(Rt, { children: /* @__PURE__ */ _(Ot, { children: [
1104
+ return e ? /* @__PURE__ */ i(Rt, { children: /* @__PURE__ */ w(Ot, { children: [
1089
1105
  /* @__PURE__ */ i(Lt, { asChild: !0, children: c }),
1090
1106
  /* @__PURE__ */ i(Ft, { children: /* @__PURE__ */ i("p", { children: e }) })
1091
1107
  ] }) }) : c;
@@ -1142,17 +1158,17 @@ D.prototype.overloadedBoolean = !1;
1142
1158
  D.prototype.property = "";
1143
1159
  D.prototype.spaceSeparated = !1;
1144
1160
  D.prototype.space = void 0;
1145
- let ho = 0;
1146
- const x = G(), I = G(), Ae = G(), d = G(), T = G(), K = G(), P = G();
1161
+ let fo = 0;
1162
+ const x = G(), I = G(), Ae = G(), d = G(), T = G(), Z = G(), P = G();
1147
1163
  function G() {
1148
- return 2 ** ++ho;
1164
+ return 2 ** ++fo;
1149
1165
  }
1150
1166
  const Ie = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1151
1167
  __proto__: null,
1152
1168
  boolean: x,
1153
1169
  booleanish: I,
1154
1170
  commaOrSpaceSeparated: P,
1155
- commaSeparated: K,
1171
+ commaSeparated: Z,
1156
1172
  number: d,
1157
1173
  overloadedBoolean: Ae,
1158
1174
  spaceSeparated: T
@@ -1187,7 +1203,7 @@ Be.prototype.defined = !0;
1187
1203
  function Ke(e, t, n) {
1188
1204
  n && (e[t] = n);
1189
1205
  }
1190
- function ee(e) {
1206
+ function te(e) {
1191
1207
  const t = {}, n = {};
1192
1208
  for (const [o, r] of Object.entries(e.properties)) {
1193
1209
  const a = new Be(
@@ -1200,7 +1216,7 @@ function ee(e) {
1200
1216
  }
1201
1217
  return new le(t, n, e.space);
1202
1218
  }
1203
- const zt = ee({
1219
+ const zt = te({
1204
1220
  properties: {
1205
1221
  ariaActiveDescendant: null,
1206
1222
  ariaAtomic: I,
@@ -1262,7 +1278,7 @@ function Ut(e, t) {
1262
1278
  function $t(e, t) {
1263
1279
  return Ut(e, t.toLowerCase());
1264
1280
  }
1265
- const go = ee({
1281
+ const bo = te({
1266
1282
  attributes: {
1267
1283
  acceptcharset: "accept-charset",
1268
1284
  classname: "class",
@@ -1273,7 +1289,7 @@ const go = ee({
1273
1289
  properties: {
1274
1290
  // Standard Properties.
1275
1291
  abbr: null,
1276
- accept: K,
1292
+ accept: Z,
1277
1293
  acceptCharset: T,
1278
1294
  accessKey: T,
1279
1295
  action: null,
@@ -1300,7 +1316,7 @@ const go = ee({
1300
1316
  contentEditable: I,
1301
1317
  controls: x,
1302
1318
  controlsList: T,
1303
- coords: d | K,
1319
+ coords: d | Z,
1304
1320
  crossOrigin: null,
1305
1321
  data: null,
1306
1322
  dateTime: null,
@@ -1623,7 +1639,7 @@ const go = ee({
1623
1639
  },
1624
1640
  space: "html",
1625
1641
  transform: $t
1626
- }), mo = ee({
1642
+ }), yo = te({
1627
1643
  attributes: {
1628
1644
  accentHeight: "accent-height",
1629
1645
  alignmentBaseline: "alignment-baseline",
@@ -1882,9 +1898,9 @@ const go = ee({
1882
1898
  from: null,
1883
1899
  fx: null,
1884
1900
  fy: null,
1885
- g1: K,
1886
- g2: K,
1887
- glyphName: K,
1901
+ g1: Z,
1902
+ g2: Z,
1903
+ glyphName: Z,
1888
1904
  glyphOrientationHorizontal: null,
1889
1905
  glyphOrientationVertical: null,
1890
1906
  glyphRef: null,
@@ -2182,7 +2198,7 @@ const go = ee({
2182
2198
  },
2183
2199
  space: "svg",
2184
2200
  transform: Ut
2185
- }), Bt = ee({
2201
+ }), Bt = te({
2186
2202
  properties: {
2187
2203
  xLinkActuate: null,
2188
2204
  xLinkArcRole: null,
@@ -2196,31 +2212,31 @@ const go = ee({
2196
2212
  transform(e, t) {
2197
2213
  return "xlink:" + t.slice(5).toLowerCase();
2198
2214
  }
2199
- }), Ht = ee({
2215
+ }), Ht = te({
2200
2216
  attributes: { xmlnsxlink: "xmlns:xlink" },
2201
2217
  properties: { xmlnsXLink: null, xmlns: null },
2202
2218
  space: "xmlns",
2203
2219
  transform: $t
2204
- }), qt = ee({
2220
+ }), qt = te({
2205
2221
  properties: { xmlBase: null, xmlLang: null, xmlSpace: null },
2206
2222
  space: "xml",
2207
2223
  transform(e, t) {
2208
2224
  return "xml:" + t.slice(3).toLowerCase();
2209
2225
  }
2210
- }), fo = /[A-Z]/g, Ze = /-[a-z]/g, bo = /^data[-\w.:]+$/i;
2211
- function yo(e, t) {
2226
+ }), ko = /[A-Z]/g, Ze = /-[a-z]/g, vo = /^data[-\w.:]+$/i;
2227
+ function _o(e, t) {
2212
2228
  const n = ae(t);
2213
2229
  let o = t, r = D;
2214
2230
  if (n in e.normal)
2215
2231
  return e.property[e.normal[n]];
2216
- if (n.length > 4 && n.slice(0, 4) === "data" && bo.test(t)) {
2232
+ if (n.length > 4 && n.slice(0, 4) === "data" && vo.test(t)) {
2217
2233
  if (t.charAt(4) === "-") {
2218
- const a = t.slice(5).replace(Ze, vo);
2234
+ const a = t.slice(5).replace(Ze, xo);
2219
2235
  o = "data" + a.charAt(0).toUpperCase() + a.slice(1);
2220
2236
  } else {
2221
2237
  const a = t.slice(4);
2222
2238
  if (!Ze.test(a)) {
2223
- let l = a.replace(fo, ko);
2239
+ let l = a.replace(ko, wo);
2224
2240
  l.charAt(0) !== "-" && (l = "-" + l), t = "data" + l;
2225
2241
  }
2226
2242
  }
@@ -2228,13 +2244,13 @@ function yo(e, t) {
2228
2244
  }
2229
2245
  return new r(o, t);
2230
2246
  }
2231
- function ko(e) {
2247
+ function wo(e) {
2232
2248
  return "-" + e.toLowerCase();
2233
2249
  }
2234
- function vo(e) {
2250
+ function xo(e) {
2235
2251
  return e.charAt(1).toUpperCase();
2236
2252
  }
2237
- const wo = Mt([zt, go, Bt, Ht, qt], "html"), _o = Mt([zt, mo, Bt, Ht, qt], "svg");
2253
+ const So = Mt([zt, bo, Bt, Ht, qt], "html"), Eo = Mt([zt, yo, Bt, Ht, qt], "svg");
2238
2254
  function Je(e) {
2239
2255
  const t = [], n = String(e || "");
2240
2256
  let o = n.indexOf(","), r = 0, a = !1;
@@ -2246,7 +2262,7 @@ function Je(e) {
2246
2262
  return t;
2247
2263
  }
2248
2264
  const Qe = /[#.]/g;
2249
- function xo(e, t) {
2265
+ function No(e, t) {
2250
2266
  const n = e || "", o = {};
2251
2267
  let r = 0, a, l;
2252
2268
  for (; r < n.length; ) {
@@ -2267,7 +2283,7 @@ function et(e) {
2267
2283
  return t ? t.split(/[ \t\n\r\f]+/g) : [];
2268
2284
  }
2269
2285
  function jt(e, t, n) {
2270
- const o = n ? To(n) : void 0;
2286
+ const o = n ? Io(n) : void 0;
2271
2287
  function r(a, l, ...c) {
2272
2288
  let s;
2273
2289
  if (a == null) {
@@ -2278,13 +2294,13 @@ function jt(e, t, n) {
2278
2294
  );
2279
2295
  c.unshift(p);
2280
2296
  } else {
2281
- s = xo(a, t);
2282
- const p = s.tagName.toLowerCase(), g = o ? o.get(p) : void 0;
2283
- if (s.tagName = g || p, So(l))
2297
+ s = No(a, t);
2298
+ const p = s.tagName.toLowerCase(), f = o ? o.get(p) : void 0;
2299
+ if (s.tagName = f || p, To(l))
2284
2300
  c.unshift(l);
2285
2301
  else
2286
- for (const [m, f] of Object.entries(l))
2287
- Eo(e, s.properties, m, f);
2302
+ for (const [m, g] of Object.entries(l))
2303
+ Co(e, s.properties, m, g);
2288
2304
  }
2289
2305
  for (const p of c)
2290
2306
  Re(s.children, p);
@@ -2292,7 +2308,7 @@ function jt(e, t, n) {
2292
2308
  }
2293
2309
  return r;
2294
2310
  }
2295
- function So(e) {
2311
+ function To(e) {
2296
2312
  if (e === null || typeof e != "object" || Array.isArray(e))
2297
2313
  return !0;
2298
2314
  if (typeof e.type != "string") return !1;
@@ -2315,14 +2331,14 @@ function So(e) {
2315
2331
  }
2316
2332
  return !!("children" in e && Array.isArray(e.children));
2317
2333
  }
2318
- function Eo(e, t, n, o) {
2319
- const r = yo(e, n);
2334
+ function Co(e, t, n, o) {
2335
+ const r = _o(e, n);
2320
2336
  let a;
2321
2337
  if (o != null) {
2322
2338
  if (typeof o == "number") {
2323
2339
  if (Number.isNaN(o)) return;
2324
2340
  a = o;
2325
- } else typeof o == "boolean" ? a = o : typeof o == "string" ? r.spaceSeparated ? a = et(o) : r.commaSeparated ? a = Je(o) : r.commaOrSpaceSeparated ? a = et(Je(o).join(" ")) : a = tt(r, r.property, o) : Array.isArray(o) ? a = [...o] : a = r.property === "style" ? No(o) : String(o);
2341
+ } else typeof o == "boolean" ? a = o : typeof o == "string" ? r.spaceSeparated ? a = et(o) : r.commaSeparated ? a = Je(o) : r.commaOrSpaceSeparated ? a = et(Je(o).join(" ")) : a = tt(r, r.property, o) : Array.isArray(o) ? a = [...o] : a = r.property === "style" ? Ao(o) : String(o);
2326
2342
  if (Array.isArray(a)) {
2327
2343
  const l = [];
2328
2344
  for (const c of a)
@@ -2358,19 +2374,19 @@ function tt(e, t, n) {
2358
2374
  }
2359
2375
  return n;
2360
2376
  }
2361
- function No(e) {
2377
+ function Ao(e) {
2362
2378
  const t = [];
2363
2379
  for (const [n, o] of Object.entries(e))
2364
2380
  t.push([n, o].join(": "));
2365
2381
  return t.join("; ");
2366
2382
  }
2367
- function To(e) {
2383
+ function Io(e) {
2368
2384
  const t = /* @__PURE__ */ new Map();
2369
2385
  for (const n of e)
2370
2386
  t.set(n.toLowerCase(), n);
2371
2387
  return t;
2372
2388
  }
2373
- const Co = [
2389
+ const Ro = [
2374
2390
  "altGlyph",
2375
2391
  "altGlyphDef",
2376
2392
  "altGlyphItem",
@@ -2410,28 +2426,28 @@ const Co = [
2410
2426
  "solidColor",
2411
2427
  "textArea",
2412
2428
  "textPath"
2413
- ], Ao = jt(wo, "div"), Io = jt(_o, "g", Co), ke = {
2429
+ ], Oo = jt(So, "div"), Lo = jt(Eo, "g", Ro), ke = {
2414
2430
  html: "http://www.w3.org/1999/xhtml",
2415
2431
  svg: "http://www.w3.org/2000/svg"
2416
2432
  };
2417
- function Ro(e, t) {
2433
+ function Fo(e, t) {
2418
2434
  return Gt(e, {}) || { type: "root", children: [] };
2419
2435
  }
2420
2436
  function Gt(e, t) {
2421
- const n = Oo(e, t);
2437
+ const n = Do(e, t);
2422
2438
  return n && t.afterTransform && t.afterTransform(e, n), n;
2423
2439
  }
2424
- function Oo(e, t) {
2440
+ function Do(e, t) {
2425
2441
  switch (e.nodeType) {
2426
2442
  case 1:
2427
- return Po(
2443
+ return Uo(
2428
2444
  /** @type {Element} */
2429
2445
  e,
2430
2446
  t
2431
2447
  );
2432
2448
  // Ignore: Attr (2).
2433
2449
  case 3:
2434
- return Fo(
2450
+ return Mo(
2435
2451
  /** @type {Text} */
2436
2452
  e
2437
2453
  );
@@ -2440,7 +2456,7 @@ function Oo(e, t) {
2440
2456
  // Removed: Entity (6)
2441
2457
  // Ignore: Processing instruction (7).
2442
2458
  case 8:
2443
- return Do(
2459
+ return zo(
2444
2460
  /** @type {Comment} */
2445
2461
  e
2446
2462
  );
@@ -2451,7 +2467,7 @@ function Oo(e, t) {
2451
2467
  t
2452
2468
  );
2453
2469
  case 10:
2454
- return Lo();
2470
+ return Po();
2455
2471
  case 11:
2456
2472
  return nt(
2457
2473
  /** @type {DocumentFragment} */
@@ -2465,17 +2481,17 @@ function Oo(e, t) {
2465
2481
  function nt(e, t) {
2466
2482
  return { type: "root", children: Vt(e, t) };
2467
2483
  }
2468
- function Lo() {
2484
+ function Po() {
2469
2485
  return { type: "doctype" };
2470
2486
  }
2471
- function Fo(e) {
2487
+ function Mo(e) {
2472
2488
  return { type: "text", value: e.nodeValue || "" };
2473
2489
  }
2474
- function Do(e) {
2490
+ function zo(e) {
2475
2491
  return { type: "comment", value: e.nodeValue || "" };
2476
2492
  }
2477
- function Po(e, t) {
2478
- const n = e.namespaceURI, o = n === ke.svg ? Io : Ao, r = n === ke.html ? e.tagName.toLowerCase() : e.tagName, a = (
2493
+ function Uo(e, t) {
2494
+ const n = e.namespaceURI, o = n === ke.svg ? Lo : Oo, r = n === ke.html ? e.tagName.toLowerCase() : e.tagName, a = (
2479
2495
  // @ts-expect-error: DOM types are wrong, content can exist.
2480
2496
  n === ke.html && r === "template" ? e.content : e
2481
2497
  ), l = e.getAttributeNames(), c = {};
@@ -2494,14 +2510,14 @@ function Vt(e, t) {
2494
2510
  return o;
2495
2511
  }
2496
2512
  new DOMParser();
2497
- function Mo(e, t) {
2498
- const n = zo(e);
2513
+ function $o(e, t) {
2514
+ const n = Bo(e);
2499
2515
  return (
2500
2516
  /** @type {Root} */
2501
- Ro(n)
2517
+ Fo(n)
2502
2518
  );
2503
2519
  }
2504
- function zo(e) {
2520
+ function Bo(e) {
2505
2521
  const t = document.createElement("template");
2506
2522
  return t.innerHTML = e, t.content;
2507
2523
  }
@@ -2522,24 +2538,24 @@ const He = (
2522
2538
  */
2523
2539
  (function(e) {
2524
2540
  if (e == null)
2525
- return Ho;
2541
+ return Go;
2526
2542
  if (typeof e == "function")
2527
2543
  return me(e);
2528
2544
  if (typeof e == "object")
2529
- return Array.isArray(e) ? Uo(e) : (
2545
+ return Array.isArray(e) ? Ho(e) : (
2530
2546
  // Cast because `ReadonlyArray` goes into the above but `isArray`
2531
2547
  // narrows to `Array`.
2532
- $o(
2548
+ qo(
2533
2549
  /** @type {Props} */
2534
2550
  e
2535
2551
  )
2536
2552
  );
2537
2553
  if (typeof e == "string")
2538
- return Bo(e);
2554
+ return jo(e);
2539
2555
  throw new Error("Expected function, string, or object as test");
2540
2556
  })
2541
2557
  );
2542
- function Uo(e) {
2558
+ function Ho(e) {
2543
2559
  const t = [];
2544
2560
  let n = -1;
2545
2561
  for (; ++n < e.length; )
@@ -2552,7 +2568,7 @@ function Uo(e) {
2552
2568
  return !1;
2553
2569
  }
2554
2570
  }
2555
- function $o(e) {
2571
+ function qo(e) {
2556
2572
  const t = (
2557
2573
  /** @type {Record<string, unknown>} */
2558
2574
  e
@@ -2570,7 +2586,7 @@ function $o(e) {
2570
2586
  return !0;
2571
2587
  }
2572
2588
  }
2573
- function Bo(e) {
2589
+ function jo(e) {
2574
2590
  return me(t);
2575
2591
  function t(n) {
2576
2592
  return n && n.type === e;
@@ -2579,7 +2595,7 @@ function Bo(e) {
2579
2595
  function me(e) {
2580
2596
  return t;
2581
2597
  function t(n, o, r) {
2582
- return !!(qo(n) && e.call(
2598
+ return !!(Vo(n) && e.call(
2583
2599
  this,
2584
2600
  n,
2585
2601
  typeof o == "number" ? o : void 0,
@@ -2587,10 +2603,10 @@ function me(e) {
2587
2603
  ));
2588
2604
  }
2589
2605
  }
2590
- function Ho() {
2606
+ function Go() {
2591
2607
  return !0;
2592
2608
  }
2593
- function qo(e) {
2609
+ function Vo(e) {
2594
2610
  return e !== null && typeof e == "object" && "type" in e;
2595
2611
  }
2596
2612
  const ot = (
@@ -2636,17 +2652,17 @@ const ot = (
2636
2652
  */
2637
2653
  (function(e) {
2638
2654
  if (e == null)
2639
- return Vo;
2655
+ return Xo;
2640
2656
  if (typeof e == "string")
2641
- return Go(e);
2657
+ return Yo(e);
2642
2658
  if (typeof e == "object")
2643
- return jo(e);
2659
+ return Wo(e);
2644
2660
  if (typeof e == "function")
2645
2661
  return qe(e);
2646
2662
  throw new Error("Expected function, string, or array as `test`");
2647
2663
  })
2648
2664
  );
2649
- function jo(e) {
2665
+ function Wo(e) {
2650
2666
  const t = [];
2651
2667
  let n = -1;
2652
2668
  for (; ++n < e.length; )
@@ -2659,7 +2675,7 @@ function jo(e) {
2659
2675
  return !1;
2660
2676
  }
2661
2677
  }
2662
- function Go(e) {
2678
+ function Yo(e) {
2663
2679
  return qe(t);
2664
2680
  function t(n) {
2665
2681
  return n.tagName === e;
@@ -2668,7 +2684,7 @@ function Go(e) {
2668
2684
  function qe(e) {
2669
2685
  return t;
2670
2686
  function t(n, o, r) {
2671
- return !!(Wo(n) && e.call(
2687
+ return !!(Ko(n) && e.call(
2672
2688
  this,
2673
2689
  n,
2674
2690
  typeof o == "number" ? o : void 0,
@@ -2676,13 +2692,13 @@ function qe(e) {
2676
2692
  ));
2677
2693
  }
2678
2694
  }
2679
- function Vo(e) {
2695
+ function Xo(e) {
2680
2696
  return !!(e && typeof e == "object" && "type" in e && e.type === "element" && "tagName" in e && typeof e.tagName == "string");
2681
2697
  }
2682
- function Wo(e) {
2698
+ function Ko(e) {
2683
2699
  return e !== null && typeof e == "object" && "type" in e && "tagName" in e;
2684
2700
  }
2685
- const rt = /\n/g, at = /[\t ]+/g, Oe = V("br"), it = V(tr), Yo = V("p"), lt = V("tr"), Xo = V([
2701
+ const rt = /\n/g, at = /[\t ]+/g, Oe = V("br"), it = V(rr), Zo = V("p"), lt = V("tr"), Jo = V([
2686
2702
  // List from: <https://html.spec.whatwg.org/multipage/rendering.html#hidden-elements>
2687
2703
  "datalist",
2688
2704
  "head",
@@ -2696,9 +2712,9 @@ const rt = /\n/g, at = /[\t ]+/g, Oe = V("br"), it = V(tr), Yo = V("p"), lt = V(
2696
2712
  "template",
2697
2713
  "title",
2698
2714
  // Hidden attribute.
2699
- er,
2715
+ or,
2700
2716
  // From: <https://html.spec.whatwg.org/multipage/rendering.html#flow-content-3>
2701
- nr
2717
+ ar
2702
2718
  ]), Wt = V([
2703
2719
  "address",
2704
2720
  // Flow content
@@ -2781,7 +2797,7 @@ const rt = /\n/g, at = /[\t ]+/g, Oe = V("br"), it = V(tr), Yo = V("p"), lt = V(
2781
2797
  "xmp"
2782
2798
  // Flow content (legacy)
2783
2799
  ]);
2784
- function Ko(e, t) {
2800
+ function Qo(e, t) {
2785
2801
  const n = t || {}, o = "children" in e ? e.children : [], r = Wt(e), a = Kt(e, {
2786
2802
  whitespace: n.whitespace || "normal"
2787
2803
  }), l = [];
@@ -2808,24 +2824,24 @@ function Ko(e, t) {
2808
2824
  const s = [];
2809
2825
  let p;
2810
2826
  for (c = -1; ++c < l.length; ) {
2811
- const g = l[c];
2812
- typeof g == "number" ? p !== void 0 && g > p && (p = g) : g && (p !== void 0 && p > -1 && s.push(`
2813
- `.repeat(p) || " "), p = -1, s.push(g));
2827
+ const f = l[c];
2828
+ typeof f == "number" ? p !== void 0 && f > p && (p = f) : f && (p !== void 0 && p > -1 && s.push(`
2829
+ `.repeat(p) || " "), p = -1, s.push(f));
2814
2830
  }
2815
2831
  return s.join("");
2816
2832
  }
2817
2833
  function Yt(e, t, n) {
2818
- return e.type === "element" ? Zo(e, t, n) : e.type === "text" ? n.whitespace === "normal" ? Xt(e, n) : Jo(e) : [];
2834
+ return e.type === "element" ? er(e, t, n) : e.type === "text" ? n.whitespace === "normal" ? Xt(e, n) : tr(e) : [];
2819
2835
  }
2820
- function Zo(e, t, n) {
2836
+ function er(e, t, n) {
2821
2837
  const o = Kt(e, n), r = e.children || [];
2822
2838
  let a = -1, l = [];
2823
- if (Xo(e))
2839
+ if (Jo(e))
2824
2840
  return l;
2825
2841
  let c, s;
2826
2842
  for (Oe(e) || lt(e) && // @ts-expect-error: something up with types of parents.
2827
2843
  ot(t, e, lt) ? s = `
2828
- ` : Yo(e) ? (c = 2, s = 2) : Wt(e) && (c = 1, s = 1); ++a < r.length; )
2844
+ ` : Zo(e) ? (c = 2, s = 2) : Wt(e) && (c = 1, s = 1); ++a < r.length; )
2829
2845
  l = l.concat(
2830
2846
  Yt(r[a], e, {
2831
2847
  whitespace: o,
@@ -2845,7 +2861,7 @@ function Xt(e, t) {
2845
2861
  o.push(
2846
2862
  // Any sequence of collapsible spaces and tabs immediately preceding or
2847
2863
  // following a segment break is removed.
2848
- Qo(
2864
+ nr(
2849
2865
  // […] ignoring bidi formatting characters (characters with the
2850
2866
  // Bidi_Control property [UAX9]: ALM, LTR, RTL, LRE-RLO, LRI-PDI) as if
2851
2867
  // they were not there.
@@ -2860,10 +2876,10 @@ function Xt(e, t) {
2860
2876
  o[l].charCodeAt(o[l].length - 1) === 8203 || l < o.length - 1 && o[l + 1].charCodeAt(0) === 8203 ? (r.push(o[l]), c = void 0) : o[l] ? (typeof c == "number" && r.push(c), r.push(o[l]), c = 0) : (l === 0 || l === o.length - 1) && r.push(0);
2861
2877
  return r;
2862
2878
  }
2863
- function Jo(e) {
2879
+ function tr(e) {
2864
2880
  return [String(e.value)];
2865
2881
  }
2866
- function Qo(e, t, n) {
2882
+ function nr(e, t, n) {
2867
2883
  const o = [];
2868
2884
  let r = 0, a;
2869
2885
  for (; r < e.length; ) {
@@ -2894,22 +2910,22 @@ function Kt(e, t) {
2894
2910
  }
2895
2911
  return t.whitespace;
2896
2912
  }
2897
- function er(e) {
2913
+ function or(e) {
2898
2914
  return !!(e.properties || {}).hidden;
2899
2915
  }
2900
- function tr(e) {
2916
+ function rr(e) {
2901
2917
  return e.tagName === "td" || e.tagName === "th";
2902
2918
  }
2903
- function nr(e) {
2919
+ function ar(e) {
2904
2920
  return e.tagName === "dialog" && !(e.properties || {}).open;
2905
2921
  }
2906
- const Zt = [], or = !0, st = !1, Jt = "skip";
2907
- function rr(e, t, n, o) {
2922
+ const Zt = [], ir = !0, st = !1, Jt = "skip";
2923
+ function lr(e, t, n, o) {
2908
2924
  let r;
2909
2925
  r = t;
2910
2926
  const a = He(r), l = 1;
2911
2927
  c(e, void 0, [])();
2912
- function c(s, p, g) {
2928
+ function c(s, p, f) {
2913
2929
  const m = (
2914
2930
  /** @type {Record<string, unknown>} */
2915
2931
  s && typeof s == "object" ? s : {}
@@ -2922,14 +2938,14 @@ function rr(e, t, n, o) {
2922
2938
  typeof m.name == "string" ? m.name : void 0
2923
2939
  )
2924
2940
  );
2925
- Object.defineProperty(f, "name", {
2941
+ Object.defineProperty(g, "name", {
2926
2942
  value: "node (" + (s.type + (b ? "<" + b + ">" : "")) + ")"
2927
2943
  });
2928
2944
  }
2929
- return f;
2930
- function f() {
2931
- let b = Zt, k, u, w;
2932
- if (a(s, p, g[g.length - 1] || void 0) && (b = ar(n(s, g)), b[0] === st))
2945
+ return g;
2946
+ function g() {
2947
+ let b = Zt, y, u, _;
2948
+ if (a(s, p, f[f.length - 1] || void 0) && (b = sr(n(s, f)), b[0] === st))
2933
2949
  return b;
2934
2950
  if ("children" in s && s.children) {
2935
2951
  const v = (
@@ -2937,43 +2953,43 @@ function rr(e, t, n, o) {
2937
2953
  s
2938
2954
  );
2939
2955
  if (v.children && b[0] !== Jt)
2940
- for (u = -1 + l, w = g.concat(v); u > -1 && u < v.children.length; ) {
2956
+ for (u = -1 + l, _ = f.concat(v); u > -1 && u < v.children.length; ) {
2941
2957
  const h = v.children[u];
2942
- if (k = c(h, u, w)(), k[0] === st)
2943
- return k;
2944
- u = typeof k[1] == "number" ? k[1] : u + l;
2958
+ if (y = c(h, u, _)(), y[0] === st)
2959
+ return y;
2960
+ u = typeof y[1] == "number" ? y[1] : u + l;
2945
2961
  }
2946
2962
  }
2947
2963
  return b;
2948
2964
  }
2949
2965
  }
2950
2966
  }
2951
- function ar(e) {
2952
- return Array.isArray(e) ? e : typeof e == "number" ? [or, e] : e == null ? Zt : [e];
2953
- }
2954
- const ir = {}, lr = [];
2955
2967
  function sr(e) {
2956
- const t = e || ir;
2968
+ return Array.isArray(e) ? e : typeof e == "number" ? [ir, e] : e == null ? Zt : [e];
2969
+ }
2970
+ const cr = {}, ur = [];
2971
+ function dr(e) {
2972
+ const t = e || cr;
2957
2973
  return function(n, o) {
2958
- rr(n, "element", function(r, a) {
2959
- const l = Array.isArray(r.properties.className) ? r.properties.className : lr, c = l.includes("language-math"), s = l.includes("math-display"), p = l.includes("math-inline");
2960
- let g = s;
2974
+ lr(n, "element", function(r, a) {
2975
+ const l = Array.isArray(r.properties.className) ? r.properties.className : ur, c = l.includes("language-math"), s = l.includes("math-display"), p = l.includes("math-inline");
2976
+ let f = s;
2961
2977
  if (!c && !s && !p)
2962
2978
  return;
2963
- let m = a[a.length - 1], f = r;
2964
- if (r.tagName === "code" && c && m && m.type === "element" && m.tagName === "pre" && (f = m, m = a[a.length - 2], g = !0), !m) return;
2965
- const b = Ko(f, { whitespace: "pre" });
2966
- let k;
2979
+ let m = a[a.length - 1], g = r;
2980
+ if (r.tagName === "code" && c && m && m.type === "element" && m.tagName === "pre" && (g = m, m = a[a.length - 2], f = !0), !m) return;
2981
+ const b = Qo(g, { whitespace: "pre" });
2982
+ let y;
2967
2983
  try {
2968
- k = Ve.renderToString(b, {
2984
+ y = Ve.renderToString(b, {
2969
2985
  ...t,
2970
- displayMode: g,
2986
+ displayMode: f,
2971
2987
  throwOnError: !0
2972
2988
  });
2973
- } catch (w) {
2989
+ } catch (_) {
2974
2990
  const v = (
2975
2991
  /** @type {Error} */
2976
- w
2992
+ _
2977
2993
  ), h = v.name.toLowerCase();
2978
2994
  o.message("Could not render math with KaTeX", {
2979
2995
  ancestors: [...a, r],
@@ -2983,42 +2999,42 @@ function sr(e) {
2983
2999
  source: "rehype-katex"
2984
3000
  });
2985
3001
  try {
2986
- k = Ve.renderToString(b, {
3002
+ y = Ve.renderToString(b, {
2987
3003
  ...t,
2988
- displayMode: g,
3004
+ displayMode: f,
2989
3005
  strict: "ignore",
2990
3006
  throwOnError: !1
2991
3007
  });
2992
3008
  } catch {
2993
- k = [
3009
+ y = [
2994
3010
  {
2995
3011
  type: "element",
2996
3012
  tagName: "span",
2997
3013
  properties: {
2998
3014
  className: ["katex-error"],
2999
3015
  style: "color:" + (t.errorColor || "#cc0000"),
3000
- title: String(w)
3016
+ title: String(_)
3001
3017
  },
3002
3018
  children: [{ type: "text", value: b }]
3003
3019
  }
3004
3020
  ];
3005
3021
  }
3006
3022
  }
3007
- typeof k == "string" && (k = /** @type {Array<ElementContent>} */
3008
- Mo(k).children);
3009
- const u = m.children.indexOf(f);
3010
- return m.children.splice(u, 1, ...k), Jt;
3023
+ typeof y == "string" && (y = /** @type {Array<ElementContent>} */
3024
+ $o(y).children);
3025
+ const u = m.children.indexOf(g);
3026
+ return m.children.splice(u, 1, ...y), Jt;
3011
3027
  });
3012
3028
  };
3013
3029
  }
3014
- function cr(e, t) {
3030
+ function pr(e, t) {
3015
3031
  const n = String(e);
3016
3032
  let o = n.indexOf(t), r = o, a = 0, l = 0;
3017
3033
  for (; o !== -1; )
3018
3034
  o === r ? ++a > l && (l = a) : a = 1, r = o + t.length, o = n.indexOf(t, r);
3019
3035
  return l;
3020
3036
  }
3021
- function ur() {
3037
+ function hr() {
3022
3038
  return {
3023
3039
  enter: {
3024
3040
  mathFlow: e,
@@ -3062,11 +3078,11 @@ function ur() {
3062
3078
  this.data.mathFlowInside || (this.buffer(), this.data.mathFlowInside = !0);
3063
3079
  }
3064
3080
  function r(s) {
3065
- const p = this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g, ""), g = this.stack[this.stack.length - 1];
3066
- g.type, this.exit(s), g.value = p;
3081
+ const p = this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g, ""), f = this.stack[this.stack.length - 1];
3082
+ f.type, this.exit(s), f.value = p;
3067
3083
  const m = (
3068
3084
  /** @type {HastElement} */
3069
- g.data.hChildren[0]
3085
+ f.data.hChildren[0]
3070
3086
  );
3071
3087
  m.type, m.tagName, m.children.push({ type: "text", value: p }), this.data.mathFlowInside = void 0;
3072
3088
  }
@@ -3085,16 +3101,16 @@ function ur() {
3085
3101
  ), this.buffer();
3086
3102
  }
3087
3103
  function l(s) {
3088
- const p = this.resume(), g = this.stack[this.stack.length - 1];
3089
- g.type, this.exit(s), g.value = p, /** @type {Array<HastElementContent>} */
3104
+ const p = this.resume(), f = this.stack[this.stack.length - 1];
3105
+ f.type, this.exit(s), f.value = p, /** @type {Array<HastElementContent>} */
3090
3106
  // @ts-expect-error: we defined it in `enterMathFlow`.
3091
- g.data.hChildren.push({ type: "text", value: p });
3107
+ f.data.hChildren.push({ type: "text", value: p });
3092
3108
  }
3093
3109
  function c(s) {
3094
3110
  this.config.enter.data.call(this, s), this.config.exit.data.call(this, s);
3095
3111
  }
3096
3112
  }
3097
- function dr(e) {
3113
+ function gr(e) {
3098
3114
  let t = (e || {}).singleDollarTextMath;
3099
3115
  return t == null && (t = !0), o.peek = r, {
3100
3116
  unsafe: [
@@ -3112,45 +3128,45 @@ function dr(e) {
3112
3128
  handlers: { math: n, inlineMath: o }
3113
3129
  };
3114
3130
  function n(a, l, c, s) {
3115
- const p = a.value || "", g = c.createTracker(s), m = "$".repeat(Math.max(cr(p, "$") + 1, 2)), f = c.enter("mathFlow");
3116
- let b = g.move(m);
3131
+ const p = a.value || "", f = c.createTracker(s), m = "$".repeat(Math.max(pr(p, "$") + 1, 2)), g = c.enter("mathFlow");
3132
+ let b = f.move(m);
3117
3133
  if (a.meta) {
3118
- const k = c.enter("mathFlowMeta");
3119
- b += g.move(
3134
+ const y = c.enter("mathFlowMeta");
3135
+ b += f.move(
3120
3136
  c.safe(a.meta, {
3121
3137
  after: `
3122
3138
  `,
3123
3139
  before: b,
3124
3140
  encode: ["$"],
3125
- ...g.current()
3141
+ ...f.current()
3126
3142
  })
3127
- ), k();
3143
+ ), y();
3128
3144
  }
3129
- return b += g.move(`
3130
- `), p && (b += g.move(p + `
3131
- `)), b += g.move(m), f(), b;
3145
+ return b += f.move(`
3146
+ `), p && (b += f.move(p + `
3147
+ `)), b += f.move(m), g(), b;
3132
3148
  }
3133
3149
  function o(a, l, c) {
3134
3150
  let s = a.value || "", p = 1;
3135
3151
  for (t || p++; new RegExp("(^|[^$])" + "\\$".repeat(p) + "([^$]|$)").test(s); )
3136
3152
  p++;
3137
- const g = "$".repeat(p);
3153
+ const f = "$".repeat(p);
3138
3154
  // Contains non-space.
3139
3155
  /[^ \r\n]/.test(s) && // Starts with space and ends with space.
3140
3156
  (/^[ \r\n]/.test(s) && /[ \r\n]$/.test(s) || // Starts or ends with dollar.
3141
3157
  /^\$|\$$/.test(s)) && (s = " " + s + " ");
3142
3158
  let m = -1;
3143
3159
  for (; ++m < c.unsafe.length; ) {
3144
- const f = c.unsafe[m];
3145
- if (!f.atBreak) continue;
3146
- const b = c.compilePattern(f);
3147
- let k;
3148
- for (; k = b.exec(s); ) {
3149
- let u = k.index;
3150
- s.codePointAt(u) === 10 && s.codePointAt(u - 1) === 13 && u--, s = s.slice(0, u) + " " + s.slice(k.index + 1);
3160
+ const g = c.unsafe[m];
3161
+ if (!g.atBreak) continue;
3162
+ const b = c.compilePattern(g);
3163
+ let y;
3164
+ for (; y = b.exec(s); ) {
3165
+ let u = y.index;
3166
+ s.codePointAt(u) === 10 && s.codePointAt(u - 1) === 13 && u--, s = s.slice(0, u) + " " + s.slice(y.index + 1);
3151
3167
  }
3152
3168
  }
3153
- return g + s + g;
3169
+ return f + s + f;
3154
3170
  }
3155
3171
  function r() {
3156
3172
  return "$";
@@ -3173,15 +3189,15 @@ function ce(e, t, n, o) {
3173
3189
  return ct(s) && a++ < r ? (e.consume(s), c) : (e.exit(n), t(s));
3174
3190
  }
3175
3191
  }
3176
- const pr = {
3177
- tokenize: hr,
3192
+ const mr = {
3193
+ tokenize: fr,
3178
3194
  concrete: !0,
3179
3195
  name: "mathFlow"
3180
3196
  }, ut = {
3181
- tokenize: gr,
3197
+ tokenize: br,
3182
3198
  partial: !0
3183
3199
  };
3184
- function hr(e, t, n) {
3200
+ function fr(e, t, n) {
3185
3201
  const o = this, r = o.events[o.events.length - 1], a = r && r[1].type === "linePrefix" ? r[2].sliceSerialize(r[1], !0).length : 0;
3186
3202
  let l = 0;
3187
3203
  return c;
@@ -3194,30 +3210,30 @@ function hr(e, t, n) {
3194
3210
  function p(h) {
3195
3211
  return h === null || j(h) ? m(h) : (e.enter("mathFlowFenceMeta"), e.enter("chunkString", {
3196
3212
  contentType: "string"
3197
- }), g(h));
3213
+ }), f(h));
3198
3214
  }
3199
- function g(h) {
3200
- return h === null || j(h) ? (e.exit("chunkString"), e.exit("mathFlowFenceMeta"), m(h)) : h === 36 ? n(h) : (e.consume(h), g);
3215
+ function f(h) {
3216
+ return h === null || j(h) ? (e.exit("chunkString"), e.exit("mathFlowFenceMeta"), m(h)) : h === 36 ? n(h) : (e.consume(h), f);
3201
3217
  }
3202
3218
  function m(h) {
3203
- return e.exit("mathFlowFence"), o.interrupt ? t(h) : e.attempt(ut, f, w)(h);
3219
+ return e.exit("mathFlowFence"), o.interrupt ? t(h) : e.attempt(ut, g, _)(h);
3204
3220
  }
3205
- function f(h) {
3221
+ function g(h) {
3206
3222
  return e.attempt({
3207
3223
  tokenize: v,
3208
3224
  partial: !0
3209
- }, w, b)(h);
3225
+ }, _, b)(h);
3210
3226
  }
3211
3227
  function b(h) {
3212
- return (a ? ce(e, k, "linePrefix", a + 1) : k)(h);
3228
+ return (a ? ce(e, y, "linePrefix", a + 1) : y)(h);
3213
3229
  }
3214
- function k(h) {
3215
- return h === null ? w(h) : j(h) ? e.attempt(ut, f, w)(h) : (e.enter("mathFlowValue"), u(h));
3230
+ function y(h) {
3231
+ return h === null ? _(h) : j(h) ? e.attempt(ut, g, _)(h) : (e.enter("mathFlowValue"), u(h));
3216
3232
  }
3217
3233
  function u(h) {
3218
- return h === null || j(h) ? (e.exit("mathFlowValue"), k(h)) : (e.consume(h), u);
3234
+ return h === null || j(h) ? (e.exit("mathFlowValue"), y(h)) : (e.consume(h), u);
3219
3235
  }
3220
- function w(h) {
3236
+ function _(h) {
3221
3237
  return e.exit("mathFlow"), t(h);
3222
3238
  }
3223
3239
  function v(h, C, E) {
@@ -3234,7 +3250,7 @@ function hr(e, t, n) {
3234
3250
  }
3235
3251
  }
3236
3252
  }
3237
- function gr(e, t, n) {
3253
+ function br(e, t, n) {
3238
3254
  const o = this;
3239
3255
  return r;
3240
3256
  function r(l) {
@@ -3244,35 +3260,35 @@ function gr(e, t, n) {
3244
3260
  return o.parser.lazy[o.now().line] ? n(l) : t(l);
3245
3261
  }
3246
3262
  }
3247
- function mr(e) {
3263
+ function yr(e) {
3248
3264
  let n = (e || {}).singleDollarTextMath;
3249
3265
  return n == null && (n = !0), {
3250
3266
  tokenize: o,
3251
- resolve: fr,
3252
- previous: br,
3267
+ resolve: kr,
3268
+ previous: vr,
3253
3269
  name: "mathText"
3254
3270
  };
3255
3271
  function o(r, a, l) {
3256
3272
  let c = 0, s, p;
3257
- return g;
3258
- function g(u) {
3273
+ return f;
3274
+ function f(u) {
3259
3275
  return r.enter("mathText"), r.enter("mathTextSequence"), m(u);
3260
3276
  }
3261
3277
  function m(u) {
3262
- return u === 36 ? (r.consume(u), c++, m) : c < 2 && !n ? l(u) : (r.exit("mathTextSequence"), f(u));
3278
+ return u === 36 ? (r.consume(u), c++, m) : c < 2 && !n ? l(u) : (r.exit("mathTextSequence"), g(u));
3263
3279
  }
3264
- function f(u) {
3265
- return u === null ? l(u) : u === 36 ? (p = r.enter("mathTextSequence"), s = 0, k(u)) : u === 32 ? (r.enter("space"), r.consume(u), r.exit("space"), f) : j(u) ? (r.enter("lineEnding"), r.consume(u), r.exit("lineEnding"), f) : (r.enter("mathTextData"), b(u));
3280
+ function g(u) {
3281
+ return u === null ? l(u) : u === 36 ? (p = r.enter("mathTextSequence"), s = 0, y(u)) : u === 32 ? (r.enter("space"), r.consume(u), r.exit("space"), g) : j(u) ? (r.enter("lineEnding"), r.consume(u), r.exit("lineEnding"), g) : (r.enter("mathTextData"), b(u));
3266
3282
  }
3267
3283
  function b(u) {
3268
- return u === null || u === 32 || u === 36 || j(u) ? (r.exit("mathTextData"), f(u)) : (r.consume(u), b);
3284
+ return u === null || u === 32 || u === 36 || j(u) ? (r.exit("mathTextData"), g(u)) : (r.consume(u), b);
3269
3285
  }
3270
- function k(u) {
3271
- return u === 36 ? (r.consume(u), s++, k) : s === c ? (r.exit("mathTextSequence"), r.exit("mathText"), a(u)) : (p.type = "mathTextData", b(u));
3286
+ function y(u) {
3287
+ return u === 36 ? (r.consume(u), s++, y) : s === c ? (r.exit("mathTextSequence"), r.exit("mathText"), a(u)) : (p.type = "mathTextData", b(u));
3272
3288
  }
3273
3289
  }
3274
3290
  }
3275
- function fr(e) {
3291
+ function kr(e) {
3276
3292
  let t = e.length - 4, n = 3, o, r;
3277
3293
  if ((e[n][1].type === "lineEnding" || e[n][1].type === "space") && (e[t][1].type === "lineEnding" || e[t][1].type === "space")) {
3278
3294
  for (o = n; ++o < t; )
@@ -3285,40 +3301,40 @@ function fr(e) {
3285
3301
  r === void 0 ? o !== t && e[o][1].type !== "lineEnding" && (r = o) : (o === t || e[o][1].type === "lineEnding") && (e[r][1].type = "mathTextData", o !== r + 2 && (e[r][1].end = e[o - 1][1].end, e.splice(r + 2, o - r - 2), t -= o - r - 2, o = r + 2), r = void 0);
3286
3302
  return e;
3287
3303
  }
3288
- function br(e) {
3304
+ function vr(e) {
3289
3305
  return e !== 36 || this.events[this.events.length - 1][1].type === "characterEscape";
3290
3306
  }
3291
- function yr(e) {
3307
+ function _r(e) {
3292
3308
  return {
3293
3309
  flow: {
3294
- 36: pr
3310
+ 36: mr
3295
3311
  },
3296
3312
  text: {
3297
- 36: mr(e)
3313
+ 36: yr(e)
3298
3314
  }
3299
3315
  };
3300
3316
  }
3301
- const kr = {};
3302
- function vr(e) {
3317
+ const wr = {};
3318
+ function xr(e) {
3303
3319
  const t = (
3304
3320
  /** @type {Processor} */
3305
3321
  this
3306
- ), n = e || kr, o = t.data(), r = o.micromarkExtensions || (o.micromarkExtensions = []), a = o.fromMarkdownExtensions || (o.fromMarkdownExtensions = []), l = o.toMarkdownExtensions || (o.toMarkdownExtensions = []);
3307
- r.push(yr(n)), a.push(ur()), l.push(dr(n));
3322
+ ), n = e || wr, o = t.data(), r = o.micromarkExtensions || (o.micromarkExtensions = []), a = o.fromMarkdownExtensions || (o.fromMarkdownExtensions = []), l = o.toMarkdownExtensions || (o.toMarkdownExtensions = []);
3323
+ r.push(_r(n)), a.push(hr()), l.push(gr(n));
3308
3324
  }
3309
- function wr(e = {}) {
3325
+ function Sr(e = {}) {
3310
3326
  var t, n;
3311
- let o = [vr, { singleDollarTextMath: (t = e.singleDollarTextMath) != null ? t : !1 }], r = [sr, { errorColor: (n = e.errorColor) != null ? n : "var(--color-muted-foreground)" }];
3327
+ let o = [xr, { singleDollarTextMath: (t = e.singleDollarTextMath) != null ? t : !1 }], r = [dr, { errorColor: (n = e.errorColor) != null ? n : "var(--color-muted-foreground)" }];
3312
3328
  return { name: "katex", type: "math", remarkPlugin: o, rehypePlugin: r, getStyles() {
3313
3329
  return "katex/dist/katex.min.css";
3314
3330
  } };
3315
3331
  }
3316
- var dt = wr();
3332
+ var dt = Sr();
3317
3333
  const je = pe(
3318
3334
  ({ className: e, ...t }) => /* @__PURE__ */ i(
3319
- Rn,
3335
+ On,
3320
3336
  {
3321
- className: y("size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 code-bg ", e),
3337
+ className: k("size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 code-bg ", e),
3322
3338
  ...t,
3323
3339
  remarkPlugins: [dt.remarkPlugin, ...t.remarkPlugins || []],
3324
3340
  rehypePlugins: [dt.rehypePlugin, ...t.rehypePlugins || []]
@@ -3327,7 +3343,7 @@ const je = pe(
3327
3343
  (e, t) => e.children === t.children
3328
3344
  );
3329
3345
  je.displayName = "Response";
3330
- function _r({
3346
+ function Er({
3331
3347
  part: e,
3332
3348
  message: t,
3333
3349
  status: n,
@@ -3338,40 +3354,40 @@ function _r({
3338
3354
  feedback: c,
3339
3355
  handleFeedback: s,
3340
3356
  copyHost: p,
3341
- feedbackEnabled: g,
3357
+ feedbackEnabled: f,
3342
3358
  retryEnabled: m
3343
3359
  }) {
3344
- const { t: f } = M(["chat"]), { textComponents: b, remarkPlugins: k, rehypePlugins: u } = te(), w = ge(e.text), v = !o && r && (n === "streaming" || n === "submitted"), h = l || (() => {
3360
+ const { t: g } = M(["chat"]), { textComponents: b, remarkPlugins: y, rehypePlugins: u } = W(), _ = ge(e.text), v = !o && r && (n === "streaming" || n === "submitted"), h = l || (() => {
3345
3361
  });
3346
- return /* @__PURE__ */ _("div", { className: "group py-2 first:pt-4 animate-in-bubble", children: [
3347
- /* @__PURE__ */ i(Dt, { from: t.role, children: /* @__PURE__ */ i(Pt, { dir: w, children: /* @__PURE__ */ i(
3362
+ return /* @__PURE__ */ w("div", { className: "group py-2 first:pt-4 animate-in-bubble", children: [
3363
+ /* @__PURE__ */ i(Dt, { from: t.role, children: /* @__PURE__ */ i(Pt, { dir: _, children: /* @__PURE__ */ i(
3348
3364
  je,
3349
3365
  {
3350
- className: y(t.role === "user" && "whitespace-pre-wrap break-words"),
3366
+ className: k(t.role === "user" && "whitespace-pre-wrap break-words"),
3351
3367
  components: b,
3352
- remarkPlugins: k,
3368
+ remarkPlugins: y,
3353
3369
  rehypePlugins: u,
3354
3370
  children: e.text
3355
3371
  }
3356
3372
  ) }) }),
3357
- a && !v && /* @__PURE__ */ _(po, { className: y("mt-1.5 ml-0.5", t.role === "user" && "justify-end"), children: [
3358
- t.role === "assistant" && /* @__PURE__ */ _(Z, { children: [
3373
+ a && !v && /* @__PURE__ */ w(mo, { className: k("mt-1.5 ml-0.5", t.role === "user" && "justify-end"), children: [
3374
+ t.role === "assistant" && /* @__PURE__ */ w(J, { children: [
3359
3375
  r && m && /* @__PURE__ */ i(
3360
3376
  se,
3361
3377
  {
3362
3378
  onClick: () => h(t.id),
3363
- label: f("retry"),
3364
- tooltip: f("retry"),
3379
+ label: g("retry"),
3380
+ tooltip: g("retry"),
3365
3381
  children: /* @__PURE__ */ i(yn, { className: "size-3" })
3366
3382
  }
3367
3383
  ),
3368
- g && /* @__PURE__ */ _(Z, { children: [
3384
+ f && /* @__PURE__ */ w(J, { children: [
3369
3385
  /* @__PURE__ */ i(
3370
3386
  se,
3371
3387
  {
3372
3388
  onClick: () => s("like"),
3373
- label: f("like"),
3374
- tooltip: f("like"),
3389
+ label: g("like"),
3390
+ tooltip: g("like"),
3375
3391
  className: c === "like" ? "text-primary" : "",
3376
3392
  children: /* @__PURE__ */ i(kn, { className: "size-3" })
3377
3393
  }
@@ -3380,8 +3396,8 @@ function _r({
3380
3396
  se,
3381
3397
  {
3382
3398
  onClick: () => s("dislike"),
3383
- label: f("dislike"),
3384
- tooltip: f("dislike"),
3399
+ label: g("dislike"),
3400
+ tooltip: g("dislike"),
3385
3401
  className: c === "dislike" ? "text-destructive" : "",
3386
3402
  children: /* @__PURE__ */ i(vn, { className: "size-3" })
3387
3403
  }
@@ -3394,20 +3410,20 @@ function _r({
3394
3410
  onClick: () => {
3395
3411
  p(e.text);
3396
3412
  },
3397
- label: f("copy"),
3398
- tooltip: f("copy"),
3413
+ label: g("copy"),
3414
+ tooltip: g("copy"),
3399
3415
  children: /* @__PURE__ */ i(Tt, { className: "size-3" })
3400
3416
  }
3401
3417
  )
3402
3418
  ] })
3403
3419
  ] });
3404
3420
  }
3405
- const Qt = de(null), xr = () => {
3421
+ const Qt = de(null), Nr = () => {
3406
3422
  const e = Fe(Qt);
3407
3423
  if (!e)
3408
3424
  throw new Error("Reasoning components must be used within Reasoning");
3409
3425
  return e;
3410
- }, Sr = 1e3, Er = 1e3, en = pe(
3426
+ }, Tr = 1e3, Cr = 1e3, en = pe(
3411
3427
  ({
3412
3428
  className: e,
3413
3429
  isStreaming: t = !1,
@@ -3423,30 +3439,30 @@ const Qt = de(null), xr = () => {
3423
3439
  prop: n,
3424
3440
  defaultProp: o,
3425
3441
  onChange: r
3426
- }), [g, m] = We({
3442
+ }), [f, m] = We({
3427
3443
  prop: a,
3428
3444
  defaultProp: 0
3429
- }), [f, b] = B(!1), [k, u] = B(null);
3430
- J(() => {
3431
- t ? k === null && u(Date.now()) : k !== null && (m(Math.ceil((Date.now() - k) / Er)), u(null));
3432
- }, [t, k, m]), J(() => {
3433
- if (o && !t && s && !f) {
3445
+ }), [g, b] = B(!1), [y, u] = B(null);
3446
+ Q(() => {
3447
+ t ? y === null && u(Date.now()) : y !== null && (m(Math.ceil((Date.now() - y) / Cr)), u(null));
3448
+ }, [t, y, m]), Q(() => {
3449
+ if (o && !t && s && !g) {
3434
3450
  const v = setTimeout(() => {
3435
3451
  p(!1), b(!0);
3436
- }, Sr);
3452
+ }, Tr);
3437
3453
  return () => {
3438
3454
  clearTimeout(v);
3439
3455
  };
3440
3456
  }
3441
- }, [t, s, o, p, f]);
3442
- const w = (v) => {
3457
+ }, [t, s, o, p, g]);
3458
+ const _ = (v) => {
3443
3459
  p(v);
3444
3460
  };
3445
- return /* @__PURE__ */ i(Qt.Provider, { value: { isStreaming: t, isOpen: s, setIsOpen: p, duration: g }, children: /* @__PURE__ */ i(
3461
+ return /* @__PURE__ */ i(Qt.Provider, { value: { isStreaming: t, isOpen: s, setIsOpen: p, duration: f }, children: /* @__PURE__ */ i(
3446
3462
  ze,
3447
3463
  {
3448
- className: y("not-prose mb-4", e),
3449
- onOpenChange: w,
3464
+ className: k("not-prose mb-4", e),
3465
+ onOpenChange: _,
3450
3466
  open: s,
3451
3467
  ...c,
3452
3468
  children: l
@@ -3454,10 +3470,10 @@ const Qt = de(null), xr = () => {
3454
3470
  ) });
3455
3471
  }
3456
3472
  ), tn = pe(({ className: e, children: t, ...n }) => {
3457
- const { isStreaming: o, isOpen: r, duration: a } = xr();
3458
- return /* @__PURE__ */ i(Ue, { className: y("flex items-center gap-2 text-muted-foreground text-sm", e), ...n, children: t ?? /* @__PURE__ */ _(Z, { children: [
3459
- /* @__PURE__ */ i(wn, { className: "size-4" }),
3460
- o || a === 0 ? /* @__PURE__ */ i("p", { children: "Thinking..." }) : /* @__PURE__ */ _("p", { children: [
3473
+ const { isStreaming: o, isOpen: r, duration: a } = Nr();
3474
+ return /* @__PURE__ */ i(Ue, { className: k("flex items-center gap-2 text-muted-foreground text-sm", e), ...n, children: t ?? /* @__PURE__ */ w(J, { children: [
3475
+ /* @__PURE__ */ i(_n, { className: "size-4" }),
3476
+ o || a === 0 ? /* @__PURE__ */ i("p", { children: "Thinking..." }) : /* @__PURE__ */ w("p", { children: [
3461
3477
  "Thought for ",
3462
3478
  a,
3463
3479
  " ",
@@ -3466,14 +3482,14 @@ const Qt = de(null), xr = () => {
3466
3482
  /* @__PURE__ */ i(
3467
3483
  ie,
3468
3484
  {
3469
- className: y("size-4 text-muted-foreground transition-transform", r ? "rotate-180" : "rotate-0")
3485
+ className: k("size-4 text-muted-foreground transition-transform", r ? "rotate-180" : "rotate-0")
3470
3486
  }
3471
3487
  )
3472
3488
  ] }) });
3473
3489
  }), nn = pe(({ className: e, children: t, ...n }) => /* @__PURE__ */ i(
3474
3490
  $e,
3475
3491
  {
3476
- className: y(
3492
+ className: k(
3477
3493
  "mt-4 text-base",
3478
3494
  "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",
3479
3495
  e
@@ -3485,7 +3501,7 @@ const Qt = de(null), xr = () => {
3485
3501
  en.displayName = "Reasoning";
3486
3502
  tn.displayName = "ReasoningTrigger";
3487
3503
  nn.displayName = "ReasoningContent";
3488
- function Nr({
3504
+ function Ar({
3489
3505
  part: e,
3490
3506
  status: t,
3491
3507
  index: n,
@@ -3493,7 +3509,7 @@ function Nr({
3493
3509
  lastMessage: r
3494
3510
  }) {
3495
3511
  const a = ge(e.text);
3496
- return /* @__PURE__ */ _(
3512
+ return /* @__PURE__ */ w(
3497
3513
  en,
3498
3514
  {
3499
3515
  className: "w-full animate-in-bubble",
@@ -3505,7 +3521,7 @@ function Nr({
3505
3521
  }
3506
3522
  );
3507
3523
  }
3508
- const Tr = De(
3524
+ const Ir = De(
3509
3525
  "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",
3510
3526
  {
3511
3527
  variants: {
@@ -3521,32 +3537,32 @@ const Tr = De(
3521
3537
  }
3522
3538
  }
3523
3539
  );
3524
- function Cr({
3540
+ function Rr({
3525
3541
  className: e,
3526
3542
  variant: t,
3527
3543
  asChild: n = !1,
3528
3544
  ...o
3529
3545
  }) {
3530
- return /* @__PURE__ */ i(n ? Et : "span", { "data-slot": "badge", className: y(Tr({ variant: t }), e), ...o });
3546
+ return /* @__PURE__ */ i(n ? Et : "span", { "data-slot": "badge", className: k(Ir({ variant: t }), e), ...o });
3531
3547
  }
3532
- function Ar({ ...e }) {
3548
+ function Or({ ...e }) {
3533
3549
  return /* @__PURE__ */ i(H.Root, { "data-slot": "dialog", ...e });
3534
3550
  }
3535
- function Ir({ ...e }) {
3551
+ function Lr({ ...e }) {
3536
3552
  return /* @__PURE__ */ i(H.Trigger, { "data-slot": "dialog-trigger", ...e });
3537
3553
  }
3538
- function Rr({ ...e }) {
3554
+ function Fr({ ...e }) {
3539
3555
  return /* @__PURE__ */ i(H.Portal, { "data-slot": "dialog-portal", ...e });
3540
3556
  }
3541
- function xi({ ...e }) {
3557
+ function Ti({ ...e }) {
3542
3558
  return /* @__PURE__ */ i(H.Close, { "data-slot": "dialog-close", ...e });
3543
3559
  }
3544
- function Or({ className: e, ...t }) {
3560
+ function Dr({ className: e, ...t }) {
3545
3561
  return /* @__PURE__ */ i(
3546
3562
  H.Overlay,
3547
3563
  {
3548
3564
  "data-slot": "dialog-overlay",
3549
- className: y(
3565
+ className: k(
3550
3566
  "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",
3551
3567
  e
3552
3568
  ),
@@ -3554,26 +3570,26 @@ function Or({ className: e, ...t }) {
3554
3570
  }
3555
3571
  );
3556
3572
  }
3557
- function Lr({
3573
+ function Pr({
3558
3574
  className: e,
3559
3575
  children: t,
3560
3576
  showCloseButton: n = !0,
3561
3577
  ...o
3562
3578
  }) {
3563
- return /* @__PURE__ */ _(Rr, { "data-slot": "dialog-portal", children: [
3564
- /* @__PURE__ */ i(Or, {}),
3565
- /* @__PURE__ */ _(
3579
+ return /* @__PURE__ */ w(Fr, { "data-slot": "dialog-portal", children: [
3580
+ /* @__PURE__ */ i(Dr, {}),
3581
+ /* @__PURE__ */ w(
3566
3582
  H.Content,
3567
3583
  {
3568
3584
  "data-slot": "dialog-content",
3569
- className: y(
3585
+ className: k(
3570
3586
  "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",
3571
3587
  e
3572
3588
  ),
3573
3589
  ...o,
3574
3590
  children: [
3575
3591
  t,
3576
- n && /* @__PURE__ */ _(
3592
+ n && /* @__PURE__ */ w(
3577
3593
  H.Close,
3578
3594
  {
3579
3595
  "data-slot": "dialog-close",
@@ -3589,47 +3605,47 @@ function Lr({
3589
3605
  )
3590
3606
  ] });
3591
3607
  }
3592
- function Fr({ className: e, ...t }) {
3608
+ function Mr({ className: e, ...t }) {
3593
3609
  return /* @__PURE__ */ i(
3594
3610
  "div",
3595
3611
  {
3596
3612
  "data-slot": "dialog-header",
3597
- className: y("flex flex-col gap-2 text-center sm:text-start", e),
3613
+ className: k("flex flex-col gap-2 text-center sm:text-start", e),
3598
3614
  ...t
3599
3615
  }
3600
3616
  );
3601
3617
  }
3602
- function Si({ className: e, ...t }) {
3618
+ function Ci({ className: e, ...t }) {
3603
3619
  return /* @__PURE__ */ i(
3604
3620
  "div",
3605
3621
  {
3606
3622
  "data-slot": "dialog-footer",
3607
- className: y("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", e),
3623
+ className: k("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", e),
3608
3624
  ...t
3609
3625
  }
3610
3626
  );
3611
3627
  }
3612
- function Dr({ className: e, ...t }) {
3628
+ function zr({ className: e, ...t }) {
3613
3629
  return /* @__PURE__ */ i(
3614
3630
  H.Title,
3615
3631
  {
3616
3632
  "data-slot": "dialog-title",
3617
- className: y("text-xl leading-none font-semibold", e),
3633
+ className: k("text-xl leading-none font-semibold", e),
3618
3634
  ...t
3619
3635
  }
3620
3636
  );
3621
3637
  }
3622
- function Ei({ className: e, ...t }) {
3638
+ function Ai({ className: e, ...t }) {
3623
3639
  return /* @__PURE__ */ i(
3624
3640
  H.Description,
3625
3641
  {
3626
3642
  "data-slot": "dialog-description",
3627
- className: y("text-muted-foreground text-base", e),
3643
+ className: k("text-muted-foreground text-base", e),
3628
3644
  ...t
3629
3645
  }
3630
3646
  );
3631
3647
  }
3632
- const Pr = {
3648
+ const Ur = {
3633
3649
  'code[class*="language-"]': {
3634
3650
  background: "hsl(220, 13%, 18%)",
3635
3651
  color: "hsl(220, 14%, 71%)",
@@ -4129,7 +4145,7 @@ const Pr = {
4129
4145
  ".prism-previewer-easing.prism-previewer-easing line": {
4130
4146
  stroke: "hsl(220, 14%, 71%)"
4131
4147
  }
4132
- }, Mr = {
4148
+ }, $r = {
4133
4149
  'code[class*="language-"]': {
4134
4150
  background: "hsl(230, 1%, 98%)",
4135
4151
  color: "hsl(230, 8%, 24%)",
@@ -4622,7 +4638,7 @@ function q(e) {
4622
4638
  return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
4623
4639
  }
4624
4640
  var ve, pt;
4625
- function zr() {
4641
+ function Br() {
4626
4642
  if (pt) return ve;
4627
4643
  pt = 1, ve = e, e.displayName = "python", e.aliases = ["py"];
4628
4644
  function e(t) {
@@ -4690,12 +4706,12 @@ function zr() {
4690
4706
  }
4691
4707
  return ve;
4692
4708
  }
4693
- var Ur = zr();
4694
- const $r = /* @__PURE__ */ q(Ur);
4695
- var we, ht;
4696
- function Br() {
4697
- if (ht) return we;
4698
- ht = 1, we = e, e.displayName = "javascript", e.aliases = ["js"];
4709
+ var Hr = Br();
4710
+ const qr = /* @__PURE__ */ q(Hr);
4711
+ var _e, ht;
4712
+ function jr() {
4713
+ if (ht) return _e;
4714
+ ht = 1, _e = e, e.displayName = "javascript", e.aliases = ["js"];
4699
4715
  function e(t) {
4700
4716
  t.languages.javascript = t.languages.extend("clike", {
4701
4717
  "class-name": [
@@ -4820,14 +4836,14 @@ function Br() {
4820
4836
  "javascript"
4821
4837
  )), t.languages.js = t.languages.javascript;
4822
4838
  }
4823
- return we;
4839
+ return _e;
4824
4840
  }
4825
- var Hr = Br();
4826
- const qr = /* @__PURE__ */ q(Hr);
4827
- var _e, gt;
4828
- function jr() {
4829
- if (gt) return _e;
4830
- gt = 1, _e = e, e.displayName = "typescript", e.aliases = ["ts"];
4841
+ var Gr = jr();
4842
+ const Vr = /* @__PURE__ */ q(Gr);
4843
+ var we, gt;
4844
+ function Wr() {
4845
+ if (gt) return we;
4846
+ gt = 1, we = e, e.displayName = "typescript", e.aliases = ["ts"];
4831
4847
  function e(t) {
4832
4848
  (function(n) {
4833
4849
  n.languages.typescript = n.languages.extend("javascript", {
@@ -4875,12 +4891,12 @@ function jr() {
4875
4891
  }), n.languages.ts = n.languages.typescript;
4876
4892
  })(t);
4877
4893
  }
4878
- return _e;
4894
+ return we;
4879
4895
  }
4880
- var Gr = jr();
4881
- const Vr = /* @__PURE__ */ q(Gr);
4896
+ var Yr = Wr();
4897
+ const Xr = /* @__PURE__ */ q(Yr);
4882
4898
  var xe, mt;
4883
- function Wr() {
4899
+ function Kr() {
4884
4900
  if (mt) return xe;
4885
4901
  mt = 1, xe = e, e.displayName = "json", e.aliases = ["webmanifest"];
4886
4902
  function e(t) {
@@ -4911,10 +4927,10 @@ function Wr() {
4911
4927
  }
4912
4928
  return xe;
4913
4929
  }
4914
- var Yr = Wr();
4915
- const Xr = /* @__PURE__ */ q(Yr);
4930
+ var Zr = Kr();
4931
+ const Jr = /* @__PURE__ */ q(Zr);
4916
4932
  var Se, ft;
4917
- function Kr() {
4933
+ function Qr() {
4918
4934
  if (ft) return Se;
4919
4935
  ft = 1, Se = e, e.displayName = "bash", e.aliases = ["shell"];
4920
4936
  function e(t) {
@@ -5133,10 +5149,10 @@ function Kr() {
5133
5149
  }
5134
5150
  return Se;
5135
5151
  }
5136
- var Zr = Kr();
5137
- const Jr = /* @__PURE__ */ q(Zr);
5152
+ var ea = Qr();
5153
+ const ta = /* @__PURE__ */ q(ea);
5138
5154
  var Ee, bt;
5139
- function Qr() {
5155
+ function na() {
5140
5156
  if (bt) return Ee;
5141
5157
  bt = 1, Ee = e, e.displayName = "sql", e.aliases = [];
5142
5158
  function e(t) {
@@ -5176,10 +5192,10 @@ function Qr() {
5176
5192
  }
5177
5193
  return Ee;
5178
5194
  }
5179
- var ea = Qr();
5180
- const ta = /* @__PURE__ */ q(ea);
5195
+ var oa = na();
5196
+ const ra = /* @__PURE__ */ q(oa);
5181
5197
  var Ne, yt;
5182
- function na() {
5198
+ function aa() {
5183
5199
  if (yt) return Ne;
5184
5200
  yt = 1, Ne = e, e.displayName = "yaml", e.aliases = ["yml"];
5185
5201
  function e(t) {
@@ -5190,14 +5206,14 @@ function na() {
5190
5206
  return /[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source;
5191
5207
  }
5192
5208
  ), c = /"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;
5193
- function s(p, g) {
5194
- g = (g || "").replace(/m/g, "") + "m";
5209
+ function s(p, f) {
5210
+ f = (f || "").replace(/m/g, "") + "m";
5195
5211
  var m = /([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g, function() {
5196
5212
  return a;
5197
5213
  }).replace(/<<value>>/g, function() {
5198
5214
  return p;
5199
5215
  });
5200
- return RegExp(m, g);
5216
+ return RegExp(m, f);
5201
5217
  }
5202
5218
  n.languages.yaml = {
5203
5219
  scalar: {
@@ -5267,19 +5283,19 @@ function na() {
5267
5283
  }
5268
5284
  return Ne;
5269
5285
  }
5270
- var oa = na();
5271
- const ra = /* @__PURE__ */ q(oa);
5286
+ var ia = aa();
5287
+ const la = /* @__PURE__ */ q(ia);
5272
5288
  var Te, kt;
5273
- function aa() {
5289
+ function sa() {
5274
5290
  if (kt) return Te;
5275
5291
  kt = 1, Te = e, e.displayName = "markdown", e.aliases = ["md"];
5276
5292
  function e(t) {
5277
5293
  (function(n) {
5278
5294
  var o = /(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;
5279
- function r(f) {
5280
- return f = f.replace(/<inner>/g, function() {
5295
+ function r(g) {
5296
+ return g = g.replace(/<inner>/g, function() {
5281
5297
  return o;
5282
- }), RegExp(/((?:^|[^\\])(?:\\{2})*)/.source + "(?:" + f + ")");
5298
+ }), RegExp(/((?:^|[^\\])(?:\\{2})*)/.source + "(?:" + g + ")");
5283
5299
  }
5284
5300
  var a = /(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source, l = /\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(
5285
5301
  /__/g,
@@ -5522,17 +5538,17 @@ function aa() {
5522
5538
  }
5523
5539
  }
5524
5540
  }
5525
- }), ["url", "bold", "italic", "strike"].forEach(function(f) {
5541
+ }), ["url", "bold", "italic", "strike"].forEach(function(g) {
5526
5542
  ["url", "bold", "italic", "strike", "code-snippet"].forEach(function(b) {
5527
- f !== b && (n.languages.markdown[f].inside.content.inside[b] = n.languages.markdown[b]);
5543
+ g !== b && (n.languages.markdown[g].inside.content.inside[b] = n.languages.markdown[b]);
5528
5544
  });
5529
- }), n.hooks.add("after-tokenize", function(f) {
5530
- if (f.language !== "markdown" && f.language !== "md")
5545
+ }), n.hooks.add("after-tokenize", function(g) {
5546
+ if (g.language !== "markdown" && g.language !== "md")
5531
5547
  return;
5532
- function b(k) {
5533
- if (!(!k || typeof k == "string"))
5534
- for (var u = 0, w = k.length; u < w; u++) {
5535
- var v = k[u];
5548
+ function b(y) {
5549
+ if (!(!y || typeof y == "string"))
5550
+ for (var u = 0, _ = y.length; u < _; u++) {
5551
+ var v = y[u];
5536
5552
  if (v.type !== "code") {
5537
5553
  b(v.content);
5538
5554
  continue;
@@ -5546,11 +5562,11 @@ function aa() {
5546
5562
  }
5547
5563
  }
5548
5564
  }
5549
- b(f.tokens);
5550
- }), n.hooks.add("wrap", function(f) {
5551
- if (f.type === "code-block") {
5552
- for (var b = "", k = 0, u = f.classes.length; k < u; k++) {
5553
- var w = f.classes[k], v = /language-(.+)/.exec(w);
5565
+ b(g.tokens);
5566
+ }), n.hooks.add("wrap", function(g) {
5567
+ if (g.type === "code-block") {
5568
+ for (var b = "", y = 0, u = g.classes.length; y < u; y++) {
5569
+ var _ = g.classes[y], v = /language-(.+)/.exec(_);
5554
5570
  if (v) {
5555
5571
  b = v[1];
5556
5572
  break;
@@ -5558,14 +5574,14 @@ function aa() {
5558
5574
  }
5559
5575
  var h = n.languages[b];
5560
5576
  if (h)
5561
- f.content = n.highlight(
5562
- m(f.content.value),
5577
+ g.content = n.highlight(
5578
+ m(g.content.value),
5563
5579
  h,
5564
5580
  b
5565
5581
  );
5566
5582
  else if (b && b !== "none" && n.plugins.autoloader) {
5567
5583
  var C = "md-" + (/* @__PURE__ */ new Date()).valueOf() + "-" + Math.floor(Math.random() * 1e16);
5568
- f.attributes.id = C, n.plugins.autoloader.loadLanguages(b, function() {
5584
+ g.attributes.id = C, n.plugins.autoloader.loadLanguages(b, function() {
5569
5585
  var E = document.getElementById(C);
5570
5586
  E && (E.innerHTML = n.highlight(
5571
5587
  E.textContent,
@@ -5581,16 +5597,16 @@ function aa() {
5581
5597
  lt: "<",
5582
5598
  gt: ">",
5583
5599
  quot: '"'
5584
- }, g = String.fromCodePoint || String.fromCharCode;
5585
- function m(f) {
5586
- var b = f.replace(s, "");
5587
- return b = b.replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi, function(k, u) {
5600
+ }, f = String.fromCodePoint || String.fromCharCode;
5601
+ function m(g) {
5602
+ var b = g.replace(s, "");
5603
+ return b = b.replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi, function(y, u) {
5588
5604
  if (u = u.toLowerCase(), u[0] === "#") {
5589
- var w;
5590
- return u[1] === "x" ? w = parseInt(u.slice(2), 16) : w = Number(u.slice(1)), g(w);
5605
+ var _;
5606
+ return u[1] === "x" ? _ = parseInt(u.slice(2), 16) : _ = Number(u.slice(1)), f(_);
5591
5607
  } else {
5592
5608
  var v = p[u];
5593
- return v || k;
5609
+ return v || y;
5594
5610
  }
5595
5611
  }), b;
5596
5612
  }
@@ -5599,17 +5615,17 @@ function aa() {
5599
5615
  }
5600
5616
  return Te;
5601
5617
  }
5602
- var ia = aa();
5603
- const la = /* @__PURE__ */ q(ia);
5604
- U.registerLanguage("python", $r);
5605
- U.registerLanguage("javascript", qr);
5606
- U.registerLanguage("typescript", Vr);
5607
- U.registerLanguage("json", Xr);
5608
- U.registerLanguage("bash", Jr);
5609
- U.registerLanguage("sql", ta);
5610
- U.registerLanguage("yaml", ra);
5611
- U.registerLanguage("markdown", la);
5612
- const sa = de({
5618
+ var ca = sa();
5619
+ const ua = /* @__PURE__ */ q(ca);
5620
+ U.registerLanguage("python", qr);
5621
+ U.registerLanguage("javascript", Vr);
5622
+ U.registerLanguage("typescript", Xr);
5623
+ U.registerLanguage("json", Jr);
5624
+ U.registerLanguage("bash", ta);
5625
+ U.registerLanguage("sql", ra);
5626
+ U.registerLanguage("yaml", la);
5627
+ U.registerLanguage("markdown", ua);
5628
+ const da = de({
5613
5629
  code: ""
5614
5630
  }), Le = ({
5615
5631
  code: e,
@@ -5618,13 +5634,13 @@ const sa = de({
5618
5634
  className: o,
5619
5635
  children: r,
5620
5636
  ...a
5621
- }) => /* @__PURE__ */ i(sa.Provider, { value: { code: e }, children: /* @__PURE__ */ i(
5637
+ }) => /* @__PURE__ */ i(da.Provider, { value: { code: e }, children: /* @__PURE__ */ i(
5622
5638
  "div",
5623
5639
  {
5624
- className: y("relative w-full overflow-hidden rounded-md border bg-background text-foreground", o),
5640
+ className: k("relative w-full overflow-hidden rounded-md border bg-background text-foreground", o),
5625
5641
  dir: "ltr",
5626
5642
  ...a,
5627
- children: /* @__PURE__ */ _("div", { className: "relative", children: [
5643
+ children: /* @__PURE__ */ w("div", { className: "relative", children: [
5628
5644
  /* @__PURE__ */ i(
5629
5645
  U,
5630
5646
  {
@@ -5646,7 +5662,7 @@ const sa = de({
5646
5662
  minWidth: "2.5rem"
5647
5663
  },
5648
5664
  showLineNumbers: n,
5649
- style: Mr,
5665
+ style: $r,
5650
5666
  children: e
5651
5667
  }
5652
5668
  ),
@@ -5671,7 +5687,7 @@ const sa = de({
5671
5687
  minWidth: "2.5rem"
5672
5688
  },
5673
5689
  showLineNumbers: n,
5674
- style: Pr,
5690
+ style: Ur,
5675
5691
  children: e
5676
5692
  }
5677
5693
  ),
@@ -5679,22 +5695,22 @@ const sa = de({
5679
5695
  ] })
5680
5696
  }
5681
5697
  ) });
5682
- function ca(e, t = "size-4") {
5698
+ function pa(e, t = "size-4") {
5683
5699
  return {
5684
5700
  web_search: /* @__PURE__ */ i(En, { className: t }),
5685
5701
  web_fetch: /* @__PURE__ */ i(ue, { className: t }),
5686
5702
  code_execution: /* @__PURE__ */ i(Sn, { className: t }),
5687
5703
  image_generation: /* @__PURE__ */ i(xn, { className: t })
5688
- }[e] ?? /* @__PURE__ */ i(_n, { className: t });
5704
+ }[e] ?? /* @__PURE__ */ i(wn, { className: t });
5689
5705
  }
5690
- const ua = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: y("not-prose mb-4 w-full rounded-md border", e), ...t }), da = ({ status: e }) => {
5706
+ const ha = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: k("not-prose mb-4 w-full rounded-md border", e), ...t }), ga = ({ status: e }) => {
5691
5707
  const { t } = M(["tools_ui"]), n = {
5692
5708
  "input-streaming": t("pending"),
5693
5709
  "input-available": t("running"),
5694
5710
  "output-available": t("completed"),
5695
5711
  "output-error": t("error")
5696
5712
  };
5697
- return /* @__PURE__ */ _(Cr, { className: "gap-1.5 rounded-full text-xs", variant: "secondary", children: [
5713
+ return /* @__PURE__ */ w(Rr, { className: "gap-1.5 rounded-full text-xs", variant: "secondary", children: [
5698
5714
  {
5699
5715
  "input-streaming": /* @__PURE__ */ i(Cn, { className: "size-4" }),
5700
5716
  "input-available": /* @__PURE__ */ i(Tn, { className: "size-4 animate-pulse" }),
@@ -5703,20 +5719,20 @@ const ua = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: y("not
5703
5719
  }[e],
5704
5720
  n[e]
5705
5721
  ] });
5706
- }, pa = ({ className: e, type: t, state: n, toolName: o, ...r }) => {
5707
- const a = o || (t.startsWith("tool-") ? t.slice(5) : t), l = ca(a, "size-4 text-muted-foreground");
5708
- return /* @__PURE__ */ _(Ue, { className: y("flex w-full items-center justify-between gap-4 p-3", e), ...r, children: [
5709
- /* @__PURE__ */ _("div", { className: "flex items-center gap-2", children: [
5722
+ }, ma = ({ className: e, type: t, state: n, toolName: o, ...r }) => {
5723
+ const a = o || (t.startsWith("tool-") ? t.slice(5) : t), l = pa(a, "size-4 text-muted-foreground");
5724
+ return /* @__PURE__ */ w(Ue, { className: k("flex w-full items-center justify-between gap-4 p-3", e), ...r, children: [
5725
+ /* @__PURE__ */ w("div", { className: "flex items-center gap-2", children: [
5710
5726
  l,
5711
5727
  /* @__PURE__ */ i("span", { className: "font-medium text-sm", children: a }),
5712
- /* @__PURE__ */ i(da, { status: n })
5728
+ /* @__PURE__ */ i(ga, { status: n })
5713
5729
  ] }),
5714
5730
  /* @__PURE__ */ i(ie, { className: "size-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180" })
5715
5731
  ] });
5716
- }, ha = ({ className: e, ...t }) => /* @__PURE__ */ i(
5732
+ }, fa = ({ className: e, ...t }) => /* @__PURE__ */ i(
5717
5733
  $e,
5718
5734
  {
5719
- className: y(
5735
+ className: k(
5720
5736
  "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",
5721
5737
  e
5722
5738
  ),
@@ -5730,13 +5746,13 @@ const ua = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: y("not
5730
5746
  return e;
5731
5747
  }
5732
5748
  return JSON.stringify(e, null, 2);
5733
- }, ga = ({ className: e, input: t, ...n }) => {
5749
+ }, ba = ({ className: e, input: t, ...n }) => {
5734
5750
  const { t: o } = M(["tools_ui"]);
5735
- return /* @__PURE__ */ _("div", { className: y("space-y-2 overflow-hidden p-4", e), ...n, children: [
5751
+ return /* @__PURE__ */ w("div", { className: k("space-y-2 overflow-hidden p-4", e), ...n, children: [
5736
5752
  /* @__PURE__ */ i("h4", { className: "font-medium text-muted-foreground text-xs uppercase tracking-wide", children: o("parameters") }),
5737
5753
  /* @__PURE__ */ i("div", { className: "rounded-md bg-muted/50", children: /* @__PURE__ */ i(Le, { code: on(t), language: "json" }) })
5738
5754
  ] });
5739
- }, ma = ({ className: e, output: t, errorText: n, ...o }) => {
5755
+ }, ya = ({ className: e, output: t, errorText: n, ...o }) => {
5740
5756
  const { t: r } = M(["tools_ui"]), [a, l] = B(!1);
5741
5757
  if (!(t || n))
5742
5758
  return null;
@@ -5754,18 +5770,18 @@ const ua = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: y("not
5754
5770
  }
5755
5771
  return typeof t == "object" && t !== null && !("$$typeof" in t) ? /* @__PURE__ */ i(Le, { code: JSON.stringify(t, null, 2), language: "json" }) : t;
5756
5772
  };
5757
- return /* @__PURE__ */ _("div", { className: y("space-y-2 p-4", e), ...o, children: [
5773
+ return /* @__PURE__ */ w("div", { className: k("space-y-2 p-4", e), ...o, children: [
5758
5774
  /* @__PURE__ */ i("h4", { className: "font-medium text-muted-foreground text-xs uppercase tracking-wide", children: r(n ? "error" : "result") }),
5759
- n && /* @__PURE__ */ _(Ar, { children: [
5760
- /* @__PURE__ */ i(Ir, { asChild: !0, children: /* @__PURE__ */ _(Q, { variant: "destructive", size: "sm", children: [
5775
+ n && /* @__PURE__ */ w(Or, { children: [
5776
+ /* @__PURE__ */ i(Lr, { asChild: !0, children: /* @__PURE__ */ w(ee, { variant: "destructive", size: "sm", children: [
5761
5777
  /* @__PURE__ */ i(Ct, { className: "mr-1.5 size-4" }),
5762
5778
  r("view_error")
5763
5779
  ] }) }),
5764
- /* @__PURE__ */ _(Lr, { className: "max-w-2xl", children: [
5765
- /* @__PURE__ */ i(Fr, { children: /* @__PURE__ */ i(Dr, { className: "text-destructive", children: r("tool_error") }) }),
5766
- /* @__PURE__ */ _("div", { className: "space-y-4", children: [
5780
+ /* @__PURE__ */ w(Pr, { className: "max-w-2xl", children: [
5781
+ /* @__PURE__ */ i(Mr, { children: /* @__PURE__ */ i(zr, { className: "text-destructive", children: r("tool_error") }) }),
5782
+ /* @__PURE__ */ w("div", { className: "space-y-4", children: [
5767
5783
  /* @__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: on(n) }) }),
5768
- /* @__PURE__ */ _(Q, { variant: "outline", size: "sm", onClick: c, children: [
5784
+ /* @__PURE__ */ w(ee, { variant: "outline", size: "sm", onClick: c, children: [
5769
5785
  /* @__PURE__ */ i(Tt, { className: "mr-1.5 size-4" }),
5770
5786
  r(a ? "copied" : "copy_error")
5771
5787
  ] })
@@ -5775,7 +5791,7 @@ const ua = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: y("not
5775
5791
  t && !n && /* @__PURE__ */ i("div", { className: "overflow-x-auto rounded-md bg-muted/50 text-foreground text-xs [&_table]:w-full line-clamp-[20]", children: /* @__PURE__ */ i("div", { children: s() }) })
5776
5792
  ] });
5777
5793
  };
5778
- function fa({
5794
+ function ka({
5779
5795
  part: e,
5780
5796
  message: t,
5781
5797
  chat: n,
@@ -5801,15 +5817,15 @@ function fa({
5801
5817
  const c = o[l];
5802
5818
  return /* @__PURE__ */ i(c, { part: e, message: t, chat: n });
5803
5819
  }
5804
- return r ? /* @__PURE__ */ _(ua, { className: "animate-in-bubble", children: [
5805
- /* @__PURE__ */ i(pa, { type: e.type, state: a.state, toolName: l }),
5806
- /* @__PURE__ */ _(ha, { children: [
5807
- /* @__PURE__ */ i(ga, { input: a.input }),
5808
- (a.state === "output-available" || a.state === "output-error") && /* @__PURE__ */ i(ma, { errorText: a.errorText, output: a.output })
5820
+ return r ? /* @__PURE__ */ w(ha, { className: "animate-in-bubble", children: [
5821
+ /* @__PURE__ */ i(ma, { type: e.type, state: a.state, toolName: l }),
5822
+ /* @__PURE__ */ w(fa, { children: [
5823
+ /* @__PURE__ */ i(ba, { input: a.input }),
5824
+ (a.state === "output-available" || a.state === "output-error") && /* @__PURE__ */ i(ya, { errorText: a.errorText, output: a.output })
5809
5825
  ] })
5810
5826
  ] }) : null;
5811
5827
  }
5812
- function ba({
5828
+ function va({
5813
5829
  part: e,
5814
5830
  message: t
5815
5831
  }) {
@@ -5818,7 +5834,7 @@ function ba({
5818
5834
  const s = document.createElement("a");
5819
5835
  s.href = o.url, s.download = a, document.body.appendChild(s), s.click(), document.body.removeChild(s);
5820
5836
  };
5821
- return /* @__PURE__ */ i("div", { className: "py-2 animate-in-bubble", children: /* @__PURE__ */ i(Dt, { from: t.role, children: /* @__PURE__ */ i(Pt, { isPlain: !0, children: r ? /* @__PURE__ */ _("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: [
5837
+ return /* @__PURE__ */ i("div", { className: "py-2 animate-in-bubble", children: /* @__PURE__ */ i(Dt, { from: t.role, children: /* @__PURE__ */ i(Pt, { 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: [
5822
5838
  /* @__PURE__ */ i(
5823
5839
  "img",
5824
5840
  {
@@ -5827,7 +5843,7 @@ function ba({
5827
5843
  className: "max-h-[280px] w-full rounded-xl object-cover transition-transform duration-500 group-hover:scale-105"
5828
5844
  }
5829
5845
  ),
5830
- /* @__PURE__ */ _("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: [
5846
+ /* @__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: [
5831
5847
  /* @__PURE__ */ i("span", { className: "text-[10px] text-white truncate max-w-[150px] font-medium drop-shadow-sm", children: a }),
5832
5848
  /* @__PURE__ */ i(
5833
5849
  "button",
@@ -5847,9 +5863,9 @@ function ba({
5847
5863
  children: /* @__PURE__ */ i(ue, { className: "size-4" })
5848
5864
  }
5849
5865
  ) })
5850
- ] }) : /* @__PURE__ */ i("div", { className: "flex flex-col gap-1.5", children: /* @__PURE__ */ _("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: [
5866
+ ] }) : /* @__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: [
5851
5867
  /* @__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(Nt, { className: "size-4 shrink-0" }) }),
5852
- /* @__PURE__ */ _("div", { className: "flex flex-col min-w-0 mr-4", children: [
5868
+ /* @__PURE__ */ w("div", { className: "flex flex-col min-w-0 mr-4", children: [
5853
5869
  /* @__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 }),
5854
5870
  (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() })
5855
5871
  ] }),
@@ -5865,13 +5881,13 @@ function ba({
5865
5881
  ] }) }) }) }) });
5866
5882
  }
5867
5883
  const A = {
5868
- MessageList: Qn,
5869
- PromptInput: so,
5870
- WelcomeScreen: uo,
5871
- TextPart: _r,
5872
- ReasoningPart: Nr,
5873
- ToolPart: fa,
5874
- FilePart: ba,
5884
+ MessageList: eo,
5885
+ PromptInput: co,
5886
+ WelcomeScreen: go,
5887
+ TextPart: Er,
5888
+ ReasoningPart: Ar,
5889
+ ToolPart: ka,
5890
+ FilePart: va,
5875
5891
  toolComponents: void 0,
5876
5892
  textComponents: void 0,
5877
5893
  remarkPlugins: void 0,
@@ -5917,10 +5933,10 @@ const A = {
5917
5933
  }
5918
5934
  }
5919
5935
  }, rn = de(A);
5920
- function te() {
5936
+ function W() {
5921
5937
  return Fe(rn);
5922
5938
  }
5923
- function Ni({
5939
+ function Ii({
5924
5940
  components: e,
5925
5941
  history: t,
5926
5942
  welcome: n,
@@ -5931,7 +5947,7 @@ function Ni({
5931
5947
  app: c,
5932
5948
  i18n: s,
5933
5949
  settings: p,
5934
- children: g
5950
+ children: f
5935
5951
  }) {
5936
5952
  const m = St(
5937
5953
  () => ({
@@ -5962,23 +5978,23 @@ function Ni({
5962
5978
  }),
5963
5979
  [e, t, n, o, r, a, l, c, s, p]
5964
5980
  );
5965
- return /* @__PURE__ */ i(rn.Provider, { value: m, children: g });
5981
+ return /* @__PURE__ */ i(rn.Provider, { value: m, children: f });
5966
5982
  }
5967
5983
  const {
5968
- slice: ya,
5969
- forEach: ka
5984
+ slice: _a,
5985
+ forEach: wa
5970
5986
  } = [];
5971
- function va(e) {
5972
- return ka.call(ya.call(arguments, 1), (t) => {
5987
+ function xa(e) {
5988
+ return wa.call(_a.call(arguments, 1), (t) => {
5973
5989
  if (t)
5974
5990
  for (const n in t)
5975
5991
  e[n] === void 0 && (e[n] = t[n]);
5976
5992
  }), e;
5977
5993
  }
5978
- function wa(e) {
5994
+ function Sa(e) {
5979
5995
  return typeof e != "string" ? !1 : [/<\s*script.*?>/i, /<\s*\/\s*script\s*>/i, /<\s*img.*?on\w+\s*=/i, /<\s*\w+\s*on\w+\s*=.*?>/i, /javascript\s*:/i, /vbscript\s*:/i, /expression\s*\(/i, /eval\s*\(/i, /alert\s*\(/i, /document\.cookie/i, /document\.write\s*\(/i, /window\.location/i, /innerHTML/i].some((n) => n.test(e));
5980
5996
  }
5981
- const vt = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/, _a = function(e, t) {
5997
+ const vt = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/, Ea = function(e, t) {
5982
5998
  const o = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {
5983
5999
  path: "/"
5984
6000
  }, r = encodeURIComponent(t);
@@ -6021,13 +6037,13 @@ const vt = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/, _a = function(e, t) {
6021
6037
  throw new TypeError("option sameSite is invalid");
6022
6038
  }
6023
6039
  return o.partitioned && (a += "; Partitioned"), a;
6024
- }, wt = {
6040
+ }, _t = {
6025
6041
  create(e, t, n, o) {
6026
6042
  let r = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : {
6027
6043
  path: "/",
6028
6044
  sameSite: "strict"
6029
6045
  };
6030
- n && (r.expires = /* @__PURE__ */ new Date(), r.expires.setTime(r.expires.getTime() + n * 60 * 1e3)), o && (r.domain = o), document.cookie = _a(e, t, r);
6046
+ n && (r.expires = /* @__PURE__ */ new Date(), r.expires.setTime(r.expires.getTime() + n * 60 * 1e3)), o && (r.domain = o), document.cookie = Ea(e, t, r);
6031
6047
  },
6032
6048
  read(e) {
6033
6049
  const t = `${e}=`, n = document.cookie.split(";");
@@ -6042,7 +6058,7 @@ const vt = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/, _a = function(e, t) {
6042
6058
  this.create(e, "", -1, t);
6043
6059
  }
6044
6060
  };
6045
- var xa = {
6061
+ var Na = {
6046
6062
  name: "cookie",
6047
6063
  // Deconstruct the options object and extract the lookupCookie property
6048
6064
  lookup(e) {
@@ -6050,7 +6066,7 @@ var xa = {
6050
6066
  lookupCookie: t
6051
6067
  } = e;
6052
6068
  if (t && typeof document < "u")
6053
- return wt.read(t) || void 0;
6069
+ return _t.read(t) || void 0;
6054
6070
  },
6055
6071
  // Deconstruct the options object and extract the lookupCookie, cookieMinutes, cookieDomain, and cookieOptions properties
6056
6072
  cacheUserLanguage(e, t) {
@@ -6060,9 +6076,9 @@ var xa = {
6060
6076
  cookieDomain: r,
6061
6077
  cookieOptions: a
6062
6078
  } = t;
6063
- n && typeof document < "u" && wt.create(n, e, o, r, a);
6079
+ n && typeof document < "u" && _t.create(n, e, o, r, a);
6064
6080
  }
6065
- }, Sa = {
6081
+ }, Ta = {
6066
6082
  name: "querystring",
6067
6083
  // Deconstruct the options object and extract the lookupQuerystring property
6068
6084
  lookup(e) {
@@ -6082,7 +6098,7 @@ var xa = {
6082
6098
  }
6083
6099
  return n;
6084
6100
  }
6085
- }, Ea = {
6101
+ }, Ca = {
6086
6102
  name: "hash",
6087
6103
  // Deconstruct the options object and extract the lookupHash property and the lookupFromHashIndex property
6088
6104
  lookup(e) {
@@ -6113,27 +6129,27 @@ var xa = {
6113
6129
  return o;
6114
6130
  }
6115
6131
  };
6116
- let W = null;
6117
- const _t = () => {
6118
- if (W !== null) return W;
6132
+ let Y = null;
6133
+ const wt = () => {
6134
+ if (Y !== null) return Y;
6119
6135
  try {
6120
- if (W = typeof window < "u" && window.localStorage !== null, !W)
6136
+ if (Y = typeof window < "u" && window.localStorage !== null, !Y)
6121
6137
  return !1;
6122
6138
  const e = "i18next.translate.boo";
6123
6139
  window.localStorage.setItem(e, "foo"), window.localStorage.removeItem(e);
6124
6140
  } catch {
6125
- W = !1;
6141
+ Y = !1;
6126
6142
  }
6127
- return W;
6143
+ return Y;
6128
6144
  };
6129
- var Na = {
6145
+ var Aa = {
6130
6146
  name: "localStorage",
6131
6147
  // Deconstruct the options object and extract the lookupLocalStorage property
6132
6148
  lookup(e) {
6133
6149
  let {
6134
6150
  lookupLocalStorage: t
6135
6151
  } = e;
6136
- if (t && _t())
6152
+ if (t && wt())
6137
6153
  return window.localStorage.getItem(t) || void 0;
6138
6154
  },
6139
6155
  // Deconstruct the options object and extract the lookupLocalStorage property
@@ -6141,23 +6157,23 @@ var Na = {
6141
6157
  let {
6142
6158
  lookupLocalStorage: n
6143
6159
  } = t;
6144
- n && _t() && window.localStorage.setItem(n, e);
6160
+ n && wt() && window.localStorage.setItem(n, e);
6145
6161
  }
6146
6162
  };
6147
- let Y = null;
6163
+ let X = null;
6148
6164
  const xt = () => {
6149
- if (Y !== null) return Y;
6165
+ if (X !== null) return X;
6150
6166
  try {
6151
- if (Y = typeof window < "u" && window.sessionStorage !== null, !Y)
6167
+ if (X = typeof window < "u" && window.sessionStorage !== null, !X)
6152
6168
  return !1;
6153
6169
  const e = "i18next.translate.boo";
6154
6170
  window.sessionStorage.setItem(e, "foo"), window.sessionStorage.removeItem(e);
6155
6171
  } catch {
6156
- Y = !1;
6172
+ X = !1;
6157
6173
  }
6158
- return Y;
6174
+ return X;
6159
6175
  };
6160
- var Ta = {
6176
+ var Ia = {
6161
6177
  name: "sessionStorage",
6162
6178
  lookup(e) {
6163
6179
  let {
@@ -6172,7 +6188,7 @@ var Ta = {
6172
6188
  } = t;
6173
6189
  n && xt() && window.sessionStorage.setItem(n, e);
6174
6190
  }
6175
- }, Ca = {
6191
+ }, Ra = {
6176
6192
  name: "navigator",
6177
6193
  lookup(e) {
6178
6194
  const t = [];
@@ -6189,7 +6205,7 @@ var Ta = {
6189
6205
  }
6190
6206
  return t.length > 0 ? t : void 0;
6191
6207
  }
6192
- }, Aa = {
6208
+ }, Oa = {
6193
6209
  name: "htmlTag",
6194
6210
  // Deconstruct the options object and extract the htmlTag property
6195
6211
  lookup(e) {
@@ -6199,7 +6215,7 @@ var Ta = {
6199
6215
  const o = t || (typeof document < "u" ? document.documentElement : null);
6200
6216
  return o && typeof o.getAttribute == "function" && (n = o.getAttribute("lang")), n;
6201
6217
  }
6202
- }, Ia = {
6218
+ }, La = {
6203
6219
  name: "path",
6204
6220
  // Deconstruct the options object and extract the lookupFromPathIndex property
6205
6221
  lookup(e) {
@@ -6210,7 +6226,7 @@ var Ta = {
6210
6226
  const n = window.location.pathname.match(/\/([a-zA-Z-]*)/g);
6211
6227
  return Array.isArray(n) ? n[typeof t == "number" ? t : 0]?.replace("/", "") : void 0;
6212
6228
  }
6213
- }, Ra = {
6229
+ }, Fa = {
6214
6230
  name: "subdomain",
6215
6231
  lookup(e) {
6216
6232
  let {
@@ -6228,7 +6244,7 @@ try {
6228
6244
  }
6229
6245
  const ln = ["querystring", "cookie", "localStorage", "sessionStorage", "navigator", "htmlTag"];
6230
6246
  an || ln.splice(1, 1);
6231
- const Oa = () => ({
6247
+ const Da = () => ({
6232
6248
  order: ln,
6233
6249
  lookupQuerystring: "lng",
6234
6250
  lookupCookie: "i18next",
@@ -6250,7 +6266,7 @@ class sn {
6250
6266
  let t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {
6251
6267
  languageUtils: {}
6252
6268
  }, n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, o = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
6253
- this.services = t, this.options = va(n, this.options || {}, Oa()), 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(xa), this.addDetector(Sa), this.addDetector(Na), this.addDetector(Ta), this.addDetector(Ca), this.addDetector(Aa), this.addDetector(Ia), this.addDetector(Ra), this.addDetector(Ea);
6269
+ this.services = t, this.options = xa(n, this.options || {}, Da()), 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(Na), this.addDetector(Ta), this.addDetector(Aa), this.addDetector(Ia), this.addDetector(Ra), this.addDetector(Oa), this.addDetector(La), this.addDetector(Fa), this.addDetector(Ca);
6254
6270
  }
6255
6271
  addDetector(t) {
6256
6272
  return this.detectors[t.name] = t, this;
@@ -6262,7 +6278,7 @@ class sn {
6262
6278
  let r = this.detectors[o].lookup(this.options);
6263
6279
  r && typeof r == "string" && (r = [r]), r && (n = n.concat(r));
6264
6280
  }
6265
- }), n = n.filter((o) => o != null && !wa(o)).map((o) => this.options.convertDetectedLanguage(o)), this.services && this.services.languageUtils && this.services.languageUtils.getBestMatchFromCodes ? n : n.length > 0 ? n[0] : null;
6281
+ }), n = n.filter((o) => o != null && !Sa(o)).map((o) => this.options.convertDetectedLanguage(o)), this.services && this.services.languageUtils && this.services.languageUtils.getBestMatchFromCodes ? n : n.length > 0 ? n[0] : null;
6266
6282
  }
6267
6283
  cacheUserLanguage(t) {
6268
6284
  let n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.options.caches;
@@ -6272,30 +6288,30 @@ class sn {
6272
6288
  }
6273
6289
  }
6274
6290
  sn.type = "languageDetector";
6275
- const La = { 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" }, Fa = { 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", 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." }, Da = { 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" }, Pa = { 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" }, Ma = { toggle: "Change theme", light: "Switch to light theme", dark: "Switch to dark theme", system: "Switch to system theme" }, za = { 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", threads_chart: "Threads", messages_chart: "Messages", token_usage_chart: "Token Usage", 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}}", 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.", 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" }, 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" } }, Ua = { 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" } }, $a = { 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." }, Ba = {
6276
- sidebar: La,
6277
- chat: Fa,
6278
- tools_ui: Da,
6279
- login: Pa,
6280
- theme: Ma,
6281
- admin: za,
6282
- settings: Ua,
6283
- errors: $a
6284
- }, Ha = { 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: "اشتراک‌گذاری" }, qa = { tools: "ابزارها", error: "خطا:", input_placeholder: "سوالتو اینجا بپرس...", insufficient_balance: "موجودی حساب شما کافی نیست. لطفا برای ادامه، حساب خود را شارژ کنید.", regenerate: "تولید مجدد", retry: "تلاش مجدد", copy: "کپی", like: "پسندیدم", dislike: "نپسندیدم", attach_file: "پیوست فایل", remove_file: "حذف فایل", used_sources: "از {{count}} منبع استفاده شد", welcome: { title: "سلام! چطور می‌تونم کمکت کنم؟", subtitle: "هر سوالی داری بپرس، تمام تلاشمو می‌کنم کمکت کنم.", suggestions: ["چه کارهایی می‌تونی انجام بدی؟", "یه چیز جالب بهم بگو", "کمکم کن یه ایمیل بنویسم", "یه مفهوم رو برام توضیح بده"] }, disclaimer: "هوش مصنوعی ممکن است اشتباه کند. اطلاعات مهم را بررسی کنید." }, ja = { pending: "در انتظار", running: "در حال اجرا", completed: "تکمیل شده", error: "خطا", parameters: "پارامترها", result: "نتیجه", view_error: "نمایش خطا", tool_error: "خطای ابزار", copied: "کپی شد!", copy_error: "کپی خطا" }, Ga = { 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: "ثبت نام" }, Va = { toggle: "تغییر تم", light: "تغییر به تم روشن", dark: "تغییر به تم تاریک", system: "تغییر به تم سیستم" }, Wa = { 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: "مصرف کل توکن", threads_chart: "گفتگوها", messages_chart: "پیام‌ها", token_usage_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}}", 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: "هیچ کاربری یافت نشد.", confirm_delete_user: "آیا از حذف این کاربر اطمینان دارید؟", tokens_exceed_limit: "تعداد توکن نمی‌تواند بیشتر از سقف مجاز باشد", requests_exceed_limit: "تعداد درخواست نمی‌تواند بیشتر از سقف مجاز باشد", metadata: "متادیتا (JSON)", initial_balance: "موجودی اولیه", custom_fields: "فیلدهای اضافه", metadata_raw: "متادیتا (JSON خام)", advanced_usage: "استفاده پیشرفته", invalid_json: "فرمت JSON نامعتبر است" }, 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: "© ۲۰۲۶ پلتفرم چت‌بات هوشمند" } }, Ya = { 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: "آخرین بروزرسانی اعتبار در تاریخ" } }, Xa = { 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: "منبع مورد نظر یافت نشد." }, Ka = {
6285
- sidebar: Ha,
6286
- chat: qa,
6287
- tools_ui: ja,
6288
- login: Ga,
6289
- theme: Va,
6290
- admin: Wa,
6291
- settings: Ya,
6292
- errors: Xa
6293
- }, Za = {
6294
- en: Ba,
6295
- fa: Ka
6296
- }, Ja = Ln.createInstance();
6297
- Ja.use(sn).use(un).init({
6298
- resources: Za,
6291
+ const Pa = { 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" }, Ma = { 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", 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." }, za = { 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" }, Ua = { 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" }, $a = { toggle: "Change theme", light: "Switch to light theme", dark: "Switch to dark theme", system: "Switch to system theme" }, Ba = { 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", 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" }, 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" } }, Ha = { 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" } }, qa = { 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." }, ja = {
6292
+ sidebar: Pa,
6293
+ chat: Ma,
6294
+ tools_ui: za,
6295
+ login: Ua,
6296
+ theme: $a,
6297
+ admin: Ba,
6298
+ settings: Ha,
6299
+ errors: qa
6300
+ }, Ga = { 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: "اشتراک‌گذاری" }, Va = { tools: "ابزارها", error: "خطا:", input_placeholder: "سوالتو اینجا بپرس...", insufficient_balance: "موجودی حساب شما کافی نیست. لطفا برای ادامه، حساب خود را شارژ کنید.", regenerate: "تولید مجدد", retry: "تلاش مجدد", copy: "کپی", like: "پسندیدم", dislike: "نپسندیدم", attach_file: "پیوست فایل", remove_file: "حذف فایل", used_sources: "از {{count}} منبع استفاده شد", welcome: { title: "سلام! چطور می‌تونم کمکت کنم؟", subtitle: "هر سوالی داری بپرس، تمام تلاشمو می‌کنم کمکت کنم.", suggestions: ["چه کارهایی می‌تونی انجام بدی؟", "یه چیز جالب بهم بگو", "کمکم کن یه ایمیل بنویسم", "یه مفهوم رو برام توضیح بده"] }, disclaimer: "هوش مصنوعی ممکن است اشتباه کند. اطلاعات مهم را بررسی کنید." }, Wa = { pending: "در انتظار", running: "در حال اجرا", completed: "تکمیل شده", error: "خطا", parameters: "پارامترها", result: "نتیجه", view_error: "نمایش خطا", tool_error: "خطای ابزار", copied: "کپی شد!", copy_error: "کپی خطا" }, Ya = { 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: "ثبت نام" }, Xa = { toggle: "تغییر تم", light: "تغییر به تم روشن", dark: "تغییر به تم تاریک", system: "تغییر به تم سیستم" }, Ka = { 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: "مصرف توکن", 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: "درخواست‌های بدون هزینه‌ی ثبت شده" }, 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: "© ۲۰۲۶ پلتفرم چت‌بات هوشمند" } }, Za = { 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: "آخرین بروزرسانی اعتبار در تاریخ" } }, Ja = { 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: "منبع مورد نظر یافت نشد." }, Qa = {
6301
+ sidebar: Ga,
6302
+ chat: Va,
6303
+ tools_ui: Wa,
6304
+ login: Ya,
6305
+ theme: Xa,
6306
+ admin: Ka,
6307
+ settings: Za,
6308
+ errors: Ja
6309
+ }, ei = {
6310
+ en: ja,
6311
+ fa: Qa
6312
+ }, ti = Fn.createInstance();
6313
+ ti.use(sn).use(un).init({
6314
+ resources: ei,
6299
6315
  fallbackLng: "en",
6300
6316
  returnNull: !1,
6301
6317
  returnEmptyString: !1,
@@ -6309,13 +6325,13 @@ Ja.use(sn).use(un).init({
6309
6325
  caches: ["localStorage"]
6310
6326
  }
6311
6327
  });
6312
- function Ti({ className: e, type: t, ...n }) {
6328
+ function Ri({ className: e, type: t, ...n }) {
6313
6329
  return /* @__PURE__ */ i(
6314
6330
  "input",
6315
6331
  {
6316
6332
  type: t,
6317
6333
  "data-slot": "input",
6318
- className: y(
6334
+ className: k(
6319
6335
  "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",
6320
6336
  "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
6321
6337
  "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
@@ -6325,38 +6341,38 @@ function Ti({ className: e, type: t, ...n }) {
6325
6341
  }
6326
6342
  );
6327
6343
  }
6328
- const Ci = "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", Qa = De(
6344
+ const Oi = "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", ni = De(
6329
6345
  "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
6330
- ), ei = Ce.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ i(
6346
+ ), oi = Ce.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ i(
6331
6347
  "label",
6332
6348
  {
6333
6349
  ref: n,
6334
- className: y(Qa(), e),
6350
+ className: k(ni(), e),
6335
6351
  ...t
6336
6352
  }
6337
6353
  ));
6338
- ei.displayName = "Label";
6339
- function Ai({ ...e }) {
6354
+ oi.displayName = "Label";
6355
+ function Li({ ...e }) {
6340
6356
  return /* @__PURE__ */ i(F.Root, { "data-slot": "select", ...e });
6341
6357
  }
6342
- function Ii({ ...e }) {
6358
+ function Fi({ ...e }) {
6343
6359
  return /* @__PURE__ */ i(F.Group, { "data-slot": "select-group", ...e });
6344
6360
  }
6345
- function Ri({ ...e }) {
6361
+ function Di({ ...e }) {
6346
6362
  return /* @__PURE__ */ i(F.Value, { "data-slot": "select-value", ...e });
6347
6363
  }
6348
- function Oi({
6364
+ function Pi({
6349
6365
  className: e,
6350
6366
  size: t = "default",
6351
6367
  children: n,
6352
6368
  ...o
6353
6369
  }) {
6354
- return /* @__PURE__ */ _(
6370
+ return /* @__PURE__ */ w(
6355
6371
  F.Trigger,
6356
6372
  {
6357
6373
  "data-slot": "select-trigger",
6358
6374
  "data-size": t,
6359
- className: y(
6375
+ className: k(
6360
6376
  "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",
6361
6377
  e
6362
6378
  ),
@@ -6368,17 +6384,17 @@ function Oi({
6368
6384
  }
6369
6385
  );
6370
6386
  }
6371
- function Li({
6387
+ function Mi({
6372
6388
  className: e,
6373
6389
  children: t,
6374
6390
  position: n = "popper",
6375
6391
  ...o
6376
6392
  }) {
6377
- return /* @__PURE__ */ i(F.Portal, { children: /* @__PURE__ */ _(
6393
+ return /* @__PURE__ */ i(F.Portal, { children: /* @__PURE__ */ w(
6378
6394
  F.Content,
6379
6395
  {
6380
6396
  "data-slot": "select-content",
6381
- className: y(
6397
+ className: k(
6382
6398
  "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",
6383
6399
  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",
6384
6400
  e
@@ -6386,38 +6402,38 @@ function Li({
6386
6402
  position: n,
6387
6403
  ...o,
6388
6404
  children: [
6389
- /* @__PURE__ */ i(ti, {}),
6405
+ /* @__PURE__ */ i(ri, {}),
6390
6406
  /* @__PURE__ */ i(
6391
6407
  F.Viewport,
6392
6408
  {
6393
- className: y(
6409
+ className: k(
6394
6410
  "p-1",
6395
6411
  n === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
6396
6412
  ),
6397
6413
  children: t
6398
6414
  }
6399
6415
  ),
6400
- /* @__PURE__ */ i(ni, {})
6416
+ /* @__PURE__ */ i(ai, {})
6401
6417
  ]
6402
6418
  }
6403
6419
  ) });
6404
6420
  }
6405
- function Fi({ className: e, ...t }) {
6421
+ function zi({ className: e, ...t }) {
6406
6422
  return /* @__PURE__ */ i(
6407
6423
  F.Label,
6408
6424
  {
6409
6425
  "data-slot": "select-label",
6410
- className: y("text-muted-foreground px-2 py-1.5 text-xs", e),
6426
+ className: k("text-muted-foreground px-2 py-1.5 text-xs", e),
6411
6427
  ...t
6412
6428
  }
6413
6429
  );
6414
6430
  }
6415
- function Di({ className: e, children: t, ...n }) {
6416
- return /* @__PURE__ */ _(
6431
+ function Ui({ className: e, children: t, ...n }) {
6432
+ return /* @__PURE__ */ w(
6417
6433
  F.Item,
6418
6434
  {
6419
6435
  "data-slot": "select-item",
6420
- className: y(
6436
+ className: k(
6421
6437
  "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",
6422
6438
  e
6423
6439
  ),
@@ -6429,28 +6445,28 @@ function Di({ className: e, children: t, ...n }) {
6429
6445
  }
6430
6446
  );
6431
6447
  }
6432
- function Pi({ className: e, ...t }) {
6448
+ function $i({ className: e, ...t }) {
6433
6449
  return /* @__PURE__ */ i(
6434
6450
  F.Separator,
6435
6451
  {
6436
6452
  "data-slot": "select-separator",
6437
- className: y("bg-border pointer-events-none -mx-1 my-1 h-px", e),
6453
+ className: k("bg-border pointer-events-none -mx-1 my-1 h-px", e),
6438
6454
  ...t
6439
6455
  }
6440
6456
  );
6441
6457
  }
6442
- function ti({ className: e, ...t }) {
6458
+ function ri({ className: e, ...t }) {
6443
6459
  return /* @__PURE__ */ i(
6444
6460
  F.ScrollUpButton,
6445
6461
  {
6446
6462
  "data-slot": "select-scroll-up-button",
6447
- className: y("flex cursor-default items-center justify-center py-1", e),
6463
+ className: k("flex cursor-default items-center justify-center py-1", e),
6448
6464
  ...t,
6449
6465
  children: /* @__PURE__ */ i(An, { className: "size-4" })
6450
6466
  }
6451
6467
  );
6452
6468
  }
6453
- function ni({
6469
+ function ai({
6454
6470
  className: e,
6455
6471
  ...t
6456
6472
  }) {
@@ -6458,13 +6474,13 @@ function ni({
6458
6474
  F.ScrollDownButton,
6459
6475
  {
6460
6476
  "data-slot": "select-scroll-down-button",
6461
- className: y("flex cursor-default items-center justify-center py-1", e),
6477
+ className: k("flex cursor-default items-center justify-center py-1", e),
6462
6478
  ...t,
6463
6479
  children: /* @__PURE__ */ i(ie, { className: "size-4" })
6464
6480
  }
6465
6481
  );
6466
6482
  }
6467
- function Mi(e, t) {
6483
+ function Bi(e, t) {
6468
6484
  if (!e) return !0;
6469
6485
  const { field: n, operator: o = "equals", value: r } = e, a = t[n];
6470
6486
  switch (o) {
@@ -6480,13 +6496,13 @@ function Mi(e, t) {
6480
6496
  return !0;
6481
6497
  }
6482
6498
  }
6483
- function zi({ ...e }) {
6499
+ function Hi({ ...e }) {
6484
6500
  return /* @__PURE__ */ i(re.Root, { "data-slot": "dropdown-menu", ...e });
6485
6501
  }
6486
- function Ui({ ...e }) {
6502
+ function qi({ ...e }) {
6487
6503
  return /* @__PURE__ */ i(re.Trigger, { "data-slot": "dropdown-menu-trigger", ...e });
6488
6504
  }
6489
- function $i({
6505
+ function ji({
6490
6506
  className: e,
6491
6507
  sideOffset: t = 4,
6492
6508
  ...n
@@ -6496,7 +6512,7 @@ function $i({
6496
6512
  {
6497
6513
  "data-slot": "dropdown-menu-content",
6498
6514
  sideOffset: t,
6499
- className: y(
6515
+ className: k(
6500
6516
  "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",
6501
6517
  e
6502
6518
  ),
@@ -6504,7 +6520,7 @@ function $i({
6504
6520
  }
6505
6521
  ) });
6506
6522
  }
6507
- function Bi({
6523
+ function Gi({
6508
6524
  className: e,
6509
6525
  inset: t,
6510
6526
  variant: n = "default",
@@ -6516,7 +6532,7 @@ function Bi({
6516
6532
  "data-slot": "dropdown-menu-item",
6517
6533
  "data-inset": t,
6518
6534
  "data-variant": n,
6519
- className: y(
6535
+ className: k(
6520
6536
  "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",
6521
6537
  e
6522
6538
  ),
@@ -6524,12 +6540,12 @@ function Bi({
6524
6540
  }
6525
6541
  );
6526
6542
  }
6527
- function Hi({ className: e, ...t }) {
6543
+ function Vi({ className: e, ...t }) {
6528
6544
  return /* @__PURE__ */ i(
6529
6545
  Ye.Root,
6530
6546
  {
6531
6547
  "data-slot": "checkbox",
6532
- className: y(
6548
+ className: k(
6533
6549
  "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",
6534
6550
  e
6535
6551
  ),
@@ -6546,61 +6562,63 @@ function Hi({ className: e, ...t }) {
6546
6562
  );
6547
6563
  }
6548
6564
  export {
6549
- uo as $,
6550
- Bi as A,
6551
- Q as B,
6552
- Ni as C,
6553
- Ar as D,
6554
- Fr as E,
6555
- Dr as F,
6565
+ ka as $,
6566
+ ji as A,
6567
+ ee as B,
6568
+ Ii as C,
6569
+ Or as D,
6570
+ Gi as E,
6571
+ Mr as F,
6556
6572
  Xe as G,
6557
- Ei as H,
6558
- Ti as I,
6559
- Si as J,
6560
- Hi as K,
6561
- ei as L,
6562
- fe as M,
6563
- ba as N,
6564
- Qn as O,
6565
- Hn as P,
6566
- so as Q,
6567
- Nr as R,
6568
- Ai as S,
6569
- ki as T,
6570
- Ii as U,
6573
+ zr as H,
6574
+ Ri as I,
6575
+ Ai as J,
6576
+ Ci as K,
6577
+ oi as L,
6578
+ Vi as M,
6579
+ fe as N,
6580
+ va as O,
6581
+ eo as P,
6582
+ qn as Q,
6583
+ co as R,
6584
+ Li as S,
6585
+ xi as T,
6586
+ Ar as U,
6571
6587
  Fi as V,
6572
- ni as W,
6573
- ti as X,
6574
- Pi as Y,
6575
- _r as Z,
6576
- fa as _,
6577
- te as a,
6578
- xi as a0,
6579
- eo as a1,
6580
- sn as a2,
6581
- Bn as b,
6582
- wi as c,
6583
- Za as d,
6584
- y as e,
6585
- lo as f,
6586
- Ja as g,
6588
+ zi as W,
6589
+ ai as X,
6590
+ ri as Y,
6591
+ $i as Z,
6592
+ Er as _,
6593
+ W as a,
6594
+ go as a0,
6595
+ ho as a1,
6596
+ Ti as a2,
6597
+ to as a3,
6598
+ sn as a4,
6599
+ Hn as b,
6600
+ Ei as c,
6601
+ ei as d,
6602
+ k as e,
6603
+ so as f,
6604
+ ti as g,
6587
6605
  Rt as h,
6588
6606
  Ot as i,
6589
- _i as j,
6607
+ Ni as j,
6590
6608
  Lt as k,
6591
6609
  Ft as l,
6592
- vi as m,
6593
- Mi as n,
6594
- Ir as o,
6595
- Lr as p,
6596
- Oi as q,
6597
- Ri as r,
6598
- Li as s,
6599
- Di as t,
6610
+ Si as m,
6611
+ Bi as n,
6612
+ Lr as o,
6613
+ Pr as p,
6614
+ Pi as q,
6615
+ Di as r,
6616
+ Mi as s,
6617
+ Ui as t,
6600
6618
  S as u,
6601
- Ci as v,
6602
- ge as w,
6603
- zi as x,
6604
- Ui as y,
6605
- $i as z
6619
+ po as v,
6620
+ Oi as w,
6621
+ ge as x,
6622
+ Hi as y,
6623
+ qi as z
6606
6624
  };