gentiq 0.7.27 → 0.7.28

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,27 +1,27 @@
1
1
  import { jsx as i, Fragment as J, jsxs as w } from "react/jsx-runtime";
2
2
  import * as Ce from "react";
3
- import { useState as B, useCallback as oe, useMemo as _t, useEffect as Q, Children as sn, useRef as Ge, memo as de, createContext as pe, useContext as Le } from "react";
4
- import { useTranslation as M, initReactI18next as cn } from "react-i18next";
5
- import { ArrowDownIcon as un, ChevronDownIcon as ie, BookIcon as dn, XIcon as he, CheckIcon as De, ArrowUpIcon as pn, Loader2Icon as hn, SquareIcon as gn, FileIcon as St, PaperclipIcon as mn, MessageCircle as fn, RefreshCcwIcon as bn, ThumbsUpIcon as kn, ThumbsDownIcon as yn, CopyIcon as Et, BrainIcon as vn, WrenchIcon as wn, ImagePlusIcon as xn, CodeIcon as _n, DownloadIcon as ue, GlobeIcon as Sn, XCircleIcon as Nt, CheckCircleIcon as En, ClockIcon as Nn, CircleIcon as Tn, ChevronUpIcon as Cn } from "lucide-react";
6
- import { Slot as Tt } from "@radix-ui/react-slot";
3
+ import { useState as B, useCallback as oe, useMemo as St, useEffect as Q, Children as cn, useRef as Ge, memo as de, createContext as pe, useContext as Le } from "react";
4
+ import { useTranslation as M, initReactI18next as un } from "react-i18next";
5
+ import { ArrowDownIcon as dn, ChevronDownIcon as ie, BookIcon as pn, XIcon as he, CheckIcon as De, ArrowUpIcon as hn, Loader2Icon as gn, SquareIcon as mn, FileIcon as Et, PaperclipIcon as fn, MessageCircle as bn, RefreshCcwIcon as yn, ThumbsUpIcon as kn, ThumbsDownIcon as vn, CopyIcon as Nt, BrainIcon as wn, WrenchIcon as xn, ImagePlusIcon as _n, CodeIcon as Sn, DownloadIcon as ue, GlobeIcon as En, XCircleIcon as Tt, CheckCircleIcon as Nn, ClockIcon as Tn, CircleIcon as Cn, ChevronUpIcon as An } from "lucide-react";
6
+ import { Slot as Ct } from "@radix-ui/react-slot";
7
7
  import { cva as Pe } from "class-variance-authority";
8
- import { StickToBottom as Ct, useStickToBottomContext as An } from "use-stick-to-bottom";
8
+ import { StickToBottom as At, useStickToBottomContext as In } from "use-stick-to-bottom";
9
9
  import * as Me from "@radix-ui/react-collapsible";
10
10
  import * as K from "@radix-ui/react-tooltip";
11
- import { toast as In } from "sonner";
11
+ import { toast as Rn } from "sonner";
12
12
  import "@radix-ui/react-scroll-area";
13
- import { Streamdown as Rn } from "streamdown";
14
- import We from "katex";
15
- import { useControllableState as Ve } from "@radix-ui/react-use-controllable-state";
13
+ import { Streamdown as On } from "streamdown";
14
+ import Ve from "katex";
15
+ import { useControllableState as We } from "@radix-ui/react-use-controllable-state";
16
16
  import * as H from "@radix-ui/react-dialog";
17
17
  import { PrismLight as $ } from "react-syntax-highlighter";
18
- import On from "i18next";
18
+ import Fn from "i18next";
19
19
  import * as L from "@radix-ui/react-select";
20
20
  import * as re from "@radix-ui/react-dropdown-menu";
21
21
  import * as Ye from "@radix-ui/react-checkbox";
