@aigentyc/chat-sdk 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/bin/aigentyc.mjs +10 -4
  2. package/bin/lib/skill.mjs +84 -0
  3. package/claude-skill/README.md +32 -0
  4. package/claude-skill/aigentyc-chat-sdk/SKILL.md +339 -0
  5. package/context7.json +1 -1
  6. package/dist/ChatInterface-B0zbA3Lm.d.cts +64 -0
  7. package/dist/ChatInterface-f8ftS56n.d.ts +64 -0
  8. package/dist/{SlotsContext-CBtt36al.d.ts → SlotsContext-BjiX1mRx.d.ts} +17 -2
  9. package/dist/{SlotsContext-CHvISDJT.d.cts → SlotsContext-CEOBjzfh.d.cts} +17 -2
  10. package/dist/ai-elements.cjs +114 -393
  11. package/dist/ai-elements.cjs.map +1 -1
  12. package/dist/ai-elements.d.cts +2 -31
  13. package/dist/ai-elements.d.ts +2 -31
  14. package/dist/ai-elements.js +9 -291
  15. package/dist/ai-elements.js.map +1 -1
  16. package/dist/{chunk-5QSXB6UL.cjs → chunk-3HGOLNGG.cjs} +13 -4
  17. package/dist/chunk-3HGOLNGG.cjs.map +1 -0
  18. package/dist/{chunk-KVEJAPWA.js → chunk-3KSMOHNY.js} +48 -62
  19. package/dist/chunk-3KSMOHNY.js.map +1 -0
  20. package/dist/chunk-4WOBNRRB.cjs +540 -0
  21. package/dist/chunk-4WOBNRRB.cjs.map +1 -0
  22. package/dist/chunk-7AZMWPKX.cjs +35 -0
  23. package/dist/chunk-7AZMWPKX.cjs.map +1 -0
  24. package/dist/chunk-B27JIQ4Z.js +528 -0
  25. package/dist/chunk-B27JIQ4Z.js.map +1 -0
  26. package/dist/{chunk-J2K7EJYP.cjs → chunk-BPV66QNM.cjs} +6 -4
  27. package/dist/chunk-BPV66QNM.cjs.map +1 -0
  28. package/dist/{chunk-FYPJSHCL.js → chunk-FPQ3UCCJ.js} +6 -4
  29. package/dist/chunk-FPQ3UCCJ.js.map +1 -0
  30. package/dist/{chunk-7L4FS6G7.js → chunk-JHWSG5IB.js} +17 -3
  31. package/dist/chunk-JHWSG5IB.js.map +1 -0
  32. package/dist/{chunk-4FBVV64J.js → chunk-M4YRNNGB.js} +13 -4
  33. package/dist/chunk-M4YRNNGB.js.map +1 -0
  34. package/dist/{chunk-QDFPJJ5Y.cjs → chunk-OU5OZKYH.cjs} +50 -65
  35. package/dist/chunk-OU5OZKYH.cjs.map +1 -0
  36. package/dist/{chunk-MC6QDYB6.cjs → chunk-PPCGZ5MP.cjs} +166 -67
  37. package/dist/chunk-PPCGZ5MP.cjs.map +1 -0
  38. package/dist/{chunk-U3FXVLUK.js → chunk-PQCGQ32Q.js} +84 -4
  39. package/dist/chunk-PQCGQ32Q.js.map +1 -0
  40. package/dist/{chunk-FOZXDUSZ.js → chunk-SWKWHBBN.js} +151 -54
  41. package/dist/chunk-SWKWHBBN.js.map +1 -0
  42. package/dist/{chunk-DMGYQ6NN.cjs → chunk-TLGZSXTU.cjs} +86 -6
  43. package/dist/chunk-TLGZSXTU.cjs.map +1 -0
  44. package/dist/{chunk-C24QG43M.cjs → chunk-TZ7EM3EG.cjs} +17 -2
  45. package/dist/chunk-TZ7EM3EG.cjs.map +1 -0
  46. package/dist/chunk-XEAAB5ZM.js +32 -0
  47. package/dist/chunk-XEAAB5ZM.js.map +1 -0
  48. package/dist/components.cjs +31 -52
  49. package/dist/components.cjs.map +1 -1
  50. package/dist/components.d.cts +4 -34
  51. package/dist/components.d.ts +4 -34
  52. package/dist/components.js +18 -42
  53. package/dist/components.js.map +1 -1
  54. package/dist/core.d.cts +2 -2
  55. package/dist/core.d.ts +2 -2
  56. package/dist/hooks.cjs +6 -6
  57. package/dist/hooks.d.cts +2 -2
  58. package/dist/hooks.d.ts +2 -2
  59. package/dist/hooks.js +2 -2
  60. package/dist/i18n.d.cts +1 -1
  61. package/dist/i18n.d.ts +1 -1
  62. package/dist/index.cjs +45 -23
  63. package/dist/index.cjs.map +1 -1
  64. package/dist/index.d.cts +51 -6
  65. package/dist/index.d.ts +51 -6
  66. package/dist/index.js +17 -10
  67. package/dist/index.js.map +1 -1
  68. package/dist/llms-full.txt +194 -14
  69. package/dist/message-feedback-BFh3-qym.d.cts +92 -0
  70. package/dist/message-feedback-cWR0NVok.d.ts +92 -0
  71. package/dist/normalize-KzCLLqpU.d.cts +42 -0
  72. package/dist/normalize-KzCLLqpU.d.ts +42 -0
  73. package/dist/styles.css +1 -1
  74. package/dist/theme.d.cts +1 -1
  75. package/dist/theme.d.ts +1 -1
  76. package/dist/tools.cjs +14 -5
  77. package/dist/tools.d.cts +3 -2
  78. package/dist/tools.d.ts +3 -2
  79. package/dist/tools.js +3 -2
  80. package/dist/{types-DKJ_-nbG.d.cts → types-DlNwk-bG.d.cts} +33 -3
  81. package/dist/{types-DKJ_-nbG.d.ts → types-DlNwk-bG.d.ts} +33 -3
  82. package/dist/ui.cjs +45 -45
  83. package/dist/ui.js +2 -2
  84. package/llms.txt +175 -5
  85. package/package.json +2 -1
  86. package/dist/chunk-4FBVV64J.js.map +0 -1
  87. package/dist/chunk-5QSXB6UL.cjs.map +0 -1
  88. package/dist/chunk-7L4FS6G7.js.map +0 -1
  89. package/dist/chunk-A7PCSWIK.js +0 -219
  90. package/dist/chunk-A7PCSWIK.js.map +0 -1
  91. package/dist/chunk-C24QG43M.cjs.map +0 -1
  92. package/dist/chunk-DMGYQ6NN.cjs.map +0 -1
  93. package/dist/chunk-FOZXDUSZ.js.map +0 -1
  94. package/dist/chunk-FYPJSHCL.js.map +0 -1
  95. package/dist/chunk-J2K7EJYP.cjs.map +0 -1
  96. package/dist/chunk-KVEJAPWA.js.map +0 -1
  97. package/dist/chunk-MC6QDYB6.cjs.map +0 -1
  98. package/dist/chunk-QDFPJJ5Y.cjs.map +0 -1
  99. package/dist/chunk-RTVEBPAJ.cjs +0 -230
  100. package/dist/chunk-RTVEBPAJ.cjs.map +0 -1
  101. package/dist/chunk-U3FXVLUK.js.map +0 -1
@@ -1,38 +1,8 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { Q as QuestionConfig } from './types-DKJ_-nbG.cjs';
1
+ export { a as ChatInterface } from './ChatInterface-B0zbA3Lm.cjs';
3
2
  import * as React$1 from 'react';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { FileUIPart } from 'ai';
5
-
6
- interface ChatInterfaceProps {
7
- /** Allow per-instance overrides of any context value */
8
- isOpen?: boolean;
9
- onClose?: () => void;
10
- onNewConversation?: () => void;
11
- logoUrl?: string;
12
- questions?: QuestionConfig[];
13
- pageQuestions?: QuestionConfig[];
14
- footerText?: string;
15
- welcomeTitle?: string;
16
- welcomeSubtitle?: string;
17
- hideWelcomeHeader?: boolean;
18
- showFirstMessage?: boolean;
19
- hideHeader?: boolean;
20
- pendingMessage?: string | null;
21
- onPendingMessageConsumed?: () => void;
22
- pageUrl?: string;
23
- pageTitle?: string;
24
- pageContextLoading?: boolean;
25
- pageWelcomeTitle?: string;
26
- pageWelcomeSubtitle?: string;
27
- questionsLayout?: "vertical" | "horizontal";
28
- questionsLayoutMobile?: "vertical" | "horizontal";
29
- /**
30
- * Show citation sources under each assistant message that used the
31
- * `searchKnowledgeBase` tool. Off by default.
32
- */
33
- showSources?: boolean;
34
- }
35
- declare function ChatInterface(props: ChatInterfaceProps): react_jsx_runtime.JSX.Element;
5
+ import { Q as QuestionConfig } from './types-DlNwk-bG.cjs';
36
6
 
