@levo-so/studio 0.3.1 → 0.3.2

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,23 +1,23 @@
1
1
  "use client";
2
- import { _ as e, a as t, c as n, f as r, g as i, h as a, i as o, l as s, m as c, n as l, o as u, r as d, s as f, t as p, u as m, v as h } from "./pillChrome-BHFzM9re.js";
3
- import { Children as g, createContext as _, isValidElement as v, useCallback as y, useContext as b, useEffect as x, useLayoutEffect as ee, useRef as S, useState as C } from "react";
4
- import { Fragment as w, jsx as T, jsxs as E } from "react/jsx-runtime";
5
- import { ArrowUp as D, Check as O, ChevronDown as k, Copy as A, MessageSquarePlus as te, Mic as ne, RefreshCw as j, Sparkles as re, Square as M, X as N } from "lucide-react";
6
- import { ActionBarPrimitive as P, AssistantRuntimeProvider as F, ComposerPrimitive as I, MessagePrimitive as L, ThreadPrimitive as R, WebSpeechDictationAdapter as z, useAssistantRuntime as B, useMessage as V, useThread as H, useThreadComposer as ie } from "@assistant-ui/react";
7
- import { AssistantChatTransport as ae, useChatRuntime as oe } from "@assistant-ui/react-ai-sdk";
8
- import { MarkdownTextPrimitive as se } from "@assistant-ui/react-markdown";
9
- import ce from "remark-gfm";
2
+ import { _ as e, a as t, c as n, f as r, g as i, h as a, i as o, l as s, m as c, n as l, o as u, r as d, s as f, t as p, u as m, v as h } from "./pillChrome-CrJ9a5vj.js";
3
+ import { Children as g, createContext as _, isValidElement as v, useCallback as y, useContext as b, useEffect as x, useLayoutEffect as S, useRef as C, useState as w } from "react";
4
+ import { Fragment as T, jsx as E, jsxs as D } from "react/jsx-runtime";
5
+ import { ArrowUp as O, Check as k, ChevronDown as A, Copy as j, MessageSquarePlus as M, Mic as ee, RefreshCw as N, Sparkles as te, Square as P, X as F } from "lucide-react";
6
+ import { ActionBarPrimitive as I, AssistantRuntimeProvider as L, ComposerPrimitive as R, MessagePrimitive as z, ThreadPrimitive as B, WebSpeechDictationAdapter as ne, useAssistantRuntime as V, useMessage as H, useThread as U, useThreadComposer as re } from "@assistant-ui/react";
7
+ import { AssistantChatTransport as ie, useChatRuntime as ae } from "@assistant-ui/react-ai-sdk";
8
+ import { MarkdownTextPrimitive as oe } from "@assistant-ui/react-markdown";
9
+ import se from "remark-gfm";
10
10
  //#region ../../libraries/ai-chat/src/FollowUpChips.tsx
11
- var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipClassName: i }) => {
11
+ var W = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipClassName: i }) => {
12
12
  if (e.length === 0) return null;
13
13
  let a = [
14
14
  "rounded-full border border-zinc-200 bg-white text-zinc-700",
15
15
  "transition-all duration-150 hover:border-zinc-300 hover:bg-zinc-50 hover:text-zinc-900 active:scale-95",
16
16
  n === "compact" ? "px-2.5 py-1 text-[11px] leading-none" : "px-3.5 py-1.5 text-xs"
17
17
  ].join(" ");
18
- return /* @__PURE__ */ T("div", {
18
+ return /* @__PURE__ */ E("div", {
19
19
  className: ["flex flex-wrap gap-1.5", r].filter(Boolean).join(" "),
20
- children: e.map((e, n) => /* @__PURE__ */ T("button", {
20
+ children: e.map((e, n) => /* @__PURE__ */ E("button", {
21
21
  type: "button",
22
22
  onClick: () => t(e),
23
23
  className: ["ai-chat-chip", i ?? a].join(" "),
@@ -25,7 +25,7 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
25
25
  children: e
26
26
  }, `${n}-${e}`))
27
27
  });
28
- }, ue = ({ api: e, headers: t, credentials: n, getBody: r, getHeaders: i, onSendStart: a }) => new ae({
28
+ }, ce = ({ api: e, headers: t, credentials: n, getBody: r, getHeaders: i, onSendStart: a }) => new ie({
29
29
  api: e,
30
30
  headers: t,
31
31
  credentials: n,
@@ -36,42 +36,24 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
36
36
  ...i?.(e)
37
37
  }
38
38
  })
39
- }), U = (e) => h("conv_id", e), de = (e) => {
40
- let t = U(e);
41
- if (!t || typeof window > "u") return null;
42
- try {
43
- return window.sessionStorage.getItem(t)?.trim() || null;
44
- } catch {
45
- return null;
46
- }
47
- }, fe = (e, t) => {
48
- let n = U(e);
49
- if (!(!n || typeof window > "u")) try {
50
- window.sessionStorage.setItem(n, t);
51
- } catch {}
52
- }, pe = (e) => {
53
- let t = U(e);
54
- if (!(!t || typeof window > "u")) try {
55
- window.sessionStorage.removeItem(t);
56
- } catch {}
57
- }, me = (e) => {
58
- let t = S(null), n = S(null), r = S(!1);
59
- return (!r.current || n.current !== (e ?? null)) && (r.current = !0, n.current = e ?? null, t.current = de(e)), {
39
+ }), le = (e) => {
40
+ let t = C(null), n = C(null);
41
+ return n.current !== (e ?? null) && (n.current = e ?? null, t.current = null), {
60
42
  conversationIdRef: t,
61
- handleFinish: y(({ message: n }) => {
62
- let r = n.metadata;
63
- if (!r || typeof r != "object") return;
64
- let i = r.conversation_id;
65
- if (typeof i != "string") return;
66
- let a = i.trim();
67
- a.length !== 0 && t.current !== a && (t.current = a, fe(e, a));
68
- }, [e]),
43
+ handleFinish: y(({ message: e }) => {
44
+ let n = e.metadata;
45
+ if (!n || typeof n != "object") return;
46
+ let r = n.conversation_id;
47
+ if (typeof r != "string") return;
48
+ let i = r.trim();
49
+ i.length !== 0 && t.current !== i && (t.current = i);
50
+ }, []),
69
51
  reset: y(() => {
70
- t.current = null, pe(e);
71
- }, [e])
52
+ t.current = null;
53
+ }, [])
72
54
  };
73
- }, he = (e = []) => {
74
- let [t, n] = C(e);
55
+ }, ue = (e = []) => {
56
+ let [t, n] = w(e);
75
57
  return {
76
58
  followUps: t,
77
59
  setFollowUps: n,
@@ -82,16 +64,16 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
82
64
  return Array.isArray(t) ? (n(t.filter((e) => typeof e == "string")), !0) : !1;
83
65
  }, [])
84
66
  };