22
- import { clsx as Fn } from "clsx";
23
- import { twMerge as Ln } from "tailwind-merge";
24
- class Dn extends Error {
22
+ import { clsx as Ln } from "clsx";
23
+ import { twMerge as Dn } from "tailwind-merge";
24
+ class Xe extends Error {
25
25
  code;
26
26
  status;
27
27
  details;
@@ -29,8 +29,11 @@ class Dn extends Error {
29
29
  super(t.error.message), this.name = "GentiqError", this.code = t.error.code, this.status = n, this.details = t.error.details;
30
30
  }
31
31
  }
32
- function ki(e, t) {
33
- const n = typeof e == "string" ? e : e.code, o = `errors.${n}`, r = t(o);
32
+ function yi(e, t) {
33
+ const n = typeof e == "string" ? e : e.code;
34
+ if (typeof n != "string")
35
+ return e?.message || String(e);
36
+ const o = `errors:${n}`, r = t(o);
34
37
  return r === o ? typeof e != "string" && e.message ? e.message : n.replace(/_/g, " ").replace(/\b\w/g, (a) => a.toUpperCase()) : r;
35
38
  }
36
39
  let N = {
@@ -88,10 +91,16 @@ const S = {
88
91
  handleResponse: async (e, t = "Request failed") => {
89
92
  if (!e.ok) {
90
93
  const n = await e.json().catch(() => ({}));
91
- if (n.error && (n.error.code || n.error.message))
92
- throw new Dn(n, e.status);
93
- const o = n.error || n.message || t, r = new Error(o);
94
- throw r.status = e.status, r;
94
+ if (n.error && (typeof n.error.code == "string" || typeof n.error.message == "string"))
95
+ throw new Xe(n, e.status);
96
+ let o = t, r = "error", a = null;
97
+ throw typeof n.detail == "string" ? o = n.detail : typeof n.message == "string" ? o = n.message : typeof n.error == "string" ? o = n.error : Array.isArray(n.detail) ? (o = "Validation failed", a = n.detail, r = "validation_error") : n.error && typeof n.error.message == "string" && (o = n.error.message), new Xe({
98
+ error: {
99
+ code: r,
100
+ message: o,
101
+ details: a
102
+ }
103
+ }, e.status);
95
104
  }
96
105
  return e.json();
97
106
  },
@@ -281,7 +290,7 @@ function Mn(e, t) {
281
290
  }
282
291
  const zn = /* @__PURE__ */ new Set(["ar", "fa", "he", "ur", "yi", "ku", "ckb", "ps", "sd", "ug", "arc", "syc"]);
283
292
  function $n() {
284
- const { i18n: e } = M(["translation"]), { app: t } = V(), n = _t(() => {
293
+ const { i18n: e } = M(["translation"]), { app: t } = W(), n = St(() => {
285
294
  const l = S.getConfig(), c = t || l.app;
286
295
  return {
287
296
  name: c?.name || "Gentiq App",
@@ -318,7 +327,7 @@ function Un(e) {
318
327
  renderMessagePart: p,
319
328
  chat: h,
320
329
  readonly: f
321
- } = e, { showToolDetails: b } = $n(), { TextPart: m, ReasoningPart: k, ToolPart: d, FilePart: v, toolComponents: x, threadActions: g } = V(), { feedback: R, handleFeedback: E, copy: I } = Mn(n, c);
330
+ } = e, { showToolDetails: b } = $n(), { TextPart: m, ReasoningPart: y, ToolPart: d, FilePart: v, toolComponents: x, threadActions: g } = W(), { feedback: R, handleFeedback: E, copy: I } = Mn(n, c);
322
331
  if (p) {
323
332
  const O = p(t, n);
324
333
  if (O !== void 0)
@@ -345,7 +354,7 @@ function Un(e) {
345
354
  retryEnabled: f ? !1 : g?.retry ?? !1
346
355
  }
347
356
  ) : t.type === "reasoning" ? /* @__PURE__ */ i(
348
- k,
357
+ y,
349
358
  {
350
359
  part: t,
351
360
  status: o,
@@ -370,10 +379,10 @@ function Un(e) {
370
379
  }
371
380
  ) : null;
372
381
  }
373
- function y(...e) {
374
- return Ln(Fn(e));
382
+ function k(...e) {
383
+ return Dn(Ln(e));
375
384
  }
376
- function yi(e, t) {
385
+ function ki(e, t) {
377
386
  if (t === "/") return e;
378
387
  const n = e.endsWith("/") ? e.slice(0, -1) : e, o = t.startsWith("/") ? t : "/" + t;
379
388
  return n + o;
@@ -381,7 +390,7 @@ function yi(e, t) {
381
390
  const fe = ({ className: e, ...t }) => /* @__PURE__ */ i(
382
391
  "div",
383
392
  {
384
- className: y(
393
+ className: k(
385
394
  "flex items-center gap-1.5 px-1 py-3",
386
395
  e
387
396
  ),
@@ -441,32 +450,32 @@ function ee({
441
450
  asChild: o = !1,
442
451
  ...r
443
452
  }) {
444
- return /* @__PURE__ */ i(o ? Tt : "button", { "data-slot": "button", className: y(Hn({ variant: t, size: n, className: e })), ...r });
453
+ return /* @__PURE__ */ i(o ? Ct : "button", { "data-slot": "button", className: k(Hn({ variant: t, size: n, className: e })), ...r });
445
454
  }
446
455
  const qn = ({ className: e, ...t }) => /* @__PURE__ */ i(
447
- Ct,
456
+ At,
448
457
  {
449
- className: y("relative flex-1 overflow-hidden", e),
458
+ className: k("relative flex-1 overflow-hidden", e),
450
459
  initial: "smooth",
451
460
  resize: "smooth",
452
461
  role: "log",
453
462
  ...t
454
463
  }
455
464
  ), jn = ({ className: e, ...t }) => /* @__PURE__ */ i(
456
- Ct.Content,
465
+ At.Content,
457
466
  {
458
- className: y("p-4 pb-6 stick-to-bottom", e),
467
+ className: k("p-4 pb-6 stick-to-bottom", e),
459
468
  scrollClassName: "custom-scrollbar",
460
469
  ...t
461
470
  }
462
471
  ), Gn = ({ className: e, ...t }) => {
463
- const { isAtBottom: n, scrollToBottom: o } = An(), r = oe(() => {
472
+ const { isAtBottom: n, scrollToBottom: o } = In(), r = oe(() => {
464
473
  o();
465
474
  }, [o]);
466
475
  return n ? null : /* @__PURE__ */ i(
467
476
  "button",
468
477
  {
469
- className: y(
478
+ className: k(
470
479
  "absolute bottom-32 left-1/2 -translate-x-1/2 z-10",
471
480
  "flex items-center gap-1.5 px-4 py-2 rounded-full text-sm font-medium",
472
481
  "glass border border-border/50 shadow-lg shadow-black/10",
@@ -479,7 +488,7 @@ const qn = ({ className: e, ...t }) => /* @__PURE__ */ i(
479
488
  onClick: r,
480
489
  type: "button",
481
490
  ...t,
482
- children: /* @__PURE__ */ i(un, { className: "size-3.5" })
491
+ children: /* @__PURE__ */ i(dn, { className: "size-3.5" })
483
492
  }
484
493
  );
485
494
  };
@@ -492,16 +501,16 @@ function $e({ ...e }) {
492
501
  function Ue({ ...e }) {
493
502
  return /* @__PURE__ */ i(Me.CollapsibleContent, { "data-slot": "collapsible-content", ...e });
494
503
  }
495
- const Wn = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: y("not-prose mb-4 text-primary text-xs", e), ...t }), Vn = ({ className: e, count: t, children: n, ...o }) => {
504
+ const Vn = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: k("not-prose mb-4 text-primary text-xs", e), ...t }), Wn = ({ className: e, count: t, children: n, ...o }) => {
496
505
  const { t: r } = M(["chat"]);
497
- return /* @__PURE__ */ i($e, { className: y("flex items-center gap-2", e), ...o, children: n ?? /* @__PURE__ */ w(J, { children: [
506
+ return /* @__PURE__ */ i($e, { className: k("flex items-center gap-2", e), ...o, children: n ?? /* @__PURE__ */ w(J, { children: [
498
507
  /* @__PURE__ */ i("p", { className: "font-medium", children: r("used_sources", { count: t }) }),
499
508
  /* @__PURE__ */ i(ie, { className: "h-4 w-4" })
500
509
  ] }) });
501
510
  }, Yn = ({ className: e, ...t }) => /* @__PURE__ */ i(
502
511
  Ue,
503
512
  {
504
- className: y(
513
+ className: k(
505
514
  "mt-3 flex w-fit flex-col gap-2",
506
515
  "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",
507
516
  e
@@ -509,7 +518,7 @@ const Wn = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: y("not
509
518
  ...t
510
519
  }
511
520
  ), Xn = ({ 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: [
512
- /* @__PURE__ */ i(dn, { className: "h-4 w-4" }),
521
+ /* @__PURE__ */ i(pn, { className: "h-4 w-4" }),
513
522
  /* @__PURE__ */ i("span", { className: "block font-medium", children: t })
514
523
  ] }) }), Kn = ({ latestProgress: e, parts: t }) => {
515
524
  const n = e.data[0].status, o = e.data[0].message, r = t.lastIndexOf(e);
@@ -517,12 +526,12 @@ const Wn = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: y("not
517
526
  (f) => f.type === "text" && (f.text || "").trim().length > 0 || f.type === "tool-invocation" || f.type === "tool-call"
518
527
  ) && n !== "running")) return null;
519
528
  const s = n === "running", p = n === "error", h = ge(o);
520
- return /* @__PURE__ */ i("div", { className: y(
529
+ return /* @__PURE__ */ i("div", { className: k(
521
530
  "flex w-full py-3 mx-auto max-w-4xl px-4 md:px-0 animate-in-bubble",
522
531
  h === "rtl" ? "justify-end" : "justify-start"
523
- ), children: /* @__PURE__ */ w("div", { className: y("flex items-center gap-3 text-sm text-muted-foreground", h === "rtl" && "flex-row-reverse"), dir: h, children: [
532
+ ), children: /* @__PURE__ */ w("div", { className: k("flex items-center gap-3 text-sm text-muted-foreground", h === "rtl" && "flex-row-reverse"), dir: h, children: [
524
533
  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(De, { className: "size-4 text-green-500 shrink-0" }),
525
- /* @__PURE__ */ i("span", { className: y("font-medium", s && "animate-pulse"), children: o })
534
+ /* @__PURE__ */ i("span", { className: k("font-medium", s && "animate-pulse"), children: o })
526
535
  ] }) });
527
536
  };
528
537
  function Zn({
@@ -537,12 +546,12 @@ function Zn({
537
546
  className: s,
538
547
  readonly: p
539
548
  }) {
540
- const { i18n: h, t: f } = M(["chat", "translation"]), b = h.language === "fa", { WelcomeScreen: m } = V(), k = e[e.length - 1], d = k?.role === "assistant" && (t === "ready" || k.parts.some((v) => v.type === "data-chat-finished"));
541
- return /* @__PURE__ */ w(qn, { className: y("min-h-0 flex-1", s), children: [
549
+ const { i18n: h, t: f } = M(["chat", "translation"]), b = h.language === "fa", { WelcomeScreen: m } = W(), y = e[e.length - 1], d = y?.role === "assistant" && (t === "ready" || y.parts.some((v) => v.type === "data-chat-finished"));
550
+ return /* @__PURE__ */ w(qn, { className: k("min-h-0 flex-1", s), children: [
542
551
  /* @__PURE__ */ w(jn, { className: "max-w-4xl mx-auto w-full px-4 md:px-0 pb-32", dir: "ltr", children: [
543
552
  e.length === 0 && !n ? /* @__PURE__ */ i(m, { onSuggestionClick: l }) : e.map((v) => /* @__PURE__ */ w("div", { children: [
544
- v.role === "assistant" && v.parts.filter((x) => x.type === "source-url").length > 0 && /* @__PURE__ */ w(Wn, { children: [
545
- /* @__PURE__ */ i(Vn, { count: v.parts.filter((x) => x.type === "source-url").length }),
553
+ v.role === "assistant" && v.parts.filter((x) => x.type === "source-url").length > 0 && /* @__PURE__ */ w(Vn, { children: [
554
+ /* @__PURE__ */ i(Wn, { count: v.parts.filter((x) => x.type === "source-url").length }),
546
555
  v.parts.filter((x) => x.type === "source-url").map((x, g) => /* @__PURE__ */ i(Yn, { children: /* @__PURE__ */ i(Xn, { href: x.url, title: x.url }, `${v.id}-${g}`) }, `${v.id}-${g}`))
547
556
  ] }),
548
557
  v.parts.map((x, g) => /* @__PURE__ */ i(
@@ -563,11 +572,11 @@ function Zn({
563
572
  ))
564
573
  ] }, v.id)),
565
574
  (() => {
566
- if (!k || k.role !== "assistant") return null;
567
- const v = k.parts.filter((g) => g.type === "data-progress-update");
575
+ if (!y || y.role !== "assistant") return null;
576
+ const v = y.parts.filter((g) => g.type === "data-progress-update");
568
577
  if (v.length === 0) return null;
569
578
  const x = v[v.length - 1];
570
- return x ? /* @__PURE__ */ i(Kn, { latestProgress: x, parts: k.parts }) : null;
579
+ return x ? /* @__PURE__ */ i(Kn, { latestProgress: x, parts: y.parts }) : null;
571
580
  })(),
572
581
  (n || t === "submitted") && /* @__PURE__ */ i("div", { className: "animate-in-bubble", children: /* @__PURE__ */ i(fe, {}) }),
573
582
  t === "streaming" && (() => {
@@ -576,12 +585,12 @@ function Zn({
576
585
  (g) => g.type === "text" && g.text?.trim().length > 0 || g.type === "reasoning" || g.type === "tool-invocation" || g.type === "tool-call"
577
586
  ) ? null : /* @__PURE__ */ i(fe, {});
578
587
  })(),
579
- 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: y(
588
+ 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(
580
589
  "flex w-full items-start gap-3 px-4 py-3.5 rounded-xl bg-destructive/8 border border-destructive/15",
581
590
  b ? "border-r-2 border-r-destructive/60" : "border-l-2 border-l-destructive/60"
582
591
  ), dir: b ? "rtl" : "ltr", children: [
583
592
  /* @__PURE__ */ i("div", { className: "size-1.5 rounded-full bg-destructive mt-2 shrink-0" }),
584
- /* @__PURE__ */ w("div", { className: y("text-sm text-destructive/90 leading-relaxed flex-1", b ? "text-right" : "text-left"), children: [
593
+ /* @__PURE__ */ w("div", { className: k("text-sm text-destructive/90 leading-relaxed flex-1", b ? "text-right" : "text-left"), children: [
585
594
  /* @__PURE__ */ i("span", { className: "font-semibold", children: f("error") }),
586
595
  " ",
587
596
  o.message
@@ -596,7 +605,7 @@ function Jn({ className: e, ...t }) {
596
605
  "textarea",
597
606
  {
598
607
  "data-slot": "textarea",
599
- className: y(
608
+ className: k(
600
609
  "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",
601
610
  e
602
611
  ),
@@ -607,7 +616,7 @@ function Jn({ className: e, ...t }) {
607
616
  const Qn = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg-transparent w-full", children: /* @__PURE__ */ i(
608
617
  "form",
609
618
  {
610
- className: y(
619
+ className: k(
611
620
  "w-full flex items-end gap-2 overflow-hidden",
612
621
  "rounded-lg bg-surface glow-primary",
613
622
  "px-3 py-2",
@@ -638,7 +647,7 @@ const Qn = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg
638
647
  Jn,
639
648
  {
640
649
  dir: l,
641
- className: y(
650
+ className: k(
642
651
  "flex-1 resize-none rounded-none border-none shadow-none outline-none ring-0",
643
652
  "px-2 py-2.5",
644
653
  "field-sizing-content max-h-[6lh] bg-transparent dark:bg-transparent",
@@ -656,12 +665,12 @@ const Qn = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg
656
665
  ...o
657
666
  }
658
667
  );
659
- }, to = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: y("flex shrink-0 items-center gap-1.5 pb-1", e), ...t }), no = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: y("flex items-center gap-0.5", e), ...t }), oo = ({ variant: e = "ghost", className: t, size: n, ...o }) => {
660
- const r = n ?? sn.count(o.children) > 1 ? "default" : "icon";
668
+ }, to = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: k("flex shrink-0 items-center gap-1.5 pb-1", e), ...t }), no = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: k("flex items-center gap-0.5", e), ...t }), oo = ({ variant: e = "ghost", className: t, size: n, ...o }) => {
669
+ const r = n ?? cn.count(o.children) > 1 ? "default" : "icon";
661
670
  return /* @__PURE__ */ i(
662
671
  ee,
663
672
  {
664
- className: y(
673
+ className: k(
665
674
  "shrink-0 gap-1.5 rounded-xl",
666
675
  "text-muted-foreground hover:text-foreground",
667
676
  "hover:bg-accent/60 transition-all duration-200",
@@ -683,11 +692,11 @@ const Qn = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg
683
692
  children: r,
684
693
  ...a
685
694
  }) => {
686
- let l = /* @__PURE__ */ i(pn, { className: "size-4" });
687
- return o === "submitted" ? l = /* @__PURE__ */ i(hn, { className: "size-4 animate-spin" }) : o === "streaming" ? l = /* @__PURE__ */ i(gn, { className: "size-3.5 fill-current" }) : o === "error" && (l = /* @__PURE__ */ i(he, { className: "size-4" })), /* @__PURE__ */ i(
695
+ let l = /* @__PURE__ */ i(hn, { className: "size-4" });
696
+ 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(
688
697
  ee,
689
698
  {
690
- className: y(
699
+ className: k(
691
700
  "shrink-0 rounded-lg size-9",
692
701
  "bg-gradient-to-br from-primary to-primary/80",
693
702
  "text-primary-foreground",
@@ -709,16 +718,16 @@ const Qn = ({ className: e, ...t }) => /* @__PURE__ */ i("div", { className: "bg
709
718
  }
710
719
  );
711
720
  };
712
- function At({ delayDuration: e = 400, ...t }) {
721
+ function It({ delayDuration: e = 400, ...t }) {
713
722
  return /* @__PURE__ */ i(K.Provider, { "data-slot": "tooltip-provider", delayDuration: e, ...t });
714
723
  }
715
- function It({ ...e }) {
716
- return /* @__PURE__ */ i(At, { children: /* @__PURE__ */ i(K.Root, { "data-slot": "tooltip", ...e }) });
717
- }
718
724
  function Rt({ ...e }) {
725
+ return /* @__PURE__ */ i(It, { children: /* @__PURE__ */ i(K.Root, { "data-slot": "tooltip", ...e }) });
726
+ }
727
+ function Ot({ ...e }) {
719
728
  return /* @__PURE__ */ i(K.Trigger, { "data-slot": "tooltip-trigger", ...e });
720
729
  }
721
- function Ot({
730
+ function Ft({
722
731
  className: e,
723
732
  sideOffset: t = 0,
724
733
  children: n,
@@ -729,7 +738,7 @@ function Ot({
729
738
  {
730
739
  "data-slot": "tooltip-content",
731
740
  sideOffset: t,
732
- className: y(
741
+ className: k(
733
742
  "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",
734
743
  e
735
744
  ),
@@ -762,15 +771,15 @@ function io({
762
771
  conversationId: a,
763
772
  className: l
764
773
  }) {
765
- const { t: c } = M(["chat", "translation"]), { composer: s } = V(), [p, h] = B(""), [f, b] = B([]), m = ao(), k = Ge(null), d = Ge(null);
774
+ const { t: c } = M(["chat", "translation"]), { composer: s } = W(), [p, h] = B(""), [f, b] = B([]), m = ao(), y = Ge(null), d = Ge(null);
766
775
  Q(() => {
767
- !m && a === "/" && k.current && k.current.focus();
776
+ !m && a === "/" && y.current && y.current.focus();
768
777
  }, [a, m]);
769
778
  const v = oe((E) => {
770
779
  if (E.target.files) {
771
780
  const I = Array.from(E.target.files), U = s?.attachments?.maxSize;
772
781
  if (U && I.filter((ne) => ne.size > U).length > 0) {
773
- In.error(c("file_too_large", { size: U }));
782
+ Rn.error(c("file_too_large", { size: U }));
774
783
  return;
775
784
  }
776
785
  b((z) => [...z, ...I]);
@@ -784,7 +793,7 @@ function io({
784
793
  f.forEach((U) => I.items.add(U)), e(p, I.files), h(""), b([]);
785
794
  }
786
795
  };
787
- 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__ */ w(Qn, { onSubmit: R, children: [
796
+ 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(Qn, { onSubmit: R, children: [
788
797
  /* @__PURE__ */ i(
789
798
  "input",
790
799
  {
@@ -798,14 +807,14 @@ function io({
798
807
  ),
799
808
  /* @__PURE__ */ w("div", { className: "flex flex-col flex-1 gap-2", children: [
800
809
  f.length > 0 && /* @__PURE__ */ i("div", { className: "flex flex-wrap gap-2 px-2 pt-2", children: f.map((E, I) => /* @__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: [
801
- 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(St, { className: "size-3.5 text-muted-foreground shrink-0" }),
810
+ 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(Et, { className: "size-3.5 text-muted-foreground shrink-0" }),
802
811
  /* @__PURE__ */ i("span", { className: "max-w-[120px] truncate text-xs font-medium text-foreground/80", children: E.name }),
803
812
  /* @__PURE__ */ i("button", { type: "button", onClick: () => x(I), 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" }) })
804
813
  ] }, `${E.name}-${I}`)) }),
805
814
  /* @__PURE__ */ i(
806
815
  eo,
807
816
  {
808
- ref: k,
817
+ ref: y,
809
818
  onChange: (E) => h(E.target.value),
810
819
  value: p,
811
820
  autoFocus: !m,
@@ -814,9 +823,9 @@ function io({
814
823
  )
815
824
  ] }),
816
825
  /* @__PURE__ */ w(to, { children: [
817
- /* @__PURE__ */ i(no, { children: (s?.attachments?.enabled ?? !1) && /* @__PURE__ */ w(It, { children: [
818
- /* @__PURE__ */ i(Rt, { asChild: !0, children: /* @__PURE__ */ i(oo, { variant: "ghost", onClick: () => d.current?.click(), disabled: g, children: /* @__PURE__ */ i(mn, { className: "size-4" }) }) }),
819
- /* @__PURE__ */ i(Ot, { children: c("attach_file") })
826
+ /* @__PURE__ */ i(no, { children: (s?.attachments?.enabled ?? !1) && /* @__PURE__ */ w(Rt, { children: [
827
+ /* @__PURE__ */ i(Ot, { asChild: !0, children: /* @__PURE__ */ i(oo, { variant: "ghost", onClick: () => d.current?.click(), disabled: g, children: /* @__PURE__ */ i(fn, { className: "size-4" }) }) }),
828
+ /* @__PURE__ */ i(Ft, { children: c("attach_file") })
820
829
  ] }) }),
821
830
  /* @__PURE__ */ i(
822
831
  ro,
@@ -844,7 +853,7 @@ const lo = ({
844
853
  return /* @__PURE__ */ i(
845
854
  ee,
846
855
  {
847
- className: y("cursor-pointer rounded-full px-4", n),
856
+ className: k("cursor-pointer rounded-full px-4", n),
848
857
  onClick: c,
849
858
  size: r,
850
859
  type: "button",
@@ -854,7 +863,7 @@ const lo = ({
854
863
  }
855
864
  );
856
865
  }, so = ({ onSuggestionClick: e, icons: t }) => {
857
- const { t: n, i18n: o } = M(["chat", "translation"]), { welcome: r } = V(), a = r?.prompts ?? [], l = a.map((h) => {
866
+ const { t: n, i18n: o } = M(["chat", "translation"]), { welcome: r } = W(), a = r?.prompts ?? [], l = a.map((h) => {
858
867
  const f = typeof h == "string" ? h : h.text;
859
868
  return n(f);
860
869
  }).filter((h) => h !== null && h !== ""), c = o.dir() === "rtl", s = r?.greeting ? n(r.greeting) ?? r.greeting : n("welcome.title"), p = r?.subtitle ? n(r.subtitle) : null;
@@ -873,7 +882,7 @@ const lo = ({
873
882
  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 })
874
883
  ] }),
875
884
  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((h, f) => {
876
- const b = a[f], m = typeof b != "string" ? b.icon : null, k = t && t[f % t.length] ? t[f % t.length] : fn, d = m || k;
885
+ const b = a[f], m = typeof b != "string" ? b.icon : null, y = t && t[f % t.length] ? t[f % t.length] : bn, d = m || y;
877
886
  return /* @__PURE__ */ i(
878
887
  "div",
879
888
  {
@@ -885,7 +894,7 @@ const lo = ({
885
894
  onClick: () => e(h),
886
895
  suggestion: h,
887
896
  variant: "ghost",
888
- className: y(
897
+ className: k(
889
898
  "h-full py-4 px-5 justify-start text-start items-center whitespace-normal w-full",
890
899
  "group rounded-xl relative overflow-hidden",
891
900
  "bg-secondary/45 border border-border/12 dark:bg-secondary/20 dark:border-border/5",
@@ -897,7 +906,7 @@ const lo = ({
897
906
  /* @__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(d, { className: "size-4" }) }),
898
907
  /* @__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: h.length > 60 ? h.substring(0, 60) + "..." : h }) })
899
908
  ] }),
900
- /* @__PURE__ */ i("div", { className: y(
909
+ /* @__PURE__ */ i("div", { className: k(
901
910
  "absolute bottom-0 left-0 w-full h-[1.5px] bg-primary scale-x-0 group-hover:scale-x-100 transition-transform duration-500",
902
911
  c ? "origin-right" : "origin-left"
903
912
  ) })
@@ -911,20 +920,20 @@ const lo = ({
911
920
  ]
912
921
  }
913
922
  );
914
- }, Ft = ({ className: e, from: t, ...n }) => /* @__PURE__ */ i(
923
+ }, Lt = ({ className: e, from: t, ...n }) => /* @__PURE__ */ i(
915
924
  "div",
916
925
  {
917
- className: y(
926
+ className: k(
918
927
  "group flex w-full items-end gap-3",
919
928
  t === "user" ? "is-user justify-end" : "is-assistant",
920
929
  e
921
930
  ),
922
931
  ...n
923
932
  }
924
- ), Lt = ({ children: e, className: t, isPlain: n, ...o }) => /* @__PURE__ */ i(
933
+ ), Dt = ({ children: e, className: t, isPlain: n, ...o }) => /* @__PURE__ */ i(
925
934
  "div",
926
935
  {
927
- className: y(
936
+ className: k(
928
937
  "flex flex-col gap-2 overflow-hidden text-[1.0625rem]",
929
938
  // User bubble: gradient pill with glow shadow
930
939
  !n && [
@@ -948,7 +957,7 @@ const lo = ({
948
957
  ), co = ({ className: e, children: t, ...n }) => /* @__PURE__ */ i(
949
958
  "div",
950
959
  {
951
- className: y(
960
+ className: k(
952
961
  "flex items-center gap-0.5",
953
962
  "opacity-100",
954
963
  "transition-opacity duration-200",
@@ -969,7 +978,7 @@ const lo = ({
969
978
  const c = /* @__PURE__ */ w(
970
979
  ee,
971
980
  {
972
- className: y(
981
+ className: k(
973
982
  "size-7 p-1 rounded-lg",
974
983
  "text-muted-foreground/60 hover:text-foreground",
975
984
  "hover:bg-accent/70",
@@ -987,9 +996,9 @@ const lo = ({
987
996
  ]
988
997
  }
989
998
  );
990
- return e ? /* @__PURE__ */ i(At, { children: /* @__PURE__ */ w(It, { children: [
991
- /* @__PURE__ */ i(Rt, { asChild: !0, children: c }),
992
- /* @__PURE__ */ i(Ot, { children: /* @__PURE__ */ i("p", { children: e }) })
999
+ return e ? /* @__PURE__ */ i(It, { children: /* @__PURE__ */ w(Rt, { children: [
1000
+ /* @__PURE__ */ i(Ot, { asChild: !0, children: c }),
1001
+ /* @__PURE__ */ i(Ft, { children: /* @__PURE__ */ i("p", { children: e }) })
993
1002
  ] }) }) : c;
994
1003
  };
995
1004
  class le {
@@ -1010,7 +1019,7 @@ class le {
1010
1019
  le.prototype.normal = {};
1011
1020
  le.prototype.property = {};
1012
1021
  le.prototype.space = void 0;
1013
- function Dt(e, t) {
1022
+ function Pt(e, t) {
1014
1023
  const n = {}, o = {};
1015
1024
  for (const r of e)
1016
1025
  Object.assign(n, r.property), Object.assign(o, r.normal);
@@ -1058,7 +1067,7 @@ const Ie = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1058
1067
  number: u,
1059
1068
  overloadedBoolean: Ae,
1060
1069
  spaceSeparated: T
1061
- }, Symbol.toStringTag, { value: "Module" })), ke = (
1070
+ }, Symbol.toStringTag, { value: "Module" })), ye = (
1062
1071
  /** @type {ReadonlyArray<keyof typeof types>} */
1063
1072
  Object.keys(Ie)
1064
1073
  );
@@ -1078,15 +1087,15 @@ class Be extends D {
1078
1087
  */
1079
1088
  constructor(t, n, o, r) {
1080
1089
  let a = -1;
1081
- if (super(t, n), Xe(this, "space", r), typeof o == "number")
1082
- for (; ++a < ke.length; ) {
1083
- const l = ke[a];
1084
- Xe(this, ke[a], (o & Ie[l]) === Ie[l]);
1090
+ if (super(t, n), Ke(this, "space", r), typeof o == "number")
1091
+ for (; ++a < ye.length; ) {
1092
+ const l = ye[a];
1093
+ Ke(this, ye[a], (o & Ie[l]) === Ie[l]);
1085
1094
  }
1086
1095
  }
1087
1096
  }
1088
1097
  Be.prototype.defined = !0;
1089
- function Xe(e, t, n) {
1098
+ function Ke(e, t, n) {
1090
1099
  n && (e[t] = n);
1091
1100
  }
1092
1101
  function te(e) {
@@ -1102,7 +1111,7 @@ function te(e) {
1102
1111
  }
1103
1112
  return new le(t, n, e.space);
1104
1113
  }
1105
- const Pt = te({
1114
+ const Mt = te({
1106
1115
  properties: {
1107
1116
  ariaActiveDescendant: null,
1108
1117
  ariaAtomic: A,
@@ -1158,11 +1167,11 @@ const Pt = te({
1158
1167
  return t === "role" ? t : "aria-" + t.slice(4).toLowerCase();
1159
1168
  }
1160
1169
  });
1161
- function Mt(e, t) {
1170
+ function zt(e, t) {
1162
1171
  return t in e ? e[t] : t;
1163
1172
  }
1164
- function zt(e, t) {
1165
- return Mt(e, t.toLowerCase());
1173
+ function $t(e, t) {
1174
+ return zt(e, t.toLowerCase());
1166
1175
  }
1167
1176
  const po = te({
1168
1177
  attributes: {
@@ -1524,7 +1533,7 @@ const po = te({
1524
1533
  unselectable: null
1525
1534
  },
1526
1535
  space: "html",
1527
- transform: zt
1536
+ transform: $t
1528
1537
  }), ho = te({
1529
1538
  attributes: {
1530
1539
  accentHeight: "accent-height",
@@ -2083,8 +2092,8 @@ const po = te({
2083
2092
  zoomAndPan: null
2084
2093
  },
2085
2094
  space: "svg",
2086
- transform: Mt
2087
- }), $t = te({
2095
+ transform: zt
2096
+ }), Ut = te({
2088
2097
  properties: {
2089
2098
  xLinkActuate: null,
2090
2099
  xLinkArcRole: null,
@@ -2098,18 +2107,18 @@ const po = te({
2098
2107
  transform(e, t) {
2099
2108
  return "xlink:" + t.slice(5).toLowerCase();
2100
2109
  }
2101
- }), Ut = te({
2110
+ }), Bt = te({
2102
2111
  attributes: { xmlnsxlink: "xmlns:xlink" },
2103
2112
  properties: { xmlnsXLink: null, xmlns: null },
2104
2113
  space: "xmlns",
2105
- transform: zt
2106
- }), Bt = te({
2114
+ transform: $t
2115
+ }), Ht = te({
2107
2116
  properties: { xmlBase: null, xmlLang: null, xmlSpace: null },
2108
2117
  space: "xml",
2109
2118
  transform(e, t) {
2110
2119
  return "xml:" + t.slice(3).toLowerCase();
2111
2120
  }
2112
- }), go = /[A-Z]/g, Ke = /-[a-z]/g, mo = /^data[-\w.:]+$/i;
2121
+ }), go = /[A-Z]/g, Ze = /-[a-z]/g, mo = /^data[-\w.:]+$/i;
2113
2122
  function fo(e, t) {
2114
2123
  const n = ae(t);
2115
2124
  let o = t, r = D;
@@ -2117,11 +2126,11 @@ function fo(e, t) {
2117
2126
  return e.property[e.normal[n]];
2118
2127
  if (n.length > 4 && n.slice(0, 4) === "data" && mo.test(t)) {
2119
2128
  if (t.charAt(4) === "-") {
2120
- const a = t.slice(5).replace(Ke, ko);
2129
+ const a = t.slice(5).replace(Ze, yo);
2121
2130
  o = "data" + a.charAt(0).toUpperCase() + a.slice(1);
2122
2131
  } else {
2123
2132
  const a = t.slice(4);
2124
- if (!Ke.test(a)) {
2133
+ if (!Ze.test(a)) {
2125
2134
  let l = a.replace(go, bo);
2126
2135
  l.charAt(0) !== "-" && (l = "-" + l), t = "data" + l;
2127
2136
  }
@@ -2133,11 +2142,11 @@ function fo(e, t) {
2133
2142
  function bo(e) {
2134
2143
  return "-" + e.toLowerCase();
2135
2144
  }
2136
- function ko(e) {
2145
+ function yo(e) {
2137
2146
  return e.charAt(1).toUpperCase();
2138
2147
  }
2139
- const yo = Dt([Pt, po, $t, Ut, Bt], "html"), vo = Dt([Pt, ho, $t, Ut, Bt], "svg");
2140
- function Ze(e) {
2148
+ const ko = Pt([Mt, po, Ut, Bt, Ht], "html"), vo = Pt([Mt, ho, Ut, Bt, Ht], "svg");
2149
+ function Je(e) {
2141
2150
  const t = [], n = String(e || "");
2142
2151
  let o = n.indexOf(","), r = 0, a = !1;
2143
2152
  for (; !a; ) {
@@ -2147,13 +2156,13 @@ function Ze(e) {
2147
2156
  }
2148
2157
  return t;
2149
2158
  }
2150
- const Je = /[#.]/g;
2159
+ const Qe = /[#.]/g;
2151
2160
  function wo(e, t) {
2152
2161
  const n = e || "", o = {};
2153
2162
  let r = 0, a, l;
2154
2163
  for (; r < n.length; ) {
2155
- Je.lastIndex = r;
2156
- const c = Je.exec(n), s = n.slice(r, c ? c.index : n.length);
2164
+ Qe.lastIndex = r;
2165
+ const c = Qe.exec(n), s = n.slice(r, c ? c.index : n.length);
2157
2166
  s && (a ? a === "#" ? o.id = s : Array.isArray(o.className) ? o.className.push(s) : o.className = [s] : l = s, r += s.length), c && (a = c[0], r++);
2158
2167
  }
2159
2168
  return {
@@ -2164,11 +2173,11 @@ function wo(e, t) {
2164
2173
  children: []
2165
2174
  };
2166
2175
  }
2167
- function Qe(e) {
2176
+ function et(e) {
2168
2177
  const t = String(e || "").trim();
2169
2178
  return t ? t.split(/[ \t\n\r\f]+/g) : [];
2170
2179
  }
2171
- function Ht(e, t, n) {
2180
+ function qt(e, t, n) {
2172
2181
  const o = n ? Eo(n) : void 0;
2173
2182
  function r(a, l, ...c) {
2174
2183
  let s;
@@ -2224,13 +2233,13 @@ function _o(e, t, n, o) {
2224
2233
  if (typeof o == "number") {
2225
2234
  if (Number.isNaN(o)) return;
2226
2235
  a = o;
2227
- } else typeof o == "boolean" ? a = o : typeof o == "string" ? r.spaceSeparated ? a = Qe(o) : r.commaSeparated ? a = Ze(o) : r.commaOrSpaceSeparated ? a = Qe(Ze(o).join(" ")) : a = et(r, r.property, o) : Array.isArray(o) ? a = [...o] : a = r.property === "style" ? So(o) : String(o);
2236
+ } 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" ? So(o) : String(o);
2228
2237
  if (Array.isArray(a)) {
2229
2238
  const l = [];
2230
2239
  for (const c of a)
2231
2240
  l.push(
2232
2241
  /** @type {number | string} */
2233
- et(r, r.property, c)
2242
+ tt(r, r.property, c)
2234
2243
  );
2235
2244
  a = l;
2236
2245
  }
@@ -2251,7 +2260,7 @@ function Re(e, t) {
2251
2260
  else
2252
2261
  throw new Error("Expected node, nodes, or string, got `" + t + "`");
2253
2262
  }
2254
- function et(e, t, n) {
2263
+ function tt(e, t, n) {
2255
2264
  if (typeof n == "string") {
2256
2265
  if (e.number && n && !Number.isNaN(Number(n)))
2257
2266
  return Number(n);
@@ -2312,14 +2321,14 @@ const No = [
2312
2321
  "solidColor",
2313
2322
  "textArea",
2314
2323
  "textPath"
2315
- ], To = Ht(yo, "div"), Co = Ht(vo, "g", No), ye = {
2324
+ ], To = qt(ko, "div"), Co = qt(vo, "g", No), ke = {
2316
2325
  html: "http://www.w3.org/1999/xhtml",
2317
2326
  svg: "http://www.w3.org/2000/svg"
2318
2327
  };
2319
2328
  function Ao(e, t) {
2320
- return qt(e, {}) || { type: "root", children: [] };
2329
+ return jt(e, {}) || { type: "root", children: [] };
2321
2330
  }
2322
- function qt(e, t) {
2331
+ function jt(e, t) {
2323
2332
  const n = Io(e, t);
2324
2333
  return n && t.afterTransform && t.afterTransform(e, n), n;
2325
2334
  }
@@ -2347,7 +2356,7 @@ function Io(e, t) {
2347
2356
  e
2348
2357
  );
2349
2358
  case 9:
2350
- return tt(
2359
+ return nt(
2351
2360
  /** @type {Document} */
2352
2361
  e,
2353
2362
  t
@@ -2355,7 +2364,7 @@ function Io(e, t) {
2355
2364
  case 10:
2356
2365
  return Ro();
2357
2366
  case 11:
2358
- return tt(
2367
+ return nt(
2359
2368
  /** @type {DocumentFragment} */
2360
2369
  e,
2361
2370
  t
@@ -2364,8 +2373,8 @@ function Io(e, t) {
2364
2373
  return;
2365
2374
  }
2366
2375
  }
2367
- function tt(e, t) {
2368
- return { type: "root", children: jt(e, t) };
2376
+ function nt(e, t) {
2377
+ return { type: "root", children: Gt(e, t) };
2369
2378
  }
2370
2379
  function Ro() {
2371
2380
  return { type: "doctype" };
@@ -2377,20 +2386,20 @@ function Fo(e) {
2377
2386
  return { type: "comment", value: e.nodeValue || "" };
2378
2387
  }
2379
2388
  function Lo(e, t) {
2380
- const n = e.namespaceURI, o = n === ye.svg ? Co : To, r = n === ye.html ? e.tagName.toLowerCase() : e.tagName, a = (
2389
+ const n = e.namespaceURI, o = n === ke.svg ? Co : To, r = n === ke.html ? e.tagName.toLowerCase() : e.tagName, a = (
2381
2390
  // @ts-expect-error: DOM types are wrong, content can exist.
2382
- n === ye.html && r === "template" ? e.content : e
2391
+ n === ke.html && r === "template" ? e.content : e
2383
2392
  ), l = e.getAttributeNames(), c = {};
2384
2393
  let s = -1;
2385
2394
  for (; ++s < l.length; )
2386
2395
  c[l[s]] = e.getAttribute(l[s]) || "";
2387
- return o(r, c, jt(a, t));
2396
+ return o(r, c, Gt(a, t));
2388
2397
  }
2389
- function jt(e, t) {
2398
+ function Gt(e, t) {
2390
2399
  const n = e.childNodes, o = [];
2391
2400
  let r = -1;
2392
2401
  for (; ++r < n.length; ) {
2393
- const a = qt(n[r], t);
2402
+ const a = jt(n[r], t);
2394
2403
  a !== void 0 && o.push(a);
2395
2404
  }
2396
2405
  return o;
@@ -2495,7 +2504,7 @@ function Uo() {
2495
2504
  function Bo(e) {
2496
2505
  return e !== null && typeof e == "object" && "type" in e;
2497
2506
  }
2498
- const nt = (
2507
+ const ot = (
2499
2508
  // Note: overloads like this are needed to support optional generics.
2500
2509
  /**
2501
2510
  * @type {(
@@ -2522,7 +2531,7 @@ const nt = (
2522
2531
  if (o(e.children[t], t, e))
2523
2532
  return e.children[t];
2524
2533
  })
2525
- ), W = (
2534
+ ), V = (
2526
2535
  // Note: overloads in JSDoc can’t yet use different `@template`s.
2527
2536
  /**
2528
2537
  * @type {(
@@ -2552,7 +2561,7 @@ function Ho(e) {
2552
2561
  const t = [];
2553
2562
  let n = -1;
2554
2563
  for (; ++n < e.length; )
2555
- t[n] = W(e[n]);
2564
+ t[n] = V(e[n]);
2556
2565
  return qe(o);
2557
2566
  function o(...r) {
2558
2567
  let a = -1;
@@ -2584,7 +2593,7 @@ function jo(e) {
2584
2593
  function Go(e) {
2585
2594
  return e !== null && typeof e == "object" && "type" in e && "tagName" in e;
2586
2595
  }
2587
- const ot = /\n/g, rt = /[\t ]+/g, Oe = W("br"), at = W(Qo), Wo = W("p"), it = W("tr"), Vo = W([
2596
+ const rt = /\n/g, at = /[\t ]+/g, Oe = V("br"), it = V(Qo), Vo = V("p"), lt = V("tr"), Wo = V([
2588
2597
  // List from: <https://html.spec.whatwg.org/multipage/rendering.html#hidden-elements>
2589
2598
  "datalist",
2590
2599
  "head",
@@ -2601,7 +2610,7 @@ const ot = /\n/g, rt = /[\t ]+/g, Oe = W("br"), at = W(Qo), Wo = W("p"), it = W(
2601
2610
  Jo,
2602
2611
  // From: <https://html.spec.whatwg.org/multipage/rendering.html#flow-content-3>
2603
2612
  er
2604
- ]), Gt = W([
2613
+ ]), Vt = V([
2605
2614
  "address",
2606
2615
  // Flow content
2607
2616
  "article",
@@ -2684,11 +2693,11 @@ const ot = /\n/g, rt = /[\t ]+/g, Oe = W("br"), at = W(Qo), Wo = W("p"), it = W(
2684
2693
  // Flow content (legacy)
2685
2694
  ]);
2686
2695
  function Yo(e, t) {
2687
- const n = t || {}, o = "children" in e ? e.children : [], r = Gt(e), a = Yt(e, {
2696
+ const n = t || {}, o = "children" in e ? e.children : [], r = Vt(e), a = Xt(e, {
2688
2697
  whitespace: n.whitespace || "normal"
2689
2698
  }), l = [];
2690
2699
  (e.type === "text" || e.type === "comment") && l.push(
2691
- ...Vt(e, {
2700
+ ...Yt(e, {
2692
2701
  breakBefore: !0,
2693
2702
  breakAfter: !0
2694
2703
  })
@@ -2717,17 +2726,17 @@ function Yo(e, t) {
2717
2726
  return s.join("");
2718
2727
  }
2719
2728
  function Wt(e, t, n) {
2720
- return e.type === "element" ? Xo(e, t, n) : e.type === "text" ? n.whitespace === "normal" ? Vt(e, n) : Ko(e) : [];
2729
+ return e.type === "element" ? Xo(e, t, n) : e.type === "text" ? n.whitespace === "normal" ? Yt(e, n) : Ko(e) : [];
2721
2730
  }
2722
2731
  function Xo(e, t, n) {
2723
- const o = Yt(e, n), r = e.children || [];
2732
+ const o = Xt(e, n), r = e.children || [];
2724
2733
  let a = -1, l = [];
2725
- if (Vo(e))
2734
+ if (Wo(e))
2726
2735
  return l;
2727
2736
  let c, s;
2728
- for (Oe(e) || it(e) && // @ts-expect-error: something up with types of parents.
2729
- nt(t, e, it) ? s = `
2730
- ` : Wo(e) ? (c = 2, s = 2) : Gt(e) && (c = 1, s = 1); ++a < r.length; )
2737
+ for (Oe(e) || lt(e) && // @ts-expect-error: something up with types of parents.
2738
+ ot(t, e, lt) ? s = `
2739
+ ` : Vo(e) ? (c = 2, s = 2) : Vt(e) && (c = 1, s = 1); ++a < r.length; )
2731
2740
  l = l.concat(
2732
2741
  Wt(r[a], e, {
2733
2742
  whitespace: o,
@@ -2735,15 +2744,15 @@ function Xo(e, t, n) {
2735
2744
  breakAfter: a < r.length - 1 ? Oe(r[a + 1]) : s
2736
2745
  })
2737
2746
  );
2738
- return at(e) && // @ts-expect-error: something up with types of parents.
2739
- nt(t, e, at) && l.push(" "), c && l.unshift(c), s && l.push(s), l;
2747
+ return it(e) && // @ts-expect-error: something up with types of parents.
2748
+ ot(t, e, it) && l.push(" "), c && l.unshift(c), s && l.push(s), l;
2740
2749
  }
2741
- function Vt(e, t) {
2750
+ function Yt(e, t) {
2742
2751
  const n = String(e.value), o = [], r = [];
2743
2752
  let a = 0;
2744
2753
  for (; a <= n.length; ) {
2745
- ot.lastIndex = a;
2746
- const s = ot.exec(n), p = s && "index" in s ? s.index : n.length;
2754
+ rt.lastIndex = a;
2755
+ const s = rt.exec(n), p = s && "index" in s ? s.index : n.length;
2747
2756
  o.push(
2748
2757
  // Any sequence of collapsible spaces and tabs immediately preceding or
2749
2758
  // following a segment break is removed.
@@ -2769,13 +2778,13 @@ function Zo(e, t, n) {
2769
2778
  const o = [];
2770
2779
  let r = 0, a;
2771
2780
  for (; r < e.length; ) {
2772
- rt.lastIndex = r;
2773
- const l = rt.exec(e);
2781
+ at.lastIndex = r;
2782
+ const l = at.exec(e);
2774
2783
  a = l ? l.index : e.length, !r && !a && l && !t && o.push(""), r !== a && o.push(e.slice(r, a)), r = l ? a + l[0].length : a;
2775
2784
  }
2776
2785
  return r !== a && !n && o.push(""), o.join(" ");
2777
2786
  }
2778
- function Yt(e, t) {
2787
+ function Xt(e, t) {
2779
2788
  if (e.type === "element") {
2780
2789
  const n = e.properties || {};
2781
2790
  switch (e.tagName) {
@@ -2805,7 +2814,7 @@ function Qo(e) {
2805
2814
  function er(e) {
2806
2815
  return e.tagName === "dialog" && !(e.properties || {}).open;
2807
2816
  }
2808
- const Xt = [], tr = !0, lt = !1, Kt = "skip";
2817
+ const Kt = [], tr = !0, st = !1, Zt = "skip";
2809
2818
  function nr(e, t, n, o) {
2810
2819
  let r;
2811
2820
  r = t;
@@ -2830,20 +2839,20 @@ function nr(e, t, n, o) {
2830
2839
  }
2831
2840
  return b;
2832
2841
  function b() {
2833
- let m = Xt, k, d, v;
2834
- if (a(s, p, h[h.length - 1] || void 0) && (m = or(n(s, h)), m[0] === lt))
2842
+ let m = Kt, y, d, v;
2843
+ if (a(s, p, h[h.length - 1] || void 0) && (m = or(n(s, h)), m[0] === st))
2835
2844
  return m;
2836
2845
  if ("children" in s && s.children) {
2837
2846
  const x = (
2838
2847
  /** @type {UnistParent} */
2839
2848
  s
2840
2849
  );
2841
- if (x.children && m[0] !== Kt)
2850
+ if (x.children && m[0] !== Zt)
2842
2851
  for (d = -1 + l, v = h.concat(x); d > -1 && d < x.children.length; ) {
2843
2852
  const g = x.children[d];
2844
- if (k = c(g, d, v)(), k[0] === lt)
2845
- return k;
2846
- d = typeof k[1] == "number" ? k[1] : d + l;
2853
+ if (y = c(g, d, v)(), y[0] === st)
2854
+ return y;
2855
+ d = typeof y[1] == "number" ? y[1] : d + l;
2847
2856
  }
2848
2857
  }
2849
2858
  return m;
@@ -2851,7 +2860,7 @@ function nr(e, t, n, o) {
2851
2860
  }
2852
2861
  }
2853
2862
  function or(e) {
2854
- return Array.isArray(e) ? e : typeof e == "number" ? [tr, e] : e == null ? Xt : [e];
2863
+ return Array.isArray(e) ? e : typeof e == "number" ? [tr, e] : e == null ? Kt : [e];
2855
2864
  }
2856
2865
  const rr = {}, ar = [];
2857
2866
  function ir(e) {
@@ -2865,9 +2874,9 @@ function ir(e) {
2865
2874
  let f = a[a.length - 1], b = r;
2866
2875
  if (r.tagName === "code" && c && f && f.type === "element" && f.tagName === "pre" && (b = f, f = a[a.length - 2], h = !0), !f) return;
2867
2876
  const m = Yo(b, { whitespace: "pre" });
2868
- let k;
2877
+ let y;
2869
2878
  try {
2870
- k = We.renderToString(m, {
2879
+ y = Ve.renderToString(m, {
2871
2880
  ...t,
2872
2881
  displayMode: h,
2873
2882
  throwOnError: !0
@@ -2885,14 +2894,14 @@ function ir(e) {
2885
2894
  source: "rehype-katex"
2886
2895
  });
2887
2896
  try {
2888
- k = We.renderToString(m, {
2897
+ y = Ve.renderToString(m, {
2889
2898
  ...t,
2890
2899
  displayMode: h,
2891
2900
  strict: "ignore",
2892
2901
  throwOnError: !1
2893
2902
  });
2894
2903
  } catch {
2895
- k = [
2904
+ y = [
2896
2905
  {
2897
2906
  type: "element",
2898
2907
  tagName: "span",
@@ -2906,10 +2915,10 @@ function ir(e) {
2906
2915
  ];
2907
2916
  }
2908
2917
  }
2909
- typeof k == "string" && (k = /** @type {Array<ElementContent>} */
2910
- Do(k).children);
2918
+ typeof y == "string" && (y = /** @type {Array<ElementContent>} */
2919
+ Do(y).children);
2911
2920
  const d = f.children.indexOf(b);
2912
- return f.children.splice(d, 1, ...k), Kt;
2921
+ return f.children.splice(d, 1, ...y), Zt;
2913
2922
  });
2914
2923
  };
2915
2924
  }
@@ -3017,7 +3026,7 @@ function cr(e) {
3017
3026
  const p = a.value || "", h = c.createTracker(s), f = "$".repeat(Math.max(lr(p, "$") + 1, 2)), b = c.enter("mathFlow");
3018
3027
  let m = h.move(f);
3019
3028
  if (a.meta) {
3020
- const k = c.enter("mathFlowMeta");
3029
+ const y = c.enter("mathFlowMeta");
3021
3030
  m += h.move(
3022
3031
  c.safe(a.meta, {
3023
3032
  after: `
@@ -3026,7 +3035,7 @@ function cr(e) {
3026
3035
  encode: ["$"],
3027
3036
  ...h.current()
3028
3037
  })
3029
- ), k();
3038
+ ), y();
3030
3039
  }
3031
3040
  return m += h.move(`
3032
3041
  `), p && (m += h.move(p + `
@@ -3046,10 +3055,10 @@ function cr(e) {
3046
3055
  const b = c.unsafe[f];
3047
3056
  if (!b.atBreak) continue;
3048
3057
  const m = c.compilePattern(b);
3049
- let k;
3050
- for (; k = m.exec(s); ) {
3051
- let d = k.index;
3052
- s.codePointAt(d) === 10 && s.codePointAt(d - 1) === 13 && d--, s = s.slice(0, d) + " " + s.slice(k.index + 1);
3058
+ let y;
3059
+ for (; y = m.exec(s); ) {
3060
+ let d = y.index;
3061
+ s.codePointAt(d) === 10 && s.codePointAt(d - 1) === 13 && d--, s = s.slice(0, d) + " " + s.slice(y.index + 1);
3053
3062
  }
3054
3063
  }
3055
3064
  return h + s + h;
@@ -3061,7 +3070,7 @@ function cr(e) {
3061
3070
  function j(e) {
3062
3071
  return e !== null && e < -2;
3063
3072
  }
3064
- function st(e) {
3073
+ function ct(e) {
3065
3074
  return e === -2 || e === -1 || e === 32;
3066
3075
  }
3067
3076
  function ce(e, t, n, o) {
@@ -3069,17 +3078,17 @@ function ce(e, t, n, o) {
3069
3078
  let a = 0;
3070
3079
  return l;
3071
3080
  function l(s) {
3072
- return st(s) ? (e.enter(n), c(s)) : t(s);
3081
+ return ct(s) ? (e.enter(n), c(s)) : t(s);
3073
3082
  }
3074
3083
  function c(s) {
3075
- return st(s) && a++ < r ? (e.consume(s), c) : (e.exit(n), t(s));
3084
+ return ct(s) && a++ < r ? (e.consume(s), c) : (e.exit(n), t(s));
3076
3085
  }
3077
3086
  }
3078
3087
  const ur = {
3079
3088
  tokenize: dr,
3080
3089
  concrete: !0,
3081
3090
  name: "mathFlow"
3082
- }, ct = {
3091
+ }, ut = {
3083
3092
  tokenize: pr,
3084
3093
  partial: !0
3085
3094
  };
@@ -3102,7 +3111,7 @@ function dr(e, t, n) {
3102
3111
  return g === null || j(g) ? (e.exit("chunkString"), e.exit("mathFlowFenceMeta"), f(g)) : g === 36 ? n(g) : (e.consume(g), h);
3103
3112
  }
3104
3113
  function f(g) {
3105
- return e.exit("mathFlowFence"), o.interrupt ? t(g) : e.attempt(ct, b, v)(g);
3114
+ return e.exit("mathFlowFence"), o.interrupt ? t(g) : e.attempt(ut, b, v)(g);
3106
3115
  }
3107
3116
  function b(g) {
3108
3117
  return e.attempt({
@@ -3111,13 +3120,13 @@ function dr(e, t, n) {
3111
3120
  }, v, m)(g);
3112
3121
  }
3113
3122
  function m(g) {
3114
- return (a ? ce(e, k, "linePrefix", a + 1) : k)(g);
3123
+ return (a ? ce(e, y, "linePrefix", a + 1) : y)(g);
3115
3124
  }
3116
- function k(g) {
3117
- return g === null ? v(g) : j(g) ? e.attempt(ct, b, v)(g) : (e.enter("mathFlowValue"), d(g));
3125
+ function y(g) {
3126
+ return g === null ? v(g) : j(g) ? e.attempt(ut, b, v)(g) : (e.enter("mathFlowValue"), d(g));
3118
3127
  }
3119
3128
  function d(g) {
3120
- return g === null || j(g) ? (e.exit("mathFlowValue"), k(g)) : (e.consume(g), d);
3129
+ return g === null || j(g) ? (e.exit("mathFlowValue"), y(g)) : (e.consume(g), d);
3121
3130
  }
3122
3131
  function v(g) {
3123
3132
  return e.exit("mathFlow"), t(g);
@@ -3164,13 +3173,13 @@ function hr(e) {
3164
3173
  return d === 36 ? (r.consume(d), c++, f) : c < 2 && !n ? l(d) : (r.exit("mathTextSequence"), b(d));
3165
3174
  }
3166
3175
  function b(d) {
3167
- return d === null ? l(d) : d === 36 ? (p = r.enter("mathTextSequence"), s = 0, k(d)) : d === 32 ? (r.enter("space"), r.consume(d), r.exit("space"), b) : j(d) ? (r.enter("lineEnding"), r.consume(d), r.exit("lineEnding"), b) : (r.enter("mathTextData"), m(d));
3176
+ return d === null ? l(d) : d === 36 ? (p = r.enter("mathTextSequence"), s = 0, y(d)) : d === 32 ? (r.enter("space"), r.consume(d), r.exit("space"), b) : j(d) ? (r.enter("lineEnding"), r.consume(d), r.exit("lineEnding"), b) : (r.enter("mathTextData"), m(d));
3168
3177
  }
3169
3178
  function m(d) {
3170
3179
  return d === null || d === 32 || d === 36 || j(d) ? (r.exit("mathTextData"), b(d)) : (r.consume(d), m);
3171
3180
  }
3172
- function k(d) {
3173
- return d === 36 ? (r.consume(d), s++, k) : s === c ? (r.exit("mathTextSequence"), r.exit("mathText"), a(d)) : (p.type = "mathTextData", m(d));
3181
+ function y(d) {
3182
+ return d === 36 ? (r.consume(d), s++, y) : s === c ? (r.exit("mathTextSequence"), r.exit("mathText"), a(d)) : (p.type = "mathTextData", m(d));
3174
3183
  }
3175
3184
  }
3176
3185
  }
@@ -3201,29 +3210,29 @@ function fr(e) {
3201
3210
  };
3202
3211
  }
3203
3212
  const br = {};
3204
- function kr(e) {
3213
+ function yr(e) {
3205
3214
  const t = (
3206
3215
  /** @type {Processor} */
3207
3216
  this
3208
3217
  ), n = e || br, o = t.data(), r = o.micromarkExtensions || (o.micromarkExtensions = []), a = o.fromMarkdownExtensions || (o.fromMarkdownExtensions = []), l = o.toMarkdownExtensions || (o.toMarkdownExtensions = []);
3209
3218
  r.push(fr(n)), a.push(sr()), l.push(cr(n));
3210
3219
  }
3211
- function yr(e = {}) {
3220
+ function kr(e = {}) {
3212
3221
  var t, n;
3213
- let o = [kr, { singleDollarTextMath: (t = e.singleDollarTextMath) != null ? t : !1 }], r = [ir, { errorColor: (n = e.errorColor) != null ? n : "var(--color-muted-foreground)" }];
3222
+ let o = [yr, { singleDollarTextMath: (t = e.singleDollarTextMath) != null ? t : !1 }], r = [ir, { errorColor: (n = e.errorColor) != null ? n : "var(--color-muted-foreground)" }];
3214
3223
  return { name: "katex", type: "math", remarkPlugin: o, rehypePlugin: r, getStyles() {
3215
3224
  return "katex/dist/katex.min.css";
3216
3225
  } };
3217
3226
  }
3218
- var ut = yr();
3227
+ var dt = kr();
3219
3228
  const je = de(
3220
3229
  ({ className: e, ...t }) => /* @__PURE__ */ i(
3221
- Rn,
3230
+ On,
3222
3231
  {
3223
- className: y("size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 code-bg ", e),
3232
+ className: k("size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 code-bg ", e),
3224
3233
  ...t,
3225
- remarkPlugins: [ut.remarkPlugin, ...t.remarkPlugins || []],
3226
- rehypePlugins: [ut.rehypePlugin, ...t.rehypePlugins || []]
3234
+ remarkPlugins: [dt.remarkPlugin, ...t.remarkPlugins || []],
3235
+ rehypePlugins: [dt.rehypePlugin, ...t.rehypePlugins || []]
3227
3236
  }
3228
3237
  ),
3229
3238
  (e, t) => e.children === t.children
@@ -3243,19 +3252,19 @@ function vr({
3243
3252
  feedbackEnabled: h,
3244
3253
  retryEnabled: f
3245
3254
  }) {
3246
- const { t: b } = M(["chat"]), { textComponents: m, remarkPlugins: k, rehypePlugins: d } = V(), v = ge(e.text), x = !o && r && (n === "streaming" || n === "submitted"), g = l || (() => {
3255
+ const { t: b } = M(["chat"]), { textComponents: m, remarkPlugins: y, rehypePlugins: d } = W(), v = ge(e.text), x = !o && r && (n === "streaming" || n === "submitted"), g = l || (() => {
3247
3256
  });
3248
3257
  return /* @__PURE__ */ w("div", { className: "group py-2 first:pt-4 animate-in-bubble", children: [
3249
- /* @__PURE__ */ i(Ft, { from: t.role, children: /* @__PURE__ */ i(Lt, { dir: v, children: /* @__PURE__ */ i(
3258
+ /* @__PURE__ */ i(Lt, { from: t.role, children: /* @__PURE__ */ i(Dt, { dir: v, children: /* @__PURE__ */ i(
3250
3259
  je,
3251
3260
  {
3252
3261
  components: m,
3253
- remarkPlugins: k,
3262
+ remarkPlugins: y,
3254
3263
  rehypePlugins: d,
3255
3264
  children: e.text
3256
3265
  }
3257
3266
  ) }) }),
3258
- a && !x && /* @__PURE__ */ w(co, { className: y("mt-1.5 ml-0.5", t.role === "user" && "justify-end"), children: [
3267
+ a && !x && /* @__PURE__ */ w(co, { className: k("mt-1.5 ml-0.5", t.role === "user" && "justify-end"), children: [
3259
3268
  t.role === "assistant" && /* @__PURE__ */ w(J, { children: [
3260
3269
  r && f && /* @__PURE__ */ i(
3261
3270
  se,
@@ -3263,7 +3272,7 @@ function vr({
3263
3272
  onClick: () => g(t.id),
3264
3273
  label: b("retry"),
3265
3274
  tooltip: b("retry"),
3266
- children: /* @__PURE__ */ i(bn, { className: "size-3" })
3275
+ children: /* @__PURE__ */ i(yn, { className: "size-3" })
3267
3276
  }
3268
3277
  ),
3269
3278
  h && /* @__PURE__ */ w(J, { children: [
@@ -3284,7 +3293,7 @@ function vr({
3284
3293
  label: b("dislike"),
3285
3294
  tooltip: b("dislike"),
3286
3295
  className: c === "dislike" ? "text-destructive" : "",
3287
- children: /* @__PURE__ */ i(yn, { className: "size-3" })
3296
+ children: /* @__PURE__ */ i(vn, { className: "size-3" })
3288
3297
  }
3289
3298
  )
3290
3299
  ] })
@@ -3297,18 +3306,18 @@ function vr({
3297
3306
  },
3298
3307
  label: b("copy"),
3299
3308
  tooltip: b("copy"),
3300
- children: /* @__PURE__ */ i(Et, { className: "size-3" })
3309
+ children: /* @__PURE__ */ i(Nt, { className: "size-3" })
3301
3310
  }
3302
3311
  )
3303
3312
  ] })
3304
3313
  ] });
3305
3314
  }
3306
- const Zt = pe(null), wr = () => {
3307
- const e = Le(Zt);
3315
+ const Jt = pe(null), wr = () => {
3316
+ const e = Le(Jt);
3308
3317
  if (!e)
3309
3318
  throw new Error("Reasoning components must be used within Reasoning");
3310
3319
  return e;
3311
- }, xr = 1e3, _r = 1e3, Jt = de(
3320
+ }, xr = 1e3, _r = 1e3, Qt = de(
3312
3321
  ({
3313
3322
  className: e,
3314
3323
  isStreaming: t = !1,
@@ -3320,17 +3329,17 @@ const Zt = pe(null), wr = () => {
3320
3329
  children: l,
3321
3330
  ...c
3322
3331
  }) => {
3323
- const [s, p] = Ve({
3332
+ const [s, p] = We({
3324
3333
  prop: n,
3325
3334
  defaultProp: o,
3326
3335
  onChange: r
3327
- }), [h, f] = Ve({
3336
+ }), [h, f] = We({
3328
3337
  prop: a,
3329
3338
  defaultProp: 0
3330
- }), [b, m] = B(!1), [k, d] = B(null);
3339
+ }), [b, m] = B(!1), [y, d] = B(null);
3331
3340
  Q(() => {
3332
- t ? k === null && d(Date.now()) : k !== null && (f(Math.ceil((Date.now() - k) / _r)), d(null));
3333
- }, [t, k, f]), Q(() => {
3341
+ t ? y === null && d(Date.now()) : y !== null && (f(Math.ceil((Date.now() - y) / _r)), d(null));
3342
+ }, [t, y, f]), Q(() => {
3334
3343
  if (o && !t && s && !b) {
3335
3344
  const x = setTimeout(() => {
3336
3345
  p(!1), m(!0);
@@ -3343,10 +3352,10 @@ const Zt = pe(null), wr = () => {
3343
3352
  const v = (x) => {
3344
3353
  p(x);
3345
3354
  };
3346
- return /* @__PURE__ */ i(Zt.Provider, { value: { isStreaming: t, isOpen: s, setIsOpen: p, duration: h }, children: /* @__PURE__ */ i(
3355
+ return /* @__PURE__ */ i(Jt.Provider, { value: { isStreaming: t, isOpen: s, setIsOpen: p, duration: h }, children: /* @__PURE__ */ i(
3347
3356
  ze,
3348
3357
  {
3349
- className: y("not-prose mb-4", e),
3358
+ className: k("not-prose mb-4", e),
3350
3359
  onOpenChange: v,
3351
3360
  open: s,
3352
3361
  ...c,
@@ -3354,10 +3363,10 @@ const Zt = pe(null), wr = () => {
3354
3363
  }
3355
3364
  ) });
3356
3365
  }
3357
- ), Qt = de(({ className: e, children: t, ...n }) => {
3366
+ ), en = de(({ className: e, children: t, ...n }) => {
3358
3367
  const { isStreaming: o, isOpen: r, duration: a } = wr();
3359
- return /* @__PURE__ */ i($e, { className: y("flex items-center gap-2 text-muted-foreground text-sm", e), ...n, children: t ?? /* @__PURE__ */ w(J, { children: [
3360
- /* @__PURE__ */ i(vn, { className: "size-4" }),
3368
+ return /* @__PURE__ */ i($e, { className: k("flex items-center gap-2 text-muted-foreground text-sm", e), ...n, children: t ?? /* @__PURE__ */ w(J, { children: [
3369
+ /* @__PURE__ */ i(wn, { className: "size-4" }),
3361
3370
  o || a === 0 ? /* @__PURE__ */ i("p", { children: "Thinking..." }) : /* @__PURE__ */ w("p", { children: [
3362
3371
  "Thought for ",
3363
3372
  a,
@@ -3367,14 +3376,14 @@ const Zt = pe(null), wr = () => {
3367
3376
  /* @__PURE__ */ i(
3368
3377
  ie,
3369
3378
  {
3370
- className: y("size-4 text-muted-foreground transition-transform", r ? "rotate-180" : "rotate-0")
3379
+ className: k("size-4 text-muted-foreground transition-transform", r ? "rotate-180" : "rotate-0")
3371
3380
  }
3372
3381
  )
3373
3382
  ] }) });
3374
- }), en = de(({ className: e, children: t, ...n }) => /* @__PURE__ */ i(
3383
+ }), tn = de(({ className: e, children: t, ...n }) => /* @__PURE__ */ i(
3375
3384
  Ue,
3376
3385
  {
3377
- className: y(
3386
+ className: k(
3378
3387
  "mt-4 text-base",
3379
3388
  "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",
3380
3389
  e
@@ -3383,9 +3392,9 @@ const Zt = pe(null), wr = () => {
3383
3392
  children: /* @__PURE__ */ i(je, { className: "grid gap-2", children: t })
3384
3393
  }
3385
3394
  ));
3386
- Jt.displayName = "Reasoning";
3387
- Qt.displayName = "ReasoningTrigger";
3388
- en.displayName = "ReasoningContent";
3395
+ Qt.displayName = "Reasoning";
3396
+ en.displayName = "ReasoningTrigger";
3397
+ tn.displayName = "ReasoningContent";
3389
3398
  function Sr({
3390
3399
  part: e,
3391
3400
  status: t,
@@ -3395,13 +3404,13 @@ function Sr({
3395
3404
  }) {
3396
3405
  const a = ge(e.text);
3397
3406
  return /* @__PURE__ */ w(
3398
- Jt,
3407
+ Qt,
3399
3408
  {
3400
3409
  className: "w-full animate-in-bubble",
3401
3410
  isStreaming: t === "streaming" && n === o - 1 && r,
3402
3411
  children: [
3403
- /* @__PURE__ */ i(Qt, {}),
3404
- /* @__PURE__ */ i(en, { dir: a, children: e.text })
3412
+ /* @__PURE__ */ i(en, {}),
3413
+ /* @__PURE__ */ i(tn, { dir: a, children: e.text })
3405
3414
  ]
3406
3415
  }
3407
3416
  );
@@ -3428,7 +3437,7 @@ function Nr({
3428
3437
  asChild: n = !1,
3429
3438
  ...o
3430
3439
  }) {
3431
- return /* @__PURE__ */ i(n ? Tt : "span", { "data-slot": "badge", className: y(Er({ variant: t }), e), ...o });
3440
+ return /* @__PURE__ */ i(n ? Ct : "span", { "data-slot": "badge", className: k(Er({ variant: t }), e), ...o });
3432
3441
  }
3433
3442
  function Tr({ ...e }) {
3434
3443
  return /* @__PURE__ */ i(H.Root, { "data-slot": "dialog", ...e });
@@ -3447,7 +3456,7 @@ function Ir({ className: e, ...t }) {
3447
3456
  H.Overlay,
3448
3457
  {
3449
3458
  "data-slot": "dialog-overlay",
3450
- className: y(
3459
+ className: k(
3451
3460
  "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",
3452
3461
  e
3453
3462
  ),
@@ -3467,7 +3476,7 @@ function Rr({
3467
3476
  H.Content,
3468
3477
  {
3469
3478
  "data-slot": "dialog-content",
3470
- className: y(
3479
+ className: k(
3471
3480
  "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",
3472
3481
  e
3473
3482
  ),
@@ -3495,7 +3504,7 @@ function Or({ className: e, ...t }) {
3495
3504
  "div",
3496
3505
  {
3497
3506
  "data-slot": "dialog-header",
3498
- className: y("flex flex-col gap-2 text-center sm:text-start", e),
3507
+ className: k("flex flex-col gap-2 text-center sm:text-start", e),
3499
3508
  ...t
3500
3509
  }
3501
3510
  );
@@ -3505,7 +3514,7 @@ function wi({ className: e, ...t }) {
3505
3514
  "div",
3506
3515
  {
3507
3516
  "data-slot": "dialog-footer",
3508
- className: y("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", e),
3517
+ className: k("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", e),
3509
3518
  ...t
3510
3519
  }
3511
3520
  );
@@ -3515,7 +3524,7 @@ function Fr({ className: e, ...t }) {
3515
3524
  H.Title,
3516
3525
  {
3517
3526
  "data-slot": "dialog-title",
3518
- className: y("text-xl leading-none font-semibold", e),
3527
+ className: k("text-xl leading-none font-semibold", e),
3519
3528
  ...t
3520
3529
  }
3521
3530
  );
@@ -3525,7 +3534,7 @@ function xi({ className: e, ...t }) {
3525
3534
  H.Description,
3526
3535
  {
3527
3536
  "data-slot": "dialog-description",
3528
- className: y("text-muted-foreground text-base", e),
3537
+ className: k("text-muted-foreground text-base", e),
3529
3538
  ...t
3530
3539
  }
3531
3540
  );
@@ -4522,10 +4531,10 @@ const Lr = {
4522
4531
  function q(e) {
4523
4532
  return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
4524
4533
  }
4525
- var ve, dt;
4534
+ var ve, pt;
4526
4535
  function Pr() {
4527
- if (dt) return ve;
4528
- dt = 1, ve = e, e.displayName = "python", e.aliases = ["py"];
4536
+ if (pt) return ve;
4537
+ pt = 1, ve = e, e.displayName = "python", e.aliases = ["py"];
4529
4538
  function e(t) {
4530
4539
  t.languages.python = {
4531
4540
  comment: {
@@ -4593,10 +4602,10 @@ function Pr() {
4593
4602
  }
4594
4603
  var Mr = Pr();
4595
4604
  const zr = /* @__PURE__ */ q(Mr);
4596
- var we, pt;
4605
+ var we, ht;
4597
4606
  function $r() {
4598
- if (pt) return we;
4599
- pt = 1, we = e, e.displayName = "javascript", e.aliases = ["js"];
4607
+ if (ht) return we;
4608
+ ht = 1, we = e, e.displayName = "javascript", e.aliases = ["js"];
4600
4609
  function e(t) {
4601
4610
  t.languages.javascript = t.languages.extend("clike", {
4602
4611
  "class-name": [
@@ -4725,10 +4734,10 @@ function $r() {
4725
4734
  }
4726
4735
  var Ur = $r();
4727
4736
  const Br = /* @__PURE__ */ q(Ur);
4728
- var xe, ht;
4737
+ var xe, gt;
4729
4738
  function Hr() {
4730
- if (ht) return xe;
4731
- ht = 1, xe = e, e.displayName = "typescript", e.aliases = ["ts"];
4739
+ if (gt) return xe;
4740
+ gt = 1, xe = e, e.displayName = "typescript", e.aliases = ["ts"];
4732
4741
  function e(t) {
4733
4742
  (function(n) {
4734
4743
  n.languages.typescript = n.languages.extend("javascript", {
@@ -4780,10 +4789,10 @@ function Hr() {
4780
4789
  }
4781
4790
  var qr = Hr();
4782
4791
  const jr = /* @__PURE__ */ q(qr);
4783
- var _e, gt;
4792
+ var _e, mt;
4784
4793
  function Gr() {
4785
- if (gt) return _e;
4786
- gt = 1, _e = e, e.displayName = "json", e.aliases = ["webmanifest"];
4794
+ if (mt) return _e;
4795
+ mt = 1, _e = e, e.displayName = "json", e.aliases = ["webmanifest"];
4787
4796
  function e(t) {
4788
4797
  t.languages.json = {
4789
4798
  property: {
@@ -4812,12 +4821,12 @@ function Gr() {
4812
4821
  }
4813
4822
  return _e;
4814
4823
  }
4815
- var Wr = Gr();
4816
- const Vr = /* @__PURE__ */ q(Wr);
4817
- var Se, mt;
4824
+ var Vr = Gr();
4825
+ const Wr = /* @__PURE__ */ q(Vr);
4826
+ var Se, ft;
4818
4827
  function Yr() {
4819
- if (mt) return Se;
4820
- mt = 1, Se = e, e.displayName = "bash", e.aliases = ["shell"];
4828
+ if (ft) return Se;
4829
+ ft = 1, Se = e, e.displayName = "bash", e.aliases = ["shell"];
4821
4830
  function e(t) {
4822
4831
  (function(n) {
4823
4832
  var o = "\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b", r = {
@@ -5036,10 +5045,10 @@ function Yr() {
5036
5045
  }
5037
5046
  var Xr = Yr();
5038
5047
  const Kr = /* @__PURE__ */ q(Xr);
5039
- var Ee, ft;
5048
+ var Ee, bt;
5040
5049
  function Zr() {
5041
- if (ft) return Ee;
5042
- ft = 1, Ee = e, e.displayName = "sql", e.aliases = [];
5050
+ if (bt) return Ee;
5051
+ bt = 1, Ee = e, e.displayName = "sql", e.aliases = [];
5043
5052
  function e(t) {
5044
5053
  t.languages.sql = {
5045
5054
  comment: {
@@ -5079,10 +5088,10 @@ function Zr() {
5079
5088
  }
5080
5089
  var Jr = Zr();
5081
5090
  const Qr = /* @__PURE__ */ q(Jr);
5082
- var Ne, bt;
5091
+ var Ne, yt;
5083
5092
  function ea() {
5084
- if (bt) return Ne;
5085
- bt = 1, Ne = e, e.displayName = "yaml", e.aliases = ["yml"];
5093
+ if (yt) return Ne;
5094
+ yt = 1, Ne = e, e.displayName = "yaml", e.aliases = ["yml"];
5086
5095
  function e(t) {
5087
5096
  (function(n) {
5088
5097
  var o = /[*&][^\s[\]{},]+/, r = /!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/, a = "(?:" + r.source + "(?:[ ]+" + o.source + ")?|" + o.source + "(?:[ ]+" + r.source + ")?)", l = /(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(
@@ -5430,10 +5439,10 @@ function oa() {
5430
5439
  }), n.hooks.add("after-tokenize", function(b) {
5431
5440
  if (b.language !== "markdown" && b.language !== "md")
5432
5441
  return;
5433
- function m(k) {
5434
- if (!(!k || typeof k == "string"))
5435
- for (var d = 0, v = k.length; d < v; d++) {
5436
- var x = k[d];
5442
+ function m(y) {
5443
+ if (!(!y || typeof y == "string"))
5444
+ for (var d = 0, v = y.length; d < v; d++) {
5445
+ var x = y[d];
5437
5446
  if (x.type !== "code") {
5438
5447
  m(x.content);
5439
5448
  continue;
@@ -5450,8 +5459,8 @@ function oa() {
5450
5459
  m(b.tokens);
5451
5460
  }), n.hooks.add("wrap", function(b) {
5452
5461
  if (b.type === "code-block") {
5453
- for (var m = "", k = 0, d = b.classes.length; k < d; k++) {
5454
- var v = b.classes[k], x = /language-(.+)/.exec(v);
5462
+ for (var m = "", y = 0, d = b.classes.length; y < d; y++) {
5463
+ var v = b.classes[y], x = /language-(.+)/.exec(v);
5455
5464
  if (x) {
5456
5465
  m = x[1];
5457
5466
  break;
@@ -5485,13 +5494,13 @@ function oa() {
5485
5494
  }, h = String.fromCodePoint || String.fromCharCode;
5486
5495
  function f(b) {
5487
5496
  var m = b.replace(s, "");
5488
- return m = m.replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi, function(k, d) {
5497
+ return m = m.replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi, function(y, d) {
5489
5498
  if (d = d.toLowerCase(), d[0] === "#") {
5490
5499
  var v;
5491
5500
  return d[1] === "x" ? v = parseInt(d.slice(2), 16) : v = Number(d.slice(1)), h(v);
5492
5501
  } else {
5493
5502
  var x = p[d];
5494
- return x || k;
5503
+ return x || y;
5495
5504
  }
5496
5505
  }), m;
5497
5506
  }
@@ -5505,7 +5514,7 @@ const aa = /* @__PURE__ */ q(ra);
5505
5514
  $.registerLanguage("python", zr);
5506
5515
  $.registerLanguage("javascript", Br);
5507
5516
  $.registerLanguage("typescript", jr);
5508
- $.registerLanguage("json", Vr);
5517
+ $.registerLanguage("json", Wr);
5509
5518
  $.registerLanguage("bash", Kr);
5510
5519
  $.registerLanguage("sql", Qr);
5511
5520
  $.registerLanguage("yaml", na);
@@ -5522,7 +5531,7 @@ const ia = pe({
5522
5531
  }) => /* @__PURE__ */ i(ia.Provider, { value: { code: e }, children: /* @__PURE__ */ i(
5523
5532
  "div",
5524
5533
  {
5525
- className: y("relative w-full overflow-hidden rounded-md border bg-background text-foreground", o),
5534
+ className: k("relative w-full overflow-hidden rounded-md border bg-background text-foreground", o),
5526
5535
  dir: "ltr",
5527
5536
  ...a,
5528
5537
  children: /* @__PURE__ */ w("div", { className: "relative", children: [
@@ -5582,13 +5591,13 @@ const ia = pe({
5582
5591
  ) });
5583
5592
  function la(e, t = "size-4") {
5584
5593
  return {
5585
- web_search: /* @__PURE__ */ i(Sn, { className: t }),
5594
+ web_search: /* @__PURE__ */ i(En, { className: t }),
5586
5595
  web_fetch: /* @__PURE__ */ i(ue, { className: t }),
5587
- code_execution: /* @__PURE__ */ i(_n, { className: t }),
5588
- image_generation: /* @__PURE__ */ i(xn, { className: t })
5589
- }[e] ?? /* @__PURE__ */ i(wn, { className: t });
5596
+ code_execution: /* @__PURE__ */ i(Sn, { className: t }),
5597
+ image_generation: /* @__PURE__ */ i(_n, { className: t })
5598
+ }[e] ?? /* @__PURE__ */ i(xn, { className: t });
5590
5599
  }
5591
- const sa = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: y("not-prose mb-4 w-full rounded-md border", e), ...t }), ca = ({ status: e }) => {
5600
+ const sa = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: k("not-prose mb-4 w-full rounded-md border", e), ...t }), ca = ({ status: e }) => {
5592
5601
  const { t } = M(["tools_ui"]), n = {
5593
5602
  "input-streaming": t("pending"),
5594
5603
  "input-available": t("running"),
@@ -5597,16 +5606,16 @@ const sa = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: y("not
5597
5606
  };
5598
5607
  return /* @__PURE__ */ w(Nr, { className: "gap-1.5 rounded-full text-xs", variant: "secondary", children: [
5599
5608
  {
5600
- "input-streaming": /* @__PURE__ */ i(Tn, { className: "size-4" }),
5601
- "input-available": /* @__PURE__ */ i(Nn, { className: "size-4 animate-pulse" }),
5602
- "output-available": /* @__PURE__ */ i(En, { className: "size-4 text-green-600" }),
5603
- "output-error": /* @__PURE__ */ i(Nt, { className: "size-4 text-red-600" })
5609
+ "input-streaming": /* @__PURE__ */ i(Cn, { className: "size-4" }),
5610
+ "input-available": /* @__PURE__ */ i(Tn, { className: "size-4 animate-pulse" }),
5611
+ "output-available": /* @__PURE__ */ i(Nn, { className: "size-4 text-green-600" }),
5612
+ "output-error": /* @__PURE__ */ i(Tt, { className: "size-4 text-red-600" })
5604
5613
  }[e],
5605
5614
  n[e]
5606
5615
  ] });
5607
5616
  }, ua = ({ className: e, type: t, state: n, toolName: o, ...r }) => {
5608
5617
  const a = o || (t.startsWith("tool-") ? t.slice(5) : t), l = la(a, "size-4 text-muted-foreground");
5609
- return /* @__PURE__ */ w($e, { className: y("flex w-full items-center justify-between gap-4 p-3", e), ...r, children: [
5618
+ return /* @__PURE__ */ w($e, { className: k("flex w-full items-center justify-between gap-4 p-3", e), ...r, children: [
5610
5619
  /* @__PURE__ */ w("div", { className: "flex items-center gap-2", children: [
5611
5620
  l,
5612
5621
  /* @__PURE__ */ i("span", { className: "font-medium text-sm", children: a }),
@@ -5617,13 +5626,13 @@ const sa = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: y("not
5617
5626
  }, da = ({ className: e, ...t }) => /* @__PURE__ */ i(
5618
5627
  Ue,
5619
5628
  {
5620
- className: y(
5629
+ className: k(
5621
5630
  "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",
5622
5631
  e
5623
5632
  ),
5624
5633
  ...t
5625
5634
  }
5626
- ), tn = (e) => {
5635
+ ), nn = (e) => {
5627
5636
  if (typeof e == "string")
5628
5637
  try {
5629
5638
  return JSON.stringify(JSON.parse(e), null, 2);
@@ -5633,9 +5642,9 @@ const sa = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: y("not
5633
5642
  return JSON.stringify(e, null, 2);
5634
5643
  }, pa = ({ className: e, input: t, ...n }) => {
5635
5644
  const { t: o } = M(["tools_ui"]);
5636
- return /* @__PURE__ */ w("div", { className: y("space-y-2 overflow-hidden p-4", e), ...n, children: [
5645
+ return /* @__PURE__ */ w("div", { className: k("space-y-2 overflow-hidden p-4", e), ...n, children: [
5637
5646
  /* @__PURE__ */ i("h4", { className: "font-medium text-muted-foreground text-xs uppercase tracking-wide", children: o("parameters") }),
5638
- /* @__PURE__ */ i("div", { className: "rounded-md bg-muted/50", children: /* @__PURE__ */ i(Fe, { code: tn(t), language: "json" }) })
5647
+ /* @__PURE__ */ i("div", { className: "rounded-md bg-muted/50", children: /* @__PURE__ */ i(Fe, { code: nn(t), language: "json" }) })
5639
5648
  ] });
5640
5649
  }, ha = ({ className: e, output: t, errorText: n, ...o }) => {
5641
5650
  const { t: r } = M(["tools_ui"]), [a, l] = B(!1);
@@ -5655,19 +5664,19 @@ const sa = ({ className: e, ...t }) => /* @__PURE__ */ i(ze, { className: y("not
5655
5664
  }
5656
5665
  return typeof t == "object" && t !== null && !("$$typeof" in t) ? /* @__PURE__ */ i(Fe, { code: JSON.stringify(t, null, 2), language: "json" }) : t;
5657
5666
  };
5658
- return /* @__PURE__ */ w("div", { className: y("space-y-2 p-4", e), ...o, children: [
5667
+ return /* @__PURE__ */ w("div", { className: k("space-y-2 p-4", e), ...o, children: [
5659
5668
  /* @__PURE__ */ i("h4", { className: "font-medium text-muted-foreground text-xs uppercase tracking-wide", children: r(n ? "error" : "result") }),
5660
5669
  n && /* @__PURE__ */ w(Tr, { children: [
5661
5670
  /* @__PURE__ */ i(Cr, { asChild: !0, children: /* @__PURE__ */ w(ee, { variant: "destructive", size: "sm", children: [
5662
- /* @__PURE__ */ i(Nt, { className: "mr-1.5 size-4" }),
5671
+ /* @__PURE__ */ i(Tt, { className: "mr-1.5 size-4" }),
5663
5672
  r("view_error")
5664
5673
  ] }) }),
5665
5674
  /* @__PURE__ */ w(Rr, { className: "max-w-2xl", children: [
5666
5675
  /* @__PURE__ */ i(Or, { children: /* @__PURE__ */ i(Fr, { className: "text-destructive", children: r("tool_error") }) }),
5667
5676
  /* @__PURE__ */ w("div", { className: "space-y-4", children: [
5668
- /* @__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: tn(n) }) }),
5677
+ /* @__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: nn(n) }) }),
5669
5678
  /* @__PURE__ */ w(ee, { variant: "outline", size: "sm", onClick: c, children: [
5670
- /* @__PURE__ */ i(Et, { className: "mr-1.5 size-4" }),
5679
+ /* @__PURE__ */ i(Nt, { className: "mr-1.5 size-4" }),
5671
5680
  r(a ? "copied" : "copy_error")
5672
5681
  ] })
5673
5682
  ] })
@@ -5719,7 +5728,7 @@ function ma({
5719
5728
  const s = document.createElement("a");
5720
5729
  s.href = o.url, s.download = a, document.body.appendChild(s), s.click(), document.body.removeChild(s);
5721
5730
  };
5722
- return /* @__PURE__ */ i("div", { className: "py-2 animate-in-bubble", children: /* @__PURE__ */ i(Ft, { from: t.role, children: /* @__PURE__ */ i(Lt, { 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: [
5731
+ return /* @__PURE__ */ i("div", { className: "py-2 animate-in-bubble", children: /* @__PURE__ */ i(Lt, { from: t.role, children: /* @__PURE__ */ i(Dt, { 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: [
5723
5732
  /* @__PURE__ */ i(
5724
5733
  "img",
5725
5734
  {
@@ -5749,7 +5758,7 @@ function ma({
5749
5758
  }
5750
5759
  ) })
5751
5760
  ] }) : /* @__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: [
5752
- /* @__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(St, { className: "size-4 shrink-0" }) }),
5761
+ /* @__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(Et, { className: "size-4 shrink-0" }) }),
5753
5762
  /* @__PURE__ */ w("div", { className: "flex flex-col min-w-0 mr-4", children: [
5754
5763
  /* @__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 }),
5755
5764
  (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() })
@@ -5815,9 +5824,9 @@ const C = {
5815
5824
  account: { enabled: !0, fields: {} }
5816
5825
  }
5817
5826
  }
5818
- }, nn = pe(C);
5819
- function V() {
5820
- return Le(nn);
5827
+ }, on = pe(C);
5828
+ function W() {
5829
+ return Le(on);
5821
5830
  }
5822
5831
  function _i({
5823
5832
  components: e,
@@ -5832,7 +5841,7 @@ function _i({
5832
5841
  settings: p,
5833
5842
  children: h
5834
5843
  }) {
5835
- const f = _t(
5844
+ const f = St(
5836
5845
  () => ({
5837
5846
  ...C,
5838
5847
  ...e,
@@ -5861,7 +5870,7 @@ function _i({
5861
5870
  }),
5862
5871
  [e, t, n, o, r, a, l, c, s, p]
5863
5872
  );
5864
- return /* @__PURE__ */ i(nn.Provider, { value: f, children: h });
5873
+ return /* @__PURE__ */ i(on.Provider, { value: f, children: h });
5865
5874
  }
5866
5875
  const fa = {
5867
5876
  theme: "system",
@@ -5870,7 +5879,7 @@ const fa = {
5870
5879
  setAccent: () => null,
5871
5880
  radius: void 0,
5872
5881
  setRadius: () => null
5873
- }, on = pe(fa);
5882
+ }, rn = pe(fa);
5874
5883
  function Si({
5875
5884
  children: e,
5876
5885
  defaultTheme: t = "system",
@@ -5883,19 +5892,19 @@ function Si({
5883
5892
  () => window.localStorage.getItem(n + "-accent") || void 0
5884
5893
  ), [s, p] = B(
5885
5894
  () => window.localStorage.getItem(n + "-radius") || "1.25rem"
5886
- ), { theme: h } = V(), { i18n: f } = M(["theme"]);
5895
+ ), { theme: h } = W(), { i18n: f } = M(["theme"]);
5887
5896
  Q(() => {
5888
5897
  const m = window.document.documentElement;
5889
5898
  if (m.classList.remove("light", "dark"), r === "system") {
5890
- const k = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
5891
- m.classList.add(k);
5899
+ const y = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
5900
+ m.classList.add(y);
5892
5901
  return;
5893
5902
  }
5894
5903
  m.classList.add(r);
5895
5904
  }, [r]), Q(() => {
5896
- const m = window.document.documentElement, k = f.language?.split("-")[0] || f.language;
5905
+ const m = window.document.documentElement, y = f.language?.split("-")[0] || f.language;
5897
5906
  let d = h?.typography?.fontFamily;
5898
- if (typeof d == "object" && d !== null && (d = d[f.language] || d[k] || d.en || Object.values(d)[0]), d) {
5907
+ if (typeof d == "object" && d !== null && (d = d[f.language] || d[y] || d.en || Object.values(d)[0]), d) {
5899
5908
  const g = d.includes(" ") && !d.startsWith("'") && !d.startsWith('"') ? `"${d}"` : d;
5900
5909
  m.style.setProperty("--gentiq-font-family", g), m.style.fontFamily = g, window.document.body && (window.document.body.style.fontFamily = g);
5901
5910
  }
@@ -5918,14 +5927,14 @@ function Si({
5918
5927
  m ? window.localStorage.setItem(n + "-radius", m) : window.localStorage.removeItem(n + "-radius"), p(m);
5919
5928
  }
5920
5929
  };
5921
- return /* @__PURE__ */ i(on.Provider, { ...o, value: b, children: e });
5930
+ return /* @__PURE__ */ i(rn.Provider, { ...o, value: b, children: e });
5922
5931
  }
5923
- const Ei = () => Le(on), {
5932
+ const Ei = () => Le(rn), {
5924
5933
  slice: ba,
5925
- forEach: ka
5934
+ forEach: ya
5926
5935
  } = [];
5927
- function ya(e) {
5928
- return ka.call(ba.call(arguments, 1), (t) => {
5936
+ function ka(e) {
5937
+ return ya.call(ba.call(arguments, 1), (t) => {
5929
5938
  if (t)
5930
5939
  for (const n in t)
5931
5940
  e[n] === void 0 && (e[n] = t[n]);
@@ -5934,7 +5943,7 @@ function ya(e) {
5934
5943
  function va(e) {
5935
5944
  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));
5936
5945
  }
5937
- const yt = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/, wa = function(e, t) {
5946
+ const vt = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/, wa = function(e, t) {
5938
5947
  const o = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {
5939
5948
  path: "/"
5940
5949
  }, r = encodeURIComponent(t);
@@ -5945,12 +5954,12 @@ const yt = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/, wa = function(e, t) {
5945
5954
  a += `; Max-Age=${Math.floor(l)}`;
5946
5955
  }
5947
5956
  if (o.domain) {
5948
- if (!yt.test(o.domain))
5957
+ if (!vt.test(o.domain))
5949
5958
  throw new TypeError("option domain is invalid");
5950
5959
  a += `; Domain=${o.domain}`;
5951
5960
  }
5952
5961
  if (o.path) {
5953
- if (!yt.test(o.path))
5962
+ if (!vt.test(o.path))
5954
5963
  throw new TypeError("option path is invalid");
5955
5964
  a += `; Path=${o.path}`;
5956
5965
  }
@@ -5977,7 +5986,7 @@ const yt = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/, wa = function(e, t) {
5977
5986
  throw new TypeError("option sameSite is invalid");
5978
5987
  }
5979
5988
  return o.partitioned && (a += "; Partitioned"), a;
5980
- }, vt = {
5989
+ }, wt = {
5981
5990
  create(e, t, n, o) {
5982
5991
  let r = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : {
5983
5992
  path: "/",
@@ -6006,7 +6015,7 @@ var xa = {
6006
6015
  lookupCookie: t
6007
6016
  } = e;
6008
6017
  if (t && typeof document < "u")
6009
- return vt.read(t) || void 0;
6018
+ return wt.read(t) || void 0;
6010
6019
  },
6011
6020
  // Deconstruct the options object and extract the lookupCookie, cookieMinutes, cookieDomain, and cookieOptions properties
6012
6021
  cacheUserLanguage(e, t) {
@@ -6016,7 +6025,7 @@ var xa = {
6016
6025
  cookieDomain: r,
6017
6026
  cookieOptions: a
6018
6027
  } = t;
6019
- n && typeof document < "u" && vt.create(n, e, o, r, a);
6028
+ n && typeof document < "u" && wt.create(n, e, o, r, a);
6020
6029
  }
6021
6030
  }, _a = {
6022
6031
  name: "querystring",
@@ -6070,7 +6079,7 @@ var xa = {
6070
6079
  }
6071
6080
  };
6072
6081
  let Y = null;
6073
- const wt = () => {
6082
+ const xt = () => {
6074
6083
  if (Y !== null) return Y;
6075
6084
  try {
6076
6085
  if (Y = typeof window < "u" && window.localStorage !== null, !Y)
@@ -6089,7 +6098,7 @@ var Ea = {
6089
6098
  let {
6090
6099
  lookupLocalStorage: t
6091
6100
  } = e;
6092
- if (t && wt())
6101
+ if (t && xt())
6093
6102
  return window.localStorage.getItem(t) || void 0;
6094
6103
  },
6095
6104
  // Deconstruct the options object and extract the lookupLocalStorage property
@@ -6097,11 +6106,11 @@ var Ea = {
6097
6106
  let {
6098
6107
  lookupLocalStorage: n
6099
6108
  } = t;
6100
- n && wt() && window.localStorage.setItem(n, e);
6109
+ n && xt() && window.localStorage.setItem(n, e);
6101
6110
  }
6102
6111
  };
6103
6112
  let X = null;
6104
- const xt = () => {
6113
+ const _t = () => {
6105
6114
  if (X !== null) return X;
6106
6115
  try {
6107
6116
  if (X = typeof window < "u" && window.sessionStorage !== null, !X)
@@ -6119,14 +6128,14 @@ var Na = {
6119
6128
  let {
6120
6129
  lookupSessionStorage: t
6121
6130
  } = e;
6122
- if (t && xt())
6131
+ if (t && _t())
6123
6132
  return window.sessionStorage.getItem(t) || void 0;
6124
6133
  },
6125
6134
  cacheUserLanguage(e, t) {
6126
6135
  let {
6127
6136
  lookupSessionStorage: n
6128
6137
  } = t;
6129
- n && xt() && window.sessionStorage.setItem(n, e);
6138
+ n && _t() && window.sessionStorage.setItem(n, e);
6130
6139
  }
6131
6140
  }, Ta = {
6132
6141
  name: "navigator",
@@ -6177,15 +6186,15 @@ var Na = {
6177
6186
  return o[n];
6178
6187
  }
6179
6188
  };
6180
- let rn = !1;
6189
+ let an = !1;
6181
6190
  try {
6182
- document.cookie, rn = !0;
6191
+ document.cookie, an = !0;
6183
6192
  } catch {
6184
6193
  }
6185
- const an = ["querystring", "cookie", "localStorage", "sessionStorage", "navigator", "htmlTag"];
6186
- rn || an.splice(1, 1);
6194
+ const ln = ["querystring", "cookie", "localStorage", "sessionStorage", "navigator", "htmlTag"];
6195
+ an || ln.splice(1, 1);
6187
6196
  const Ra = () => ({
6188
- order: an,
6197
+ order: ln,
6189
6198
  lookupQuerystring: "lng",
6190
6199
  lookupCookie: "i18next",
6191
6200
  lookupLocalStorage: "i18nextLng",
@@ -6197,7 +6206,7 @@ const Ra = () => ({
6197
6206
  // cookieDomain: 'myDomain'
6198
6207
  convertDetectedLanguage: (e) => e
6199
6208
  });
6200
- class ln {
6209
+ class sn {
6201
6210
  constructor(t) {
6202
6211
  let n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
6203
6212
  this.type = "languageDetector", this.detectors = {}, this.init(t, n);
@@ -6206,7 +6215,7 @@ class ln {
6206
6215
  let t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {
6207
6216
  languageUtils: {}
6208
6217
  }, n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, o = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
6209
- this.services = t, this.options = ya(n, this.options || {}, Ra()), 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(_a), this.addDetector(Ea), this.addDetector(Na), this.addDetector(Ta), this.addDetector(Ca), this.addDetector(Aa), this.addDetector(Ia), this.addDetector(Sa);
6218
+ this.services = t, this.options = ka(n, this.options || {}, Ra()), 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(_a), this.addDetector(Ea), this.addDetector(Na), this.addDetector(Ta), this.addDetector(Ca), this.addDetector(Aa), this.addDetector(Ia), this.addDetector(Sa);
6210
6219
  }
6211
6220
  addDetector(t) {
6212
6221
  return this.detectors[t.name] = t, this;
@@ -6227,7 +6236,7 @@ class ln {
6227
6236
  }));
6228
6237
  }
6229
6238
  }
6230
- ln.type = "languageDetector";
6239
+ sn.type = "languageDetector";
6231
6240
  const Oa = { 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." }, La = { 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" }, Da = { 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...", select_placeholder: "Select an option", login_button: "Login", signup_button: "Sign Up" }, Pa = { toggle: "Change theme", light: "Switch to light theme", dark: "Switch to dark theme", system: "Switch to system theme" }, Ma = { 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)." }, 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.", 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" } }, za = { 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.", 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." }, Ua = {
6232
6241
  sidebar: Oa,
6233
6242
  chat: Fa,
@@ -6237,20 +6246,20 @@ const Oa = { new_conversation: "New conversation", tooltip_new_conversation: "St
6237
6246
  admin: Ma,
6238
6247
  settings: za,
6239
6248
  errors: $a
6240
- }, Ba = { 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: "اشتراک‌گذاری" }, Ha = { tools: "ابزارها", error: "خطا:", input_placeholder: "سوالتو اینجا بپرس...", insufficient_balance: "موجودی حساب شما کافی نیست. لطفا برای ادامه، حساب خود را شارژ کنید.", regenerate: "تولید مجدد", retry: "تلاش مجدد", copy: "کپی", like: "پسندیدم", dislike: "نپسندیدم", attach_file: "پیوست فایل", remove_file: "حذف فایل", used_sources: "از {{count}} منبع استفاده شد", welcome: { title: "سلام! چطور می‌تونم کمکت کنم؟", subtitle: "هر سوالی داری بپرس، تمام تلاشمو می‌کنم کمکت کنم.", suggestions: ["چه کارهایی می‌تونی انجام بدی؟", "یه چیز جالب بهم بگو", "کمکم کن یه ایمیل بنویسم", "یه مفهوم رو برام توضیح بده"] }, disclaimer: "هوش مصنوعی ممکن است اشتباه کند. اطلاعات مهم را بررسی کنید." }, qa = { pending: "در انتظار", running: "در حال اجرا", completed: "تکمیل شده", error: "خطا", parameters: "پارامترها", result: "نتیجه", view_error: "نمایش خطا", tool_error: "خطای ابزار", copied: "کپی شد!", copy_error: "کپی خطا" }, ja = { login_tab: "ورود", signup_tab: "ثبت نام", phone: "شماره تلفن", phone_placeholder: "شماره تلفن", password: "رمز عبور", name: "نام", name_placeholder: "نام", surname: "نام خانوادگی", surname_placeholder: "نام خانوادگی", logging_in: "در حال ورود...", signing_up: "در حال ثبت نام...", select_placeholder: "انتخاب کنید", login_button: "ورود", signup_button: "ثبت نام" }, Ga = { 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: "زبانی که کاربر در اولین ورود مشاهده می‌کند (در صورت عدم تشخیص خودکار)." }, chat: { welcome_greeting: "پیام خوش‌آمدگویی", welcome_subtitle: "زیرعنوان خوش‌آمدگویی", disclaimer: "متن سلب مسئولیت", show_tool_details: "نمایش جزئیات فنی ابزارها (Tools)", show_tool_details_help: "برای نمایش جزئیات فنی و نحوه عملکرد ابزارهای هوش مصنوعی به کاربران، این گزینه را فعال کنید.", show_settings: "نمایش آیکون تنظیمات برای کاربران", show_settings_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: "© ۲۰۲۶ پلتفرم چت‌بات هوشمند" } }, Va = { 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: "آخرین بروزرسانی اعتبار در تاریخ" } }, Ya = { 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: "خطا در اشتراک‌گذاری گفتگو.", admin_already_exists: "ادمین با این نام کاربری قبلاً ایجاد شده است.", admin_not_found: "ادمین یافت نشد.", cannot_delete_self: "شما نمی‌توانید حساب مدیریت خود را حذف کنید.", admin_update_failed: "خطا در بروزرسانی اطلاعات ادمین.", internal_error: "یک خطای داخلی در سرور رخ داده است. لطفاً بعداً تلاش کنید.", validation_error: "داده‌های ارسالی معتبر نیستند. لطفاً ورودی‌های خود را بررسی کنید.", not_found: "منبع مورد نظر یافت نشد." }, Xa = {
6249
+ }, Ba = { 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: "اشتراک‌گذاری" }, Ha = { tools: "ابزارها", error: "خطا:", input_placeholder: "سوالتو اینجا بپرس...", insufficient_balance: "موجودی حساب شما کافی نیست. لطفا برای ادامه، حساب خود را شارژ کنید.", regenerate: "تولید مجدد", retry: "تلاش مجدد", copy: "کپی", like: "پسندیدم", dislike: "نپسندیدم", attach_file: "پیوست فایل", remove_file: "حذف فایل", used_sources: "از {{count}} منبع استفاده شد", welcome: { title: "سلام! چطور می‌تونم کمکت کنم؟", subtitle: "هر سوالی داری بپرس، تمام تلاشمو می‌کنم کمکت کنم.", suggestions: ["چه کارهایی می‌تونی انجام بدی؟", "یه چیز جالب بهم بگو", "کمکم کن یه ایمیل بنویسم", "یه مفهوم رو برام توضیح بده"] }, disclaimer: "هوش مصنوعی ممکن است اشتباه کند. اطلاعات مهم را بررسی کنید." }, qa = { pending: "در انتظار", running: "در حال اجرا", completed: "تکمیل شده", error: "خطا", parameters: "پارامترها", result: "نتیجه", view_error: "نمایش خطا", tool_error: "خطای ابزار", copied: "کپی شد!", copy_error: "کپی خطا" }, ja = { login_tab: "ورود", signup_tab: "ثبت نام", phone: "شماره تلفن", phone_placeholder: "شماره تلفن", password: "رمز عبور", name: "نام", name_placeholder: "نام", surname: "نام خانوادگی", surname_placeholder: "نام خانوادگی", logging_in: "در حال ورود...", signing_up: "در حال ثبت نام...", select_placeholder: "انتخاب کنید", login_button: "ورود", signup_button: "ثبت نام" }, Ga = { toggle: "تغییر تم", light: "تغییر به تم روشن", dark: "تغییر به تم تاریک", system: "تغییر به تم سیستم" }, Va = { 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: "زبانی که کاربر در اولین ورود مشاهده می‌کند (در صورت عدم تشخیص خودکار)." }, chat: { welcome_greeting: "پیام خوش‌آمدگویی", welcome_subtitle: "زیرعنوان خوش‌آمدگویی", disclaimer: "متن سلب مسئولیت", show_tool_details: "نمایش جزئیات فنی ابزارها (Tools)", show_tool_details_help: "برای نمایش جزئیات فنی و نحوه عملکرد ابزارهای هوش مصنوعی به کاربران، این گزینه را فعال کنید.", show_settings: "نمایش آیکون تنظیمات برای کاربران", show_settings_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: "© ۲۰۲۶ پلتفرم چت‌بات هوشمند" } }, Wa = { 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: "آخرین بروزرسانی اعتبار در تاریخ" } }, Ya = { 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: "خطا در اشتراک‌گذاری گفتگو.", admin_already_exists: "ادمین با این نام کاربری قبلاً ایجاد شده است.", admin_not_found: "ادمین یافت نشد.", cannot_delete_self: "شما نمی‌توانید حساب مدیریت خود را حذف کنید.", admin_update_failed: "خطا در بروزرسانی اطلاعات ادمین.", internal_error: "یک خطای داخلی در سرور رخ داده است. لطفاً بعداً تلاش کنید.", validation_error: "داده‌های ارسالی معتبر نیستند. لطفاً ورودی‌های خود را بررسی کنید.", not_found: "منبع مورد نظر یافت نشد." }, Xa = {
6241
6250
  sidebar: Ba,
6242
6251
  chat: Ha,
6243
6252
  tools_ui: qa,
6244
6253
  login: ja,
6245
6254
  theme: Ga,
6246
- admin: Wa,
6247
- settings: Va,
6255
+ admin: Va,
6256
+ settings: Wa,
6248
6257
  errors: Ya
6249
6258
  }, Ka = {
6250
6259
  en: Ua,
6251
6260
  fa: Xa
6252
- }, Za = On.createInstance();
6253
- Za.use(ln).use(cn).init({
6261
+ }, Za = Fn.createInstance();
6262
+ Za.use(sn).use(un).init({
6254
6263
  resources: Ka,
6255
6264
  fallbackLng: "en",
6256
6265
  returnNull: !1,
@@ -6271,7 +6280,7 @@ function Ni({ className: e, type: t, ...n }) {
6271
6280
  {
6272
6281
  type: t,
6273
6282
  "data-slot": "input",
6274
- className: y(
6283
+ className: k(
6275
6284
  "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",
6276
6285
  "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
6277
6286
  "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
@@ -6287,7 +6296,7 @@ const Ti = "data:image/svg+xml,%3csvg%20version='1.2'%20xmlns='http://www.w3.org
6287
6296
  "label",
6288
6297
  {
6289
6298
  ref: n,
6290
- className: y(Ja(), e),
6299
+ className: k(Ja(), e),
6291
6300
  ...t
6292
6301
  }
6293
6302
  ));
@@ -6312,7 +6321,7 @@ function Ri({
6312
6321
  {
6313
6322
  "data-slot": "select-trigger",
6314
6323
  "data-size": t,
6315
- className: y(
6324
+ className: k(
6316
6325
  "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",
6317
6326
  e
6318
6327
  ),
@@ -6334,7 +6343,7 @@ function Oi({
6334
6343
  L.Content,
6335
6344
  {
6336
6345
  "data-slot": "select-content",
6337
- className: y(
6346
+ className: k(
6338
6347
  "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",
6339
6348
  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",
6340
6349
  e
@@ -6346,7 +6355,7 @@ function Oi({
6346
6355
  /* @__PURE__ */ i(
6347
6356
  L.Viewport,
6348
6357
  {
6349
- className: y(
6358
+ className: k(
6350
6359
  "p-1",
6351
6360
  n === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
6352
6361
  ),
@@ -6363,7 +6372,7 @@ function Fi({ className: e, ...t }) {
6363
6372
  L.Label,
6364
6373
  {
6365
6374
  "data-slot": "select-label",
6366
- className: y("text-muted-foreground px-2 py-1.5 text-xs", e),
6375
+ className: k("text-muted-foreground px-2 py-1.5 text-xs", e),
6367
6376
  ...t
6368
6377
  }
6369
6378
  );
@@ -6373,7 +6382,7 @@ function Li({ className: e, children: t, ...n }) {
6373
6382
  L.Item,
6374
6383
  {
6375
6384
  "data-slot": "select-item",
6376
- className: y(
6385
+ className: k(
6377
6386
  "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",
6378
6387
  e
6379
6388
  ),
@@ -6390,7 +6399,7 @@ function Di({ className: e, ...t }) {
6390
6399
  L.Separator,
6391
6400
  {
6392
6401
  "data-slot": "select-separator",
6393
- className: y("bg-border pointer-events-none -mx-1 my-1 h-px", e),
6402
+ className: k("bg-border pointer-events-none -mx-1 my-1 h-px", e),
6394
6403
  ...t
6395
6404
  }
6396
6405
  );
@@ -6400,9 +6409,9 @@ function ei({ className: e, ...t }) {
6400
6409
  L.ScrollUpButton,
6401
6410
  {
6402
6411
  "data-slot": "select-scroll-up-button",
6403
- className: y("flex cursor-default items-center justify-center py-1", e),
6412
+ className: k("flex cursor-default items-center justify-center py-1", e),
6404
6413
  ...t,
6405
- children: /* @__PURE__ */ i(Cn, { className: "size-4" })
6414
+ children: /* @__PURE__ */ i(An, { className: "size-4" })
6406
6415
  }
6407
6416
  );
6408
6417
  }
@@ -6414,7 +6423,7 @@ function ti({
6414
6423
  L.ScrollDownButton,
6415
6424
  {
6416
6425
  "data-slot": "select-scroll-down-button",
6417
- className: y("flex cursor-default items-center justify-center py-1", e),
6426
+ className: k("flex cursor-default items-center justify-center py-1", e),
6418
6427
  ...t,
6419
6428
  children: /* @__PURE__ */ i(ie, { className: "size-4" })
6420
6429
  }
@@ -6452,7 +6461,7 @@ function $i({
6452
6461
  {
6453
6462
  "data-slot": "dropdown-menu-content",
6454
6463
  sideOffset: t,
6455
- className: y(
6464
+ className: k(
6456
6465
  "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",
6457
6466
  e
6458
6467
  ),
@@ -6472,7 +6481,7 @@ function Ui({
6472
6481
  "data-slot": "dropdown-menu-item",
6473
6482
  "data-inset": t,
6474
6483
  "data-variant": n,
6475
- className: y(
6484
+ className: k(
6476
6485
  "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",
6477
6486
  e
6478
6487
  ),
@@ -6485,7 +6494,7 @@ function Bi({ className: e, ...t }) {
6485
6494
  Ye.Root,
6486
6495
  {
6487
6496
  "data-slot": "checkbox",
6488
- className: y(
6497
+ className: k(
6489
6498
  "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",
6490
6499
  e
6491
6500
  ),
@@ -6509,7 +6518,7 @@ export {
6509
6518
  Tr as D,
6510
6519
  Or as E,
6511
6520
  Fr as F,
6512
- Dn as G,
6521
+ Xe as G,
6513
6522
  xi as H,
6514
6523
  Ni as I,
6515
6524
  wi as J,
@@ -6530,21 +6539,21 @@ export {
6530
6539
  Di as Y,
6531
6540
  vr as Z,
6532
6541
  ga as _,
6533
- V as a,
6542
+ W as a,
6534
6543
  vi as a0,
6535
6544
  Jn as a1,
6536
- ln as a2,
6545
+ sn as a2,
6537
6546
  $n as b,
6538
- ki as c,
6547
+ yi as c,
6539
6548
  Ka as d,
6540
- y as e,
6549
+ k as e,
6541
6550
  ao as f,
6542
6551
  Za as g,
6543
- At as h,
6544
- It as i,
6545
- yi as j,
6546
- Rt as k,
6547
- Ot as l,
6552
+ It as h,
6553
+ Rt as i,
6554
+ ki as j,
6555
+ Ot as k,
6556
+ Ft as l,
6548
6557
  Ei as m,
6549
6558
  Pi as n,
6550
6559
  Cr as o,