@levo-so/studio 0.3.9 → 0.3.10

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