37
7
  interface ChatHeaderProps {
38
8
  isWelcome?: boolean;
@@ -183,4 +153,4 @@ interface PreviewEmbedPanelProps {
183
153
  }
184
154
  declare function PreviewEmbedPanel({ isOpen, isRightSide, zIndex }: PreviewEmbedPanelProps): react_jsx_runtime.JSX.Element | null;
185
155
 
186
- export { CartDrawer, ChatDrawer, ChatFooter, ChatHeader, ChatInput, ChatInputWithAttachments, ChatInterface, FloatingButton, LiveChatHeader, LiveChatPanel, LiveChatQueueBanner, PreviewEmbedPanel, QuickQuestions, SatisfactionRating, SystemMessage, VisitorIdentityForm, WelcomePage };
156
+ export { CartDrawer, ChatDrawer, ChatFooter, ChatHeader, ChatInput, ChatInputWithAttachments, FloatingButton, LiveChatHeader, LiveChatPanel, LiveChatQueueBanner, PreviewEmbedPanel, QuickQuestions, SatisfactionRating, SystemMessage, VisitorIdentityForm, WelcomePage };
@@ -1,38 +1,8 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { Q as QuestionConfig } from './types-DKJ_-nbG.js';
1
+ export { a as ChatInterface } from './ChatInterface-f8ftS56n.js';
3
2
  import * as React$1 from 'react';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { FileUIPart } from 'ai';
5
-
6
- interface ChatInterfaceProps {
7
- /** Allow per-instance overrides of any context value */
8
- isOpen?: boolean;
9
- onClose?: () => void;
10
- onNewConversation?: () => void;
11
- logoUrl?: string;
12
- questions?: QuestionConfig[];
13
- pageQuestions?: QuestionConfig[];
14
- footerText?: string;
15
- welcomeTitle?: string;
16
- welcomeSubtitle?: string;
17
- hideWelcomeHeader?: boolean;
18
- showFirstMessage?: boolean;
19
- hideHeader?: boolean;
20
- pendingMessage?: string | null;
21
- onPendingMessageConsumed?: () => void;
22
- pageUrl?: string;
23
- pageTitle?: string;
24
- pageContextLoading?: boolean;
25
- pageWelcomeTitle?: string;
26
- pageWelcomeSubtitle?: string;
27
- questionsLayout?: "vertical" | "horizontal";
28
- questionsLayoutMobile?: "vertical" | "horizontal";
29
- /**
30
- * Show citation sources under each assistant message that used the
31
- * `searchKnowledgeBase` tool. Off by default.
32
- */
33
- showSources?: boolean;
34
- }
35
- declare function ChatInterface(props: ChatInterfaceProps): react_jsx_runtime.JSX.Element;
5
+ import { Q as QuestionConfig } from './types-DlNwk-bG.js';
36
6
 
37
7
  interface ChatHeaderProps {
38
8
  isWelcome?: boolean;
@@ -183,4 +153,4 @@ interface PreviewEmbedPanelProps {
183
153
  }
184
154
  declare function PreviewEmbedPanel({ isOpen, isRightSide, zIndex }: PreviewEmbedPanelProps): react_jsx_runtime.JSX.Element | null;
185
155
 
186
- export { CartDrawer, ChatDrawer, ChatFooter, ChatHeader, ChatInput, ChatInputWithAttachments, ChatInterface, FloatingButton, LiveChatHeader, LiveChatPanel, LiveChatQueueBanner, PreviewEmbedPanel, QuickQuestions, SatisfactionRating, SystemMessage, VisitorIdentityForm, WelcomePage };
156
+ export { CartDrawer, ChatDrawer, ChatFooter, ChatHeader, ChatInput, ChatInputWithAttachments, FloatingButton, LiveChatHeader, LiveChatPanel, LiveChatQueueBanner, PreviewEmbedPanel, QuickQuestions, SatisfactionRating, SystemMessage, VisitorIdentityForm, WelcomePage };
@@ -1,15 +1,15 @@
1
1
  "use client";
2
- import { ChatInterface } from './chunk-FOZXDUSZ.js';
3
- export { CartDrawer, ChatFooter, ChatHeader, ChatInput, ChatInterface, FloatingButton, LiveChatPanel, PreviewEmbedPanel, QuickQuestions, WelcomePage } from './chunk-FOZXDUSZ.js';
2
+ import { ChatInterface } from './chunk-SWKWHBBN.js';
3
+ export { CartDrawer, ChatFooter, ChatHeader, ChatInput, ChatInterface, FloatingButton, LiveChatPanel, PreviewEmbedPanel, QuickQuestions, SystemMessage, WelcomePage } from './chunk-SWKWHBBN.js';
4
4
  import './chunk-5F3O3ZJH.js';
5
5
  import './chunk-IU7Q7O5G.js';
6
- import './chunk-A7PCSWIK.js';
6
+ import './chunk-B27JIQ4Z.js';
7
7
  import './chunk-MZQKGNWF.js';
8
8
  import { useI18n } from './chunk-QYCEHFAB.js';
9
- import './chunk-U3FXVLUK.js';
10
- import './chunk-FYPJSHCL.js';
9
+ import './chunk-PQCGQ32Q.js';
10
+ import './chunk-FPQ3UCCJ.js';
11
11
  import './chunk-PS3U7T37.js';
12
- import './chunk-7L4FS6G7.js';
12
+ import './chunk-JHWSG5IB.js';
13
13
  import './chunk-4QT25AXI.js';
14
14
  import './chunk-NPJKLYLV.js';
15
15
  import { cn } from './chunk-3RW7O444.js';
@@ -270,30 +270,6 @@ function ChatDrawer({
270
270
  )
271
271
  ] });
272
272
  }
273
- var TRANSLATIONS = {
274
- operator_joined: "\u05D4\u05E0\u05E6\u05D9\u05D2 \u05D4\u05E6\u05D8\u05E8\u05E3 \u05DC\u05E9\u05D9\u05D7\u05D4",
275
- chat_ended: "\u05D4\u05E9\u05D9\u05D7\u05D4 \u05D4\u05E1\u05EA\u05D9\u05D9\u05DE\u05D4",
276
- handed_to_ai: "\u05D4\u05E9\u05D9\u05D7\u05D4 \u05D4\u05D5\u05E2\u05D1\u05E8\u05D4 \u05D7\u05D6\u05E8\u05D4 \u05DC\u05E2\u05D5\u05D6\u05E8 AI",
277
- operator_disconnected: "\u05D4\u05E0\u05E6\u05D9\u05D2 \u05D4\u05EA\u05E0\u05EA\u05E7. \u05DE\u05DE\u05EA\u05D9\u05DF \u05DC\u05D7\u05D9\u05D1\u05D5\u05E8 \u05DE\u05D7\u05D3\u05E9...",
278
- operator_offline: "\u05D4\u05E0\u05E6\u05D9\u05D2 \u05DC\u05D0 \u05D6\u05DE\u05D9\u05DF \u05DB\u05E8\u05D2\u05E2",
279
- operator_online: "\u05D4\u05E0\u05E6\u05D9\u05D2 \u05D7\u05D6\u05E8 \u05DC\u05E9\u05D9\u05D7\u05D4",
280
- reassigned: "\u05D4\u05E9\u05D9\u05D7\u05D4 \u05D4\u05D5\u05E2\u05D1\u05E8\u05D4 \u05DC\u05E0\u05E6\u05D9\u05D2 \u05D0\u05D7\u05E8",
281
- idle_warning: "\u05D4\u05E0\u05E6\u05D9\u05D2 \u05DC\u05D0 \u05E4\u05E2\u05D9\u05DC \u05DB\u05E8\u05D2\u05E2"
282
- };
283
- function translateMessage(message, type) {
284
- if (type && TRANSLATIONS[type]) {
285
- const nameMatch = message.match(/^([A-Za-z\u0590-\u05FF\s]+?) (joined|left|ended|disconnected)/);
286
- if (nameMatch && type === "operator_joined") {
287
- return `${nameMatch[1]} \u05D4\u05E6\u05D8\u05E8\u05E3/\u05D4 \u05DC\u05E9\u05D9\u05D7\u05D4`;
288
- }
289
- return TRANSLATIONS[type];
290
- }
291
- return message;
292
- }
293
- function SystemMessage({ message, type }) {
294
- const displayMessage = translateMessage(message, type);
295
- return /* @__PURE__ */ jsx("div", { className: "flex justify-center my-3", children: /* @__PURE__ */ jsx("span", { className: "text-[11px] text-gray-500 bg-gray-100 px-4 py-1.5 rounded-full border border-gray-200/50", children: displayMessage }) });
296
- }
297
273
  function VisitorIdentityForm({ onSubmit, onCancel }) {
298
274
  const [name, setName] = useState("");
299
275
  const [email, setEmail] = useState("");
@@ -309,7 +285,7 @@ function VisitorIdentityForm({ onSubmit, onCancel }) {
309
285
  value: name,
310
286
  onChange: (e) => setName(e.target.value),
311
287
  placeholder: t("liveChatIdentityName"),
312
- className: "w-full text-sm p-2.5 border rounded-lg bg-white focus:outline-none focus:ring-2 focus:ring-blue-300",
288
+ className: "w-full text-sm p-2.5 border rounded-lg bg-background focus:outline-none focus:ring-2 focus:ring-blue-300",
313
289
  autoFocus: true
314
290
  }
315
291
  ),
