@chaibuilder/sdk 4.0.0-beta.43 → 4.0.0-beta.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/dist/{2SSKDMRQ-hQZti_AG.js → 2SSKDMRQ-CqsUj10r.js} +2 -2
  2. package/dist/{2SSKDMRQ-BZmyXysb.cjs → 2SSKDMRQ-D12irKaV.cjs} +1 -1
  3. package/dist/{AP7HFJJL-DhBHON6w.js → AP7HFJJL-CEMjieq8.js} +1 -1
  4. package/dist/{AP7HFJJL-DZJbtGey.cjs → AP7HFJJL-CQ1kBXlH.cjs} +1 -1
  5. package/dist/{IconPicker-y7ijQESM.js → IconPicker-CGtjTiWr.js} +1 -1
  6. package/dist/{IconPicker-BTC6tZZE.cjs → IconPicker-CeAu6O-X.cjs} +1 -1
  7. package/dist/{WDYDFRGG-BQXNJif4.cjs → WDYDFRGG-BGBMGOXn.cjs} +1 -1
  8. package/dist/{WDYDFRGG-DT73rUAi.js → WDYDFRGG-Djk7UWh1.js} +2 -2
  9. package/dist/{actions-registery-CqhNZFV3.cjs → actions-registery-B6tt904t.cjs} +18 -18
  10. package/dist/{actions-registery-CMKfEXxX.js → actions-registery-D1v8fvDh.js} +712 -709
  11. package/dist/actions.cjs +1 -1
  12. package/dist/actions.d.ts +135 -0
  13. package/dist/actions.js +7 -6
  14. package/dist/{active-in-another-tab-B_b2Wl-l.cjs → active-in-another-tab-BWn6jTeo.cjs} +1 -1
  15. package/dist/{active-in-another-tab-D5Wsc7po.js → active-in-another-tab-b3dtgwXA.js} +4 -4
  16. package/dist/{add-new-language-page-B37NvHcc.cjs → add-new-language-page-CJgeCgQ_.cjs} +1 -1
  17. package/dist/{add-new-language-page-DgYUSlvF.js → add-new-language-page-DLSJWwTI.js} +3 -3
  18. package/dist/{add-new-page-BLPSZY8N.js → add-new-page-CS8dEOhg.js} +2 -2
  19. package/dist/{add-new-page-CMkPeRMc.cjs → add-new-page-IRS1Ft0d.cjs} +1 -1
  20. package/dist/{ai-panel-default-lang-BJPZtqTZ.cjs → ai-panel-default-lang-BTjr4pC6.cjs} +2 -2
  21. package/dist/{ai-panel-default-lang-q7ibfHDa.js → ai-panel-default-lang-NdhYzpxN.js} +11 -11
  22. package/dist/{ai-panel-other-lang-DO2Pq3eM.js → ai-panel-other-lang-Bj2wYIfM.js} +14 -14
  23. package/dist/{ai-panel-other-lang-CqThrEnR.cjs → ai-panel-other-lang-BpjPfSPX.cjs} +1 -1
  24. package/dist/ai-prompt-input-B8SFfk6N.cjs +1 -0
  25. package/dist/ai-prompt-input-bleYNRnH.js +650 -0
  26. package/dist/{ai-translation-prompt-Ch54mM08.cjs → ai-translation-prompt-D1rNu8P-.cjs} +1 -1
  27. package/dist/{ai-translation-prompt-TUVm5MgK.js → ai-translation-prompt-DHfe6Wzy.js} +1 -1
  28. package/dist/apply-binding-CBSjMYSk.cjs +41 -0
  29. package/dist/{apply-binding-RQRSIe56.js → apply-binding-vAuN-TGV.js} +3 -2
  30. package/dist/{change-password-modal-Cet5GebC.js → change-password-modal-OPNVgWPf.js} +4 -4
  31. package/dist/{change-password-modal-xBIyXsLV.cjs → change-password-modal-pr1urpGi.cjs} +1 -1
  32. package/dist/{code-editor-C8oMJmY_.cjs → code-editor-BVmpIZOt.cjs} +1 -1
  33. package/dist/{code-editor-DvxiAjP6.js → code-editor-BfGHceIq.js} +1 -1
  34. package/dist/{continue-editing-in-this-client-B19gkD98.cjs → continue-editing-in-this-client-B0fhkHm9.cjs} +1 -1
  35. package/dist/{continue-editing-in-this-client-CGd_nIXe.js → continue-editing-in-this-client-BM6Ru46L.js} +2 -2
  36. package/dist/core.cjs +1 -1
  37. package/dist/core.js +18 -18
  38. package/dist/{css-import-modal-JsnFEHuT.cjs → css-import-modal-C9G5pbFd.cjs} +1 -1
  39. package/dist/{css-import-modal-DLLriSUJ.js → css-import-modal-CEQccCmc.js} +1 -1
  40. package/dist/{delete-page-Cc5Z537o.cjs → delete-page-CXRD2fUG.cjs} +1 -1
  41. package/dist/{delete-page-CjdSwdRR.js → delete-page-YGXD04Z1.js} +2 -2
  42. package/dist/{design-token-usage-DCEQ0nFH.cjs → design-token-usage-C5WfKLj-.cjs} +1 -1
  43. package/dist/{design-token-usage-hGL4vi4W.js → design-token-usage-CVPBTF21.js} +8 -8
  44. package/dist/{digital-asset-manager-l1HTU_vW.cjs → digital-asset-manager-BLnvpLiu.cjs} +1 -1
  45. package/dist/{digital-asset-manager-Bb7ESXoQ.js → digital-asset-manager-CC02mA_u.js} +3 -3
  46. package/dist/{duplicate-page-oxFQeRmn.js → duplicate-page-Df3_zMuR.js} +12 -12
  47. package/dist/{duplicate-page-cFYp-bAb.cjs → duplicate-page-N6d80CFF.cjs} +1 -1
  48. package/dist/{dynamic-page-selector-CEHpm0rg.cjs → dynamic-page-selector-CehQLxyZ.cjs} +1 -1
  49. package/dist/{dynamic-page-selector-Brj1zNHl.js → dynamic-page-selector-DDUtutYp.js} +12 -12
  50. package/dist/{image-editor-DhgFpSAR.js → image-editor-CzxSXo-u.js} +1 -1
  51. package/dist/{image-editor-D0A_xctQ.cjs → image-editor-DQ8mQonU.cjs} +1 -1
  52. package/dist/index-DAJ9bufO.cjs +5 -0
  53. package/dist/{index-ZaKz5cWo.cjs → index-DrzR7vXl.cjs} +2 -2
  54. package/dist/{index-CGZjCAyz.js → index-RwAuF_BE.js} +40 -40
  55. package/dist/{index-D2xHSM7d.js → index-nVkLHaAS.js} +1344 -1289
  56. package/dist/{json-diff-viewer-C-H_IWJx.js → json-diff-viewer-CgWyab6R.js} +6 -6
  57. package/dist/{json-diff-viewer-LIr31DRU.cjs → json-diff-viewer-DgcLmglp.cjs} +1 -1
  58. package/dist/{lang-panel-CAcPc81E.js → lang-panel-B95Qvr7o.js} +22 -22
  59. package/dist/{lang-panel-xrs5AMiU.cjs → lang-panel-D1usAgp_.cjs} +1 -1
  60. package/dist/{manage-design-tokens-CT5v3zQJ.js → manage-design-tokens-D2Oz-jVp.js} +2 -2
  61. package/dist/{manage-design-tokens-modal-Rh86m84s.cjs → manage-design-tokens-modal-Gufu9nHL.cjs} +1 -1
  62. package/dist/{manage-design-tokens-modal-C6ZCrth8.js → manage-design-tokens-modal-ZR8PuhWC.js} +2 -2
  63. package/dist/{manage-design-tokens-D2zeiRpA.cjs → manage-design-tokens-sDi2Pdec.cjs} +1 -1
  64. package/dist/{mark-as-template-RDZ4zAWY.cjs → mark-as-template-BN3Ao9n8.cjs} +1 -1
  65. package/dist/{mark-as-template-4VtOICqJ.js → mark-as-template-CzBJQ_nj.js} +2 -2
  66. package/dist/{models-D95ZYr_x.js → models-BCu-p_QK.js} +4 -4
  67. package/dist/{models-5gOsRC56.cjs → models-D0RH2u4C.cjs} +1 -1
  68. package/dist/{nested-path-selector-content-uXvLlVet.js → nested-path-selector-content-Ct80kFX-.js} +1 -1
  69. package/dist/{nested-path-selector-content-CvV4iQ6y.cjs → nested-path-selector-content-DhNCvKp3.cjs} +1 -1
  70. package/dist/{no-language-page-content-SqCm12wz.js → no-language-page-content-CGyfOtV3.js} +4 -4
  71. package/dist/{no-language-page-content-DX7R8GnY.cjs → no-language-page-content-DMxN5AZK.cjs} +1 -1
  72. package/dist/{no-language-page-dialog-BqVCx1Ow.cjs → no-language-page-dialog-5I_REfoR.cjs} +1 -1
  73. package/dist/{no-language-page-dialog-s43OupLf.js → no-language-page-dialog-DJXWLTYK.js} +2 -2
  74. package/dist/{page-creator-6A0cANfE.cjs → page-creator-CGOumc-z.cjs} +1 -1
  75. package/dist/{page-creator-hKMxWP7u.js → page-creator-IQs478pG.js} +3 -3
  76. package/dist/{page-lock-CDP4IhJN.cjs → page-lock-CLZ_Oj1q.cjs} +1 -1
  77. package/dist/{page-lock-CSRmpKr0.js → page-lock-Dx3unkMc.js} +2 -2
  78. package/dist/{page-locked-dialog-Js9XDigU.js → page-locked-dialog-C_JgymA0.js} +15 -15
  79. package/dist/{page-locked-dialog-BOAalIT3.cjs → page-locked-dialog-fTJsy11q.cjs} +1 -1
  80. package/dist/{page-manager-new-BvVol7j6.js → page-manager-new-Cdt2NoSS.js} +29 -29
  81. package/dist/{page-manager-new-DhK74o43.cjs → page-manager-new-yyjdahAJ.cjs} +1 -1
  82. package/dist/{page-manager-search-and-filter-CGZnfZIg.cjs → page-manager-search-and-filter-BQ6yd7_7.cjs} +1 -1
  83. package/dist/{page-manager-search-and-filter-D7aoAp1N.js → page-manager-search-and-filter-kF_V1Kw5.js} +26 -26
  84. package/dist/{page-revisions-content-zatAssu9.js → page-revisions-content-Cf1Cn0wo.js} +24 -24
  85. package/dist/{page-revisions-content-BP1wghI_.cjs → page-revisions-content-DfDZS2ME.cjs} +1 -1
  86. package/dist/pages.cjs +1 -1
  87. package/dist/pages.d.ts +2 -0
  88. package/dist/pages.js +24 -23
  89. package/dist/{publish-pages-content-BvWEkJis.js → publish-pages-content-BLXYr2sJ.js} +23 -23
  90. package/dist/{publish-pages-content-BCkzDZSc.cjs → publish-pages-content-BYPD6vxL.cjs} +1 -1
  91. package/dist/render.cjs +1 -1
  92. package/dist/render.js +2 -2
  93. package/dist/{rte-widget-modal-CQazv0bz.cjs → rte-widget-modal-BwE5wIZa.cjs} +1 -1
  94. package/dist/{rte-widget-modal-D0YHscUT.js → rte-widget-modal-Tj_pS3ql.js} +1 -1
  95. package/dist/{save-to-lib-BBvjMM3Z.cjs → save-to-lib-BZvVC0bb.cjs} +1 -1
  96. package/dist/{save-to-lib-CnKWpb9U.js → save-to-lib-DGONzxBC.js} +62 -62
  97. package/dist/{selected-block-display-BdWPYwVr.js → selected-block-display-CoWqh7BT.js} +11 -11
  98. package/dist/{selected-block-display-D9bDLuNV.cjs → selected-block-display-D1p8khWb.cjs} +1 -1
  99. package/dist/{seo-panel-C2NUYfBh.js → seo-panel-C5_war2g.js} +25 -25
  100. package/dist/{seo-panel-BxN785dG.cjs → seo-panel-DTxo0HRg.cjs} +1 -1
  101. package/dist/{shared-json-ld-DUBQa4Td.js → shared-json-ld-CDQKtky3.js} +46 -46
  102. package/dist/{shared-json-ld-Wgwndrv1.cjs → shared-json-ld-CgF2Si7b.cjs} +1 -1
  103. package/dist/{slug-input-BwWsAZWy.cjs → slug-input-BvIplRdd.cjs} +1 -1
  104. package/dist/{slug-input-Dpgn_HRd.js → slug-input-P-CLfUrw.js} +1 -1
  105. package/dist/supabase-actions.cjs +1 -1
  106. package/dist/supabase-actions.js +1 -1
  107. package/dist/{take-over-request-477jyIub.cjs → take-over-request-BDHFsfIR.cjs} +1 -1
  108. package/dist/{take-over-request-Cla8KuMu.js → take-over-request-mIiTaYST.js} +5 -5
  109. package/dist/{translation-warning-modal-CiXMjMs-.cjs → translation-warning-modal-Bc2i-0YG.cjs} +1 -1
  110. package/dist/{translation-warning-modal-Blylw0Uc.js → translation-warning-modal-BdkToZwn.js} +1 -1
  111. package/dist/{unmark-as-template-Co-3oGGQ.cjs → unmark-as-template-Bf9f4L0-.cjs} +1 -1
  112. package/dist/{unmark-as-template-TjtqlqKG.js → unmark-as-template-D1o7Vm_F.js} +2 -2
  113. package/dist/{unpublish-page-VTYcfZO9.js → unpublish-page-BWnyAdo3.js} +2 -2
  114. package/dist/{unpublish-page-C4v2-E5K.cjs → unpublish-page-YPMIqjta.cjs} +1 -1
  115. package/dist/{unpublished-partials-modal-D1HuPwGr.cjs → unpublished-partials-modal-i1oOnrgA.cjs} +1 -1
  116. package/dist/{unpublished-partials-modal-D6rkb_MK.js → unpublished-partials-modal-p_0N6V23.js} +1 -1
  117. package/dist/{web-preview-DjkWh678.js → web-preview-DN7QMzca.js} +1 -1
  118. package/dist/{web-preview-DNCFZBu2.cjs → web-preview-gmOwlKZr.cjs} +1 -1
  119. package/package.json +1 -1
  120. package/dist/ai-panel-content-C39F2hj1.cjs +0 -1
  121. package/dist/ai-panel-content-tDE696c-.js +0 -62
  122. package/dist/ai-prompt-input-Dcekb4u6.js +0 -652
  123. package/dist/ai-prompt-input-V0noWeHd.cjs +0 -1
  124. package/dist/apply-binding-BuwI_Uf5.cjs +0 -41
  125. package/dist/index-tI1JCogc.cjs +0 -5