85
- }, ge = (e) => e instanceof Error && e.message.includes("intelligence.site_agent.NO_ACTIVE_AGENT"), _e = _({ agentUnavailable: !1 }), ve = () => b(_e), ye = (...e) => e.filter(Boolean).join(" "), be = "inline-flex items-center justify-center gap-1.5 transition-all duration-200", xe = "rounded-full border border-zinc-200 bg-white/95 px-3 py-1.5 font-medium text-xs text-zinc-500 shadow-lg backdrop-blur-sm hover:text-zinc-900", Se = ({ onClick: e, isRunning: t = !1, iconOnly: n = !1, className: r = xe }) => /* @__PURE__ */ E("button", {
67
+ }, de = (e) => e instanceof Error && e.message.includes("intelligence.site_agent.NO_ACTIVE_AGENT"), G = _({ agentUnavailable: !1 }), fe = () => b(G), pe = (...e) => e.filter(Boolean).join(" "), me = "inline-flex items-center justify-center gap-1.5 transition-all duration-200", he = "rounded-full border border-zinc-200 bg-white/95 px-3 py-1.5 font-medium text-xs text-zinc-500 shadow-lg backdrop-blur-sm hover:text-zinc-900", ge = ({ onClick: e, isRunning: t = !1, iconOnly: n = !1, className: r = he }) => /* @__PURE__ */ D("button", {
86
68
  type: "button",
87
69
  "aria-label": "Scroll to bottom",
88
70
  onClick: e,
89
- className: ye(be, r),
90
- children: [/* @__PURE__ */ T(k, { className: "h-3 w-3" }), !n && (t ? "New messages" : "Scroll to bottom")]
91
- }), Ce = ({ endpoint: e, headers: t, fallback: n, enabled: r = !0 }) => {
92
- let [i, a] = C(null), o = t ? JSON.stringify(t) : "", s = S(t);
71
+ className: pe(me, r),
72
+ children: [/* @__PURE__ */ E(A, { className: "h-3 w-3" }), !n && (t ? "New messages" : "Scroll to bottom")]
73
+ }), _e = ({ endpoint: e, headers: t, fallback: n, enabled: r = !0 }) => {
74
+ let [i, a] = w(null), o = t ? JSON.stringify(t) : "", s = C(t);
93
75
  s.current = t;
94
- let c = S(n);
76
+ let c = C(n);
95
77
  return c.current = n, x(() => {
96
78
  if (!r || !e) {
97
79
  a([...c.current]);
@@ -121,31 +103,37 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
121
103
  r,
122
104
  o
123
105
  ]), i;
124
- }, we = 36, Te = 80, Ee = ({ viewportRef: e, isRunning: t, onRunStart: n }) => {
125
- let r = S(!1), [i, a] = C(!0), o = S(n);
126
- return o.current = n, x(() => {
127
- let n = r.current;
128
- if (r.current = t, !t || n) return;
129
- o.current?.();
130
- let i = null, a = null;
106
+ }, ve = 36, ye = 80, be = ({ viewportRef: e, isRunning: t, onRunStart: n, anchorOnRunStart: r = !0, atBottomThreshold: i }) => {
107
+ let a = C(!1), [o, s] = w(!0), c = C(n);
108
+ c.current = n;
109
+ let l = C(i);
110
+ return l.current = i, x(() => {
111
+ let n = a.current;
112
+ if (a.current = t, !t || n || (c.current?.(), !r)) return;
113
+ let i = null, o = null;
131
114
  return i = requestAnimationFrame(() => {
132
- a = requestAnimationFrame(() => {
115
+ o = requestAnimationFrame(() => {
133
116
  let t = e.current;
134
117
  if (!t) return;
135
- let n = Math.max(0, t.scrollHeight - t.clientHeight - we);
118
+ let n = Math.max(0, t.scrollHeight - t.clientHeight - ve);
136
119
  n > t.clientHeight * .3 && t.scrollTo({
137
120
  top: n,
138
121
  behavior: "smooth"
139
122
  });
140
123
  });
141
124
  }), () => {
142
- i !== null && cancelAnimationFrame(i), a !== null && cancelAnimationFrame(a);
125
+ i !== null && cancelAnimationFrame(i), o !== null && cancelAnimationFrame(o);
143
126
  };
144
- }, [t, e]), x(() => {
127
+ }, [
128
+ t,
129
+ e,
130
+ r
131
+ ]), x(() => {
145
132
  let t = e.current;
146
133
  if (!t) return;
147
134
  let n = () => {
148
- a(t.scrollHeight - t.scrollTop - t.clientHeight < Te);
135
+ let e = l.current?.(t.clientHeight) ?? ye;
136
+ s(t.scrollHeight - t.scrollTop - t.clientHeight < e);
149
137
  };
150
138
  t.addEventListener("scroll", n, { passive: !0 });
151
139
  let r = new ResizeObserver(n);
@@ -154,7 +142,7 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
154
142
  t.removeEventListener("scroll", n), r.disconnect();
155
143
  };
156
144
  }, [e]), {
157
- isAtBottom: i,
145
+ isAtBottom: o,
158
146
  scrollToBottom: () => {
159
147
  let t = e.current;
160
148
  t && t.scrollTo({
@@ -163,7 +151,7 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
163
151
  });
164
152
  }
165
153
  };
166
- }, De = (...e) => e.filter(Boolean).join(" "), Oe = ({ onStop: e }) => /* @__PURE__ */ T("button", {
154
+ }, K = (...e) => e.filter(Boolean).join(" "), q = ({ onStop: e }) => /* @__PURE__ */ E("button", {
167
155
  type: "button",
168
156
  onClick: e,
169
157
  "aria-label": "Stop generating",
@@ -172,49 +160,36 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
172
160
  backgroundColor: "var(--color-brand, #0a0a0a)",
173
161
  color: "var(--color-brand-foreground, #fff)"
174
162
  },
175
- children: /* @__PURE__ */ T(M, { className: "h-3.5 w-3.5 fill-current" })
176
- }), W = () => /* @__PURE__ */ E(w, { children: [/* @__PURE__ */ T(I.If, {
163
+ children: /* @__PURE__ */ E(P, { className: "h-3.5 w-3.5 fill-current" })
164
+ }), J = () => /* @__PURE__ */ D(T, { children: [/* @__PURE__ */ E(R.If, {
177
165
  dictation: !1,
178
- children: /* @__PURE__ */ T(I.Dictate, {
166
+ children: /* @__PURE__ */ E(R.Dictate, {
179
167
  className: "flex h-8 w-8 items-center justify-center rounded-md text-zinc-500 transition-colors hover:bg-zinc-100 hover:text-zinc-900",
180
- children: /* @__PURE__ */ T(ne, { className: "h-4 w-4" })
168
+ children: /* @__PURE__ */ E(ee, { className: "h-4 w-4" })
181
169
  })
182
- }), /* @__PURE__ */ T(I.If, {
170
+ }), /* @__PURE__ */ E(R.If, {
183
171
  dictation: !0,
184
- children: /* @__PURE__ */ T(I.StopDictation, {
172
+ children: /* @__PURE__ */ E(R.StopDictation, {
185
173
  className: "flex h-8 w-8 animate-pulse items-center justify-center rounded-md bg-red-500/15 text-red-500 transition-colors hover:bg-red-500/25",
186
- children: /* @__PURE__ */ T(M, { className: "h-3 w-3 fill-current" })
174
+ children: /* @__PURE__ */ E(P, { className: "h-3 w-3 fill-current" })
187
175
  })
188
- })] }), G = () => /* @__PURE__ */ T(I.Send, {
176
+ })] }), xe = () => /* @__PURE__ */ E(R.Send, {
189
177
  "aria-label": "Send message",
190
178
  className: "flex h-9 w-9 items-center justify-center rounded-md shadow-md transition-all duration-300 hover:scale-110 active:scale-95 disabled:cursor-not-allowed disabled:opacity-40 disabled:shadow-none disabled:hover:scale-100",
191
179
  style: {
192
180
  backgroundColor: "var(--color-brand, #0a0a0a)",
193
181
  color: "var(--color-brand-foreground, #fff)"
194
182
  },
195
- children: /* @__PURE__ */ T(D, { className: "h-5 w-5 stroke-[2.5px]" })
196
- }), K = ({ hasText: e, onStop: t, onStopAndSend: n }) => /* @__PURE__ */ E("div", {
197
- className: "flex items-center gap-1.5",
198
- children: [/* @__PURE__ */ T(Oe, { onStop: t }), e && /* @__PURE__ */ T("button", {
199
- type: "button",
200
- onClick: n,
201
- "aria-label": "Stop and send new message",
202
- title: "Stop the current response and send",
203
- className: "flex h-9 w-9 items-center justify-center rounded-md shadow-md transition-all duration-150 hover:scale-110 active:scale-95",
204
- style: {
205
- backgroundColor: "var(--color-brand, #0a0a0a)",
206
- color: "var(--color-brand-foreground, #fff)"
207
- },
208
- children: /* @__PURE__ */ T(D, { className: "h-5 w-5 stroke-[2.5px]" })
209
- })]
210
- }), q = ({ variant: e, isRunning: t, onStop: n, onStopAndSend: r }) => {
211
- let a = ie((e) => e.text.trim().length > 0), o = (e) => {
212
- e.nativeEvent.isComposing || t && e.key === "Enter" && !e.shiftKey && (e.preventDefault(), a && r());
183
+ children: /* @__PURE__ */ E(O, { className: "h-5 w-5 stroke-[2.5px]" })
184
+ }), Se = ({ variant: e, isRunning: t, onStop: n }) => {
185
+ let r = (e) => {
186
+ e.nativeEvent.isComposing || t && e.key === "Enter" && !e.shiftKey && e.preventDefault();
213
187
  };
214
- return e === "expanded" ? /* @__PURE__ */ E("div", {
188
+ return e === "expanded" ? /* @__PURE__ */ D("div", {
215
189
  className: "rounded-lg border border-zinc-200 bg-white shadow-sm transition-colors focus-within:border-[var(--color-brand,#a1a1aa)]",
216
- children: [/* @__PURE__ */ T(I.Input, {
217
- className: De("ai-chat-textarea w-full resize-none overflow-y-auto bg-transparent px-6 pt-4 text-base text-zinc-900 leading-relaxed placeholder:text-zinc-500 focus:outline-none", "max-h-[160px]"),
190
+ children: [/* @__PURE__ */ E(R.Input, {
191
+ "data-ai-chat-composer": "",
192
+ className: K("ai-chat-textarea w-full resize-none overflow-y-auto bg-transparent px-6 pt-4 text-base text-zinc-900 leading-relaxed placeholder:text-zinc-500 focus:outline-none", "max-h-[160px]"),
218
193
  placeholder: "Ask anything about this site…",
219
194
  rows: 1,
220
195
  submitMode: "enter",
@@ -223,20 +198,17 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
223
198
  autoCapitalize: "none",
224
199
  inputMode: "text",
225
200
  onInput: (e) => i(e.currentTarget),
226
- onKeyDown: o
227
- }), /* @__PURE__ */ E("div", {
201
+ onKeyDown: r
202
+ }), /* @__PURE__ */ D("div", {
228
203
  className: "flex items-center justify-between px-3 pt-1 pb-2",
229
- children: [/* @__PURE__ */ T(W, {}), t ? /* @__PURE__ */ T(K, {
230
- hasText: a,
231
- onStop: n,
232
- onStopAndSend: r
233
- }) : /* @__PURE__ */ T(G, {})]
204
+ children: [/* @__PURE__ */ E(J, {}), t ? /* @__PURE__ */ E(q, { onStop: n }) : /* @__PURE__ */ E(xe, {})]
234
205
  })]
235
- }) : /* @__PURE__ */ E("div", {
206
+ }) : /* @__PURE__ */ D("div", {
236
207
  className: "flex items-end gap-2 rounded-lg border border-zinc-200 bg-white p-2 shadow-sm transition-colors focus-within:border-[var(--color-brand,#a1a1aa)]",
237
208
  children: [
238
- /* @__PURE__ */ T(I.Input, {
239
- className: De("ai-chat-textarea min-w-0 flex-1 resize-none overflow-y-auto bg-transparent px-2 py-1.5 text-base text-zinc-900 leading-relaxed placeholder:text-zinc-500 focus:outline-none", "max-h-[120px]"),
209
+ /* @__PURE__ */ E(R.Input, {
210
+ "data-ai-chat-composer": "",
211
+ className: K("ai-chat-textarea min-w-0 flex-1 resize-none overflow-y-auto bg-transparent px-2 py-1.5 text-base text-zinc-900 leading-relaxed placeholder:text-zinc-500 focus:outline-none", "max-h-[120px]"),
240
212
  placeholder: "Ask a follow-up…",
241
213
  rows: 1,
242
214
  submitMode: "enter",
@@ -245,38 +217,34 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
245
217
  autoCapitalize: "none",
246
218
  inputMode: "text",
247
219
  onInput: (e) => i(e.currentTarget),
248
- onKeyDown: o
220
+ onKeyDown: r
249
221
  }),
250
- /* @__PURE__ */ T(W, {}),
251
- t ? /* @__PURE__ */ T(K, {
252
- hasText: a,
253
- onStop: n,
254
- onStopAndSend: r
255
- }) : /* @__PURE__ */ T(G, {})
222
+ /* @__PURE__ */ E(J, {}),
223
+ t ? /* @__PURE__ */ E(q, { onStop: n }) : /* @__PURE__ */ E(xe, {})
256
224
  ]
257
225
  });
258
- }, ke = "rounded-2xl border border-zinc-200 bg-zinc-100 px-3.5 py-2.5", Ae = "ai-chat-textarea w-full resize-none bg-transparent text-base text-zinc-900 leading-relaxed placeholder:text-zinc-500 focus:outline-none", je = "rounded-lg px-3 py-1.5 text-xs text-zinc-500 transition-colors hover:bg-zinc-100", Me = "rounded-lg px-3 py-1.5 text-xs transition-opacity hover:opacity-80", Ne = ({ autoGrowMax: e, boxClassName: t = ke, inputClassName: n = Ae, cancelClassName: r = je, sendClassName: a = Me, sendStyle: o }) => /* @__PURE__ */ T(L.Root, {
259
- className: "mb-4 pr-12 pl-0",
260
- children: /* @__PURE__ */ E(I.Root, { children: [/* @__PURE__ */ T("div", {
226
+ }, Ce = "rounded-2xl border border-zinc-200 bg-zinc-100 px-3.5 py-2.5", we = "ai-chat-textarea w-full resize-none bg-transparent text-base text-zinc-900 leading-relaxed placeholder:text-zinc-500 focus:outline-none", Te = "rounded-md px-2 py-1 text-xs text-zinc-500 transition-colors hover:bg-zinc-100", Ee = "rounded-md px-2 py-1 text-xs transition-opacity hover:opacity-80", De = ({ autoGrowMax: e, boxClassName: t = Ce, inputClassName: n = we, cancelClassName: r = Te, sendClassName: a = Ee, sendStyle: o }) => /* @__PURE__ */ E(z.Root, {
227
+ className: "mb-4 pr-2 pl-0",
228
+ children: /* @__PURE__ */ D(R.Root, { children: [/* @__PURE__ */ E("div", {
261
229
  className: t,
262
- children: /* @__PURE__ */ T(I.Input, {
230
+ children: /* @__PURE__ */ E(R.Input, {
263
231
  className: n,
264
232
  rows: 1,
265
233
  onInput: (t) => i(t.currentTarget, e)
266
234
  })
267
- }), /* @__PURE__ */ E("div", {
268
- className: "mt-2 flex justify-end gap-2",
269
- children: [/* @__PURE__ */ T(I.Cancel, {
235
+ }), /* @__PURE__ */ D("div", {
236
+ className: "mt-2 flex justify-end gap-1.5",
237
+ children: [/* @__PURE__ */ E(R.Cancel, {
270
238
  className: r,
271
239
  children: "Cancel"
272
- }), /* @__PURE__ */ T(I.Send, {
240
+ }), /* @__PURE__ */ E(R.Send, {
273
241
  className: a,
274
242
  style: o,
275
- children: "Save & Submit"
243
+ children: "Save"
276
244
  })]
277
245
  })] })
278
- }), Pe = ({ idleClassName: e = "text-zinc-500 hover:text-zinc-900", copiedClassName: t = "text-emerald-500", errorClassName: n = "text-rose-500", className: r = "rounded p-1.5 transition-colors", iconClassName: i = "h-3 w-3" }) => {
279
- let [a, o] = C("idle"), s = V();
246
+ }), Oe = ({ idleClassName: e = "text-zinc-500 hover:text-zinc-900", copiedClassName: t = "text-emerald-500", errorClassName: n = "text-rose-500", className: r = "rounded p-1.5 transition-colors", iconClassName: i = "h-3 w-3" }) => {
247
+ let [a, o] = w("idle"), s = H();
280
248
  x(() => {
281
249
  if (a === "idle") return;
282
250
  let e = setTimeout(() => o("idle"), 1500);
@@ -289,59 +257,59 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
289
257
  } catch {
290
258
  o("error");
291
259
  }
292
- }, l = a === "copied" ? t ?? e : a === "error" ? n ?? e : e, u = a === "copied" ? "Copied" : a === "error" ? "Copy failed" : "Copy message", d = a === "copied" ? O : a === "error" ? N : A;
293
- return /* @__PURE__ */ T("button", {
260
+ }, l = a === "copied" ? t ?? e : a === "error" ? n ?? e : e, u = a === "copied" ? "Copied" : a === "error" ? "Copy failed" : "Copy message", d = a === "copied" ? k : a === "error" ? F : j;
261
+ return /* @__PURE__ */ E("button", {
294
262
  type: "button",
295
263
  "aria-label": u,
296
264
  onClick: c,
297
265
  className: [r, l].filter(Boolean).join(" "),
298
- children: /* @__PURE__ */ T(d, { className: i })
266
+ children: /* @__PURE__ */ E(d, { className: i })
299
267
  });
300
- }, Fe = ({ children: e }) => {
301
- let [t, n] = C(!1), r = "plaintext", i = "";
268
+ }, ke = ({ children: e }) => {
269
+ let [t, n] = w(!1), r = "plaintext", i = "";
302
270
  return g.forEach(e, (e) => {
303
271
  if (v(e)) {
304
272
  let t = e.props, n = /language-(\w+)/.exec(t.className ?? "");
305
273
  n && (r = n[1] ?? r), typeof t.children == "string" && (i = t.children.trim());
306
274
  }
307
- }), /* @__PURE__ */ E("div", {
275
+ }), /* @__PURE__ */ D("div", {
308
276
  className: "ai-chat-code not-prose my-4 overflow-hidden rounded-xl border",
309
- children: [/* @__PURE__ */ E("div", {
277
+ children: [/* @__PURE__ */ D("div", {
310
278
  className: "ai-chat-code__header flex items-center justify-between px-4 py-2",
311
- children: [/* @__PURE__ */ T("span", {
279
+ children: [/* @__PURE__ */ E("span", {
312
280
  className: "ai-chat-code__label font-mono text-[10px] uppercase tracking-widest",
313
281
  children: r
314
- }), /* @__PURE__ */ T("button", {
282
+ }), /* @__PURE__ */ E("button", {
315
283
  type: "button",
316
284
  onClick: () => navigator.clipboard.writeText(i).then(() => {
317
285
  n(!0), setTimeout(() => n(!1), 2e3);
318
286
  }).catch(() => {}),
319
287
  className: "ai-chat-code__copy flex items-center gap-1.5 rounded px-2 py-0.5 text-[10px] transition-colors",
320
- children: t ? /* @__PURE__ */ E(w, { children: [/* @__PURE__ */ T(O, { className: "h-3 w-3 text-emerald-500" }), /* @__PURE__ */ T("span", { children: "Copied!" })] }) : /* @__PURE__ */ E(w, { children: [/* @__PURE__ */ T(A, { className: "h-3 w-3" }), /* @__PURE__ */ T("span", { children: "Copy" })] })
288
+ children: t ? /* @__PURE__ */ D(T, { children: [/* @__PURE__ */ E(k, { className: "h-3 w-3 text-emerald-500" }), /* @__PURE__ */ E("span", { children: "Copied!" })] }) : /* @__PURE__ */ D(T, { children: [/* @__PURE__ */ E(j, { className: "h-3 w-3" }), /* @__PURE__ */ E("span", { children: "Copy" })] })
321
289
  })]
322
- }), /* @__PURE__ */ T("pre", {
290
+ }), /* @__PURE__ */ E("pre", {
323
291
  className: "ai-chat-code__pre overflow-x-auto px-4 py-4 font-mono text-sm leading-relaxed",
324
292
  children: e
325
293
  })]
326
294
  });
327
- }, Ie = (e) => /* @__PURE__ */ T("a", {
295
+ }, Ae = (e) => /* @__PURE__ */ E("a", {
328
296
  ...e,
329
297
  target: "_blank",
330
298
  rel: "noopener noreferrer"
331
- }), Le = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
299
+ }), je = ({ className: e, ...t }) => /* @__PURE__ */ E("div", {
332
300
  className: "w-full max-w-full overflow-x-auto",
333
- children: /* @__PURE__ */ T("table", {
301
+ children: /* @__PURE__ */ E("table", {
334
302
  ...t,
335
303
  className: ["w-max min-w-full [&_td]:max-w-[20rem] [&_th]:max-w-[20rem]", e].filter(Boolean).join(" ")
336
304
  })
337
- }), Re = () => /* @__PURE__ */ T(se, {
338
- remarkPlugins: [ce],
305
+ }), Me = () => /* @__PURE__ */ E(oe, {
306
+ remarkPlugins: [se],
339
307
  components: {
340
- pre: Fe,
341
- a: Ie,
342
- table: Le
308
+ pre: ke,
309
+ a: Ae,
310
+ table: je
343
311
  }
344
- }), ze = [
312
+ }), Ne = [
345
313
  "Thinking",
346
314
  "Pondering",
347
315
  "Drafting",
@@ -355,11 +323,11 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
355
323
  "Untangling",
356
324
  "Threading the needle",
357
325
  "Lining up ideas"
358
- ], Be = (e) => {
326
+ ], Pe = (e) => {
359
327
  let t = Math.floor(e / 60), n = e % 60;
360
328
  return t > 0 ? `${t}m ${n.toString().padStart(2, "0")}s` : `${n}s`;
361
- }, Ve = ({ phrases: e = ze, textClassName: t = "ai-thinking-text", timerClassName: n = "text-xs text-zinc-500/70 tabular-nums", longRunningClassName: r = "ml-1.5 text-zinc-500/45", longRunningHint: i = "· hang tight" }) => {
362
- let [a, o] = C(() => e.length > 0 ? Math.floor(Math.random() * e.length) : 0), [s, c] = C(0);
329
+ }, Fe = ({ phrases: e = Ne, textClassName: t = "ai-thinking-text", timerClassName: n = "text-xs text-zinc-500/70 tabular-nums", longRunningClassName: r = "ml-1.5 text-zinc-500/45", longRunningHint: i = "· hang tight" }) => {
330
+ let [a, o] = w(() => e.length > 0 ? Math.floor(Math.random() * e.length) : 0), [s, c] = w(0);
363
331
  x(() => {
364
332
  let t = e.length > 0 ? setInterval(() => {
365
333
  o((t) => (t + 1) % e.length);
@@ -371,77 +339,77 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
371
339
  };
372
340
  }, [e.length]);
373
341
  let l = e[a] ?? "Thinking", u = s >= 3, d = s >= 30;
374
- return /* @__PURE__ */ E("div", {
342
+ return /* @__PURE__ */ D("div", {
375
343
  className: "flex items-center gap-3 py-1",
376
344
  children: [
377
- /* @__PURE__ */ E("div", {
345
+ /* @__PURE__ */ D("div", {
378
346
  className: "ai-dust",
379
347
  children: [
380
- /* @__PURE__ */ T("span", { style: {
348
+ /* @__PURE__ */ E("span", { style: {
381
349
  left: "4px",
382
350
  "--delay": ".3s"
383
351
  } }),
384
- /* @__PURE__ */ T("span", { style: {
352
+ /* @__PURE__ */ E("span", { style: {
385
353
  left: "12px",
386
354
  "--delay": "0s"
387
355
  } }),
388
- /* @__PURE__ */ T("span", { style: {
356
+ /* @__PURE__ */ E("span", { style: {
389
357
  left: "20px",
390
358
  "--delay": ".6s"
391
359
  } })
392
360
  ]
393
361
  }),
394
- /* @__PURE__ */ E("span", {
362
+ /* @__PURE__ */ D("span", {
395
363
  className: `${t} font-semibold text-sm transition-opacity duration-500`,
396
364
  children: [l, "…"]
397
365
  }),
398
- u && /* @__PURE__ */ E("span", {
366
+ u && /* @__PURE__ */ D("span", {
399
367
  className: n,
400
- children: [Be(s), d && /* @__PURE__ */ T("span", {
368
+ children: [Pe(s), d && /* @__PURE__ */ E("span", {
401
369
  className: r,
402
370
  children: i
403
371
  })]
404
372
  })
405
373
  ]
406
374
  });
407
- }, He = () => null, Ue = "max-w-none text-sm text-zinc-900 leading-relaxed [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 [&_a:hover]:text-sky-700 [&_a]:break-words [&_a]:font-medium [&_a]:text-sky-600 [&_a]:underline [&_a]:underline-offset-2 [&_li]:text-sm [&_ol]:my-2 [&_ol]:list-decimal [&_ol]:pl-5 [&_p]:my-2 [&_p]:text-sm [&_strong]:font-semibold [&_ul]:my-2 [&_ul]:list-disc [&_ul]:pl-5", We = "text-xs text-zinc-500/60", Ge = "rounded p-1.5 text-zinc-500 transition-colors hover:text-zinc-900", Ke = ({ tools: t = He, Parts: n, thinkingIndicator: r = /* @__PURE__ */ T(Ve, {}), contentClassName: i = Ue, wrapContent: a, metaSlot: o, copyIdleClassName: s, copyCopiedClassName: c, reloadClassName: l = Ge, timeClassName: u = We, timeFormatOptions: d, readOnly: f = !1, belowContent: p }) => {
408
- let m = V(), h = n ?? L.Content, g = m.status?.type === "running", _ = /* @__PURE__ */ T("div", {
375
+ }, Ie = () => null, Le = "max-w-none text-sm text-zinc-900 leading-relaxed [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 [&_a:hover]:text-sky-700 [&_a]:break-words [&_a]:font-medium [&_a]:text-sky-600 [&_a]:underline [&_a]:underline-offset-2 [&_li]:text-sm [&_ol]:my-2 [&_ol]:list-decimal [&_ol]:pl-5 [&_p]:my-2 [&_p]:text-sm [&_strong]:font-semibold [&_ul]:my-2 [&_ul]:list-disc [&_ul]:pl-5", Re = "group pr-4 pb-6", ze = "mt-2 flex items-center gap-2 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100", Be = "text-xs text-zinc-500/60", Ve = "rounded p-1.5 text-zinc-500 transition-colors hover:text-zinc-900", He = ({ tools: e = Ie, Parts: t, thinkingIndicator: n = /* @__PURE__ */ E(Fe, {}), rootClassName: r = Re, contentClassName: i = Le, metaClassName: a = ze, wrapContent: o, metaSlot: s, copyIdleClassName: c, copyCopiedClassName: l, reloadClassName: u = Ve, timeClassName: d = Be, timeFormatOptions: f, readOnly: p = !1, belowContent: m }) => {
376
+ let g = H(), _ = t ?? z.Content, v = g.status?.type === "running", y = /* @__PURE__ */ E("div", {
409
377
  className: i,
410
- children: /* @__PURE__ */ T(h, { components: {
411
- Text: Re,
412
- tools: { Fallback: t }
378
+ children: /* @__PURE__ */ E(_, { components: {
379
+ Text: Me,
380
+ tools: { Fallback: e }
413
381
  } })
414
382
  });
415
- return /* @__PURE__ */ T(L.Root, {
416
- className: "group pr-4 pb-6",
417
- children: /* @__PURE__ */ E("div", {
383
+ return /* @__PURE__ */ E(z.Root, {
384
+ className: r,
385
+ children: /* @__PURE__ */ D("div", {
418
386
  className: "flex min-w-0 flex-col",
419
387
  children: [
420
- a ? a(_) : _,
421
- g && /* @__PURE__ */ T("div", {
388
+ o ? o(y) : y,
389
+ v && /* @__PURE__ */ E("div", {
422
390
  className: "mt-1",
423
- children: r
391
+ children: n
424
392
  }),
425
- !g && p && /* @__PURE__ */ T("div", {
393
+ !v && m && /* @__PURE__ */ E("div", {
426
394
  className: "mt-2",
427
- children: p
395
+ children: m
428
396
  }),
429
- !g && /* @__PURE__ */ E("div", {
430
- className: "mt-2 flex items-center gap-2 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100",
397
+ !v && /* @__PURE__ */ D("div", {
398
+ className: a,
431
399
  children: [
432
- /* @__PURE__ */ T("span", {
433
- className: u,
434
- children: e(m.createdAt, d)
400
+ /* @__PURE__ */ E("span", {
401
+ className: d,
402
+ children: h(g.createdAt, f)
435
403
  }),
436
- o,
437
- /* @__PURE__ */ E(P.Root, {
404
+ s,
405
+ /* @__PURE__ */ D(I.Root, {
438
406
  className: "flex items-center gap-0.5",
439
- children: [/* @__PURE__ */ T(Pe, {
440
- idleClassName: s,
441
- copiedClassName: c
442
- }), !f && /* @__PURE__ */ T(P.Reload, {
443
- className: l,
444
- children: /* @__PURE__ */ T(j, { className: "h-3 w-3" })
407
+ children: [/* @__PURE__ */ E(Oe, {
408
+ idleClassName: c,
409
+ copiedClassName: l
410
+ }), !p && /* @__PURE__ */ E(I.Reload, {
411
+ className: u,
412
+ children: /* @__PURE__ */ E(N, { className: "h-3 w-3" })
445
413
  })]
446
414
  })
447
415
  ]
@@ -449,111 +417,109 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
449
417
  ]
450
418
  })
451
419
  });
452
- }, qe = "rounded-2xl border border-zinc-200 bg-zinc-100 px-3.5 py-2.5 text-sm text-zinc-900 leading-relaxed", Je = "text-xs text-zinc-500/60", Ye = "rounded px-2 py-1 font-medium text-xs text-zinc-500 transition-colors hover:text-zinc-900", Xe = ({ attachmentsSlot: t, bubbleClassName: n = qe, timeClassName: r = Je, editClassName: i = Ye, copyIdleClassName: a, copyCopiedClassName: o, timeFormatOptions: s, readOnly: c = !1 }) => {
453
- let l = V();
454
- return /* @__PURE__ */ E(L.Root, {
455
- className: "group flex flex-col items-end pb-4 pl-12",
420
+ }, Ue = "group flex flex-col items-end pb-4 pl-12", We = "rounded-2xl border border-zinc-200 bg-zinc-100 px-3.5 py-2.5 text-sm text-zinc-900 leading-relaxed", Ge = "mt-1 flex items-center gap-2 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100", Ke = "text-xs text-zinc-500/60", qe = "rounded px-2 py-1 font-medium text-xs text-zinc-500 transition-colors hover:text-zinc-900", Je = ({ attachmentsSlot: e, rootClassName: t = Ue, bubbleClassName: n = We, contentSlot: r, metaClassName: i = Ge, timeClassName: a = Ke, editClassName: o = qe, copyIdleClassName: s, copyCopiedClassName: c, timeFormatOptions: l, readOnly: u = !1 }) => {
421
+ let d = H();
422
+ return /* @__PURE__ */ D(z.Root, {
423
+ className: t,
456
424
  "data-user-message": "true",
457
425
  children: [
458
- t,
459
- /* @__PURE__ */ T("div", {
426
+ e,
427
+ /* @__PURE__ */ E("div", {
460
428
  className: n,
461
- children: /* @__PURE__ */ T(L.Content, {})
429
+ children: r ?? /* @__PURE__ */ E(z.Content, {})
462
430
  }),
463
- /* @__PURE__ */ E("div", {
464
- className: "mt-1 flex items-center gap-2 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100",
465
- children: [/* @__PURE__ */ T("span", {
466
- className: r,
467
- children: e(l.createdAt, s)
468
- }), /* @__PURE__ */ E(P.Root, {
431
+ /* @__PURE__ */ D("div", {
432
+ className: i,
433
+ children: [/* @__PURE__ */ E("span", {
434
+ className: a,
435
+ children: h(d.createdAt, l)
436
+ }), /* @__PURE__ */ D(I.Root, {
469
437
  className: "flex items-center gap-0.5",
470
- children: [/* @__PURE__ */ T(Pe, {
471
- idleClassName: a,
472
- copiedClassName: o
473
- }), !c && /* @__PURE__ */ T(P.Edit, {
474
- className: i,
438
+ children: [/* @__PURE__ */ E(Oe, {
439
+ idleClassName: s,
440
+ copiedClassName: c
441
+ }), !u && /* @__PURE__ */ E(I.Edit, {
442
+ className: o,
475
443
  children: "Edit"
476
444
  })]
477
445
  })]
478
446
  })
479
447
  ]
480
448
  });
481
- }, Ze = () => /* @__PURE__ */ T(Ne, { sendStyle: {
449
+ }, Ye = () => /* @__PURE__ */ E(De, { sendStyle: {
482
450
  backgroundColor: "var(--color-brand, #0a0a0a)",
483
451
  color: "var(--color-brand-foreground, #fff)"
484
- } }), Qe = [
452
+ } }), Xe = [
485
453
  "What do you offer?",
486
454
  "How much does it cost?",
487
455
  "Why should I choose you?",
488
456
  "How do I get in touch?"
489
- ], $e = [
457
+ ], Ze = [
490
458
  "w-3/4",
491
459
  "w-4/5",
492
460
  "w-2/3",
493
461
  "w-3/5"
494
- ], et = ({ workspaceId: e, siteName: t, siteLogo: n, apiBaseUrl: r, authHeaders: i, followUps: a, hideComposer: o = !1 }) => {
495
- let s = B(), c = H((e) => e.isRunning), { agentUnavailable: l } = ve(), u = S(null), { isAtBottom: d, scrollToBottom: f } = Ee({
496
- viewportRef: u,
497
- isRunning: c
498
- }), p = Ce({
499
- endpoint: e ? `${r}/suggestions` : void 0,
500
- headers: e ? {
501
- ...i,
502
- "Levo-Workspace": e
462
+ ], Qe = ({ workspaceId: t, siteName: n, siteLogo: r, apiBaseUrl: i, authHeaders: a, agentId: o, followUps: s, hideComposer: c = !1 }) => {
463
+ let l = V(), u = U((e) => e.isRunning), { agentUnavailable: d } = fe(), f = C(null), { isAtBottom: p, scrollToBottom: m } = be({
464
+ viewportRef: f,
465
+ isRunning: u
466
+ }), h = _e({
467
+ endpoint: t ? `${i}/suggestions${o ? `?agent_id=${encodeURIComponent(o)}` : ""}` : void 0,
468
+ headers: t ? {
469
+ ...a,
470
+ "Levo-Workspace": t
503
471
  } : void 0,
504
- fallback: Qe
505
- }), m = y((e) => {
506
- s.thread.composer.setText(e), s.thread.composer.send();
507
- }, [s]), h = y(() => s.thread.cancelRun(), [s]), g = y(() => {
508
- s.thread.cancelRun(), setTimeout(() => s.thread.composer.send(), 0);
509
- }, [s]), _ = S(c);
472
+ fallback: Xe
473
+ }), g = y((t) => {
474
+ e(l.thread.composer, t);
475
+ }, [l]), _ = y(() => l.thread.cancelRun(), [l]), v = C(u);
510
476
  return x(() => {
511
- _.current = c;
512
- }, [c]), x(() => {
477
+ v.current = u;
478
+ }, [u]), x(() => {
513
479
  let e = (e) => {
514
- e.key !== "Escape" || e.isComposing || !_.current || (e.preventDefault(), e.stopImmediatePropagation(), s.thread.cancelRun());
480
+ e.key !== "Escape" || e.isComposing || !v.current || (e.preventDefault(), e.stopImmediatePropagation(), l.thread.cancelRun());
515
481
  };
516
482
  return window.addEventListener("keydown", e, !0), () => window.removeEventListener("keydown", e, !0);
517
- }, [s]), /* @__PURE__ */ E(R.Root, {
483
+ }, [l]), /* @__PURE__ */ D(B.Root, {
518
484
  className: "relative flex flex-1 flex-col overflow-hidden",
519
485
  children: [
520
- /* @__PURE__ */ T(R.If, {
486
+ /* @__PURE__ */ E(B.If, {
521
487
  empty: !0,
522
- children: /* @__PURE__ */ T("div", {
488
+ children: /* @__PURE__ */ E("div", {
523
489
  className: "pointer-events-none absolute inset-0 z-0 overflow-hidden",
524
- children: /* @__PURE__ */ T("div", {
490
+ children: /* @__PURE__ */ E("div", {
525
491
  className: "absolute inset-0",
526
492
  style: { background: ["radial-gradient(at 12% 18%, color-mix(in oklch, var(--color-brand, #4691e8) 12%, transparent) 0px, transparent 55%)", "radial-gradient(at 88% 82%, color-mix(in oklch, var(--color-brand-secondary, #db646d) 8%, transparent) 0px, transparent 55%)"].join(", ") }
527
493
  })
528
494
  })
529
495
  }),
530
- l && /* @__PURE__ */ T("div", {
496
+ d && /* @__PURE__ */ E("div", {
531
497
  role: "alert",
532
498
  className: "relative z-20 shrink-0 border-amber-200 border-b bg-amber-50 px-4 py-2.5 text-amber-800 text-xs",
533
499
  children: "This conversation is no longer available. Please refresh the page to start a new chat."
534
500
  }),
535
- /* @__PURE__ */ E(R.Viewport, {
536
- ref: u,
501
+ /* @__PURE__ */ D(B.Viewport, {
502
+ ref: f,
537
503
  turnAnchor: "top",
538
504
  className: "relative z-10 flex-1 overflow-y-auto",
539
505
  autoScroll: !1,
540
506
  scrollToBottomOnRunStart: !1,
541
507
  scrollToBottomOnInitialize: !1,
542
508
  scrollToBottomOnThreadSwitch: !1,
543
- children: [/* @__PURE__ */ T(R.Empty, { children: /* @__PURE__ */ E("div", {
509
+ children: [/* @__PURE__ */ E(B.Empty, { children: /* @__PURE__ */ D("div", {
544
510
  className: "flex min-h-full flex-col items-center justify-center px-6 py-6",
545
- children: [/* @__PURE__ */ E("div", {
511
+ children: [/* @__PURE__ */ D("div", {
546
512
  className: "mb-5 flex flex-col items-center gap-2 text-center",
547
513
  children: [
548
- n ? /* @__PURE__ */ T("img", {
549
- src: n,
550
- alt: t ?? "Site logo",
514
+ r ? /* @__PURE__ */ E("img", {
515
+ src: r,
516
+ alt: n ?? "Site logo",
551
517
  className: "mb-1 h-12 w-auto max-w-[180px] object-contain"
552
- }) : /* @__PURE__ */ T("span", {
518
+ }) : /* @__PURE__ */ E("span", {
553
519
  className: "font-semibold text-lg text-zinc-900 tracking-tight",
554
- children: t ?? "This site"
520
+ children: n ?? "This site"
555
521
  }),
556
- /* @__PURE__ */ T("p", {
522
+ /* @__PURE__ */ E("p", {
557
523
  className: "mt-1 text-2xl text-zinc-900 tracking-tight",
558
524
  style: {
559
525
  fontFamily: "var(--font-heading, inherit)",
@@ -561,91 +527,89 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
561
527
  },
562
528
  children: "Ask anything"
563
529
  }),
564
- /* @__PURE__ */ T("p", {
530
+ /* @__PURE__ */ E("p", {
565
531
  className: "text-sm text-zinc-500",
566
532
  style: { fontFamily: "var(--font-heading, inherit)" },
567
533
  children: "Get instant answers about products, pricing, and how to get started."
568
534
  })
569
535
  ]
570
- }), /* @__PURE__ */ T("div", {
536
+ }), /* @__PURE__ */ E("div", {
571
537
  className: "flex w-full max-w-md flex-col gap-2",
572
- children: p === null ? $e.map((e, t) => /* @__PURE__ */ T("div", {
538
+ children: h === null ? Ze.map((e, t) => /* @__PURE__ */ E("div", {
573
539
  className: "flex h-[42px] items-center rounded-xl border border-zinc-200 bg-white px-4",
574
- children: /* @__PURE__ */ T("span", { className: `block h-3 animate-pulse rounded bg-zinc-200 ${e}` })
575
- }, `skeleton-${t}`)) : p.map((e, t) => /* @__PURE__ */ T("button", {
540
+ children: /* @__PURE__ */ E("span", { className: `block h-3 animate-pulse rounded bg-zinc-200 ${e}` })
541
+ }, `skeleton-${t}`)) : h.map((e, t) => /* @__PURE__ */ E("button", {
576
542
  type: "button",
577
- onClick: () => m(e),
543
+ onClick: () => g(e),
578
544
  className: "ai-chat-suggestion rounded-xl border border-zinc-200 bg-white px-4 py-2.5 text-left text-sm text-zinc-700 transition-[border-color,background-color,transform] duration-150 hover:border-zinc-300 hover:bg-zinc-50 active:scale-[0.98]",
579
545
  style: { animationDelay: `${t * 40}ms` },
580
546
  children: e
581
547
  }, e))
582
548
  })]
583
- }) }), /* @__PURE__ */ T(R.If, {
549
+ }) }), /* @__PURE__ */ E(B.If, {
584
550
  empty: !1,
585
- children: /* @__PURE__ */ T("div", {
551
+ children: /* @__PURE__ */ E("div", {
586
552
  className: "ai-chat-kb-messages mx-auto max-w-3xl px-6 py-6 pt-8",
587
- children: /* @__PURE__ */ T(R.Messages, { components: {
588
- UserMessage: Xe,
589
- AssistantMessage: Ke,
590
- EditComposer: Ze
553
+ children: /* @__PURE__ */ E(B.Messages, { components: {
554
+ UserMessage: Je,
555
+ AssistantMessage: He,
556
+ EditComposer: Ye
591
557
  } })
592
558
  })
593
559
  })]
594
560
  }),
595
- !o && /* @__PURE__ */ T("div", {
561
+ !c && /* @__PURE__ */ E("div", {
596
562
  className: "relative z-10 shrink-0 border-zinc-200 border-t bg-white/95 backdrop-blur-sm",
597
- children: /* @__PURE__ */ E("div", {
563
+ children: /* @__PURE__ */ D("div", {
598
564
  className: "relative mx-auto max-w-3xl px-4 pt-3 pb-3",
599
565
  children: [
600
- !d && /* @__PURE__ */ T("div", {
566
+ !p && /* @__PURE__ */ E("div", {
601
567
  className: "pointer-events-none absolute inset-x-0 -top-9 z-20 flex justify-center",
602
- children: /* @__PURE__ */ T(Se, {
603
- onClick: f,
604
- isRunning: c,
568
+ children: /* @__PURE__ */ E(ge, {
569
+ onClick: m,
570
+ isRunning: u,
605
571
  className: "pointer-events-auto rounded-full border border-zinc-200 bg-white/95 px-3 py-1.5 font-medium text-xs text-zinc-500 shadow-lg backdrop-blur-sm hover:text-zinc-900"
606
572
  })
607
573
  }),
608
- a.length > 0 && !c && /* @__PURE__ */ T("div", {
574
+ s.length > 0 && !u && /* @__PURE__ */ E("div", {
609
575
  className: "mb-2",
610
- children: /* @__PURE__ */ T(le, {
611
- chips: a,
612
- onSelect: m,
576
+ children: /* @__PURE__ */ E(W, {
577
+ chips: s,
578
+ onSelect: g,
613
579
  size: "compact"
614
580
  })
615
581
  }),
616
- /* @__PURE__ */ E(I.Root, { children: [
617
- /* @__PURE__ */ T(R.If, {
582
+ /* @__PURE__ */ D(R.Root, { children: [
583
+ /* @__PURE__ */ E(B.If, {
618
584
  empty: !0,
619
- children: /* @__PURE__ */ T(q, {
585
+ children: /* @__PURE__ */ E(Se, {
620
586
  variant: "expanded",
621
- isRunning: c,
622
- onStop: h,
623
- onStopAndSend: g
587
+ isRunning: u,
588
+ onStop: _
624
589
  })
625
590
  }),
626
- /* @__PURE__ */ T(R.If, {
591
+ /* @__PURE__ */ E(B.If, {
627
592
  empty: !1,
628
- children: /* @__PURE__ */ T(q, {
593
+ children: /* @__PURE__ */ E(Se, {
629
594
  variant: "compact",
630
- isRunning: c,
631
- onStop: h,
632
- onStopAndSend: g
595
+ isRunning: u,
596
+ onStop: _
633
597
  })
634
598
  }),
635
- /* @__PURE__ */ T(I.If, {
599
+ /* @__PURE__ */ E(R.If, {
636
600
  dictation: !0,
637
- children: /* @__PURE__ */ E("div", {
601
+ children: /* @__PURE__ */ D("div", {
638
602
  className: "mt-2 flex items-center justify-center gap-2",
639
- children: [/* @__PURE__ */ T("span", { className: "h-1.5 w-1.5 animate-pulse rounded-full bg-red-500" }), /* @__PURE__ */ T("span", {
603
+ children: [/* @__PURE__ */ E("span", { className: "h-1.5 w-1.5 animate-pulse rounded-full bg-red-500" }), /* @__PURE__ */ E("span", {
640
604
  className: "font-medium text-red-500 text-xs tracking-wide",
641
605
  children: "Listening… speak now"
642
606
  })]
643
607
  })
644
608
  })
645
609
  ] }),
646
- /* @__PURE__ */ T(R.If, {
610
+ /* @__PURE__ */ E(B.If, {
647
611
  empty: !1,
648
- children: /* @__PURE__ */ T("p", {
612
+ children: /* @__PURE__ */ E("p", {
649
613
  className: "mt-2 text-center text-[10px] text-zinc-500/70",
650
614
  children: "Answers can be inaccurate. Verify before relying on them."
651
615
  })
@@ -655,32 +619,32 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
655
619
  })
656
620
  ]
657
621
  });
658
- }, J = 4096, tt = 400, nt = 300, rt = 2e3, it = (e) => document.querySelector(e)?.content?.trim() || void 0, Y = (e) => {
622
+ }, Y = 4096, $e = 400, et = 300, tt = 2e3, nt = (e) => document.querySelector(e)?.content?.trim() || void 0, rt = (e) => {
659
623
  for (let t of e) {
660
- let e = it(t);
624
+ let e = nt(t);
661
625
  if (e) return e;
662
626
  }
663
- }, at = (e, t) => e.length > t ? `${e.slice(0, t - 1).trimEnd()}…` : e, X = (e) => JSON.stringify(e).length, ot = () => {
627
+ }, it = (e, t) => e.length > t ? `${e.slice(0, t - 1).trimEnd()}…` : e, X = (e) => JSON.stringify(e).length, at = () => {
664
628
  if (typeof window > "u" || typeof document > "u") return;
665
629
  let e = {}, t = window.location?.href;
666
630
  t && (e.url = t);
667
- let n = document.title?.trim() || Y(["meta[property=\"og:title\"]", "meta[name=\"twitter:title\"]"]);
668
- n && (e.page_title = at(n, nt));
669
- let r = Y([
631
+ let n = document.title?.trim() || rt(["meta[property=\"og:title\"]", "meta[name=\"twitter:title\"]"]);
632
+ n && (e.page_title = it(n, et));
633
+ let r = rt([
670
634
  "meta[name=\"description\"]",
671
635
  "meta[property=\"og:description\"]",
672
636
  "meta[name=\"twitter:description\"]"
673
637
  ]);
674
- r && (e.description = at(r, tt));
638
+ r && (e.description = it(r, $e));
675
639
  let i = document.referrer?.trim();
676
- if (i && (e.referrer = i), Object.keys(e).length !== 0) return e.description && X(e) > J && delete e.description, e.referrer && X(e) > J && delete e.referrer, e.url && X(e) > J && (e.url = e.url.slice(0, rt)), e;
677
- }, st = ({ workspaceId: e, siteName: t, siteLogo: n, agentId: r, apiBaseUrl: i, authHeaders: a, children: o }) => {
678
- let s = S(e);
640
+ if (i && (e.referrer = i), Object.keys(e).length !== 0) return e.description && X(e) > Y && delete e.description, e.referrer && X(e) > Y && delete e.referrer, e.url && X(e) > Y && (e.url = e.url.slice(0, tt)), e;
641
+ }, ot = ({ workspaceId: e, siteName: t, siteLogo: n, agentId: r, apiBaseUrl: i, authHeaders: a, children: o }) => {
642
+ let s = C(e);
679
643
  s.current = e;
680
- let c = S(r);
644
+ let c = C(r);
681
645
  c.current = r;
682
- let { followUps: l, clearOnSend: u, handleData: d } = he(), [f, p] = C(!1), { conversationIdRef: m, handleFinish: h, reset: g } = me(r ? `${e ?? ""}:${r}` : e), _ = oe({
683
- transport: ue({
646
+ let { followUps: l, clearOnSend: u, handleData: d } = ue(), [f, p] = w(!1), { conversationIdRef: m, handleFinish: h, reset: g } = le(e), _ = ae({
647
+ transport: ce({
684
648
  api: `${i}/stream`,
685
649
  credentials: "include",
686
650
  headers: a,
@@ -697,15 +661,15 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
697
661
  workspace_id: s.current
698
662
  };
699
663
  m.current && (t.conversation_id = m.current), c.current && (t.agent_id = c.current);
700
- let n = ot();
664
+ let n = at();
701
665
  return n && (t.context = n), t;
702
666
  }
703
667
  }),
704
- adapters: { dictation: new z() },
668
+ adapters: { dictation: new ne() },
705
669
  onData: d,
706
670
  onFinish: h,
707
671
  onError: (e) => {
708
- ge(e) ? p(!0) : console.warn("[levo-kb-chat] stream error:", e);
672
+ de(e) ? p(!0) : console.warn("[levo-kb-chat] stream error:", e);
709
673
  }
710
674
  }), v = y(() => {
711
675
  _.threads.switchToNewThread().catch((e) => {
@@ -716,24 +680,25 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
716
680
  g,
717
681
  u
718
682
  ]);
719
- return /* @__PURE__ */ T(F, {
683
+ return /* @__PURE__ */ E(L, {
720
684
  runtime: _,
721
- children: /* @__PURE__ */ T(_e.Provider, {
685
+ children: /* @__PURE__ */ E(G.Provider, {
722
686
  value: { agentUnavailable: f },
723
687
  children: o ? o({
724
688
  followUps: l,
725
689
  onResetChat: v
726
- }) : /* @__PURE__ */ T(et, {
690
+ }) : /* @__PURE__ */ E(Qe, {
727
691
  workspaceId: e,
728
692
  siteName: t,
729
693
  siteLogo: n,
730
694
  apiBaseUrl: i,
731
695
  authHeaders: a,
696
+ agentId: r,
732
697
  followUps: l
733
698
  })
734
699
  })
735
700
  });
736
- }, ct = (e, t, n) => {
701
+ }, st = (e, t, n) => {
737
702
  x(() => {
738
703
  if (!e) return;
739
704
  let r = (e) => {
@@ -751,13 +716,13 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
751
716
  t,
752
717
  n
753
718
  ]);
754
- }, Z = "(max-width: 639px)", lt = () => {
755
- let [e, t] = C(() => typeof window < "u" && window.matchMedia(Z).matches);
719
+ }, Z = "(max-width: 639px)", ct = () => {
720
+ let [e, t] = w(() => typeof window < "u" && window.matchMedia(Z).matches);
756
721
  return x(() => {
757
722
  let e = window.matchMedia(Z), n = () => t(e.matches);
758
723
  return n(), e.addEventListener("change", n), () => e.removeEventListener("change", n);
759
724
  }, []), e;
760
- }, ut = (e, t) => {
725
+ }, lt = (e, t) => {
761
726
  x(() => {
762
727
  let n = t.current, r = window.visualViewport;
763
728
  if (!e || !n || !r || !window.matchMedia(Z).matches) return;
@@ -768,7 +733,7 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
768
733
  r.removeEventListener("resize", i), r.removeEventListener("scroll", i), n.style.removeProperty("--ai-vv-top"), n.style.removeProperty("--ai-vv-height");
769
734
  };
770
735
  }, [e, t]);
771
- }, dt = (e, t, n) => {
736
+ }, ut = (e, t, n) => {
772
737
  x(() => {
773
738
  if (!e) return;
774
739
  let r = (e) => {
@@ -781,75 +746,68 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
781
746
  t,
782
747
  n
783
748
  ]);
784
- }, Q = (...e) => e.filter(Boolean).join(" "), ft = ({ open: e, onToggle: i, askLabel: a, panelId: h, initialDraft: g }) => {
785
- let _ = B(), v = lt(), b = H((e) => e.isRunning), O = H((e) => e.messages.length > 0), k = ie((e) => e.text), A = k.trim().length > 0, [te, j] = C(!1), N = y(() => {
786
- _.thread.cancelRun(), setTimeout(() => _.thread.composer.send(), 0);
787
- }, [_]);
749
+ }, Q = (...e) => e.filter(Boolean).join(" "), dt = ({ open: e, onToggle: i, askLabel: a, panelId: h, initialDraft: g }) => {
750
+ let _ = V(), v = ct(), y = U((e) => e.isRunning), b = U((e) => e.messages.length > 0), k = re((e) => e.text), A = k.trim().length > 0, [j, M] = w(!1);
788
751
  x(() => {
789
752
  g && _.thread.composer.setText(g);
790
753
  }, []);
791
- let P = S(null), F = S(null), L = S(!1);
792
- ee(() => {
793
- let e = P.current;
794
- !e || document.activeElement === e || (L.current = !0, e.focus({ preventScroll: !0 }));
795
- }, []), ee(() => {
796
- let t = P.current, n = F.current;
754
+ let N = C(null), F = C(null), I = C(!1);
755
+ S(() => {
756
+ let e = N.current;
757
+ !e || document.activeElement === e || (I.current = !0, e.focus({ preventScroll: !0 }));
758
+ }, []), S(() => {
759
+ let t = N.current, n = F.current;
797
760
  if (!(!t || !n)) {
798
761
  if (!e) {
799
- t.style.height = "", j(!1);
762
+ t.style.height = "", M(!1);
800
763
  return;
801
764
  }
802
- j(c(n, t));
765
+ M(c(n, t));
803
766
  }
804
767
  }, [k, e]);
805
- let R = S(e);
768
+ let L = C(e);
806
769
  x(() => {
807
- let t = R.current;
808
- R.current = e;
809
- let n = P.current;
770
+ let t = L.current;
771
+ L.current = e;
772
+ let n = N.current;
810
773
  e || !t || !n || document.activeElement === n && n.blur();
811
774
  }, [e]);
812
- let z = S(b);
775
+ let z = C(y);
813
776
  x(() => {
814
- let e = !z.current && b;
815
- z.current = b, v && e && P.current?.blur();
816
- }, [b, v]);
817
- let V = O ? "Continue conversation" : a;
818
- return /* @__PURE__ */ T("div", {
777
+ let e = !z.current && y;
778
+ z.current = y, v && e && N.current?.blur();
779
+ }, [y, v]);
780
+ let B = b ? "Continue conversation" : a;
781
+ return /* @__PURE__ */ E("div", {
819
782
  className: Q(l, e ? f : n),
820
- children: /* @__PURE__ */ E("div", {
783
+ children: /* @__PURE__ */ D("div", {
821
784
  ref: F,
822
- className: Q(m, te && "ai-chat-pill-surface--stacked"),
785
+ className: Q(m, j && "ai-chat-pill-surface--stacked"),
823
786
  children: [
824
- /* @__PURE__ */ T("button", {
787
+ /* @__PURE__ */ E("button", {
825
788
  type: "button",
826
789
  onClick: i,
827
790
  "aria-label": e ? "Collapse AI chat" : "Expand AI chat",
828
791
  "aria-expanded": e,
829
792
  "aria-controls": h,
830
793
  className: s,
831
- children: /* @__PURE__ */ T(re, { className: "h-5 w-5" })
794
+ children: /* @__PURE__ */ E(te, { className: "h-5 w-5" })
832
795
  }),
833
- /* @__PURE__ */ E("div", {
796
+ /* @__PURE__ */ D("div", {
834
797
  className: d,
835
- children: [/* @__PURE__ */ T(I.Input, {
836
- ref: P,
798
+ children: [/* @__PURE__ */ E(R.Input, {
799
+ ref: N,
800
+ "data-ai-chat-composer": "",
837
801
  placeholder: e ? "Ask anything…" : "",
838
802
  onFocus: () => {
839
- if (L.current) {
840
- L.current = !1;
803
+ if (I.current) {
804
+ I.current = !1;
841
805
  return;
842
806
  }
843
807
  e || i();
844
808
  },
845
809
  onKeyDown: (e) => {
846
- if (!e.nativeEvent.isComposing && !(e.key !== "Enter" || e.shiftKey)) {
847
- if (e.preventDefault(), b) {
848
- A && N();
849
- return;
850
- }
851
- A && _.thread.composer.send();
852
- }
810
+ e.nativeEvent.isComposing || e.key !== "Enter" || e.shiftKey || (e.preventDefault(), !y && A && _.thread.composer.send());
853
811
  },
854
812
  rows: 1,
855
813
  submitMode: "enter",
@@ -861,85 +819,77 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
861
819
  autoCapitalize: "none",
862
820
  inputMode: "text",
863
821
  className: Q(r, "transition-opacity duration-200", !e && "opacity-0")
864
- }), /* @__PURE__ */ T("span", {
822
+ }), /* @__PURE__ */ E("span", {
865
823
  className: Q(o, "transition-opacity duration-150", e && "opacity-0"),
866
824
  "aria-hidden": !0,
867
- children: V
825
+ children: B
868
826
  })]
869
827
  }),
870
- /* @__PURE__ */ E("div", {
828
+ /* @__PURE__ */ D("div", {
871
829
  className: p,
872
- children: [e && /* @__PURE__ */ E(w, { children: [/* @__PURE__ */ T(I.If, {
830
+ children: [e && /* @__PURE__ */ D(T, { children: [/* @__PURE__ */ E(R.If, {
873
831
  dictation: !1,
874
- children: /* @__PURE__ */ T(I.Dictate, {
832
+ children: /* @__PURE__ */ E(R.Dictate, {
875
833
  "aria-label": "Start dictation",
876
834
  className: "ai-chat-icon-btn flex h-11 w-11 flex-shrink-0 items-center justify-center rounded-full transition-colors active:scale-95",
877
- children: /* @__PURE__ */ T(ne, { className: "h-5 w-5" })
835
+ children: /* @__PURE__ */ E(ee, { className: "h-5 w-5" })
878
836
  })
879
- }), /* @__PURE__ */ T(I.If, {
837
+ }), /* @__PURE__ */ E(R.If, {
880
838
  dictation: !0,
881
- children: /* @__PURE__ */ T(I.StopDictation, {
839
+ children: /* @__PURE__ */ E(R.StopDictation, {
882
840
  "aria-label": "Stop dictation",
883
841
  className: "flex h-11 w-11 flex-shrink-0 animate-pulse items-center justify-center rounded-full bg-red-500/15 text-red-500 transition-colors hover:bg-red-500/25",
884
- children: /* @__PURE__ */ T(M, { className: "h-4 w-4 fill-current" })
842
+ children: /* @__PURE__ */ E(P, { className: "h-4 w-4 fill-current" })
885
843
  })
886
- })] }), e ? b ? /* @__PURE__ */ E(w, { children: [/* @__PURE__ */ T("button", {
844
+ })] }), e ? y ? /* @__PURE__ */ E("button", {
887
845
  type: "button",
888
846
  onClick: () => _.thread.cancelRun(),
889
847
  "aria-label": "Stop generating",
890
848
  className: t,
891
849
  style: u,
892
- children: /* @__PURE__ */ T(M, { className: "h-4 w-4 fill-current" })
893
- }), A && /* @__PURE__ */ T("button", {
894
- type: "button",
895
- onClick: N,
896
- "aria-label": "Stop and send new message",
897
- title: "Stop the current response and send",
898
- className: "flex h-11 w-11 flex-shrink-0 items-center justify-center rounded-full shadow-sm transition-[transform,box-shadow] duration-150 hover:scale-105 hover:shadow-md active:scale-95",
899
- style: u,
900
- children: /* @__PURE__ */ T(D, { className: "h-5 w-5 stroke-[2.5px]" })
901
- })] }) : /* @__PURE__ */ T(I.Send, {
850
+ children: /* @__PURE__ */ E(P, { className: "h-4 w-4 fill-current" })
851
+ }) : /* @__PURE__ */ E(R.Send, {
902
852
  "aria-label": "Send message",
903
853
  className: Q(t, "disabled:cursor-not-allowed disabled:opacity-40 disabled:shadow-none disabled:hover:scale-100"),
904
854
  style: u,
905
- children: /* @__PURE__ */ T(D, { className: "h-5 w-5 stroke-[2.5px]" })
906
- }) : /* @__PURE__ */ T("button", {
855
+ children: /* @__PURE__ */ E(O, { className: "h-5 w-5 stroke-[2.5px]" })
856
+ }) : /* @__PURE__ */ E("button", {
907
857
  type: "button",
908
858
  onClick: i,
909
859
  "aria-label": "Open AI chat",
910
860
  className: t,
911
861
  style: u,
912
- children: /* @__PURE__ */ T(D, { className: "h-5 w-5 stroke-[2.5px]" })
862
+ children: /* @__PURE__ */ E(O, { className: "h-5 w-5 stroke-[2.5px]" })
913
863
  })]
914
864
  })
915
865
  ]
916
866
  })
917
867
  });
918
- }, pt = "linear-gradient(to right, color-mix(in oklch, var(--ai-chat-thinking-1, oklch(0.65 0.15 253.81)) 40%, transparent), color-mix(in oklch, var(--ai-chat-thinking-2, oklch(0.65 0.15 17.5826)) 40%, transparent))", $ = (...e) => e.filter(Boolean).join(" "), mt = ({ workspaceId: e, siteName: t, siteLogo: n, siteIcon: r, siteSlug: i, agentId: o, apiBaseUrl: s, authHeaders: c, initialOpen: l, initialDraft: u, showBranding: d = !0 }) => {
919
- let [f, p] = C(!1);
868
+ }, ft = "linear-gradient(to right, color-mix(in oklch, var(--ai-chat-thinking-1, oklch(0.65 0.15 253.81)) 40%, transparent), color-mix(in oklch, var(--ai-chat-thinking-2, oklch(0.65 0.15 17.5826)) 40%, transparent))", $ = (...e) => e.filter(Boolean).join(" "), pt = ({ workspaceId: e, siteName: t, siteLogo: n, siteIcon: r, siteSlug: i, agentId: o, apiBaseUrl: s, authHeaders: c, initialOpen: l, initialDraft: u, showBranding: d = !0 }) => {
869
+ let [f, p] = w(!1);
920
870
  x(() => {
921
871
  if (!l) return;
922
872
  let e = requestAnimationFrame(() => p(!0));
923
873
  return () => cancelAnimationFrame(e);
924
874
  }, [l]);
925
- let m = `kb-chat-panel-${e ?? "default"}`, h = S(null), g = S(null), _ = y(() => p(!1), []);
926
- ct(f, g, _), dt(f, h, _), ut(f, h);
875
+ let m = `kb-chat-panel-${e ?? "default"}`, h = C(null), g = C(null), _ = y(() => p(!1), []);
876
+ st(f, g, _), ut(f, h, _), lt(f, h);
927
877
  let v = a(t);
928
- return /* @__PURE__ */ T("div", {
878
+ return /* @__PURE__ */ E("div", {
929
879
  ref: h,
930
880
  className: $("ai-chat-launcher pointer-events-none fixed bottom-5 left-1/2 z-[60] flex -translate-x-1/2 flex-col", "ai-chat-kb-wrap", f ? "w-[min(34rem,calc(100vw-1.5rem))]" : "ai-chat-kb-wrap-closed w-[19.5rem]"),
931
- children: /* @__PURE__ */ T(st, {
881
+ children: /* @__PURE__ */ E(ot, {
932
882
  workspaceId: e,
933
883
  siteName: t,
934
884
  siteLogo: n,
935
885
  agentId: o,
936
886
  apiBaseUrl: s,
937
887
  authHeaders: c,
938
- children: ({ followUps: a, onResetChat: o }) => /* @__PURE__ */ T(gt, {
888
+ children: ({ followUps: a, onResetChat: l }) => /* @__PURE__ */ E(ht, {
939
889
  open: f,
940
890
  onToggle: () => p((e) => !e),
941
891
  threadStateRef: g,
942
- onResetChat: o,
892
+ onResetChat: l,
943
893
  askLabel: v,
944
894
  panelId: m,
945
895
  siteName: t,
@@ -948,10 +898,11 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
948
898
  initialDraft: u,
949
899
  showBranding: d,
950
900
  followUps: a,
951
- thread: /* @__PURE__ */ T(et, {
901
+ thread: /* @__PURE__ */ E(Qe, {
952
902
  workspaceId: e,
953
903
  siteName: t,
954
904
  siteLogo: n,
905
+ agentId: o,
955
906
  apiBaseUrl: s,
956
907
  authHeaders: c,
957
908
  followUps: a,
@@ -960,108 +911,108 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
960
911
  })
961
912
  })
962
913
  });
963
- }, ht = [
914
+ }, mt = [
964
915
  "rounded-full border border-zinc-200 bg-white text-zinc-700",
965
916
  "px-3 py-1 text-[13px] leading-snug",
966
917
  "transition-[border-color,background-color,color,transform] duration-150 hover:border-zinc-300 hover:bg-zinc-50 hover:text-zinc-900 active:scale-95"
967
- ].join(" "), gt = ({ open: e, onToggle: t, threadStateRef: n, onResetChat: r, askLabel: i, panelId: a, siteName: o, siteIcon: s, siteSlug: c, initialDraft: l, showBranding: u, followUps: d, thread: f }) => {
968
- let p = B(), m = H((e) => e.isRunning), h = H((e) => e.messages.length > 0), g = lt() ? d.slice(0, 2) : d;
969
- x(() => (n.current = {
970
- isRunning: m,
971
- cancelRun: () => p.thread.cancelRun()
918
+ ].join(" "), ht = ({ open: t, onToggle: n, threadStateRef: r, onResetChat: i, askLabel: a, panelId: o, siteName: s, siteIcon: c, siteSlug: l, initialDraft: u, showBranding: d, followUps: f, thread: p }) => {
919
+ let m = V(), h = U((e) => e.isRunning), g = U((e) => e.messages.length > 0), _ = ct() ? f.slice(0, 2) : f;
920
+ x(() => (r.current = {
921
+ isRunning: h,
922
+ cancelRun: () => m.thread.cancelRun()
972
923
  }, () => {
973
- n.current = null;
924
+ r.current = null;
974
925
  }), [
926
+ h,
975
927
  m,
976
- p,
977
- n
928
+ r
978
929
  ]);
979
- let _ = y((e) => {
980
- p.thread.composer.setText(e), p.thread.composer.send();
981
- }, [p]), v = o ?? "Ask AI", b = `https://levo.so/?utm_source=${encodeURIComponent(c || "website")}&utm_term=Powered%20By%20levo.so&utm_campaign=site_agent&utm_medium=organic_site_agent`;
982
- return /* @__PURE__ */ E(w, { children: [
983
- /* @__PURE__ */ T("div", {
930
+ let v = y((t) => {
931
+ e(m.thread.composer, t);
932
+ }, [m]), b = s ?? "Ask AI", S = `https://levo.so/?utm_source=${encodeURIComponent(l || "website")}&utm_term=Powered%20By%20levo.so&utm_campaign=site_agent&utm_medium=organic_site_agent`;
933
+ return /* @__PURE__ */ D(T, { children: [
934
+ /* @__PURE__ */ E("div", {
984
935
  "aria-hidden": !0,
985
- className: $("absolute inset-0", e ? "pointer-events-auto" : "pointer-events-none"),
936
+ className: $("absolute inset-0", t ? "pointer-events-auto" : "pointer-events-none"),
986
937
  style: { filter: "drop-shadow(0 16px 32px rgba(0,0,0,0.16)) drop-shadow(0 2px 8px rgba(0,0,0,0.08))" },
987
- children: /* @__PURE__ */ T("div", {
988
- className: $("ai-chat-kb-surface h-full w-full p-[2px]", !e && "ai-chat-kb-surface-closed"),
989
- style: { background: pt },
990
- children: /* @__PURE__ */ T("div", { className: "h-full w-full rounded-t-[26px] rounded-b-[40px] bg-white" })
938
+ children: /* @__PURE__ */ E("div", {
939
+ className: $("ai-chat-kb-surface h-full w-full p-[2px]", !t && "ai-chat-kb-surface-closed"),
940
+ style: { background: ft },
941
+ children: /* @__PURE__ */ E("div", { className: "h-full w-full rounded-t-[26px] rounded-b-[40px] bg-white" })
991
942
  })
992
943
  }),
993
- /* @__PURE__ */ E("section", {
994
- id: a,
944
+ /* @__PURE__ */ D("section", {
945
+ id: o,
995
946
  "aria-label": "AI chat",
996
- inert: !e,
997
- className: $("relative z-10 flex min-h-0 flex-col", "ai-chat-kb-content", e ? "pointer-events-auto" : "ai-chat-kb-content-closed pointer-events-none"),
947
+ inert: !t,
948
+ className: $("relative z-10 flex min-h-0 flex-col", "ai-chat-kb-content", t ? "pointer-events-auto" : "ai-chat-kb-content-closed pointer-events-none"),
998
949
  children: [
999
- /* @__PURE__ */ E("header", {
950
+ /* @__PURE__ */ D("header", {
1000
951
  className: "flex h-14 w-full shrink-0 items-center justify-between gap-2 px-4",
1001
- children: [/* @__PURE__ */ E("div", {
952
+ children: [/* @__PURE__ */ D("div", {
1002
953
  className: "flex min-w-0 items-center gap-2",
1003
- children: [s ? /* @__PURE__ */ T("img", {
1004
- src: s,
954
+ children: [c ? /* @__PURE__ */ E("img", {
955
+ src: c,
1005
956
  alt: "",
1006
957
  className: "h-6 w-6 shrink-0 rounded-sm object-contain"
1007
- }) : null, /* @__PURE__ */ T("span", {
958
+ }) : null, /* @__PURE__ */ E("span", {
1008
959
  className: "truncate font-semibold text-sm text-zinc-900",
1009
- children: v
960
+ children: b
1010
961
  })]
1011
- }), /* @__PURE__ */ E("div", {
962
+ }), /* @__PURE__ */ D("div", {
1012
963
  className: "flex flex-shrink-0 items-center gap-1",
1013
- children: [h && /* @__PURE__ */ T("button", {
964
+ children: [g && /* @__PURE__ */ E("button", {
1014
965
  type: "button",
1015
- onClick: r,
966
+ onClick: i,
1016
967
  "aria-label": "Start new chat",
1017
968
  title: "Start new chat",
1018
969
  className: "ai-chat-icon-btn flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-full transition-[background-color,color,transform] duration-150 active:scale-95",
1019
- children: /* @__PURE__ */ T(te, { className: "h-4 w-4" })
1020
- }), /* @__PURE__ */ T("button", {
970
+ children: /* @__PURE__ */ E(M, { className: "h-4 w-4" })
971
+ }), /* @__PURE__ */ E("button", {
1021
972
  type: "button",
1022
- onClick: t,
973
+ onClick: n,
1023
974
  "aria-label": "Close AI chat",
1024
975
  className: "ai-chat-icon-btn flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-full transition-[background-color,color,transform] duration-150 active:scale-95",
1025
- children: /* @__PURE__ */ T(N, { className: "h-4 w-4" })
976
+ children: /* @__PURE__ */ E(F, { className: "h-4 w-4" })
1026
977
  })]
1027
978
  })]
1028
979
  }),
1029
- /* @__PURE__ */ T("div", { className: "mx-4 h-px shrink-0 bg-zinc-100" }),
1030
- /* @__PURE__ */ T("div", {
980
+ /* @__PURE__ */ E("div", { className: "mx-4 h-px shrink-0 bg-zinc-100" }),
981
+ /* @__PURE__ */ E("div", {
1031
982
  className: "ai-chat-kb-thread flex max-h-[min(60vh,32rem)] min-h-0 flex-col overflow-hidden",
1032
- children: f
983
+ children: p
1033
984
  }),
1034
- g.length > 0 && !m && /* @__PURE__ */ T("div", {
985
+ _.length > 0 && !h && /* @__PURE__ */ E("div", {
1035
986
  className: "shrink-0 px-4 pt-1 pb-2",
1036
- children: /* @__PURE__ */ T(le, {
1037
- chips: g,
1038
- onSelect: _,
1039
- chipClassName: ht
987
+ children: /* @__PURE__ */ E(W, {
988
+ chips: _,
989
+ onSelect: v,
990
+ chipClassName: mt
1040
991
  })
1041
992
  })
1042
993
  ]
1043
994
  }),
1044
- /* @__PURE__ */ T("div", {
995
+ /* @__PURE__ */ E("div", {
1045
996
  className: "ai-chat-kb-pillbox pointer-events-auto relative z-20 mx-3 mt-1",
1046
- children: /* @__PURE__ */ T(ft, {
1047
- open: e,
1048
- onToggle: t,
1049
- askLabel: i,
1050
- panelId: a,
1051
- initialDraft: l
997
+ children: /* @__PURE__ */ E(dt, {
998
+ open: t,
999
+ onToggle: n,
1000
+ askLabel: a,
1001
+ panelId: o,
1002
+ initialDraft: u
1052
1003
  })
1053
1004
  }),
1054
- u && /* @__PURE__ */ T("div", {
1055
- className: $("pointer-events-none relative z-20 grid shrink-0 transition-[grid-template-rows] duration-[450ms] ease-[cubic-bezier(0.32,0.72,0,1)]", e ? "grid-rows-[1fr]" : "grid-rows-[0fr]"),
1056
- children: /* @__PURE__ */ T("div", {
1005
+ d && /* @__PURE__ */ E("div", {
1006
+ className: $("pointer-events-none relative z-20 grid shrink-0 transition-[grid-template-rows] duration-[450ms] ease-[cubic-bezier(0.32,0.72,0,1)]", t ? "grid-rows-[1fr]" : "grid-rows-[0fr]"),
1007
+ children: /* @__PURE__ */ E("div", {
1057
1008
  className: "overflow-hidden",
1058
- children: /* @__PURE__ */ E("p", {
1009
+ children: /* @__PURE__ */ D("p", {
1059
1010
  className: "pt-2 text-center text-[11px] text-zinc-400",
1060
1011
  children: [
1061
1012
  "Powered by",
1062
1013
  " ",
1063
- /* @__PURE__ */ T("a", {
1064
- href: b,
1014
+ /* @__PURE__ */ E("a", {
1015
+ href: S,
1065
1016
  target: "_blank",
1066
1017
  rel: "noopener noreferrer",
1067
1018
  className: "pointer-events-auto font-medium text-zinc-500 underline-offset-2 transition-colors hover:text-zinc-700 hover:underline",
@@ -1071,8 +1022,8 @@ var le = ({ chips: e, onSelect: t, size: n = "comfortable", className: r, chipCl
1071
1022
  })
1072
1023
  })
1073
1024
  }),
1074
- /* @__PURE__ */ T("div", { className: "h-3" })
1025
+ /* @__PURE__ */ E("div", { className: "h-3" })
1075
1026
  ] });
1076
1027
  };
1077
1028
  //#endregion
1078
- export { mt as KBChatWidget };
1029
+ export { pt as KBChatWidget };