@@ -320,7 +296,7 @@ function VisitorIdentityForm({ onSubmit, onCancel }) {
320
296
  value: email,
321
297
  onChange: (e) => setEmail(e.target.value),
322
298
  placeholder: t("liveChatIdentityEmail"),
323
- className: "w-full text-sm p-2.5 border rounded-lg bg-white focus:outline-none focus:ring-2 focus:ring-blue-300"
299
+ className: "w-full text-sm p-2.5 border rounded-lg bg-background focus:outline-none focus:ring-2 focus:ring-blue-300"
324
300
  }
325
301
  ),
326
302
  /* @__PURE__ */ jsxs("div", { className: "flex gap-2 justify-end", children: [
@@ -329,7 +305,7 @@ function VisitorIdentityForm({ onSubmit, onCancel }) {
329
305
  {
330
306
  type: "button",
331
307
  onClick: onCancel,
332
- className: "text-sm text-gray-500 hover:text-gray-700 px-4 py-2 rounded-lg",
308
+ className: "text-sm text-muted-foreground hover:text-foreground px-4 py-2 rounded-lg",
333
309
  children: t("liveChatCancel")
334
310
  }
335
311
  ),
@@ -396,8 +372,8 @@ function SatisfactionRating({ onSubmit, onSkip }) {
396
372
  const [comment, setComment] = useState("");
397
373
  const [submitted, setSubmitted] = useState(false);
398
374
  if (submitted) {
399
- return /* @__PURE__ */ jsxs("div", { className: "bg-gray-50 border-t px-4 py-3 text-center", children: [
400
- /* @__PURE__ */ jsx("p", { className: "text-sm text-gray-600", children: "Thank you for your feedback!" }),
375
+ return /* @__PURE__ */ jsxs("div", { className: "bg-secondary/50 border-t px-4 py-3 text-center", children: [
376
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Thank you for your feedback!" }),
401
377
  /* @__PURE__ */ jsx(
402
378
  "button",
403
379
  {
@@ -409,15 +385,15 @@ function SatisfactionRating({ onSubmit, onSkip }) {
409
385
  )
410
386
  ] });
411
387
  }
412
- return /* @__PURE__ */ jsxs("div", { className: "bg-gray-50 border-t px-4 py-3", children: [
413
- /* @__PURE__ */ jsx("p", { className: "text-sm text-gray-700 text-center mb-2", children: "How was your experience?" }),
388
+ return /* @__PURE__ */ jsxs("div", { className: "bg-secondary/50 border-t px-4 py-3", children: [
389
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-foreground/80 text-center mb-2", children: "How was your experience?" }),
414
390
  /* @__PURE__ */ jsxs("div", { className: "flex justify-center gap-4 mb-2", children: [
415
391
  /* @__PURE__ */ jsx(
416
392
  "button",
417
393
  {
418
394
  type: "button",
419
395
  onClick: () => setSelected("positive"),
420
- className: `p-2 rounded-full transition-colors ${selected === "positive" ? "bg-green-100 text-green-600" : "hover:bg-gray-200 text-gray-400"}`,
396
+ className: `p-2 rounded-full transition-colors ${selected === "positive" ? "bg-green-100 text-green-600" : "hover:bg-muted text-muted-foreground"}`,
421
397
  children: /* @__PURE__ */ jsx(ThumbsUp, { className: "h-5 w-5" })
422
398
  }
423
399
  ),
@@ -426,7 +402,7 @@ function SatisfactionRating({ onSubmit, onSkip }) {
426
402
  {
427
403
  type: "button",
428
404
  onClick: () => setSelected("negative"),
429
- className: `p-2 rounded-full transition-colors ${selected === "negative" ? "bg-red-100 text-red-600" : "hover:bg-gray-200 text-gray-400"}`,
405
+ className: `p-2 rounded-full transition-colors ${selected === "negative" ? "bg-red-100 text-red-600" : "hover:bg-muted text-muted-foreground"}`,
430
406
  children: /* @__PURE__ */ jsx(ThumbsDown, { className: "h-5 w-5" })
431
407
  }
432
408
  )
@@ -460,7 +436,7 @@ function SatisfactionRating({ onSubmit, onSkip }) {
460
436
  {
461
437
  type: "button",
462
438
  onClick: onSkip,
463
- className: "text-xs text-gray-500 hover:underline px-3 py-1",
439
+ className: "text-xs text-muted-foreground hover:underline px-3 py-1",
464
440
  children: "Skip"
465
441
  }
466
442
  )
@@ -471,13 +447,13 @@ function SatisfactionRating({ onSubmit, onSkip }) {
471
447
  {
472
448
  type: "button",
473
449
  onClick: onSkip,
474
- className: "text-xs text-gray-500 hover:underline",
450
+ className: "text-xs text-muted-foreground hover:underline",
475
451
  children: "Skip"
476
452
  }
477
453
  ) })
478
454
  ] });
479
455
  }
480
456
 
481
- export { ChatDrawer, ChatInputWithAttachments, LiveChatHeader, LiveChatQueueBanner, SatisfactionRating, SystemMessage, VisitorIdentityForm };
457
+ export { ChatDrawer, ChatInputWithAttachments, LiveChatHeader, LiveChatQueueBanner, SatisfactionRating, VisitorIdentityForm };
482
458
  //# sourceMappingURL=components.js.map
483
459
  //# sourceMappingURL=components.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ChatInputWithAttachments.tsx","../src/ui/sheet.tsx","../src/components/ChatDrawer.tsx","../src/components/SystemMessage.tsx","../src/components/VisitorIdentityForm.tsx","../src/components/LiveChatHeader.tsx","../src/components/LiveChatQueueBanner.tsx","../src/components/SatisfactionRating.tsx"],"names":["jsx","jsxs","X","useState"],"mappings":"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","file":"components.js","sourcesContent":["\"use client\";\n\n/**\n * Chat Input with Image Attachments - Enhanced input for kitchen image analysis\n */\n\nimport { useRef, useState } from \"react\";\nimport { ImageIcon, Square, X } from \"lucide-react\";\n// TODO: `FileUIPart` imported from \"ai\" (Vercel AI SDK). Make sure `ai` is installed as peer dependency.\nimport type { FileUIPart } from \"ai\";\n\ninterface Attachment extends FileUIPart {\n\tid: string;\n}\n\ninterface ChatInputWithAttachmentsProps {\n\tvalue: string;\n\tonChange: (value: string) => void;\n\tonSubmit: (text: string, attachments?: FileUIPart[]) => void;\n\tisProcessing?: boolean;\n\tplaceholder?: string;\n}\n\nexport function ChatInputWithAttachments({\n\tvalue,\n\tonChange,\n\tonSubmit,\n\tisProcessing = false,\n\tplaceholder = \"Ask anything or upload an image...\",\n}: ChatInputWithAttachmentsProps) {\n\tconst [attachments, setAttachments] = useState<Attachment[]>([]);\n\tconst fileInputRef = useRef<HTMLInputElement>(null);\n\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\tif (e.key === \"Enter\" && (value.trim() || attachments.length > 0) && !isProcessing) {\n\t\t\te.preventDefault();\n\t\t\thandleSubmit();\n\t\t}\n\t};\n\n\tconst handleSubmit = () => {\n\t\tif ((!value.trim() && attachments.length === 0) || isProcessing) return;\n\t\tconst fileParts: FileUIPart[] = attachments.map(({ id: _id, ...rest }) => rest);\n\t\tonSubmit(value, fileParts.length > 0 ? fileParts : undefined);\n\t\tsetAttachments([]);\n\t};\n\n\tconst handleFileSelect = async (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst files = e.target.files;\n\t\tif (!files) return;\n\n\t\tconst newAttachments: Attachment[] = [];\n\n\t\tfor (const file of Array.from(files)) {\n\t\t\tif (!file.type.startsWith(\"image/\")) continue;\n\t\t\tconst dataUrl = await fileToDataUrl(file);\n\t\t\tnewAttachments.push({\n\t\t\t\tid: `${Date.now()}-${Math.random().toString(36).slice(2)}`,\n\t\t\t\ttype: \"file\",\n\t\t\t\turl: dataUrl,\n\t\t\t\tmediaType: file.type,\n\t\t\t\tfilename: file.name,\n\t\t\t});\n\t\t}\n\n\t\tsetAttachments((prev) => [...prev, ...newAttachments]);\n\t\te.target.value = \"\";\n\t};\n\n\tconst removeAttachment = (id: string) => {\n\t\tsetAttachments((prev) => prev.filter((a) => a.id !== id));\n\t};\n\n\tconst openFileDialog = () => {\n\t\tfileInputRef.current?.click();\n\t};\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-2\">\n\t\t\t{attachments.length > 0 && (\n\t\t\t\t<div className=\"flex flex-wrap gap-2 px-4\">\n\t\t\t\t\t{attachments.map((attachment) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={attachment.id}\n\t\t\t\t\t\t\tclassName=\"relative group rounded-lg overflow-hidden border bg-secondary\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\tsrc={attachment.url}\n\t\t\t\t\t\t\t\talt={attachment.filename || \"Attachment\"}\n\t\t\t\t\t\t\t\tclassName=\"h-16 w-16 object-cover\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => removeAttachment(attachment.id)}\n\t\t\t\t\t\t\t\tclassName=\"absolute top-1 right-1 w-5 h-5 rounded-full bg-black/60 text-white flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<X className=\"w-3 h-3\" />\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName=\"flex items-center gap-2 backdrop-blur-xl border shadow-xl rounded-full pl-3 md:pl-4 pr-1.5 md:pr-[6px]\"\n\t\t\t\tstyle={{ backgroundColor: \"var(--ac-background)\", borderColor: \"var(--ac-border)\" }}\n\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={openFileDialog}\n\t\t\t\t\tdisabled={isProcessing}\n\t\t\t\t\tclassName=\"flex items-center justify-center w-9 h-9 rounded-full text-muted-foreground hover:text-foreground hover:bg-secondary transition-colors disabled:opacity-50\"\n\t\t\t\t\ttitle=\"Upload image\"\n\t\t\t\t>\n\t\t\t\t\t<ImageIcon className=\"w-5 h-5\" />\n\t\t\t\t</button>\n\n\t\t\t\t<input\n\t\t\t\t\tref={fileInputRef}\n\t\t\t\t\ttype=\"file\"\n\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\tmultiple\n\t\t\t\t\tonChange={handleFileSelect}\n\t\t\t\t\tclassName=\"hidden\"\n\t\t\t\t/>\n\n\t\t\t\t<input\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tonChange={(e) => onChange(e.target.value)}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tdisabled={isProcessing}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tclassName=\"flex-1 bg-transparent outline-none text-base min-h-[56px] md:min-h-[69px] disabled:opacity-50\"\n\t\t\t\t\tstyle={{ color: \"var(--ac-text)\" }}\n\t\t\t\t/>\n\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={handleSubmit}\n\t\t\t\t\tdisabled={(!value.trim() && attachments.length === 0) || isProcessing}\n\t\t\t\t\tclassName=\"flex items-center justify-center w-11 h-11 md:w-[55px] md:h-[55px] rounded-full disabled:opacity-50 disabled:cursor-not-allowed transition-colors shrink-0\"\n\t\t\t\t\tstyle={{ backgroundColor: \"var(--ac-primary)\", color: \"var(--ac-primary-foreground, #fff)\" }}\n\t\t\t\t>\n\t\t\t\t\t{isProcessing ? (\n\t\t\t\t\t\t<Square className=\"w-5 h-5 fill-white\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<svg className=\"w-6 h-6 md:w-7 md:h-7\" viewBox=\"0 0 28 28\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<path d=\"M2 15C1.44772 15 1 14.5523 1 14C1 13.4477 1.44772 13 2 13V14L2 15ZM26.7071 13.2929C27.0976 13.6834 27.0976 14.3166 26.7071 14.7071L20.3431 21.0711C19.9526 21.4616 19.3195 21.4616 18.9289 21.0711C18.5384 20.6805 18.5384 20.0474 18.9289 19.6569L24.5858 14L18.9289 8.34315C18.5384 7.95262 18.5384 7.31946 18.9289 6.92893C19.3195 6.53841 19.9526 6.53841 20.3431 6.92893L26.7071 13.2929ZM2 14V13L26 13V14V15L2 15L2 14Z\" fill=\"white\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t)}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nasync function fileToDataUrl(file: File): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst reader = new FileReader();\n\t\treader.onload = () => resolve(reader.result as string);\n\t\treader.onerror = reject;\n\t\treader.readAsDataURL(file);\n\t});\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"../core/utils\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {\n overlayVariant?: \"default\" | \"light\";\n}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, overlayVariant: _overlayVariant, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n {children}\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-start\",\n className\n )}\n {...props}\n />\n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-foreground\", className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","\"use client\";\n\nimport { useState, useEffect } from \"react\";\nimport { Sheet, SheetContent, SheetTrigger, SheetTitle } from \"../ui/sheet\";\nimport { ChatInterface } from \"./ChatInterface\";\nimport { MessageCircle } from \"lucide-react\";\n// TODO: @radix-ui/react-visually-hidden — keep as peer dep.\nimport * as VisuallyHidden from \"@radix-ui/react-visually-hidden\";\n\ninterface ChatDrawerProps {\n\tdefaultOpen?: boolean;\n\topen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n\ttrigger?: React.ReactNode;\n\thideTrigger?: boolean;\n}\n\nexport function ChatDrawer({\n\tdefaultOpen = false,\n\topen: controlledOpen,\n\tonOpenChange,\n\ttrigger,\n\thideTrigger = false,\n}: ChatDrawerProps) {\n\tconst [internalOpen, setInternalOpen] = useState(defaultOpen);\n\n\tconst isControlled = controlledOpen !== undefined;\n\tconst isOpen = isControlled ? controlledOpen : internalOpen;\n\n\tconst handleOpenChange = (open: boolean) => {\n\t\tif (!isControlled) setInternalOpen(open);\n\t\tonOpenChange?.(open);\n\t};\n\n\tuseEffect(() => {\n\t\tif (typeof document === \"undefined\") return;\n\t\tconst handleCloseChat = () => handleOpenChange(false);\n\t\tdocument.addEventListener(\"aigentyc:close-chat\", handleCloseChat);\n\t\treturn () => document.removeEventListener(\"aigentyc:close-chat\", handleCloseChat);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\treturn (\n\t\t<Sheet open={isOpen} onOpenChange={handleOpenChange}>\n\t\t\t{!hideTrigger && (\n\t\t\t\t<SheetTrigger asChild>\n\t\t\t\t\t{trigger || (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"fixed bottom-6 right-6 z-40 flex h-14 w-14 items-center justify-center rounded-full shadow-lg transition-transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-offset-2\"\n\t\t\t\t\t\t\tstyle={{ backgroundColor: \"var(--ac-primary)\", color: \"var(--ac-primary-foreground, #fff)\" }}\n\t\t\t\t\t\t\taria-label=\"Open chat\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<MessageCircle className=\"h-6 w-6\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t)}\n\t\t\t\t</SheetTrigger>\n\t\t\t)}\n\t\t\t<SheetContent\n\t\t\t\tside=\"right\"\n\t\t\t\tclassName=\"w-full sm:w-[450px] sm:max-w-[450px] p-0 flex flex-col [&>button]:hidden\"\n\t\t\t>\n\t\t\t\t<VisuallyHidden.Root>\n\t\t\t\t\t<SheetTitle>Chat Assistant</SheetTitle>\n\t\t\t\t</VisuallyHidden.Root>\n\t\t\t\t<ChatInterface />\n\t\t\t</SheetContent>\n\t\t</Sheet>\n\t);\n}\n","\"use client\";\n\ninterface SystemMessageProps {\n\tmessage: string;\n\ttype?: string;\n}\n\nconst TRANSLATIONS: Record<string, string> = {\n\toperator_joined: \"הנציג הצטרף לשיחה\",\n\tchat_ended: \"השיחה הסתיימה\",\n\thanded_to_ai: \"השיחה הועברה חזרה לעוזר AI\",\n\toperator_disconnected: \"הנציג התנתק. ממתין לחיבור מחדש...\",\n\toperator_offline: \"הנציג לא זמין כרגע\",\n\toperator_online: \"הנציג חזר לשיחה\",\n\treassigned: \"השיחה הועברה לנציג אחר\",\n\tidle_warning: \"הנציג לא פעיל כרגע\",\n};\n\nfunction translateMessage(message: string, type?: string): string {\n\tif (type && TRANSLATIONS[type]) {\n\t\tconst nameMatch = message.match(/^([A-Za-z\\u0590-\\u05FF\\s]+?) (joined|left|ended|disconnected)/);\n\t\tif (nameMatch && type === \"operator_joined\") {\n\t\t\treturn `${nameMatch[1]} הצטרף/ה לשיחה`;\n\t\t}\n\t\treturn TRANSLATIONS[type];\n\t}\n\treturn message;\n}\n\nexport function SystemMessage({ message, type }: SystemMessageProps) {\n\tconst displayMessage = translateMessage(message, type);\n\n\treturn (\n\t\t<div className=\"flex justify-center my-3\">\n\t\t\t<span className=\"text-[11px] text-gray-500 bg-gray-100 px-4 py-1.5 rounded-full border border-gray-200/50\">\n\t\t\t\t{displayMessage}\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useI18n } from \"../hooks/use-i18n\";\n\ninterface VisitorIdentityFormProps {\n\tonSubmit: (name: string, email: string) => void;\n\tonCancel: () => void;\n}\n\nexport function VisitorIdentityForm({ onSubmit, onCancel }: VisitorIdentityFormProps) {\n\tconst [name, setName] = useState(\"\");\n\tconst [email, setEmail] = useState(\"\");\n\tconst { t, direction } = useI18n();\n\tconst isRTL = direction === \"rtl\";\n\n\treturn (\n\t\t<div className=\"border-t bg-blue-50/80 px-4 py-4\" dir={isRTL ? \"rtl\" : \"ltr\"}>\n\t\t\t<p className=\"text-sm text-blue-800 font-medium mb-3\">{t(\"liveChatIdentityTitle\")}</p>\n\t\t\t<div className=\"space-y-2\">\n\t\t\t\t<input\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={name}\n\t\t\t\t\tonChange={(e) => setName(e.target.value)}\n\t\t\t\t\tplaceholder={t(\"liveChatIdentityName\")}\n\t\t\t\t\tclassName=\"w-full text-sm p-2.5 border rounded-lg bg-white focus:outline-none focus:ring-2 focus:ring-blue-300\"\n\t\t\t\t\tautoFocus\n\t\t\t\t/>\n\t\t\t\t<input\n\t\t\t\t\ttype=\"email\"\n\t\t\t\t\tvalue={email}\n\t\t\t\t\tonChange={(e) => setEmail(e.target.value)}\n\t\t\t\t\tplaceholder={t(\"liveChatIdentityEmail\")}\n\t\t\t\t\tclassName=\"w-full text-sm p-2.5 border rounded-lg bg-white focus:outline-none focus:ring-2 focus:ring-blue-300\"\n\t\t\t\t/>\n\t\t\t\t<div className=\"flex gap-2 justify-end\">\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={onCancel}\n\t\t\t\t\t\tclassName=\"text-sm text-gray-500 hover:text-gray-700 px-4 py-2 rounded-lg\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{t(\"liveChatCancel\")}\n\t\t\t\t\t</button>\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={() => onSubmit(name, email)}\n\t\t\t\t\t\tdisabled={!name.trim() || !email.trim()}\n\t\t\t\t\t\tclassName=\"text-sm text-white px-5 py-2 rounded-lg disabled:opacity-40\"\n\t\t\t\t\t\tstyle={{ backgroundColor: \"var(--ac-primary, #2f80ed)\" }}\n\t\t\t\t\t>\n\t\t\t\t\t\t{t(\"liveChatIdentityConnect\")}\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\ninterface LiveChatHeaderProps {\n\toperatorName: string;\n\tonEndChat: () => void;\n}\n\nexport function LiveChatHeader({ operatorName, onEndChat }: LiveChatHeaderProps) {\n\treturn (\n\t\t<div className=\"bg-green-50 border-b border-green-200 px-4 py-2 flex items-center justify-between\">\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<div className=\"h-2 w-2 rounded-full bg-green-500\" />\n\t\t\t\t<span className=\"text-sm text-green-800 font-medium\">Chatting with {operatorName}</span>\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tonClick={onEndChat}\n\t\t\t\tclassName=\"text-xs text-red-600 hover:text-red-800 bg-red-50 px-2 py-1 rounded\"\n\t\t\t>\n\t\t\t\tEnd Chat\n\t\t\t</button>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\ninterface QueueBannerProps {\n\tposition: number;\n\tonCancel: () => void;\n}\n\nexport function LiveChatQueueBanner({ position, onCancel }: QueueBannerProps) {\n\treturn (\n\t\t<div className=\"bg-blue-50 border-b border-blue-200 px-4 py-3 flex items-center justify-between\">\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<div className=\"h-2 w-2 rounded-full bg-blue-500 animate-pulse\" />\n\t\t\t\t<span className=\"text-sm text-blue-800\">\n\t\t\t\t\tConnecting you with an operator...\n\t\t\t\t\t{position > 0 && <span className=\"font-medium\"> Position #{position}</span>}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tonClick={onCancel}\n\t\t\t\tclassName=\"text-xs text-blue-600 hover:text-blue-800 underline\"\n\t\t\t>\n\t\t\t\tCancel\n\t\t\t</button>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { ThumbsUp, ThumbsDown } from \"lucide-react\";\n\ninterface SatisfactionRatingProps {\n\tonSubmit: (rating: \"positive\" | \"negative\", comment?: string) => void;\n\tonSkip: () => void;\n}\n\nexport function SatisfactionRating({ onSubmit, onSkip }: SatisfactionRatingProps) {\n\tconst [selected, setSelected] = useState<\"positive\" | \"negative\" | null>(null);\n\tconst [comment, setComment] = useState(\"\");\n\tconst [submitted, setSubmitted] = useState(false);\n\n\tif (submitted) {\n\t\treturn (\n\t\t\t<div className=\"bg-gray-50 border-t px-4 py-3 text-center\">\n\t\t\t\t<p className=\"text-sm text-gray-600\">Thank you for your feedback!</p>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={onSkip}\n\t\t\t\t\tclassName=\"text-xs text-blue-600 hover:underline mt-1\"\n\t\t\t\t>\n\t\t\t\t\tBack to AI Assistant\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"bg-gray-50 border-t px-4 py-3\">\n\t\t\t<p className=\"text-sm text-gray-700 text-center mb-2\">How was your experience?</p>\n\t\t\t<div className=\"flex justify-center gap-4 mb-2\">\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={() => setSelected(\"positive\")}\n\t\t\t\t\tclassName={`p-2 rounded-full transition-colors ${\n\t\t\t\t\t\tselected === \"positive\" ? \"bg-green-100 text-green-600\" : \"hover:bg-gray-200 text-gray-400\"\n\t\t\t\t\t}`}\n\t\t\t\t>\n\t\t\t\t\t<ThumbsUp className=\"h-5 w-5\" />\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={() => setSelected(\"negative\")}\n\t\t\t\t\tclassName={`p-2 rounded-full transition-colors ${\n\t\t\t\t\t\tselected === \"negative\" ? \"bg-red-100 text-red-600\" : \"hover:bg-gray-200 text-gray-400\"\n\t\t\t\t\t}`}\n\t\t\t\t>\n\t\t\t\t\t<ThumbsDown className=\"h-5 w-5\" />\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t{selected && (\n\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t<textarea\n\t\t\t\t\t\tvalue={comment}\n\t\t\t\t\t\tonChange={(e) => setComment(e.target.value)}\n\t\t\t\t\t\tplaceholder=\"Any additional feedback? (optional)\"\n\t\t\t\t\t\tclassName=\"w-full text-xs p-2 border rounded resize-none h-16\"\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"flex justify-center gap-2\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tonSubmit(selected, comment || undefined);\n\t\t\t\t\t\t\t\tsetSubmitted(true);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName=\"text-xs text-white px-3 py-1 rounded\"\n\t\t\t\t\t\t\tstyle={{ backgroundColor: \"var(--ac-primary)\" }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tSubmit\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={onSkip}\n\t\t\t\t\t\t\tclassName=\"text-xs text-gray-500 hover:underline px-3 py-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tSkip\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!selected && (\n\t\t\t\t<div className=\"text-center\">\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={onSkip}\n\t\t\t\t\t\tclassName=\"text-xs text-gray-500 hover:underline\"\n\t\t\t\t\t>\n\t\t\t\t\t\tSkip\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../src/components/ChatInputWithAttachments.tsx","../src/ui/sheet.tsx","../src/components/ChatDrawer.tsx","../src/components/VisitorIdentityForm.tsx","../src/components/LiveChatHeader.tsx","../src/components/LiveChatQueueBanner.tsx","../src/components/SatisfactionRating.tsx"],"names":["jsx","jsxs","X","useState"],"mappings":"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","file":"components.js","sourcesContent":["\"use client\";\n\n/**\n * Chat Input with Image Attachments - Enhanced input for kitchen image analysis\n */\n\nimport { useRef, useState } from \"react\";\nimport { ImageIcon, Square, X } from \"lucide-react\";\n// TODO: `FileUIPart` imported from \"ai\" (Vercel AI SDK). Make sure `ai` is installed as peer dependency.\nimport type { FileUIPart } from \"ai\";\n\ninterface Attachment extends FileUIPart {\n\tid: string;\n}\n\ninterface ChatInputWithAttachmentsProps {\n\tvalue: string;\n\tonChange: (value: string) => void;\n\tonSubmit: (text: string, attachments?: FileUIPart[]) => void;\n\tisProcessing?: boolean;\n\tplaceholder?: string;\n}\n\nexport function ChatInputWithAttachments({\n\tvalue,\n\tonChange,\n\tonSubmit,\n\tisProcessing = false,\n\tplaceholder = \"Ask anything or upload an image...\",\n}: ChatInputWithAttachmentsProps) {\n\tconst [attachments, setAttachments] = useState<Attachment[]>([]);\n\tconst fileInputRef = useRef<HTMLInputElement>(null);\n\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\tif (e.key === \"Enter\" && (value.trim() || attachments.length > 0) && !isProcessing) {\n\t\t\te.preventDefault();\n\t\t\thandleSubmit();\n\t\t}\n\t};\n\n\tconst handleSubmit = () => {\n\t\tif ((!value.trim() && attachments.length === 0) || isProcessing) return;\n\t\tconst fileParts: FileUIPart[] = attachments.map(({ id: _id, ...rest }) => rest);\n\t\tonSubmit(value, fileParts.length > 0 ? fileParts : undefined);\n\t\tsetAttachments([]);\n\t};\n\n\tconst handleFileSelect = async (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst files = e.target.files;\n\t\tif (!files) return;\n\n\t\tconst newAttachments: Attachment[] = [];\n\n\t\tfor (const file of Array.from(files)) {\n\t\t\tif (!file.type.startsWith(\"image/\")) continue;\n\t\t\tconst dataUrl = await fileToDataUrl(file);\n\t\t\tnewAttachments.push({\n\t\t\t\tid: `${Date.now()}-${Math.random().toString(36).slice(2)}`,\n\t\t\t\ttype: \"file\",\n\t\t\t\turl: dataUrl,\n\t\t\t\tmediaType: file.type,\n\t\t\t\tfilename: file.name,\n\t\t\t});\n\t\t}\n\n\t\tsetAttachments((prev) => [...prev, ...newAttachments]);\n\t\te.target.value = \"\";\n\t};\n\n\tconst removeAttachment = (id: string) => {\n\t\tsetAttachments((prev) => prev.filter((a) => a.id !== id));\n\t};\n\n\tconst openFileDialog = () => {\n\t\tfileInputRef.current?.click();\n\t};\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-2\">\n\t\t\t{attachments.length > 0 && (\n\t\t\t\t<div className=\"flex flex-wrap gap-2 px-4\">\n\t\t\t\t\t{attachments.map((attachment) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={attachment.id}\n\t\t\t\t\t\t\tclassName=\"relative group rounded-lg overflow-hidden border bg-secondary\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\tsrc={attachment.url}\n\t\t\t\t\t\t\t\talt={attachment.filename || \"Attachment\"}\n\t\t\t\t\t\t\t\tclassName=\"h-16 w-16 object-cover\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => removeAttachment(attachment.id)}\n\t\t\t\t\t\t\t\tclassName=\"absolute top-1 right-1 w-5 h-5 rounded-full bg-black/60 text-white flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<X className=\"w-3 h-3\" />\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName=\"flex items-center gap-2 backdrop-blur-xl border shadow-xl rounded-full pl-3 md:pl-4 pr-1.5 md:pr-[6px]\"\n\t\t\t\tstyle={{ backgroundColor: \"var(--ac-background)\", borderColor: \"var(--ac-border)\" }}\n\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={openFileDialog}\n\t\t\t\t\tdisabled={isProcessing}\n\t\t\t\t\tclassName=\"flex items-center justify-center w-9 h-9 rounded-full text-muted-foreground hover:text-foreground hover:bg-secondary transition-colors disabled:opacity-50\"\n\t\t\t\t\ttitle=\"Upload image\"\n\t\t\t\t>\n\t\t\t\t\t<ImageIcon className=\"w-5 h-5\" />\n\t\t\t\t</button>\n\n\t\t\t\t<input\n\t\t\t\t\tref={fileInputRef}\n\t\t\t\t\ttype=\"file\"\n\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\tmultiple\n\t\t\t\t\tonChange={handleFileSelect}\n\t\t\t\t\tclassName=\"hidden\"\n\t\t\t\t/>\n\n\t\t\t\t<input\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tonChange={(e) => onChange(e.target.value)}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tdisabled={isProcessing}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tclassName=\"flex-1 bg-transparent outline-none text-base min-h-[56px] md:min-h-[69px] disabled:opacity-50\"\n\t\t\t\t\tstyle={{ color: \"var(--ac-text)\" }}\n\t\t\t\t/>\n\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={handleSubmit}\n\t\t\t\t\tdisabled={(!value.trim() && attachments.length === 0) || isProcessing}\n\t\t\t\t\tclassName=\"flex items-center justify-center w-11 h-11 md:w-[55px] md:h-[55px] rounded-full disabled:opacity-50 disabled:cursor-not-allowed transition-colors shrink-0\"\n\t\t\t\t\tstyle={{ backgroundColor: \"var(--ac-primary)\", color: \"var(--ac-primary-foreground, #fff)\" }}\n\t\t\t\t>\n\t\t\t\t\t{isProcessing ? (\n\t\t\t\t\t\t<Square className=\"w-5 h-5 fill-white\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<svg className=\"w-6 h-6 md:w-7 md:h-7\" viewBox=\"0 0 28 28\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<path d=\"M2 15C1.44772 15 1 14.5523 1 14C1 13.4477 1.44772 13 2 13V14L2 15ZM26.7071 13.2929C27.0976 13.6834 27.0976 14.3166 26.7071 14.7071L20.3431 21.0711C19.9526 21.4616 19.3195 21.4616 18.9289 21.0711C18.5384 20.6805 18.5384 20.0474 18.9289 19.6569L24.5858 14L18.9289 8.34315C18.5384 7.95262 18.5384 7.31946 18.9289 6.92893C19.3195 6.53841 19.9526 6.53841 20.3431 6.92893L26.7071 13.2929ZM2 14V13L26 13V14V15L2 15L2 14Z\" fill=\"white\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t)}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nasync function fileToDataUrl(file: File): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst reader = new FileReader();\n\t\treader.onload = () => resolve(reader.result as string);\n\t\treader.onerror = reject;\n\t\treader.readAsDataURL(file);\n\t});\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"../core/utils\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {\n overlayVariant?: \"default\" | \"light\";\n}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, overlayVariant: _overlayVariant, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n {children}\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-start\",\n className\n )}\n {...props}\n />\n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-foreground\", className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","\"use client\";\n\nimport { useState, useEffect } from \"react\";\nimport { Sheet, SheetContent, SheetTrigger, SheetTitle } from \"../ui/sheet\";\nimport { ChatInterface } from \"./ChatInterface\";\nimport { MessageCircle } from \"lucide-react\";\n// TODO: @radix-ui/react-visually-hidden — keep as peer dep.\nimport * as VisuallyHidden from \"@radix-ui/react-visually-hidden\";\n\ninterface ChatDrawerProps {\n\tdefaultOpen?: boolean;\n\topen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n\ttrigger?: React.ReactNode;\n\thideTrigger?: boolean;\n}\n\nexport function ChatDrawer({\n\tdefaultOpen = false,\n\topen: controlledOpen,\n\tonOpenChange,\n\ttrigger,\n\thideTrigger = false,\n}: ChatDrawerProps) {\n\tconst [internalOpen, setInternalOpen] = useState(defaultOpen);\n\n\tconst isControlled = controlledOpen !== undefined;\n\tconst isOpen = isControlled ? controlledOpen : internalOpen;\n\n\tconst handleOpenChange = (open: boolean) => {\n\t\tif (!isControlled) setInternalOpen(open);\n\t\tonOpenChange?.(open);\n\t};\n\n\tuseEffect(() => {\n\t\tif (typeof document === \"undefined\") return;\n\t\tconst handleCloseChat = () => handleOpenChange(false);\n\t\tdocument.addEventListener(\"aigentyc:close-chat\", handleCloseChat);\n\t\treturn () => document.removeEventListener(\"aigentyc:close-chat\", handleCloseChat);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\treturn (\n\t\t<Sheet open={isOpen} onOpenChange={handleOpenChange}>\n\t\t\t{!hideTrigger && (\n\t\t\t\t<SheetTrigger asChild>\n\t\t\t\t\t{trigger || (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"fixed bottom-6 right-6 z-40 flex h-14 w-14 items-center justify-center rounded-full shadow-lg transition-transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-offset-2\"\n\t\t\t\t\t\t\tstyle={{ backgroundColor: \"var(--ac-primary)\", color: \"var(--ac-primary-foreground, #fff)\" }}\n\t\t\t\t\t\t\taria-label=\"Open chat\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<MessageCircle className=\"h-6 w-6\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t)}\n\t\t\t\t</SheetTrigger>\n\t\t\t)}\n\t\t\t<SheetContent\n\t\t\t\tside=\"right\"\n\t\t\t\tclassName=\"w-full sm:w-[450px] sm:max-w-[450px] p-0 flex flex-col [&>button]:hidden\"\n\t\t\t>\n\t\t\t\t<VisuallyHidden.Root>\n\t\t\t\t\t<SheetTitle>Chat Assistant</SheetTitle>\n\t\t\t\t</VisuallyHidden.Root>\n\t\t\t\t<ChatInterface />\n\t\t\t</SheetContent>\n\t\t</Sheet>\n\t);\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useI18n } from \"../hooks/use-i18n\";\n\ninterface VisitorIdentityFormProps {\n\tonSubmit: (name: string, email: string) => void;\n\tonCancel: () => void;\n}\n\nexport function VisitorIdentityForm({ onSubmit, onCancel }: VisitorIdentityFormProps) {\n\tconst [name, setName] = useState(\"\");\n\tconst [email, setEmail] = useState(\"\");\n\tconst { t, direction } = useI18n();\n\tconst isRTL = direction === \"rtl\";\n\n\treturn (\n\t\t<div className=\"border-t bg-blue-50/80 px-4 py-4\" dir={isRTL ? \"rtl\" : \"ltr\"}>\n\t\t\t<p className=\"text-sm text-blue-800 font-medium mb-3\">{t(\"liveChatIdentityTitle\")}</p>\n\t\t\t<div className=\"space-y-2\">\n\t\t\t\t<input\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={name}\n\t\t\t\t\tonChange={(e) => setName(e.target.value)}\n\t\t\t\t\tplaceholder={t(\"liveChatIdentityName\")}\n\t\t\t\t\tclassName=\"w-full text-sm p-2.5 border rounded-lg bg-background focus:outline-none focus:ring-2 focus:ring-blue-300\"\n\t\t\t\t\tautoFocus\n\t\t\t\t/>\n\t\t\t\t<input\n\t\t\t\t\ttype=\"email\"\n\t\t\t\t\tvalue={email}\n\t\t\t\t\tonChange={(e) => setEmail(e.target.value)}\n\t\t\t\t\tplaceholder={t(\"liveChatIdentityEmail\")}\n\t\t\t\t\tclassName=\"w-full text-sm p-2.5 border rounded-lg bg-background focus:outline-none focus:ring-2 focus:ring-blue-300\"\n\t\t\t\t/>\n\t\t\t\t<div className=\"flex gap-2 justify-end\">\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={onCancel}\n\t\t\t\t\t\tclassName=\"text-sm text-muted-foreground hover:text-foreground px-4 py-2 rounded-lg\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{t(\"liveChatCancel\")}\n\t\t\t\t\t</button>\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={() => onSubmit(name, email)}\n\t\t\t\t\t\tdisabled={!name.trim() || !email.trim()}\n\t\t\t\t\t\tclassName=\"text-sm text-white px-5 py-2 rounded-lg disabled:opacity-40\"\n\t\t\t\t\t\tstyle={{ backgroundColor: \"var(--ac-primary, #2f80ed)\" }}\n\t\t\t\t\t>\n\t\t\t\t\t\t{t(\"liveChatIdentityConnect\")}\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\ninterface LiveChatHeaderProps {\n\toperatorName: string;\n\tonEndChat: () => void;\n}\n\nexport function LiveChatHeader({ operatorName, onEndChat }: LiveChatHeaderProps) {\n\treturn (\n\t\t<div className=\"bg-green-50 border-b border-green-200 px-4 py-2 flex items-center justify-between\">\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<div className=\"h-2 w-2 rounded-full bg-green-500\" />\n\t\t\t\t<span className=\"text-sm text-green-800 font-medium\">Chatting with {operatorName}</span>\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tonClick={onEndChat}\n\t\t\t\tclassName=\"text-xs text-red-600 hover:text-red-800 bg-red-50 px-2 py-1 rounded\"\n\t\t\t>\n\t\t\t\tEnd Chat\n\t\t\t</button>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\ninterface QueueBannerProps {\n\tposition: number;\n\tonCancel: () => void;\n}\n\nexport function LiveChatQueueBanner({ position, onCancel }: QueueBannerProps) {\n\treturn (\n\t\t<div className=\"bg-blue-50 border-b border-blue-200 px-4 py-3 flex items-center justify-between\">\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<div className=\"h-2 w-2 rounded-full bg-blue-500 animate-pulse\" />\n\t\t\t\t<span className=\"text-sm text-blue-800\">\n\t\t\t\t\tConnecting you with an operator...\n\t\t\t\t\t{position > 0 && <span className=\"font-medium\"> Position #{position}</span>}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tonClick={onCancel}\n\t\t\t\tclassName=\"text-xs text-blue-600 hover:text-blue-800 underline\"\n\t\t\t>\n\t\t\t\tCancel\n\t\t\t</button>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { ThumbsUp, ThumbsDown } from \"lucide-react\";\n\ninterface SatisfactionRatingProps {\n\tonSubmit: (rating: \"positive\" | \"negative\", comment?: string) => void;\n\tonSkip: () => void;\n}\n\nexport function SatisfactionRating({ onSubmit, onSkip }: SatisfactionRatingProps) {\n\tconst [selected, setSelected] = useState<\"positive\" | \"negative\" | null>(null);\n\tconst [comment, setComment] = useState(\"\");\n\tconst [submitted, setSubmitted] = useState(false);\n\n\tif (submitted) {\n\t\treturn (\n\t\t\t<div className=\"bg-secondary/50 border-t px-4 py-3 text-center\">\n\t\t\t\t<p className=\"text-sm text-muted-foreground\">Thank you for your feedback!</p>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={onSkip}\n\t\t\t\t\tclassName=\"text-xs text-blue-600 hover:underline mt-1\"\n\t\t\t\t>\n\t\t\t\t\tBack to AI Assistant\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"bg-secondary/50 border-t px-4 py-3\">\n\t\t\t<p className=\"text-sm text-foreground/80 text-center mb-2\">How was your experience?</p>\n\t\t\t<div className=\"flex justify-center gap-4 mb-2\">\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={() => setSelected(\"positive\")}\n\t\t\t\t\tclassName={`p-2 rounded-full transition-colors ${\n\t\t\t\t\t\tselected === \"positive\" ? \"bg-green-100 text-green-600\" : \"hover:bg-muted text-muted-foreground\"\n\t\t\t\t\t}`}\n\t\t\t\t>\n\t\t\t\t\t<ThumbsUp className=\"h-5 w-5\" />\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={() => setSelected(\"negative\")}\n\t\t\t\t\tclassName={`p-2 rounded-full transition-colors ${\n\t\t\t\t\t\tselected === \"negative\" ? \"bg-red-100 text-red-600\" : \"hover:bg-muted text-muted-foreground\"\n\t\t\t\t\t}`}\n\t\t\t\t>\n\t\t\t\t\t<ThumbsDown className=\"h-5 w-5\" />\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t{selected && (\n\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t<textarea\n\t\t\t\t\t\tvalue={comment}\n\t\t\t\t\t\tonChange={(e) => setComment(e.target.value)}\n\t\t\t\t\t\tplaceholder=\"Any additional feedback? (optional)\"\n\t\t\t\t\t\tclassName=\"w-full text-xs p-2 border rounded resize-none h-16\"\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"flex justify-center gap-2\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tonSubmit(selected, comment || undefined);\n\t\t\t\t\t\t\t\tsetSubmitted(true);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName=\"text-xs text-white px-3 py-1 rounded\"\n\t\t\t\t\t\t\tstyle={{ backgroundColor: \"var(--ac-primary)\" }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tSubmit\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={onSkip}\n\t\t\t\t\t\t\tclassName=\"text-xs text-muted-foreground hover:underline px-3 py-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tSkip\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!selected && (\n\t\t\t\t<div className=\"text-center\">\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={onSkip}\n\t\t\t\t\t\tclassName=\"text-xs text-muted-foreground hover:underline\"\n\t\t\t\t\t>\n\t\t\t\t\t\tSkip\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"]}
package/dist/core.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { a as ChatConfig } from './types-DKJ_-nbG.cjs';
2
- export { b as ChatEventCallbacks, c as ChatMessage, C as ChatProviderProps, d as ComponentAction, L as Language, e as LiveChatMessage, f as LiveChatState, Q as QuestionConfig, S as SlotMap, i as SlotProps, T as ThemeConfig, g as ToolRendererProps, h as ToolResult } from './types-DKJ_-nbG.cjs';
1
+ import { a as ChatConfig } from './types-DlNwk-bG.cjs';
2
+ export { b as ChatEventCallbacks, c as ChatMessage, C as ChatProviderProps, d as ComponentAction, L as Language, e as LiveChatMessage, f as LiveChatState, Q as QuestionConfig, S as SlotMap, i as SlotProps, T as ThemeConfig, g as ToolRendererProps, h as ToolResult } from './types-DlNwk-bG.cjs';
3
3
  import { ClassValue } from 'clsx';
4
4
  import * as ai from 'ai';
5
5
  export { I as InteractionMetadata, a as InteractionType, T as TrackInteractionParams, U as UseInteractionTrackerOptions, g as generateSessionId, u as useInteractionTracker } from './interaction-tracker-D9P1Oq4j.cjs';
package/dist/core.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { a as ChatConfig } from './types-DKJ_-nbG.js';
2
- export { b as ChatEventCallbacks, c as ChatMessage, C as ChatProviderProps, d as ComponentAction, L as Language, e as LiveChatMessage, f as LiveChatState, Q as QuestionConfig, S as SlotMap, i as SlotProps, T as ThemeConfig, g as ToolRendererProps, h as ToolResult } from './types-DKJ_-nbG.js';
1
+ import { a as ChatConfig } from './types-DlNwk-bG.js';
2
+ export { b as ChatEventCallbacks, c as ChatMessage, C as ChatProviderProps, d as ComponentAction, L as Language, e as LiveChatMessage, f as LiveChatState, Q as QuestionConfig, S as SlotMap, i as SlotProps, T as ThemeConfig, g as ToolRendererProps, h as ToolResult } from './types-DlNwk-bG.js';
3
3
  import { ClassValue } from 'clsx';
4
4
  import * as ai from 'ai';
5
5
  export { I as InteractionMetadata, a as InteractionType, T as TrackInteractionParams, U as UseInteractionTrackerOptions, g as generateSessionId, u as useInteractionTracker } from './interaction-tracker-D9P1Oq4j.js';
package/dist/hooks.cjs CHANGED
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunk5QSXB6UL_cjs = require('./chunk-5QSXB6UL.cjs');
4
+ var chunk3HGOLNGG_cjs = require('./chunk-3HGOLNGG.cjs');
5
5
  var chunkKBGPBUTI_cjs = require('./chunk-KBGPBUTI.cjs');
6
6
  require('./chunk-NG7OTWXQ.cjs');
7
7
  var chunkNYQSM3EB_cjs = require('./chunk-NYQSM3EB.cjs');
8
8
  var chunkP3RPAI4F_cjs = require('./chunk-P3RPAI4F.cjs');
9
9
  require('./chunk-X7R334SB.cjs');
10
10
  var chunk3MP2EGEJ_cjs = require('./chunk-3MP2EGEJ.cjs');
11
- var chunkJ2K7EJYP_cjs = require('./chunk-J2K7EJYP.cjs');
11
+ var chunkBPV66QNM_cjs = require('./chunk-BPV66QNM.cjs');
12
12
  var react = require('react');
13
13
 
14
14
  function useImageLoader() {
@@ -276,7 +276,7 @@ function useMultiOrderTracking() {
276
276
 
277
277
  Object.defineProperty(exports, "useAigentycChat", {
278
278
  enumerable: true,
279
- get: function () { return chunk5QSXB6UL_cjs.useAigentycChat; }
279
+ get: function () { return chunk3HGOLNGG_cjs.useAigentycChat; }
280
280
  });
281
281
  Object.defineProperty(exports, "useInteractionTracker", {
282
282
  enumerable: true,
@@ -304,15 +304,15 @@ Object.defineProperty(exports, "useI18n", {
304
304
  });
305
305
  Object.defineProperty(exports, "useChatContext", {
306
306
  enumerable: true,
307
- get: function () { return chunkJ2K7EJYP_cjs.useChatContext; }
307
+ get: function () { return chunkBPV66QNM_cjs.useChatContext; }
308
308
  });
309
309
  Object.defineProperty(exports, "useSlot", {
310
310
  enumerable: true,
311
- get: function () { return chunkJ2K7EJYP_cjs.useSlot; }
311
+ get: function () { return chunkBPV66QNM_cjs.useSlot; }
312
312
  });
313
313
  Object.defineProperty(exports, "useSlots", {
314
314
  enumerable: true,
315
- get: function () { return chunkJ2K7EJYP_cjs.useSlots; }
315
+ get: function () { return chunkBPV66QNM_cjs.useSlots; }
316
316
  });
317
317
  exports.useImageLoader = useImageLoader;
318
318
  exports.useMultiImageLoader = useMultiImageLoader;
package/dist/hooks.d.cts CHANGED
@@ -1,9 +1,9 @@
1
- export { L as LiveChatReturn, U as UseAigentycChatOptions, a as UseAigentycChatReturn, u as useAigentycChat, b as useChatContext, c as useLiveChat, d as useSlot, e as useSlots } from './SlotsContext-CHvISDJT.cjs';
1
+ export { L as LiveChatReturn, U as UseAigentycChatOptions, b as UseAigentycChatReturn, u as useAigentycChat, c as useChatContext, d as useLiveChat, e as useSlot, f as useSlots } from './SlotsContext-CEOBjzfh.cjs';
2
2
  export { useTheme } from './theme.cjs';
3
3
  export { useI18n } from './i18n.cjs';
4
4
  import { RefObject } from 'react';
5
5
  export { u as useInteractionTracker } from './interaction-tracker-D9P1Oq4j.cjs';
6
- import './types-DKJ_-nbG.cjs';
6
+ import './types-DlNwk-bG.cjs';
7
7
  import 'react/jsx-runtime';
8
8
 
9
9
  /** Information about a preview to display in an embedded panel. */
package/dist/hooks.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- export { L as LiveChatReturn, U as UseAigentycChatOptions, a as UseAigentycChatReturn, u as useAigentycChat, b as useChatContext, c as useLiveChat, d as useSlot, e as useSlots } from './SlotsContext-CBtt36al.js';
1
+ export { L as LiveChatReturn, U as UseAigentycChatOptions, b as UseAigentycChatReturn, u as useAigentycChat, c as useChatContext, d as useLiveChat, e as useSlot, f as useSlots } from './SlotsContext-BjiX1mRx.js';
2
2
  export { useTheme } from './theme.js';
3
3
  export { useI18n } from './i18n.js';
4
4
  import { RefObject } from 'react';
5
5
  export { u as useInteractionTracker } from './interaction-tracker-D9P1Oq4j.js';
6
- import './types-DKJ_-nbG.js';
6
+ import './types-DlNwk-bG.js';
7
7
  import 'react/jsx-runtime';
8
8
 
9
9
  /** Information about a preview to display in an embedded panel. */
package/dist/hooks.js CHANGED
@@ -1,12 +1,12 @@
1
1
  "use client";
2
- export { useAigentycChat } from './chunk-4FBVV64J.js';
2
+ export { useAigentycChat } from './chunk-M4YRNNGB.js';
3
3
  export { useInteractionTracker } from './chunk-MT2AMINB.js';
4
4
  import './chunk-BKDV2H6Z.js';
5
5
  export { useIsMobile, useLiveChat, usePreviewEmbed } from './chunk-5F3O3ZJH.js';
6
6
  export { useTheme } from './chunk-IU7Q7O5G.js';
7
7
  import './chunk-MZQKGNWF.js';
8
8
  export { useI18n } from './chunk-QYCEHFAB.js';
9
- export { useChatContext, useSlot, useSlots } from './chunk-FYPJSHCL.js';
9
+ export { useChatContext, useSlot, useSlots } from './chunk-FPQ3UCCJ.js';
10
10
  import { useState, useCallback, useMemo, useEffect } from 'react';
11
11
 
12
12
  function useImageLoader() {
package/dist/i18n.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
- export { L as Language } from './types-DKJ_-nbG.cjs';
3
+ export { L as Language } from './types-DlNwk-bG.cjs';
4
4
 
5
5
  /**
6
6
  * All supported translation keys.
package/dist/i18n.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
- export { L as Language } from './types-DKJ_-nbG.js';
3
+ export { L as Language } from './types-DlNwk-bG.js';
4
4
 
5
5
  /**
6
6
  * All supported translation keys.