@@ -0,0 +1,650 @@
1
+ import { jsx as e, jsxs as w, Fragment as ie } from "react/jsx-runtime";
2
+ import { E as y, B as _ } from "./register-chai-top-bar-D6GjnauV.js";
3
+ import { T as le, aB as ce, v as ue, w as de, x as pe, y as me, aC as fe, aD as he, D as ge, aE as ve, e as be, g as xe, C as we, j as Ne, l as ye, m as Ie } from "./index-RwAuF_BE.js";
4
+ import { cva as Y } from "class-variance-authority";
5
+ import { PaperclipIcon as Se, XIcon as J, PlusIcon as ke, ImageIcon as De, MicIcon as ze, CornerDownLeftIcon as Pe, Loader2Icon as Te, SquareIcon as Ae, Cpu as Le, Paperclip as Ce, GlobeIcon as Re, Square as Me, Send as je } from "lucide-react";
6
+ import { nanoid as Ue } from "nanoid";
7
+ import { useContext as W, useRef as M, useEffect as T, useState as A, useCallback as F, useMemo as Oe, createContext as H, Fragment as Fe, startTransition as Ge, Children as Be } from "react";
8
+ import { useTranslation as Ee } from "react-i18next";
9
+ import { a as _e, g as E, A as We } from "./models-BCu-p_QK.js";
10
+ function He({ className: t, ...n }) {
11
+ return /* @__PURE__ */ e(
12
+ "div",
13
+ {
14
+ "data-slot": "input-group",
15
+ role: "group",
16
+ className: y(
17
+ "group/input-group shadow-xs relative flex w-full items-center rounded-md border border-input outline-none transition-[color,box-shadow] dark:bg-input/30",
18
+ "h-9 has-[>textarea]:h-auto",
19
+ // Variants based on alignment.
20
+ "has-[>[data-align=inline-start]]:[&>input]:pl-2",
21
+ "has-[>[data-align=inline-end]]:[&>input]:pr-2",
22
+ "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3",
23
+ "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3",
24
+ // Focus state.
25
+ "has-[[data-slot=input-group-control]:focus-visible]:ring-1 has-[[data-slot=input-group-control]:focus-visible]:ring-ring",
26
+ // Error state.
27
+ "has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40",
28
+ t
29
+ ),
30
+ ...n
31
+ }
32
+ );
33
+ }
34
+ const Ve = Y(
35
+ "text-muted-foreground flex h-auto cursor-text select-none items-center justify-center gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",
36
+ {
37
+ variants: {
38
+ align: {
39
+ "inline-start": "order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",
40
+ "inline-end": "order-last pr-3 has-[>button]:mr-[-0.4rem] has-[>kbd]:mr-[-0.35rem]",
41
+ "block-start": "[.border-b]:pb-3 order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5",
42
+ "block-end": "[.border-t]:pt-3 order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5"
43
+ }
44
+ },
45
+ defaultVariants: {
46
+ align: "inline-start"
47
+ }
48
+ }
49
+ );
50
+ function Q({
51
+ className: t,
52
+ align: n = "inline-start",
53
+ ...a
54
+ }) {
55
+ return /* @__PURE__ */ e(
56
+ "div",
57
+ {
58
+ role: "group",
59
+ "data-slot": "input-group-addon",
60
+ "data-align": n,
61
+ className: y(Ve({ align: n }), t),
62
+ onClick: (l) => {
63
+ var o, m;
64
+ l.target.closest("button") || (m = (o = l.currentTarget.parentElement) == null ? void 0 : o.querySelector("input")) == null || m.focus();
65
+ },
66
+ ...a
67
+ }
68
+ );
69
+ }
70
+ const qe = Y("flex items-center gap-2 text-sm shadow-none", {
71
+ variants: {
72
+ size: {
73
+ xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5",
74
+ sm: "h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5",
75
+ "icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
76
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0"
77
+ }
78
+ },
79
+ defaultVariants: {
80
+ size: "xs"
81
+ }
82
+ });
83
+ function Z({
84
+ className: t,
85
+ type: n = "button",
86
+ variant: a = "ghost",
87
+ size: l = "xs",
88
+ ...o
89
+ }) {
90
+ return /* @__PURE__ */ e(
91
+ _,
92
+ {
93
+ type: n,
94
+ "data-size": l,
95
+ variant: a,
96
+ className: y(qe({ size: l }), t),
97
+ ...o
98
+ }
99
+ );
100
+ }
101
+ function Ke({ className: t, ...n }) {
102
+ return /* @__PURE__ */ e(
103
+ le,
104
+ {
105
+ "data-slot": "input-group-control",
106
+ className: y(
107
+ "flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent",
108
+ t
109
+ ),
110
+ ...n
111
+ }
112
+ );
113
+ }
114
+ const $e = H(null), Xe = H(null), ee = () => W($e), Ye = () => W(Xe), te = H(null), G = () => {
115
+ const t = Ye(), n = W(te), a = t ?? n;
116
+ if (!a)
117
+ throw new Error("usePromptInputAttachments must be used within a PromptInput or PromptInputProvider");
118
+ return a;
119
+ };
120
+ function Je({ data: t, className: n, ...a }) {
121
+ var c;
122
+ const l = G(), o = t.filename || "", d = ((c = t.mediaType) != null && c.startsWith("image/") && t.url ? "image" : "file") === "image", h = o || (d ? "Image" : "Attachment");
123
+ return /* @__PURE__ */ w(ut, { children: [
124
+ /* @__PURE__ */ e(ce, { asChild: !0, children: /* @__PURE__ */ w(
125
+ "div",
126
+ {
127
+ className: y(
128
+ "group relative flex h-8 cursor-default select-none items-center gap-1.5 rounded-md border border-border px-1.5 text-sm font-medium transition-all hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
129
+ n
130
+ ),
131
+ ...a,
132
+ children: [
133
+ /* @__PURE__ */ w("div", { className: "relative size-5 shrink-0", children: [
134
+ /* @__PURE__ */ e("div", { className: "absolute inset-0 flex size-5 items-center justify-center overflow-hidden rounded bg-background transition-opacity group-hover:opacity-0", children: d ? /* @__PURE__ */ e(
135
+ "img",
136
+ {
137
+ alt: o || "attachment",
138
+ className: "size-5 object-cover",
139
+ height: 20,
140
+ src: t.url,
141
+ width: 20
142
+ }
143
+ ) : /* @__PURE__ */ e("div", { className: "flex size-5 items-center justify-center text-muted-foreground", children: /* @__PURE__ */ e(Se, { className: "size-3" }) }) }),
144
+ /* @__PURE__ */ w(
145
+ _,
146
+ {
147
+ "aria-label": "Remove attachment",
148
+ className: "absolute inset-0 size-5 cursor-pointer rounded p-0 opacity-0 transition-opacity group-hover:pointer-events-auto group-hover:opacity-100 [&>svg]:size-2.5",
149
+ onClick: (N) => {
150
+ N.stopPropagation(), l.remove(t.id);
151
+ },
152
+ type: "button",
153
+ variant: "ghost",
154
+ children: [
155
+ /* @__PURE__ */ e(J, {}),
156
+ /* @__PURE__ */ e("span", { className: "sr-only", children: "Remove" })
157
+ ]
158
+ }
159
+ )
160
+ ] }),
161
+ /* @__PURE__ */ e("span", { className: "flex-1 truncate", children: h })
162
+ ]
163
+ },
164
+ t.id
165
+ ) }),
166
+ /* @__PURE__ */ e(dt, { className: "w-auto p-2", children: /* @__PURE__ */ w("div", { className: "w-auto space-y-3", children: [
167
+ d && /* @__PURE__ */ e("div", { className: "flex max-h-96 w-96 items-center justify-center overflow-hidden rounded-md border", children: /* @__PURE__ */ e(
168
+ "img",
169
+ {
170
+ alt: o || "attachment preview",
171
+ className: "max-h-full max-w-full object-contain",
172
+ height: 384,
173
+ src: t.url,
174
+ width: 448
175
+ }
176
+ ) }),
177
+ /* @__PURE__ */ e("div", { className: "flex items-center gap-2.5", children: /* @__PURE__ */ w("div", { className: "min-w-0 flex-1 space-y-1 px-0.5", children: [
178
+ /* @__PURE__ */ e("h4", { className: "truncate text-sm font-semibold leading-none", children: o || (d ? "Image" : "Attachment") }),
179
+ t.mediaType && /* @__PURE__ */ e("p", { className: "truncate font-mono text-xs text-muted-foreground", children: t.mediaType })
180
+ ] }) })
181
+ ] }) })
182
+ ] });
183
+ }
184
+ function Qe({ children: t, className: n, ...a }) {
185
+ const l = G();
186
+ return l.files.length ? /* @__PURE__ */ e("div", { className: y("flex flex-wrap items-center gap-2 p-3", n), ...a, children: l.files.map((o) => /* @__PURE__ */ e(Fe, { children: t(o) }, o.id)) }) : null;
187
+ }
188
+ const Ze = ({
189
+ label: t = "Add photos or files",
190
+ ...n
191
+ }) => {
192
+ const a = G();
193
+ return /* @__PURE__ */ w(
194
+ me,
195
+ {
196
+ ...n,
197
+ onSelect: (l) => {
198
+ l.preventDefault(), a.openFileDialog();
199
+ },
200
+ children: [
201
+ /* @__PURE__ */ e(De, { className: "mr-2 size-4" }),
202
+ " ",
203
+ t
204
+ ]
205
+ }
206
+ );
207
+ }, et = ({
208
+ className: t,
209
+ accept: n,
210
+ multiple: a,
211
+ globalDrop: l,
212
+ syncHiddenInput: o,
213
+ maxFiles: m,
214
+ maxFileSize: d,
215
+ onError: h,
216
+ onSubmit: c,
217
+ children: N,
218
+ ...I
219
+ }) => {
220
+ const r = ee(), i = !!r, g = M(null), D = M(null), S = M(null);
221
+ T(() => {
222
+ var v;
223
+ const s = (v = D.current) == null ? void 0 : v.closest("form");
224
+ s instanceof HTMLFormElement && (S.current = s);
225
+ }, []);
226
+ const [k, L] = A([]), f = i ? r.attachments.files : k, P = F(() => {
227
+ var s;
228
+ (s = g.current) == null || s.click();
229
+ }, []), j = F(
230
+ (s) => !n || n.trim() === "" ? !0 : n.includes("image/*") ? s.type.startsWith("image/") : !0,
231
+ [n]
232
+ ), U = F(
233
+ (s) => {
234
+ const v = Array.from(s), p = v.filter((x) => j(x));
235
+ if (v.length && p.length === 0) {
236
+ h == null || h({
237
+ code: "accept",
238
+ message: "No files match the accepted types."
239
+ });
240
+ return;
241
+ }
242
+ const u = (x) => d ? x.size <= d : !0, b = p.filter(u);
243
+ if (p.length > 0 && b.length === 0) {
244
+ h == null || h({
245
+ code: "max_file_size",
246
+ message: "All files exceed the maximum size."
247
+ });
248
+ return;
249
+ }
250
+ L((x) => {
251
+ const C = typeof m == "number" ? Math.max(0, m - x.length) : void 0, oe = typeof C == "number" ? b.slice(0, C) : b;
252
+ typeof C == "number" && b.length > C && (h == null || h({
253
+ code: "max_files",
254
+ message: "Too many files. Some were not added."
255
+ }));
256
+ const $ = [];
257
+ for (const B of oe)
258
+ $.push({
259
+ id: Ue(),
260
+ type: "file",
261
+ url: URL.createObjectURL(B),
262
+ mediaType: B.type,
263
+ filename: B.name
264
+ });
265
+ return x.concat($);
266
+ });
267
+ },
268
+ [j, m, d, h]
269
+ ), z = i ? (s) => r.attachments.add(s) : U, R = i ? (s) => r.attachments.remove(s) : (s) => L((v) => {
270
+ const p = v.find((u) => u.id === s);
271
+ return p != null && p.url && URL.revokeObjectURL(p.url), v.filter((u) => u.id !== s);
272
+ }), O = i ? () => r.attachments.clear() : () => L((s) => {
273
+ for (const v of s)
274
+ v.url && URL.revokeObjectURL(v.url);
275
+ return [];
276
+ }), q = i ? () => r.attachments.openFileDialog() : P;
277
+ T(() => {
278
+ i && r.__registerFileInput(g, () => {
279
+ var s;
280
+ return (s = g.current) == null ? void 0 : s.click();
281
+ });
282
+ }, [i, r]), T(() => {
283
+ o && g.current && f.length === 0 && (g.current.value = "");
284
+ }, [f, o]), T(() => {
285
+ const s = S.current;
286
+ if (!s) return;
287
+ const v = (u) => {
288
+ var b, x;
289
+ (x = (b = u.dataTransfer) == null ? void 0 : b.types) != null && x.includes("Files") && u.preventDefault();
290
+ }, p = (u) => {
291
+ var b, x, C;
292
+ (x = (b = u.dataTransfer) == null ? void 0 : b.types) != null && x.includes("Files") && u.preventDefault(), (C = u.dataTransfer) != null && C.files && u.dataTransfer.files.length > 0 && z(u.dataTransfer.files);
293
+ };
294
+ return s.addEventListener("dragover", v), s.addEventListener("drop", p), () => {
295
+ s.removeEventListener("dragover", v), s.removeEventListener("drop", p);
296
+ };
297
+ }, [z]), T(() => {
298
+ if (!l) return;
299
+ const s = (p) => {
300
+ var u, b;
301
+ (b = (u = p.dataTransfer) == null ? void 0 : u.types) != null && b.includes("Files") && p.preventDefault();
302
+ }, v = (p) => {
303
+ var u, b, x;
304
+ (b = (u = p.dataTransfer) == null ? void 0 : u.types) != null && b.includes("Files") && p.preventDefault(), (x = p.dataTransfer) != null && x.files && p.dataTransfer.files.length > 0 && z(p.dataTransfer.files);
305
+ };
306
+ return document.addEventListener("dragover", s), document.addEventListener("drop", v), () => {
307
+ document.removeEventListener("dragover", s), document.removeEventListener("drop", v);
308
+ };
309
+ }, [z, l]), T(
310
+ () => () => {
311
+ if (!i)
312
+ for (const s of f)
313
+ s.url && URL.revokeObjectURL(s.url);
314
+ },
315
+ [i, f]
316
+ );
317
+ const ne = (s) => {
318
+ s.currentTarget.files && z(s.currentTarget.files);
319
+ }, se = async (s) => {
320
+ const p = await (await fetch(s)).blob();
321
+ return new Promise((u, b) => {
322
+ const x = new FileReader();
323
+ x.onloadend = () => u(x.result), x.onerror = b, x.readAsDataURL(p);
324
+ });
325
+ }, re = Oe(
326
+ () => ({
327
+ files: f.map((s) => ({ ...s, id: s.id })),
328
+ add: z,
329
+ remove: R,
330
+ clear: O,
331
+ openFileDialog: q,
332
+ fileInputRef: g
333
+ }),
334
+ [f, z, R, O, q]
335
+ ), ae = (s) => {
336
+ s.preventDefault();
337
+ const v = s.currentTarget, p = i ? r.textInput.value : new FormData(v).get("message") || "";
338
+ i || v.reset(), Promise.all(
339
+ f.map(async ({ ...u }) => u.url && u.url.startsWith("blob:") ? {
340
+ ...u,
341
+ url: await se(u.url)
342
+ } : u)
343
+ ).then((u) => {
344
+ try {
345
+ const b = c({ text: p, files: u }, s);
346
+ b instanceof Promise ? b.then(() => {
347
+ O(), i && r.textInput.clear();
348
+ }).catch(() => {
349
+ }) : (O(), i && r.textInput.clear());
350
+ } catch {
351
+ }
352
+ });
353
+ }, K = /* @__PURE__ */ w(ie, { children: [
354
+ /* @__PURE__ */ e("span", { "aria-hidden": "true", className: "hidden", ref: D }),
355
+ /* @__PURE__ */ e(
356
+ "input",
357
+ {
358
+ accept: n,
359
+ "aria-label": "Upload files",
360
+ className: "hidden",
361
+ multiple: a,
362
+ onChange: ne,
363
+ ref: g,
364
+ title: "Upload files",
365
+ type: "file"
366
+ }
367
+ ),
368
+ /* @__PURE__ */ e("form", { className: y("w-full", t), onSubmit: ae, ...I, children: /* @__PURE__ */ e(He, { className: "overflow-hidden", children: N }) })
369
+ ] });
370
+ return i ? K : /* @__PURE__ */ e(te.Provider, { value: re, children: K });
371
+ }, tt = ({
372
+ onChange: t,
373
+ className: n,
374
+ placeholder: a = "What would you like to know?",
375
+ ...l
376
+ }) => {
377
+ const o = ee(), m = G(), [d, h] = A(!1), c = (r) => {
378
+ if (r.key === "Enter") {
379
+ if (d || r.nativeEvent.isComposing || r.shiftKey)
380
+ return;
381
+ r.preventDefault();
382
+ const i = r.currentTarget.form, g = i == null ? void 0 : i.querySelector('button[type="submit"]');
383
+ if (g != null && g.disabled)
384
+ return;
385
+ i == null || i.requestSubmit();
386
+ }
387
+ if (r.key === "Backspace" && r.currentTarget.value === "" && m.files.length > 0) {
388
+ r.preventDefault();
389
+ const i = m.files.at(-1);
390
+ i && m.remove(i.id);
391
+ }
392
+ }, N = (r) => {
393
+ var D;
394
+ const i = (D = r.clipboardData) == null ? void 0 : D.items;
395
+ if (!i)
396
+ return;
397
+ const g = [];
398
+ for (const S of i)
399
+ if (S.kind === "file") {
400
+ const k = S.getAsFile();
401
+ k && g.push(k);
402
+ }
403
+ g.length > 0 && (r.preventDefault(), m.add(g));
404
+ }, I = o ? {
405
+ value: o.textInput.value,
406
+ onChange: (r) => {
407
+ o.textInput.setInput(r.currentTarget.value), t == null || t(r);
408
+ }
409
+ } : {
410
+ onChange: t
411
+ };
412
+ return /* @__PURE__ */ e(
413
+ Ke,
414
+ {
415
+ className: y("field-sizing-content max-h-48 min-h-16", n),
416
+ name: "message",
417
+ onCompositionEnd: () => h(!1),
418
+ onCompositionStart: () => h(!0),
419
+ onKeyDown: c,
420
+ onPaste: N,
421
+ placeholder: a,
422
+ ...l,
423
+ ...I
424
+ }
425
+ );
426
+ }, nt = ({ className: t, ...n }) => /* @__PURE__ */ e(Q, { align: "block-end", className: y("order-first flex-wrap gap-1", t), ...n }), st = ({ className: t, ...n }) => /* @__PURE__ */ e(Q, { align: "block-end", className: y("justify-between gap-1", t), ...n }), rt = ({ className: t, ...n }) => /* @__PURE__ */ e("div", { className: y("flex items-center gap-1", t), ...n }), V = ({ variant: t = "ghost", className: n, size: a, ...l }) => {
427
+ const o = a ?? (Be.count(l.children) > 1 ? "sm" : "icon-sm");
428
+ return /* @__PURE__ */ e(Z, { className: y(n), size: o, type: "button", variant: t, ...l });
429
+ }, at = (t) => /* @__PURE__ */ e(ue, { ...t }), ot = ({ className: t, children: n, ...a }) => /* @__PURE__ */ e(de, { asChild: !0, children: /* @__PURE__ */ e(V, { className: t, ...a, children: n ?? /* @__PURE__ */ e(ke, { className: "size-4" }) }) }), it = ({ className: t, ...n }) => /* @__PURE__ */ e(pe, { align: "start", className: y(t), ...n }), lt = ({
430
+ className: t,
431
+ variant: n = "default",
432
+ size: a = "icon-sm",
433
+ status: l,
434
+ children: o,
435
+ ...m
436
+ }) => {
437
+ let d = /* @__PURE__ */ e(Pe, { className: "size-4" });
438
+ return l === "submitted" ? d = /* @__PURE__ */ e(Te, { className: "size-4 animate-spin" }) : l === "streaming" ? d = /* @__PURE__ */ e(Ae, { className: "size-4" }) : l === "error" && (d = /* @__PURE__ */ e(J, { className: "size-4" })), /* @__PURE__ */ e(
439
+ Z,
440
+ {
441
+ "aria-label": "Submit",
442
+ className: y(t),
443
+ size: a,
444
+ type: "submit",
445
+ variant: n,
446
+ ...m,
447
+ children: o ?? d
448
+ }
449
+ );
450
+ }, ct = ({
451
+ className: t,
452
+ textareaRef: n,
453
+ onTranscriptionChange: a,
454
+ ...l
455
+ }) => {
456
+ const [o, m] = A(!1), [d, h] = A(null), c = M(null);
457
+ T(() => {
458
+ if (typeof window < "u" && ("SpeechRecognition" in window || "webkitSpeechRecognition" in window)) {
459
+ const I = window.SpeechRecognition || window.webkitSpeechRecognition, r = new I();
460
+ r.continuous = !0, r.interimResults = !0, r.lang = "en-US", r.onstart = () => {
461
+ m(!0);
462
+ }, r.onend = () => {
463
+ m(!1);
464
+ }, r.onresult = (i) => {
465
+ var D;
466
+ let g = "";
467
+ for (let S = i.resultIndex; S < i.results.length; S++) {
468
+ const k = i.results[S];
469
+ k.isFinal && (g += ((D = k[0]) == null ? void 0 : D.transcript) ?? "");
470
+ }
471
+ if (g && (n != null && n.current)) {
472
+ const S = n.current, k = S.value, L = k + (k ? " " : "") + g;
473
+ S.value = L, S.dispatchEvent(new Event("input", { bubbles: !0 })), a == null || a(L);
474
+ }
475
+ }, r.onerror = (i) => {
476
+ console.error("Speech recognition error:", i.error), m(!1);
477
+ }, c.current = r, Ge(() => h(r));
478
+ }
479
+ return () => {
480
+ c.current && c.current.stop();
481
+ };
482
+ }, [n, a]);
483
+ const N = F(() => {
484
+ d && (o ? d.stop() : d.start());
485
+ }, [d, o]);
486
+ return /* @__PURE__ */ e(
487
+ V,
488
+ {
489
+ className: y(
490
+ "relative transition-all duration-200",
491
+ o && "animate-pulse bg-accent text-accent-foreground",
492
+ t
493
+ ),
494
+ disabled: !d,
495
+ onClick: N,
496
+ ...l,
497
+ children: /* @__PURE__ */ e(ze, { className: "size-4" })
498
+ }
499
+ );
500
+ }, ut = ({ openDelay: t = 0, closeDelay: n = 0, ...a }) => /* @__PURE__ */ e(fe, { closeDelay: n, openDelay: t, ...a }), dt = ({ align: t = "start", ...n }) => /* @__PURE__ */ e(he, { align: t, ...n }), pt = (t) => /* @__PURE__ */ e(ge, { ...t }), mt = (t) => /* @__PURE__ */ e(ve, { ...t }), ft = ({
501
+ className: t,
502
+ children: n,
503
+ title: a = "Model Selector",
504
+ ...l
505
+ }) => /* @__PURE__ */ w(be, { className: y("p-0", t), ...l, children: [
506
+ /* @__PURE__ */ e(xe, { className: "sr-only", children: a }),
507
+ /* @__PURE__ */ e(we, { className: "**:data-[slot=command-input-wrapper]:h-auto", children: n })
508
+ ] }), ht = (t) => /* @__PURE__ */ e(Ne, { ...t }), gt = (t) => /* @__PURE__ */ e(ye, { ...t }), vt = (t) => /* @__PURE__ */ e(Ie, { ...t }), bt = ({ provider: t, className: n, ...a }) => /* @__PURE__ */ e(
509
+ "img",
510
+ {
511
+ ...a,
512
+ alt: `${t} logo`,
513
+ className: y("size-3 dark:invert", n),
514
+ height: 12,
515
+ src: `https://models.dev/logos/${t}.svg`,
516
+ width: 12
517
+ }
518
+ ), xt = ({ className: t, ...n }) => /* @__PURE__ */ e("span", { className: y("flex-1 truncate text-left", t), ...n }), wt = ({
519
+ selectedModel: t,
520
+ onModelChange: n,
521
+ disabled: a = !1
522
+ }) => {
523
+ const [l, o] = A(!1), m = _e(t) || E(), d = We.reduce(
524
+ (c, N) => (c[N.provider] || (c[N.provider] = []), c[N.provider].push(N), c),
525
+ {}
526
+ ), h = (c) => {
527
+ n(c), o(!1);
528
+ };
529
+ return /* @__PURE__ */ w(pt, { open: l, onOpenChange: o, children: [
530
+ /* @__PURE__ */ e(mt, { asChild: !0, children: /* @__PURE__ */ w(_, { variant: "outline", size: "sm", disabled: a, className: "h-8 gap-1 px-2 text-xs", children: [
531
+ /* @__PURE__ */ e(Le, { size: 14 }),
532
+ /* @__PURE__ */ e("span", { className: "max-w-20 truncate", children: m.name })
533
+ ] }) }),
534
+ /* @__PURE__ */ w(ft, { className: "w-96 p-0", children: [
535
+ /* @__PURE__ */ e("h3", { className: "mt-2 px-2 py-2 font-semibold", children: "Models" }),
536
+ /* @__PURE__ */ e(ht, { children: Object.entries(d).map(([c, N]) => /* @__PURE__ */ e(gt, { heading: c.charAt(0).toUpperCase() + c.slice(1), children: N.map((I) => /* @__PURE__ */ w(
537
+ vt,
538
+ {
539
+ value: I.id,
540
+ onSelect: () => h(I.id),
541
+ className: "flex cursor-pointer items-center gap-2 p-2",
542
+ children: [
543
+ /* @__PURE__ */ e(bt, { provider: I.provider }),
544
+ /* @__PURE__ */ w("div", { className: "flex flex-1 items-center justify-between", children: [
545
+ /* @__PURE__ */ e(xt, { children: I.name }),
546
+ /* @__PURE__ */ e("span", { className: "text-xs text-muted-foreground", children: I.description })
547
+ ] }),
548
+ t === I.id && /* @__PURE__ */ e("div", { className: "h-2 w-2 rounded-full bg-blue-500" })
549
+ ]
550
+ },
551
+ I.id
552
+ )) }, c)) })
553
+ ] })
554
+ ] });
555
+ }, X = "chai-ai-selected-model", At = ({
556
+ input: t,
557
+ setInput: n,
558
+ onSend: a,
559
+ onStop: l,
560
+ isLoading: o,
561
+ disabled: m,
562
+ selectedLang: d,
563
+ selectedModel: h = E().id,
564
+ onModelChange: c
565
+ }) => {
566
+ const { t: N } = Ee(), [I, r] = A(h), [i, g] = A(null), D = M(null), [S, k] = A(!1);
567
+ return T(() => {
568
+ if (!d) {
569
+ const f = localStorage.getItem(X);
570
+ if (f)
571
+ r(f), c == null || c(f);
572
+ else {
573
+ const P = E().id;
574
+ r(P), c == null || c(P);
575
+ }
576
+ }
577
+ }, [d, c]), /* @__PURE__ */ e("div", { className: "relative", children: /* @__PURE__ */ e("div", { className: "border-gray-20 rounded-lg border", children: /* @__PURE__ */ w(et, { onSubmit: (f) => {
578
+ var U;
579
+ const P = f.files.find((z) => {
580
+ var R;
581
+ return (R = z.mediaType) == null ? void 0 : R.startsWith("image/");
582
+ }), j = (P == null ? void 0 : P.url) || i;
583
+ a((U = f.text) == null ? void 0 : U.trim(), void 0, j, I), g(null);
584
+ }, accept: "image/*", className: "flex h-auto w-full flex-col", children: [
585
+ /* @__PURE__ */ e(nt, { className: "p-0", children: /* @__PURE__ */ e(Qe, { className: "pb-0", children: (f) => /* @__PURE__ */ e(Je, { className: "text-xs", data: f }) }) }),
586
+ /* @__PURE__ */ e(
587
+ tt,
588
+ {
589
+ ref: D,
590
+ value: t,
591
+ onChange: (f) => n(f.target.value),
592
+ placeholder: N(d ? "Ask to update content" : "Ask me anything..."),
593
+ disabled: o,
594
+ className: "max-h-[200px] min-h-[60px] w-full",
595
+ rows: 3
596
+ }
597
+ ),
598
+ /* @__PURE__ */ w(st, { children: [
599
+ d ? /* @__PURE__ */ e("div", {}) : /* @__PURE__ */ w(rt, { children: [
600
+ /* @__PURE__ */ w(at, { children: [
601
+ /* @__PURE__ */ e(ot, { disabled: o, children: /* @__PURE__ */ e(Ce, { size: 16 }) }),
602
+ /* @__PURE__ */ e(it, { children: /* @__PURE__ */ e(Ze, {}) })
603
+ ] }),
604
+ /* @__PURE__ */ e(
605
+ ct,
606
+ {
607
+ textareaRef: D,
608
+ onTranscriptionChange: n,
609
+ disabled: o
610
+ }
611
+ ),
612
+ /* @__PURE__ */ e(
613
+ wt,
614
+ {
615
+ selectedModel: I,
616
+ onModelChange: (f) => {
617
+ r(f), c == null || c(f), localStorage.setItem(X, f);
618
+ },
619
+ disabled: o
620
+ }
621
+ ),
622
+ /* @__PURE__ */ w(
623
+ V,
624
+ {
625
+ className: "hidden",
626
+ size: "sm",
627
+ onClick: () => k(!S),
628
+ variant: S ? "default" : "ghost",
629
+ children: [
630
+ /* @__PURE__ */ e(Re, { size: 16 }),
631
+ /* @__PURE__ */ e("span", { children: "Search" })
632
+ ]
633
+ }
634
+ )
635
+ ] }),
636
+ o ? /* @__PURE__ */ e(
637
+ "button",
638
+ {
639
+ onClick: l,
640
+ className: "z-50 flex items-center gap-x-1 rounded-md bg-red-500 p-1.5 text-white transition-colors hover:bg-red-600",
641
+ title: N("Stop generation"),
642
+ children: /* @__PURE__ */ e(Me, { size: 16 })
643
+ }
644
+ ) : /* @__PURE__ */ e(lt, { disabled: !t.trim() || m, children: /* @__PURE__ */ e(je, { size: 16 }) })
645
+ ] })
646
+ ] }) }) });
647
+ };
648
+ export {
649
+ At as default
650
+ };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),r=require("./register-chai-top-bar-DyW9GPzV.cjs"),i=require("./index-tI1JCogc.cjs"),c=require("lucide-react"),o=require("react-i18next"),x=({selectedLang:s,isLoading:n,selectedBlock:a,onClick:l})=>{const{t}=o.useTranslation();return e.jsx("div",{className:"flex flex-col gap-2",children:e.jsx("div",{className:`flex flex-col gap-2 ${n?"pointer-events-none opacity-50":""}`,children:a?e.jsx(r.Button,{variant:"outline",className:"h-auto",onClick:()=>l("TRANSLATE"),children:e.jsxs("div",{className:"flex flex-col",children:[e.jsx("p",{className:"text-left text-xs font-thin",children:t("Quick Action:")}),e.jsxs("span",{className:"flex items-center gap-x-2 text-sm font-medium",children:[t("Translate Content")," ",t("to")," ",i.LANGUAGES[s]," ",e.jsx(c.ArrowRight,{className:"h-4 w-4"})]})]})}):null})})};exports.default=x;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),r=require("./register-chai-top-bar-DyW9GPzV.cjs"),i=require("./index-DAJ9bufO.cjs"),c=require("lucide-react"),o=require("react-i18next"),x=({selectedLang:s,isLoading:n,selectedBlock:a,onClick:l})=>{const{t}=o.useTranslation();return e.jsx("div",{className:"flex flex-col gap-2",children:e.jsx("div",{className:`flex flex-col gap-2 ${n?"pointer-events-none opacity-50":""}`,children:a?e.jsx(r.Button,{variant:"outline",className:"h-auto",onClick:()=>l("TRANSLATE"),children:e.jsxs("div",{className:"flex flex-col",children:[e.jsx("p",{className:"text-left text-xs font-thin",children:t("Quick Action:")}),e.jsxs("span",{className:"flex items-center gap-x-2 text-sm font-medium",children:[t("Translate Content")," ",t("to")," ",i.LANGUAGES[s]," ",e.jsx(c.ArrowRight,{className:"h-4 w-4"})]})]})}):null})})};exports.default=x;
@@ -1,6 +1,6 @@
1
1
  import { jsx as t, jsxs as a } from "react/jsx-runtime";
2
2
  import { B as r } from "./register-chai-top-bar-D6GjnauV.js";
3
- import { L as i } from "./index-D2xHSM7d.js";
3
+ import { L as i } from "./index-nVkLHaAS.js";
4
4
  import { ArrowRight as c } from "lucide-react";
5
5
  import { useTranslation as m } from "react-i18next";
6
6
  const u = ({