@aigentyc/chat-sdk 0.2.5 → 0.3.1

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 (119) 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/{JsonRenderResult-Ftw4AKwb.d.cts → JsonRenderResult-D6ogds0_.d.cts} +8 -1
  9. package/dist/{JsonRenderResult-Ftw4AKwb.d.ts → JsonRenderResult-D6ogds0_.d.ts} +8 -1
  10. package/dist/JsonRenderResult-GCNFMZYP.js +6 -0
  11. package/dist/{JsonRenderResult-ZFJ6VWMS.js.map → JsonRenderResult-GCNFMZYP.js.map} +1 -1
  12. package/dist/JsonRenderResult-II3IBENS.cjs +15 -0
  13. package/dist/{JsonRenderResult-GQOYPLVH.cjs.map → JsonRenderResult-II3IBENS.cjs.map} +1 -1
  14. package/dist/{SlotsContext-CBtt36al.d.ts → SlotsContext-BjiX1mRx.d.ts} +17 -2
  15. package/dist/{SlotsContext-CHvISDJT.d.cts → SlotsContext-CEOBjzfh.d.cts} +17 -2
  16. package/dist/ai-elements.cjs +114 -393
  17. package/dist/ai-elements.cjs.map +1 -1
  18. package/dist/ai-elements.d.cts +2 -31
  19. package/dist/ai-elements.d.ts +2 -31
  20. package/dist/ai-elements.js +9 -291
  21. package/dist/ai-elements.js.map +1 -1
  22. package/dist/{chunk-5QSXB6UL.cjs → chunk-3HGOLNGG.cjs} +13 -4
  23. package/dist/chunk-3HGOLNGG.cjs.map +1 -0
  24. package/dist/{chunk-KVEJAPWA.js → chunk-3KSMOHNY.js} +48 -62
  25. package/dist/chunk-3KSMOHNY.js.map +1 -0
  26. package/dist/chunk-4WOBNRRB.cjs +540 -0
  27. package/dist/chunk-4WOBNRRB.cjs.map +1 -0
  28. package/dist/{chunk-MC6QDYB6.cjs → chunk-5XF7KH6B.cjs} +166 -67
  29. package/dist/chunk-5XF7KH6B.cjs.map +1 -0
  30. package/dist/chunk-7AZMWPKX.cjs +35 -0
  31. package/dist/chunk-7AZMWPKX.cjs.map +1 -0
  32. package/dist/{chunk-DMGYQ6NN.cjs → chunk-7IFBPXT3.cjs} +95 -8
  33. package/dist/chunk-7IFBPXT3.cjs.map +1 -0
  34. package/dist/{chunk-U3FXVLUK.js → chunk-AD6XWKWB.js} +93 -6
  35. package/dist/chunk-AD6XWKWB.js.map +1 -0
  36. package/dist/chunk-B27JIQ4Z.js +528 -0
  37. package/dist/chunk-B27JIQ4Z.js.map +1 -0
  38. package/dist/{chunk-J2K7EJYP.cjs → chunk-BPV66QNM.cjs} +6 -4
  39. package/dist/chunk-BPV66QNM.cjs.map +1 -0
  40. package/dist/{chunk-FYPJSHCL.js → chunk-FPQ3UCCJ.js} +6 -4
  41. package/dist/chunk-FPQ3UCCJ.js.map +1 -0
  42. package/dist/{chunk-J2H6MLQF.cjs → chunk-H7C3AGA2.cjs} +17 -6
  43. package/dist/chunk-H7C3AGA2.cjs.map +1 -0
  44. package/dist/{chunk-7L4FS6G7.js → chunk-JHWSG5IB.js} +17 -3
  45. package/dist/chunk-JHWSG5IB.js.map +1 -0
  46. package/dist/{chunk-4FBVV64J.js → chunk-M4YRNNGB.js} +13 -4
  47. package/dist/chunk-M4YRNNGB.js.map +1 -0
  48. package/dist/{chunk-QDFPJJ5Y.cjs → chunk-OU5OZKYH.cjs} +50 -65
  49. package/dist/chunk-OU5OZKYH.cjs.map +1 -0
  50. package/dist/{chunk-C24QG43M.cjs → chunk-TZ7EM3EG.cjs} +17 -2
  51. package/dist/chunk-TZ7EM3EG.cjs.map +1 -0
  52. package/dist/chunk-XEAAB5ZM.js +32 -0
  53. package/dist/chunk-XEAAB5ZM.js.map +1 -0
  54. package/dist/{chunk-FOZXDUSZ.js → chunk-YG2COKFR.js} +151 -54
  55. package/dist/chunk-YG2COKFR.js.map +1 -0
  56. package/dist/{chunk-RPDJXB3U.js → chunk-ZXP7IYRC.js} +17 -6
  57. package/dist/chunk-ZXP7IYRC.js.map +1 -0
  58. package/dist/components.cjs +31 -52
  59. package/dist/components.cjs.map +1 -1
  60. package/dist/components.d.cts +4 -34
  61. package/dist/components.d.ts +4 -34
  62. package/dist/components.js +18 -42
  63. package/dist/components.js.map +1 -1
  64. package/dist/core.d.cts +2 -2
  65. package/dist/core.d.ts +2 -2
  66. package/dist/hooks.cjs +6 -6
  67. package/dist/hooks.d.cts +2 -2
  68. package/dist/hooks.d.ts +2 -2
  69. package/dist/hooks.js +2 -2
  70. package/dist/i18n.d.cts +1 -1
  71. package/dist/i18n.d.ts +1 -1
  72. package/dist/index.cjs +45 -23
  73. package/dist/index.cjs.map +1 -1
  74. package/dist/index.d.cts +51 -6
  75. package/dist/index.d.ts +51 -6
  76. package/dist/index.js +17 -10
  77. package/dist/index.js.map +1 -1
  78. package/dist/json-render.cjs +4 -4
  79. package/dist/json-render.d.cts +1 -1
  80. package/dist/json-render.d.ts +1 -1
  81. package/dist/json-render.js +1 -1
  82. package/dist/llms-full.txt +195 -15
  83. package/dist/message-feedback-BFh3-qym.d.cts +92 -0
  84. package/dist/message-feedback-cWR0NVok.d.ts +92 -0
  85. package/dist/normalize-KzCLLqpU.d.cts +42 -0
  86. package/dist/normalize-KzCLLqpU.d.ts +42 -0
  87. package/dist/styles.css +1 -1
  88. package/dist/theme.d.cts +1 -1
  89. package/dist/theme.d.ts +1 -1
  90. package/dist/tools.cjs +16 -7
  91. package/dist/tools.d.cts +4 -3
  92. package/dist/tools.d.ts +4 -3
  93. package/dist/tools.js +4 -3
  94. package/dist/{types-DKJ_-nbG.d.ts → types-DlNwk-bG.d.cts} +33 -3
  95. package/dist/{types-DKJ_-nbG.d.cts → types-DlNwk-bG.d.ts} +33 -3
  96. package/dist/ui.cjs +45 -45
  97. package/dist/ui.js +2 -2
  98. package/llms.txt +175 -5
  99. package/package.json +2 -1
  100. package/dist/JsonRenderResult-GQOYPLVH.cjs +0 -15
  101. package/dist/JsonRenderResult-ZFJ6VWMS.js +0 -6
  102. package/dist/chunk-4FBVV64J.js.map +0 -1
  103. package/dist/chunk-5QSXB6UL.cjs.map +0 -1
  104. package/dist/chunk-7L4FS6G7.js.map +0 -1
  105. package/dist/chunk-A7PCSWIK.js +0 -219
  106. package/dist/chunk-A7PCSWIK.js.map +0 -1
  107. package/dist/chunk-C24QG43M.cjs.map +0 -1
  108. package/dist/chunk-DMGYQ6NN.cjs.map +0 -1
  109. package/dist/chunk-FOZXDUSZ.js.map +0 -1
  110. package/dist/chunk-FYPJSHCL.js.map +0 -1
  111. package/dist/chunk-J2H6MLQF.cjs.map +0 -1
  112. package/dist/chunk-J2K7EJYP.cjs.map +0 -1
  113. package/dist/chunk-KVEJAPWA.js.map +0 -1
  114. package/dist/chunk-MC6QDYB6.cjs.map +0 -1
  115. package/dist/chunk-QDFPJJ5Y.cjs.map +0 -1
  116. package/dist/chunk-RPDJXB3U.js.map +0 -1
  117. package/dist/chunk-RTVEBPAJ.cjs +0 -230
  118. package/dist/chunk-RTVEBPAJ.cjs.map +0 -1
  119. package/dist/chunk-U3FXVLUK.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ChatHeader.tsx","../src/components/ChatInput.tsx","../src/components/ChatFooter.tsx","../src/components/WelcomePage.tsx","../src/components/QuickQuestions.tsx","../src/components/CartDrawer.tsx","../src/components/SystemMessage.tsx","../src/ai-elements/error-boundary.tsx","../src/components/ChatInterface.tsx","../src/components/FloatingButton.tsx","../src/components/LiveChatPanel.tsx","../src/components/PreviewEmbedPanel.tsx"],"names":["ChatHeader","memo","ChatInput","jsxs","jsx","useState","Fragment","useRef","useEffect","X","ShoppingCart","Plus","useCallback","MessageSquare","Headset"],"mappings":"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","file":"chunk-YG2COKFR.js","sourcesContent":["\"use client\";\n\nimport { memo } from \"react\";\nimport { ArrowLeft, Plus, ShoppingCart, X } from \"lucide-react\";\n// TODO: BotIcon — we use a small inline fallback instead of a shared icon export.\nimport { cn } from \"../core/utils\";\nimport { useI18n } from \"../hooks/use-i18n\";\nimport { useChatContext } from \"../hooks/use-chat-context\";\n\ninterface ChatHeaderProps {\n\tisWelcome?: boolean;\n\tonNewConversation?: () => void;\n\tonClose?: () => void;\n\tclientName?: string;\n\tlogoUrl?: string;\n\tcartCount?: number;\n\tonCartClick?: () => void;\n}\n\nfunction BotIcon({ className }: { className?: string }) {\n\treturn (\n\t\t<svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n\t\t\t<rect x=\"3\" y=\"8\" width=\"18\" height=\"12\" rx=\"2\" />\n\t\t\t<circle cx=\"8.5\" cy=\"14\" r=\"1\" />\n\t\t\t<circle cx=\"15.5\" cy=\"14\" r=\"1\" />\n\t\t\t<path d=\"M12 4v4\" />\n\t\t\t<path d=\"M8 2h8\" />\n\t\t</svg>\n\t);\n}\n\nexport const ChatHeader = memo(function ChatHeader({\n\tisWelcome = false,\n\tonNewConversation,\n\tonClose,\n\tclientName,\n\tlogoUrl,\n\tcartCount,\n\tonCartClick,\n}: ChatHeaderProps) {\n\tconst { t, direction } = useI18n();\n\t// Fall back to context clientName if not overridden by props\n\tconst ctx = useChatContext();\n\tconst displayName = clientName || ctx.config.clientName || \"AI Assistant\";\n\n\tconst LogoOrIcon = () => {\n\t\tif (logoUrl) {\n\t\t\treturn (\n\t\t\t\t<img\n\t\t\t\t\tsrc={logoUrl}\n\t\t\t\t\talt={displayName}\n\t\t\t\t\tclassName=\"max-h-[40px] w-auto max-w-[120px] object-contain\"\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t\treturn <BotIcon className=\"w-6 h-6\" />;\n\t};\n\n\tconst SmallLogoOrIcon = () => {\n\t\tif (logoUrl) {\n\t\t\treturn (\n\t\t\t\t<img\n\t\t\t\t\tsrc={logoUrl}\n\t\t\t\t\talt={displayName}\n\t\t\t\t\tclassName=\"h-5 w-auto max-w-[100px] object-contain\"\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t\treturn <BotIcon className=\"w-5 h-5\" />;\n\t};\n\n\tconst handleCloseAction = () => {\n\t\tonClose?.();\n\t\tif (typeof document !== \"undefined\") {\n\t\t\tconst event = new CustomEvent(\"aigentyc:close-chat\", {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t});\n\t\t\tdocument.dispatchEvent(event);\n\t\t}\n\t};\n\n\tif (isWelcome) {\n\t\treturn (\n\t\t\t<header\n\t\t\t\tclassName=\"flex items-center justify-between px-6 py-4 border-b\"\n\t\t\t\tstyle={{ background: \"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={handleCloseAction}\n\t\t\t\t\tclassName=\"p-1 hover:bg-secondary rounded transition-colors\"\n\t\t\t\t>\n\t\t\t\t\t<X className=\"w-6 h-6\" />\n\t\t\t\t</button>\n\t\t\t\t{logoUrl ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<span className=\"text-lg font-medium\">{displayName}</span>\n\t\t\t\t\t\t<LogoOrIcon />\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<span className=\"text-lg font-medium\">{displayName}</span>\n\t\t\t\t)}\n\t\t\t\t{!logoUrl && <BotIcon className=\"w-6 h-6\" />}\n\t\t\t</header>\n\t\t);\n\t}\n\n\treturn (\n\t\t<header\n\t\t\tclassName=\"flex items-center justify-between px-6 py-4 border-b\"\n\t\t\tstyle={{ background: \"var(--ac-background)\", borderColor: \"var(--ac-border)\" }}\n\t\t>\n\t\t\t<div className=\"flex items-center gap-4\">\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={onNewConversation}\n\t\t\t\t\tclassName=\"p-2 hover:bg-secondary rounded-lg transition-colors\"\n\t\t\t\t\ttitle={t(\"backToStart\")}\n\t\t\t\t>\n\t\t\t\t\t<ArrowLeft className={cn(\"w-5 h-5\", direction === \"rtl\" && \"rotate-180\")} />\n\t\t\t\t</button>\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<SmallLogoOrIcon />\n\t\t\t\t\t{!logoUrl && <span className=\"font-medium text-sm\">{displayName}</span>}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t{cartCount !== undefined && cartCount >= 0 && onCartClick && (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={onCartClick}\n\t\t\t\t\t\tclassName=\"relative p-2 hover:bg-secondary rounded-lg transition-colors\"\n\t\t\t\t\t\ttitle={t(\"cart\" as never)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ShoppingCart className=\"w-5 h-5\" />\n\t\t\t\t\t\t{cartCount > 0 && (\n\t\t\t\t\t\t\t<span className=\"absolute -top-0.5 -end-0.5 min-w-[18px] h-[18px] flex items-center justify-center bg-red-500 text-white text-[10px] font-bold rounded-full px-1\">\n\t\t\t\t\t\t\t\t{cartCount}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={onNewConversation}\n\t\t\t\t\tclassName=\"p-2 hover:bg-secondary rounded-lg transition-colors\"\n\t\t\t\t\ttitle={t(\"newConversation\")}\n\t\t\t\t>\n\t\t\t\t\t<Plus className=\"w-5 h-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={handleCloseAction}\n\t\t\t\t\tclassName=\"p-2 hover:bg-secondary rounded-lg transition-colors\"\n\t\t\t\t\ttitle={t(\"closeChat\")}\n\t\t\t\t>\n\t\t\t\t\t<X className=\"w-5 h-5\" />\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</header>\n\t);\n});\n","\"use client\";\n\nimport { useState, memo } from \"react\";\nimport { useI18n } from \"../hooks/use-i18n\";\n\ninterface ChatInputProps {\n\tvalue: string;\n\tonChange: (value: string) => void;\n\tonSubmit: (value: string) => void;\n\tisProcessing?: boolean;\n\tplaceholder?: string;\n}\n\nexport const ChatInput = memo(function ChatInput({\n\tvalue,\n\tonChange,\n\tonSubmit,\n\tisProcessing = false,\n\tplaceholder,\n}: ChatInputProps) {\n\tconst [isFocused, setIsFocused] = useState(false);\n\tconst { t, direction } = useI18n();\n\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\tif (e.key === \"Enter\" && value.trim() && !isProcessing) {\n\t\t\te.preventDefault();\n\t\t\tonSubmit(value);\n\t\t}\n\t};\n\n\tconst hasValue = value.trim().length > 0;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`\n\t\t\t\trelative flex items-center gap-3\n\t\t\t\trounded-2xl\n\t\t\t\tborder-2 transition-all duration-300\n\t\t\t\t${isFocused\n\t\t\t\t\t? \"shadow-lg\"\n\t\t\t\t\t: \"shadow-md hover:shadow-lg\"\n\t\t\t\t}\n\t\t\t\tps-4 md:ps-5 pe-1.5 md:pe-2\n\t\t\t`}\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: \"var(--ac-background)\",\n\t\t\t\tborderColor: isFocused ? \"var(--ac-primary)\" : \"var(--ac-border, #e8e8e8)\",\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"shrink-0 transition-colors duration-300\"\n\t\t\t\tstyle={{ color: isFocused ? \"var(--ac-primary)\" : \"#a0a0a0\" }}\n\t\t\t>\n\t\t\t\t<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n\t\t\t\t\t<circle cx=\"11\" cy=\"11\" r=\"8\" />\n\t\t\t\t\t<path d=\"m21 21-4.3-4.3\" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\n\t\t\t<input\n\t\t\t\tdir={direction}\n\t\t\t\ttype=\"text\"\n\t\t\t\tvalue={value}\n\t\t\t\tonChange={(e) => onChange(e.target.value)}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\tonFocus={() => setIsFocused(true)}\n\t\t\t\tonBlur={() => setIsFocused(false)}\n\t\t\t\tdisabled={isProcessing}\n\t\t\t\tplaceholder={placeholder || t(\"typeMessage\")}\n\t\t\t\tclassName=\"\n\t\t\t\t\tflex-1 bg-transparent text-start\n\t\t\t\t\toutline-none text-base\n\t\t\t\t\tmin-h-[52px] md:min-h-[60px]\n\t\t\t\t\tdisabled:opacity-50\n\t\t\t\t\"\n\t\t\t\tstyle={{ color: \"var(--ac-text)\" }}\n\t\t\t/>\n\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tonClick={() => onSubmit(value)}\n\t\t\t\tdisabled={!hasValue || isProcessing}\n\t\t\t\tclassName={`\n\t\t\t\t\tgroup relative flex items-center justify-center\n\t\t\t\t\tw-10 h-10 md:w-12 md:h-12\n\t\t\t\t\trounded-xl shrink-0\n\t\t\t\t\ttransition-all duration-300 overflow-hidden\n\t\t\t\t\t${hasValue && !isProcessing ? \"shadow-md hover:shadow-lg hover:scale-105\" : \"cursor-not-allowed\"}\n\t\t\t\t\tdisabled:hover:scale-100\n\t\t\t\t`}\n\t\t\t\tstyle={{\n\t\t\t\t\tbackgroundColor: hasValue && !isProcessing ? \"var(--ac-primary)\" : \"#f0f0f0\",\n\t\t\t\t\tcolor: hasValue && !isProcessing ? \"var(--ac-primary-foreground, #fff)\" : \"#a0a0a0\",\n\t\t\t\t}}\n\t\t\t\ttitle={t(\"send\")}\n\t\t\t>\n\t\t\t\t{isProcessing ? (\n\t\t\t\t\t<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n\t\t\t\t\t\t<rect x=\"6\" y=\"6\" width=\"12\" height=\"12\" rx=\"2\" />\n\t\t\t\t\t</svg>\n\t\t\t\t) : (\n\t\t\t\t\t<svg\n\t\t\t\t\t\tclassName={`w-5 h-5 md:w-6 md:h-6 relative z-10 transition-transform duration-300 group-hover:translate-x-0.5 ${direction === \"rtl\" ? \"rotate-180\" : \"\"}`}\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstrokeWidth=\"2.5\"\n\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<path d=\"M5 12h14\" />\n\t\t\t\t\t\t<path d=\"m12 5 7 7-7 7\" />\n\t\t\t\t\t</svg>\n\t\t\t\t)}\n\t\t\t</button>\n\t\t</div>\n\t);\n});\n","\"use client\";\n\nimport { useI18n } from \"../hooks/use-i18n\";\n\ninterface ChatFooterProps {\n\tfooterText?: string;\n}\n\nexport function ChatFooter({ footerText }: ChatFooterProps) {\n\tconst { t } = useI18n();\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"flex flex-wrap items-center justify-center gap-1.5 sm:gap-2 py-2 sm:py-3 text-xs sm:text-sm px-4\"\n\t\t\tstyle={{ color: \"var(--ac-chat-footer-text, #c4c4c4)\" }}\n\t\t>\n\t\t\t<span className=\"text-center\">{footerText || t(\"alwaysVerify\")}</span>\n\t\t\t<span className=\"hidden sm:inline\">|</span>\n\t\t\t<span className=\"hidden sm:inline\">{t(\"poweredBy\")}</span>\n\t\t\t<a\n\t\t\t\thref=\"https://aigentyc.ai/\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\tclassName=\"font-semibold tracking-tight hover:underline\"\n\t\t\t\tstyle={{ color: \"var(--ac-text, inherit)\" }}\n\t\t\t>\n\t\t\t\taiGentyc\n\t\t\t</a>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { useState, useEffect, useRef } from \"react\";\nimport {\n\tMessageSquare,\n\tZap,\n\tShield,\n\tSearch,\n\tHelpCircle,\n\tFileText,\n\tUsers,\n\tSettings,\n\tUtensils,\n\tCoffee,\n\tHotel,\n\tMapPin,\n\tCalendar,\n\tStar,\n\tHeart,\n\tBuilding,\n\tFlag,\n\tFerrisWheel,\n\tTicket,\n\ttype LucideIcon,\n} from \"lucide-react\";\nimport { cn } from \"../core/utils\";\nimport { useIsMobile } from \"../hooks/use-mobile\";\nimport { useI18n } from \"../hooks/use-i18n\";\nimport type { QuestionConfig } from \"../core/types\";\n\nconst ICON_MAP: Record<string, LucideIcon> = {\n\tShield, MessageSquare, Zap, Search, HelpCircle, FileText, Users, Settings,\n\tUtensils, Coffee, Hotel, MapPin, Calendar, Star, Heart, Building, Flag, FerrisWheel, Ticket,\n};\n\ninterface WelcomePageProps {\n\tonSelectCategory: (category: string, hideMessage?: boolean) => void;\n\tisProcessing?: boolean;\n\tclientName?: string;\n\tisOpen?: boolean;\n\tquestions?: QuestionConfig[];\n\twelcomeTitle?: string;\n\twelcomeSubtitle?: string;\n\thideWelcomeHeader?: boolean;\n\tloading?: boolean;\n\tquestionsLayout?: \"vertical\" | \"horizontal\";\n\tquestionsLayoutMobile?: \"vertical\" | \"horizontal\";\n}\n\ntype DefaultActionKey =\n\t| \"aboutUs\" | \"aboutUsDesc\" | \"aboutUsQuery\"\n\t| \"support\" | \"supportDesc\" | \"supportQuery\"\n\t| \"features\" | \"featuresDesc\" | \"featuresQuery\"\n\t| \"search\" | \"searchDesc\" | \"searchQuery\";\n\nconst DEFAULT_ACTIONS: { id: string; label: DefaultActionKey; description: DefaultActionKey; icon: LucideIcon; query: DefaultActionKey }[] = [\n\t{ id: \"about\", label: \"aboutUs\", description: \"aboutUsDesc\", icon: Shield, query: \"aboutUsQuery\" },\n\t{ id: \"support\", label: \"support\", description: \"supportDesc\", icon: MessageSquare, query: \"supportQuery\" },\n\t{ id: \"features\", label: \"features\", description: \"featuresDesc\", icon: Zap, query: \"featuresQuery\" },\n\t{ id: \"search\", label: \"search\", description: \"searchDesc\", icon: Search, query: \"searchQuery\" },\n];\n\nexport function WelcomePage({\n\tonSelectCategory,\n\tisProcessing = false,\n\tisOpen = true,\n\tclientName,\n\tquestions,\n\twelcomeTitle,\n\twelcomeSubtitle,\n\thideWelcomeHeader = false,\n\tloading = false,\n\tquestionsLayout = \"vertical\",\n\tquestionsLayoutMobile,\n}: WelcomePageProps) {\n\tconst isMobile = useIsMobile();\n\tconst { t } = useI18n();\n\tconst layout = isMobile && questionsLayoutMobile ? questionsLayoutMobile : questionsLayout;\n\tconst isHorizontal = layout === \"horizontal\";\n\tconst [shouldAnimate, setShouldAnimate] = useState(false);\n\tconst wasOpenRef = useRef(false);\n\n\tconst hasCustomQuestions = questions && questions.length > 0;\n\n\tuseEffect(() => {\n\t\tif (isMobile && isOpen && !wasOpenRef.current) {\n\t\t\tconst timer = setTimeout(() => setShouldAnimate(true), 350);\n\t\t\twasOpenRef.current = true;\n\t\t\treturn () => clearTimeout(timer);\n\t\t}\n\t\tif (!isOpen) {\n\t\t\tsetShouldAnimate(false);\n\t\t\twasOpenRef.current = false;\n\t\t}\n\t}, [isMobile, isOpen]);\n\n\tconst handleActionClick = (action: typeof DEFAULT_ACTIONS[0]) => {\n\t\tif (isProcessing) return;\n\t\tonSelectCategory(t(action.query as never, { clientName } as never) as string, true);\n\t};\n\n\tconst handleCustomQuestionClick = (question: QuestionConfig) => {\n\t\tif (isProcessing) return;\n\t\tonSelectCategory(question.query, true);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"flex flex-col items-center flex-1 min-h-0 overflow-y-auto px-5 sm:px-[40px] py-6 sm:py-12\"\n\t\t\tstyle={{ backgroundColor: \"var(--ac-background)\" }}\n\t\t>\n\t\t\t<div className=\"flex flex-col items-center gap-4 sm:gap-8 w-full my-auto\">\n\t\t\t\t{!hideWelcomeHeader && (\n\t\t\t\t\t<div className=\"text-center max-w-md\">\n\t\t\t\t\t\t{loading ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<div className=\"h-8 sm:h-9 bg-muted rounded-lg w-3/4 mx-auto mb-3 animate-pulse\" />\n\t\t\t\t\t\t\t\t<div className=\"h-5 bg-muted rounded w-full mx-auto animate-pulse\" />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<h1 className=\"text-[26px] sm:text-[32px] font-semibold mb-2 sm:mb-3\" style={{ color: \"var(--ac-text)\" }}>\n\t\t\t\t\t\t\t\t\t{welcomeTitle || t(\"welcomeTitle\", { clientName } as never)}\n\t\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t\t<p className=\"text-[15px] sm:text-lg text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t{welcomeSubtitle || t(\"welcomeSubtitle\", { clientName } as never)}\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"grid grid-cols-2 gap-3 w-full max-w-2xl\">\n\t\t\t\t\t{loading ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{[1, 2, 3, 4].map((i) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\"flex gap-3 p-4 border rounded-2xl animate-pulse\",\n\t\t\t\t\t\t\t\t\t\tisHorizontal ? \"flex-row items-center\" : \"flex-col items-center\",\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\tstyle={{ backgroundColor: \"var(--ac-background)\", borderColor: \"var(--ac-border)\" }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div className=\"w-10 h-10 rounded-lg bg-muted shrink-0\" />\n\t\t\t\t\t\t\t\t\t<div className={cn(\"flex flex-col gap-1.5 w-full\", !isHorizontal && \"items-center\")}>\n\t\t\t\t\t\t\t\t\t\t<div className=\"h-4 bg-muted rounded w-3/4\" />\n\t\t\t\t\t\t\t\t\t\t<div className=\"h-3 bg-muted rounded w-1/2\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : hasCustomQuestions ? (\n\t\t\t\t\t\tquestions.map((question, index) => {\n\t\t\t\t\t\t\tconst Icon = question.icon ? ICON_MAP[question.icon] || HelpCircle : null;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tkey={question.id}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tonClick={() => handleCustomQuestionClick(question)}\n\t\t\t\t\t\t\t\t\tdisabled={isProcessing}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\"group relative w-full active:scale-[0.98] disabled:opacity-50 disabled:cursor-not-allowed transition-all duration-200\",\n\t\t\t\t\t\t\t\t\t\t\"flex gap-3 p-4\",\n\t\t\t\t\t\t\t\t\t\t\"border rounded-2xl shadow-sm hover:bg-accent\",\n\t\t\t\t\t\t\t\t\t\tisHorizontal ? \"flex-row items-center text-start\" : \"flex-col items-center text-center\",\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: question.bgColor || \"var(--ac-background)\",\n\t\t\t\t\t\t\t\t\t\tborderColor: \"var(--ac-border)\",\n\t\t\t\t\t\t\t\t\t\t...(isMobile\n\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\topacity: shouldAnimate ? 1 : 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransform: shouldAnimate ? \"translateY(0)\" : \"translateY(8px)\",\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransition: \"opacity 300ms ease-out, transform 300ms ease-out, background-color 150ms\",\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransitionDelay: shouldAnimate ? `${index * 60}ms` : \"0ms\",\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{Icon && (\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"flex items-center justify-center shrink-0 w-10 h-10 rounded-lg transition-all duration-200\"\n\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: question.iconBgColor || \"color-mix(in srgb, var(--ac-primary) 10%, transparent)\",\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"w-5 h-5\"\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ color: question.iconColor || \"var(--ac-primary)\" }}\n\t\t\t\t\t\t\t\t\t\t\t\tstrokeWidth={2}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t<div className={cn(\"flex flex-col gap-0.5 min-w-0 w-full\", !isHorizontal && \"items-center\")}>\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"font-semibold text-[13px] sm:text-[14px] leading-snug\"\n\t\t\t\t\t\t\t\t\t\t\tstyle={{ color: question.textColor || \"var(--ac-text)\" }}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{question.label}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t{question.description && (\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-[11px] sm:text-[12px] leading-snug text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t{question.description}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})\n\t\t\t\t\t) : (\n\t\t\t\t\t\tDEFAULT_ACTIONS.map((action, index) => {\n\t\t\t\t\t\t\tconst Icon = action.icon;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tkey={action.id}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tonClick={() => handleActionClick(action)}\n\t\t\t\t\t\t\t\t\tdisabled={isProcessing}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\"group relative w-full active:scale-[0.98] disabled:opacity-50 disabled:cursor-not-allowed transition-all duration-200\",\n\t\t\t\t\t\t\t\t\t\t\"flex gap-3 p-4\",\n\t\t\t\t\t\t\t\t\t\t\"border rounded-2xl shadow-sm hover:bg-accent hover:shadow-md\",\n\t\t\t\t\t\t\t\t\t\tisHorizontal ? \"flex-row items-center text-start\" : \"flex-col items-center text-center\",\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: \"var(--ac-background)\",\n\t\t\t\t\t\t\t\t\t\tborderColor: \"var(--ac-border)\",\n\t\t\t\t\t\t\t\t\t\t...(isMobile\n\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\topacity: shouldAnimate ? 1 : 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransform: shouldAnimate ? \"translateY(0)\" : \"translateY(8px)\",\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransition: \"opacity 300ms ease-out, transform 300ms ease-out, background-color 150ms\",\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransitionDelay: shouldAnimate ? `${index * 60}ms` : \"0ms\",\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclassName=\"flex items-center justify-center shrink-0 w-10 h-10 rounded-lg transition-all duration-200\"\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: \"color-mix(in srgb, var(--ac-primary) 10%, transparent)\",\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Icon className=\"w-5 h-5\" style={{ color: \"var(--ac-primary)\" }} strokeWidth={2} />\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<div className={cn(\"flex flex-col gap-0.5 min-w-0 w-full\", !isHorizontal && \"items-center\")}>\n\t\t\t\t\t\t\t\t\t\t<span className=\"font-semibold text-[13px] sm:text-[14px] leading-snug\" style={{ color: \"var(--ac-text)\" }}>\n\t\t\t\t\t\t\t\t\t\t\t{t(action.label as never, { clientName } as never)}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t<span className=\"text-[11px] sm:text-[12px] text-muted-foreground leading-snug\">\n\t\t\t\t\t\t\t\t\t\t\t{t(action.description as never, { clientName } as never)}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { useState, useEffect, useRef } from \"react\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../core/utils\";\nimport { useI18n } from \"../hooks/use-i18n\";\nimport type { QuestionConfig } from \"../core/types\";\n\ninterface QuickQuestionsProps {\n\tquestions: QuestionConfig[];\n\tonSelect: (query: string) => void;\n\tisProcessing?: boolean;\n\t/** A key that changes when the page changes, so we can re-show dismissed questions */\n\tpageKey?: string;\n}\n\nexport function QuickQuestions({ questions, onSelect, isProcessing = false, pageKey }: QuickQuestionsProps) {\n\tconst [dismissed, setDismissed] = useState(false);\n\tconst prevPageKeyRef = useRef(pageKey);\n\tconst scrollRef = useRef<HTMLDivElement>(null);\n\tconst { direction } = useI18n();\n\n\tuseEffect(() => {\n\t\tif (prevPageKeyRef.current !== pageKey) {\n\t\t\tsetDismissed(false);\n\t\t\tprevPageKeyRef.current = pageKey;\n\t\t}\n\t}, [pageKey]);\n\n\tif (dismissed || questions.length === 0) return null;\n\n\tconst isRtl = direction === \"rtl\";\n\n\treturn (\n\t\t<div className=\"pb-2.5 pt-1\">\n\t\t\t<div className=\"relative\">\n\t\t\t\t<div\n\t\t\t\t\tref={scrollRef}\n\t\t\t\t\tclassName={cn(\"flex gap-2 overflow-x-auto pb-1 scrollbar-none\", isRtl && \"flex-row-reverse\")}\n\t\t\t\t\tstyle={{ scrollbarWidth: \"none\", msOverflowStyle: \"none\" }}\n\t\t\t\t>\n\t\t\t\t\t{questions.map((q, index) => (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tkey={q.id}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={() => onSelect(q.query)}\n\t\t\t\t\t\t\tdisabled={isProcessing}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"group relative shrink-0\",\n\t\t\t\t\t\t\t\t\"flex items-center gap-2 px-4 py-2.5\",\n\t\t\t\t\t\t\t\t\"text-[13px] leading-tight\",\n\t\t\t\t\t\t\t\t\"border rounded-2xl\",\n\t\t\t\t\t\t\t\t\"hover:shadow-sm\",\n\t\t\t\t\t\t\t\t\"active:scale-[0.98] transition-all duration-150\",\n\t\t\t\t\t\t\t\t\"disabled:opacity-50 disabled:cursor-not-allowed\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tbackgroundColor: \"var(--ac-background)\",\n\t\t\t\t\t\t\t\tborderColor: \"var(--ac-border)\",\n\t\t\t\t\t\t\t\tcolor: \"var(--ac-text)\",\n\t\t\t\t\t\t\t\tanimationDelay: `${index * 40}ms`,\n\t\t\t\t\t\t\t\tanimation: \"quickq-in 0.25s ease-out both\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"whitespace-nowrap\">{q.label}</span>\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\"w-3.5 h-3.5 shrink-0 opacity-50 group-hover:opacity-100 transition-all duration-150\",\n\t\t\t\t\t\t\t\t\t\"group-hover:translate-x-0.5\",\n\t\t\t\t\t\t\t\t\tisRtl && \"rotate-180 group-hover:-translate-x-0.5\",\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\tstyle={{ color: \"var(--ac-primary)\" }}\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"2.5\"\n\t\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<path d=\"M5 12h14\" />\n\t\t\t\t\t\t\t\t<path d=\"m12 5 7 7-7 7\" />\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t))}\n\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={() => setDismissed(true)}\n\t\t\t\t\t\tclassName=\"shrink-0 flex items-center justify-center w-8 h-8 my-auto rounded-full hover:bg-accent transition-colors duration-150\"\n\t\t\t\t\t\ttitle={isRtl ? \"סגור\" : \"Dismiss\"}\n\t\t\t\t\t>\n\t\t\t\t\t\t<X className=\"w-3.5 h-3.5\" />\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<style>{`\n\t\t\t\t@keyframes quickq-in {\n\t\t\t\t\tfrom { opacity: 0; transform: translateY(6px); }\n\t\t\t\t\tto { opacity: 1; transform: translateY(0); }\n\t\t\t\t}\n\t\t\t\t.scrollbar-none::-webkit-scrollbar { display: none; }\n\t\t\t`}</style>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { X, Minus, Plus, Trash2, ShoppingCart } from \"lucide-react\";\nimport { useI18n } from \"../hooks/use-i18n\";\n\ninterface CartItem {\n\tkey: string;\n\tid: number;\n\tname: string;\n\tquantity: number;\n\tprices: {\n\t\tprice: string;\n\t\tregular_price: string;\n\t\tsale_price: string;\n\t\tcurrency_minor_unit: number;\n\t\tcurrency_symbol: string;\n\t\tcurrency_code: string;\n\t};\n\ttotals: {\n\t\tline_total: string;\n\t\tcurrency_minor_unit: number;\n\t};\n\timages: Array<{ src: string; thumbnail: string; alt: string }>;\n}\n\ninterface CartData {\n\titems: CartItem[];\n\titems_count: number;\n\ttotals: {\n\t\ttotal_price: string;\n\t\tcurrency_minor_unit: number;\n\t\tcurrency_symbol: string;\n\t\tcurrency_code: string;\n\t};\n}\n\ninterface CartDrawerProps {\n\tstoreOrigin: string;\n\tisOpen: boolean;\n\tonClose: () => void;\n\tonCartUpdate?: (count: number) => void;\n}\n\nfunction formatPrice(minorUnits: string, currencyMinorUnit: number, currencySymbol: string): string {\n\tconst value = parseInt(minorUnits, 10) / Math.pow(10, currencyMinorUnit);\n\tconst formatted = value % 1 === 0 ? value.toFixed(0) : value.toFixed(2);\n\treturn `${currencySymbol}${formatted}`;\n}\n\nfunction decodeHtmlEntities(text: string): string {\n\treturn text\n\t\t.replace(/&#(\\d+);/g, (_, code) => String.fromCharCode(Number(code)))\n\t\t.replace(/&amp;/g, \"&\")\n\t\t.replace(/&lt;/g, \"<\")\n\t\t.replace(/&gt;/g, \">\")\n\t\t.replace(/&quot;/g, '\"')\n\t\t.replace(/&ndash;/g, \"–\")\n\t\t.replace(/&mdash;/g, \"—\")\n\t\t.replace(/&laquo;/g, \"«\")\n\t\t.replace(/&raquo;/g, \"»\");\n}\n\nexport function CartDrawer({ storeOrigin, isOpen, onClose, onCartUpdate }: CartDrawerProps) {\n\tconst { t } = useI18n();\n\tconst [cart, setCart] = useState<CartData | null>(null);\n\tconst [loading, setLoading] = useState(false);\n\tconst [updatingKeys, setUpdatingKeys] = useState<Set<string>>(new Set());\n\tconst nonceRef = useRef<string>(\"\");\n\n\tconst fetchCart = useCallback(async () => {\n\t\tsetLoading(true);\n\t\ttry {\n\t\t\tconst res = await fetch(`${storeOrigin}/wp-json/wc/store/v1/cart`, { credentials: \"include\" });\n\t\t\tconst nonce = res.headers.get(\"Nonce\") || res.headers.get(\"X-WC-Store-API-Nonce\") || \"\";\n\t\t\tif (nonce) nonceRef.current = nonce;\n\t\t\tif (res.ok) {\n\t\t\t\tconst data: CartData = await res.json();\n\t\t\t\tsetCart(data);\n\t\t\t\tonCartUpdate?.(data.items_count);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconsole.error(\"[CartDrawer] Failed to fetch cart:\", err);\n\t\t} finally {\n\t\t\tsetLoading(false);\n\t\t}\n\t}, [storeOrigin, onCartUpdate]);\n\n\tuseEffect(() => {\n\t\tif (isOpen) fetchCart();\n\t}, [isOpen, fetchCart]);\n\n\tconst updateItem = useCallback(\n\t\tasync (key: string, quantity: number) => {\n\t\t\tsetUpdatingKeys((prev) => new Set(prev).add(key));\n\t\t\ttry {\n\t\t\t\tconst res = await fetch(`${storeOrigin}/wp-json/wc/store/v1/cart/update-item`, {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\t\tNonce: nonceRef.current,\n\t\t\t\t\t\t\"X-WC-Store-API-Nonce\": nonceRef.current,\n\t\t\t\t\t},\n\t\t\t\t\tcredentials: \"include\",\n\t\t\t\t\tbody: JSON.stringify({ key, quantity }),\n\t\t\t\t});\n\t\t\t\tconst nonce = res.headers.get(\"Nonce\") || res.headers.get(\"X-WC-Store-API-Nonce\") || \"\";\n\t\t\t\tif (nonce) nonceRef.current = nonce;\n\t\t\t\tif (res.ok) {\n\t\t\t\t\tconst data: CartData = await res.json();\n\t\t\t\t\tsetCart(data);\n\t\t\t\t\tonCartUpdate?.(data.items_count);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(\"[CartDrawer] Failed to update item:\", err);\n\t\t\t} finally {\n\t\t\t\tsetUpdatingKeys((prev) => {\n\t\t\t\t\tconst next = new Set(prev);\n\t\t\t\t\tnext.delete(key);\n\t\t\t\t\treturn next;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[storeOrigin, onCartUpdate],\n\t);\n\n\tconst removeItem = useCallback(\n\t\tasync (key: string) => {\n\t\t\tsetUpdatingKeys((prev) => new Set(prev).add(key));\n\t\t\ttry {\n\t\t\t\tconst res = await fetch(`${storeOrigin}/wp-json/wc/store/v1/cart/remove-item`, {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\t\tNonce: nonceRef.current,\n\t\t\t\t\t\t\"X-WC-Store-API-Nonce\": nonceRef.current,\n\t\t\t\t\t},\n\t\t\t\t\tcredentials: \"include\",\n\t\t\t\t\tbody: JSON.stringify({ key }),\n\t\t\t\t});\n\t\t\t\tconst nonce = res.headers.get(\"Nonce\") || res.headers.get(\"X-WC-Store-API-Nonce\") || \"\";\n\t\t\t\tif (nonce) nonceRef.current = nonce;\n\t\t\t\tif (res.ok) {\n\t\t\t\t\tconst data: CartData = await res.json();\n\t\t\t\t\tsetCart(data);\n\t\t\t\t\tonCartUpdate?.(data.items_count);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(\"[CartDrawer] Failed to remove item:\", err);\n\t\t\t} finally {\n\t\t\t\tsetUpdatingKeys((prev) => {\n\t\t\t\t\tconst next = new Set(prev);\n\t\t\t\t\tnext.delete(key);\n\t\t\t\t\treturn next;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[storeOrigin, onCartUpdate],\n\t);\n\n\tif (!isOpen) return null;\n\n\tconst items = cart?.items ?? [];\n\tconst totalPrice = cart\n\t\t? formatPrice(cart.totals.total_price, cart.totals.currency_minor_unit, cart.totals.currency_symbol)\n\t\t: \"\";\n\n\treturn (\n\t\t<div className=\"absolute inset-x-0 top-[57px] z-50 px-3 pt-1\" dir=\"rtl\">\n\t\t\t<div className=\"rounded-xl border shadow-lg overflow-hidden\" style={{ backgroundColor: \"var(--ac-background)\", borderColor: \"var(--ac-border)\" }}>\n\t\t\t\t<div className=\"flex items-center justify-between px-4 py-3 border-b bg-muted/30\" style={{ borderColor: \"var(--ac-border)\" }}>\n\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<ShoppingCart className=\"w-4 h-4\" style={{ color: \"var(--ac-primary)\" }} />\n\t\t\t\t\t\t<h3 className=\"text-sm font-semibold\" style={{ color: \"var(--ac-text)\" }}>\n\t\t\t\t\t\t\t{t(\"yourCart\" as never)}\n\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t<span className=\"text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t({t(\"cartItems\" as never, { count: String(cart?.items_count ?? 0) } as never)})\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button type=\"button\" onClick={onClose} className=\"p-1 hover:bg-secondary rounded transition-colors\">\n\t\t\t\t\t\t<X className=\"w-4 h-4 text-muted-foreground\" />\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"max-h-[60vh] overflow-y-auto\">\n\t\t\t\t\t{loading && !cart ? (\n\t\t\t\t\t\t<div className=\"flex items-center justify-center py-8\">\n\t\t\t\t\t\t\t<div className=\"w-5 h-5 border-2 border-t-transparent rounded-full animate-spin\" style={{ borderColor: \"var(--ac-primary)\", borderTopColor: \"transparent\" }} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : items.length === 0 ? (\n\t\t\t\t\t\t<div className=\"flex flex-col items-center gap-2 py-8 text-muted-foreground\">\n\t\t\t\t\t\t\t<ShoppingCart className=\"w-8 h-8 opacity-40\" />\n\t\t\t\t\t\t\t<p className=\"text-sm\">{t(\"cartEmpty\" as never)}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className=\"divide-y\" style={{ borderColor: \"var(--ac-border)\" }}>\n\t\t\t\t\t\t\t{items.map((item) => {\n\t\t\t\t\t\t\t\tconst isUpdating = updatingKeys.has(item.key);\n\t\t\t\t\t\t\t\tconst imgSrc = item.images?.[0]?.thumbnail || item.images?.[0]?.src || \"\";\n\t\t\t\t\t\t\t\tconst lineTotal = formatPrice(\n\t\t\t\t\t\t\t\t\titem.totals.line_total,\n\t\t\t\t\t\t\t\t\titem.totals.currency_minor_unit,\n\t\t\t\t\t\t\t\t\tcart!.totals.currency_symbol,\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<div key={item.key} className={`flex items-center gap-3 px-4 py-3 ${isUpdating ? \"opacity-50\" : \"\"}`}>\n\t\t\t\t\t\t\t\t\t\t{imgSrc ? (\n\t\t\t\t\t\t\t\t\t\t\t<img src={imgSrc} alt={item.name} className=\"w-10 h-10 rounded-lg object-cover shrink-0\" loading=\"lazy\" />\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"w-10 h-10 rounded-lg bg-muted flex items-center justify-center shrink-0\">\n\t\t\t\t\t\t\t\t\t\t\t\t<ShoppingCart className=\"w-4 h-4 text-muted-foreground/40\" />\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex-1 min-w-0\">\n\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-[13px] font-medium line-clamp-1\" style={{ color: \"var(--ac-text)\" }}>\n\t\t\t\t\t\t\t\t\t\t\t\t{decodeHtmlEntities(item.name)}\n\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-xs font-semibold mt-0.5\" style={{ color: \"var(--ac-primary)\" }}>\n\t\t\t\t\t\t\t\t\t\t\t\t{lineTotal}\n\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => updateItem(item.key, item.quantity - 1)}\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={isUpdating || item.quantity <= 1}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"w-6 h-6 flex items-center justify-center rounded bg-secondary hover:bg-secondary/80 disabled:opacity-40 transition-colors\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Minus className=\"w-3 h-3\" />\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-xs font-medium w-5 text-center\">{item.quantity}</span>\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => updateItem(item.key, item.quantity + 1)}\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={isUpdating}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"w-6 h-6 flex items-center justify-center rounded bg-secondary hover:bg-secondary/80 disabled:opacity-40 transition-colors\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Plus className=\"w-3 h-3\" />\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => removeItem(item.key)}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={isUpdating}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"p-1 hover:bg-red-50 rounded transition-colors text-muted-foreground hover:text-red-500\"\n\t\t\t\t\t\t\t\t\t\t\ttitle={t(\"removeItem\" as never)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Trash2 className=\"w-3.5 h-3.5\" />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{items.length > 0 && (\n\t\t\t\t\t<div className=\"border-t px-4 py-3 space-y-2.5 bg-muted/20\" style={{ borderColor: \"var(--ac-border)\" }}>\n\t\t\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t\t\t<span className=\"text-[13px] font-medium text-muted-foreground\">{t(\"cartTotal\" as never)}</span>\n\t\t\t\t\t\t\t<span className=\"text-base font-bold\" style={{ color: \"var(--ac-text)\" }}>\n\t\t\t\t\t\t\t\t{totalPrice}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={`${storeOrigin}/checkout`}\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\tclassName=\"flex items-center justify-center gap-2 w-full py-2.5 rounded-lg text-sm font-semibold hover:opacity-90 transition-opacity no-underline\"\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>\n\t\t\t\t\t\t\t{t(\"checkout\" as never)}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\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-muted-foreground bg-muted px-4 py-1.5 rounded-full border border-border/50\">\n\t\t\t\t{displayMessage}\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\n/**\n * Error boundary for isolating tool-renderer and slot failures.\n *\n * If a custom tool renderer, visualization, or slot component throws, the\n * error is caught here — the rest of the chat stays alive and the user\n * sees a small fallback. Without this, one broken tool crashes the whole\n * conversation view.\n */\n\nimport { Component, type ErrorInfo, type ReactNode } from \"react\";\n\ninterface ErrorBoundaryProps {\n children: ReactNode;\n /**\n * Optional custom fallback. Receives the caught error + a retry fn. If\n * omitted, a minimal neutral fallback is shown.\n */\n fallback?: (error: Error, reset: () => void) => ReactNode;\n /** Called when an error is caught — use for logging/Sentry. */\n onError?: (error: Error, info: ErrorInfo) => void;\n /** Label used in the default fallback text (e.g. \"tool renderer\"). */\n label?: string;\n}\n\ninterface ErrorBoundaryState {\n error: Error | null;\n}\n\nexport class ChatErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = { error: null };\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { error };\n }\n\n componentDidCatch(error: Error, info: ErrorInfo): void {\n this.props.onError?.(error, info);\n // Dev-only noisy log so failures don't slip by silently.\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\n `[aigentyc-chat-sdk] ${this.props.label || \"component\"} threw:`,\n error,\n info,\n );\n }\n }\n\n reset = () => {\n this.setState({ error: null });\n };\n\n render(): ReactNode {\n if (this.state.error) {\n if (this.props.fallback) {\n return this.props.fallback(this.state.error, this.reset);\n }\n return (\n <div\n role=\"alert\"\n className=\"my-2 rounded-md border border-destructive/30 bg-destructive/10 p-3 text-xs\"\n style={{ color: \"var(--ac-destructive, #dc2626)\" }}\n >\n <div className=\"font-medium\">\n {this.props.label\n ? `Failed to render ${this.props.label}`\n : \"Something went wrong\"}\n </div>\n {process.env.NODE_ENV !== \"production\" && (\n <div className=\"mt-1 opacity-80 font-mono truncate\">{this.state.error.message}</div>\n )}\n <button\n type=\"button\"\n onClick={this.reset}\n className=\"mt-1 underline text-xs opacity-80 hover:opacity-100\"\n >\n Retry\n </button>\n </div>\n );\n }\n return this.props.children;\n }\n}\n","\"use client\";\n\n/**\n * Main chat interface — reads state from ChatContext, I18n, Theme, Slots.\n *\n * Compared to the starter: instead of owning `useChat`, messages are read\n * from `useChatContext()`. Slot-override points:\n * - header, input, welcomePage, loader, assistantMessage, userMessage, tools\n */\n\nimport { useEffect, useMemo, useRef, useState, useCallback, type ReactNode } from \"react\";\nimport { SparklesIcon, Headset } from \"lucide-react\";\n\nimport { useChatContext } from \"../hooks/use-chat-context\";\nimport { useI18n } from \"../hooks/use-i18n\";\nimport { useTheme } from \"../hooks/use-theme\";\nimport { useSlots, renderSlot } from \"../providers/SlotsContext\";\nimport { useLiveChat } from \"../providers/LiveChatProvider\";\n// TODO: `useInteractionTracker` not yet exported from SDK analytics. Stub below.\n\nimport { ChatHeader } from \"./ChatHeader\";\nimport { ChatInput } from \"./ChatInput\";\nimport { ChatFooter } from \"./ChatFooter\";\nimport { WelcomePage } from \"./WelcomePage\";\nimport { QuickQuestions } from \"./QuickQuestions\";\nimport { CartDrawer } from \"./CartDrawer\";\nimport { SystemMessage } from \"./SystemMessage\";\nimport { ToolRenderer } from \"../tools/ToolRenderer\";\nimport { Conversation, ConversationContent, ConversationEmptyState } from \"../ai-elements/conversation\";\nimport { MessageFeedback } from \"../ai-elements/message-feedback\";\nimport { ChatErrorBoundary } from \"../ai-elements/error-boundary\";\nimport { Loader } from \"../ai-elements/loader\";\nimport {\n Sources,\n SourcesTrigger,\n SourcesContent,\n Source,\n} from \"../ai-elements/sources\";\n\nimport type { QuestionConfig, ToolResult } from \"../core/types\";\n\nexport interface ChatInterfaceProps {\n\t/** Allow per-instance overrides of any context value */\n\tisOpen?: boolean;\n\tonClose?: () => void;\n\tonNewConversation?: () => void;\n\tlogoUrl?: string;\n\tquestions?: QuestionConfig[];\n\tpageQuestions?: QuestionConfig[];\n\tfooterText?: string;\n\twelcomeTitle?: string;\n\twelcomeSubtitle?: string;\n\thideWelcomeHeader?: boolean;\n\tshowFirstMessage?: boolean;\n\thideHeader?: boolean;\n\tpendingMessage?: string | null;\n\tonPendingMessageConsumed?: () => void;\n\tpageUrl?: string;\n\tpageTitle?: string;\n\tpageContextLoading?: boolean;\n\tpageWelcomeTitle?: string;\n\tpageWelcomeSubtitle?: string;\n\tquestionsLayout?: \"vertical\" | \"horizontal\";\n\tquestionsLayoutMobile?: \"vertical\" | \"horizontal\";\n\t/**\n\t * Show citation sources under each assistant message that used the\n\t * `searchKnowledgeBase` tool. Off by default.\n\t */\n\tshowSources?: boolean;\n\t/**\n\t * Controls the rendering order of message parts (text vs tool results).\n\t * - `\"text-first\"` (default) — text parts render before tool cards\n\t * - `\"tools-first\"` — tool cards render before text\n\t * - `\"stream-order\"` — parts render in the order received from the API\n\t */\n\tmessagePartOrder?: \"text-first\" | \"tools-first\" | \"stream-order\";\n}\n\ninterface KbSourceLite {\n\tid?: number | string;\n\tdocumentName?: string;\n\tpageTitle?: string | null;\n\tsourceUrl?: string | null;\n\tsimilarity?: number;\n}\n\nfunction extractKbSources(parts: unknown): KbSourceLite[] {\n\tif (!Array.isArray(parts)) return [];\n\tconst out: KbSourceLite[] = [];\n\tfor (const part of parts) {\n\t\tconst p = part as { type?: string; toolName?: string; output?: unknown };\n\t\tif (typeof p?.type !== \"string\" || !p.type.startsWith(\"tool-\")) continue;\n\t\tconst name = p.toolName ?? p.type.replace(/^tool-/, \"\");\n\t\tif (name !== \"searchKnowledgeBase\") continue;\n\t\tlet output: unknown = p.output;\n\t\tif (typeof output === \"string\") {\n\t\t\ttry { output = JSON.parse(output); } catch { /* leave */ }\n\t\t}\n\t\tconst sources = (output as { sources?: KbSourceLite[] })?.sources;\n\t\tif (Array.isArray(sources)) for (const s of sources) if (s) out.push(s);\n\t}\n\tconst seen = new Set<string>();\n\tconst deduped: KbSourceLite[] = [];\n\tfor (const s of out) {\n\t\tconst key = s.sourceUrl || `${s.documentName ?? \"\"}::${s.id ?? \"\"}`;\n\t\tif (seen.has(key)) continue;\n\t\tseen.add(key);\n\t\tdeduped.push(s);\n\t}\n\treturn deduped;\n}\n\n// ---------------------------------------------------------------------------\n// Default slot components for message rendering\n// ---------------------------------------------------------------------------\n\nexport interface AssistantMessageSlotProps {\n\tmessage: { id: string; parts?: Array<{ type: string; text?: string }> };\n\tpartIndex: number;\n\ttext: string;\n}\n\nfunction DefaultAssistantMessage({ text }: AssistantMessageSlotProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName=\"flex gap-[10px] items-start rounded-2xl\"\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: \"var(--ac-assistant-bubble-bg, transparent)\",\n\t\t\t\tpadding: \"var(--ac-assistant-bubble-padding, 0)\",\n\t\t\t\tcolor: \"var(--ac-assistant-bubble-text, var(--ac-text))\",\n\t\t\t}}\n\t\t>\n\t\t\t<SparklesIcon className=\"mt-[2px] w-4 h-4 shrink-0\" style={{ color: \"var(--ac-primary)\" }} />\n\t\t\t<div className=\"flex-1 min-w-0 whitespace-pre-wrap\">{text}</div>\n\t\t</div>\n\t);\n}\n\nexport interface UserMessageSlotProps {\n\tmessage: { id: string; parts?: Array<{ type: string; text?: string }> };\n\tpartIndex: number;\n\ttext: string;\n}\n\nfunction DefaultUserMessage({ text }: UserMessageSlotProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName=\"inline-block rounded-2xl px-3 py-2 max-w-[85%]\"\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: \"var(--ac-user-bubble-bg, var(--ac-primary))\",\n\t\t\t\tcolor: \"var(--ac-primary-foreground, #fff)\",\n\t\t\t}}\n\t\t>\n\t\t\t{text}\n\t\t</div>\n\t);\n}\n\nexport function ChatInterface(props: ChatInterfaceProps) {\n\tconst { showSources = false } = props;\n\tconst { messages, status, sendMessage, sessionId, config, clearMessages } = useChatContext();\n\tconst { t, direction } = useI18n();\n\tconst _theme = useTheme();\n\tconst slots = useSlots();\n\n\t// Live chat (optional — provider may not be present)\n\tlet liveChat: ReturnType<typeof useLiveChat> | null = null;\n\ttry {\n\t\tliveChat = useLiveChat();\n\t} catch {\n\t\tliveChat = null;\n\t}\n\n\tconst [showWelcome, setShowWelcome] = useState(true);\n\tconst [input, setInput] = useState(\"\");\n\tconst [hideFirstUserMessage, setHideFirstUserMessage] = useState(false);\n\tconst [cartCount, setCartCount] = useState<number | undefined>(undefined);\n\tconst [cartOpen, setCartOpen] = useState(false);\n\tconst [storeOrigin, _setStoreOrigin] = useState<string | null>(null);\n\n\tconst isProcessing = status === \"streaming\";\n\n\t// Sync welcome visibility with message count (bidirectional)\n\tuseEffect(() => {\n\t\tif (messages.length > 0 && showWelcome) setShowWelcome(false);\n\t\tif (messages.length === 0 && !showWelcome) setShowWelcome(true);\n\t}, [messages.length, showWelcome]);\n\n\tconst handleSubmit = useCallback(\n\t\t(text: string) => {\n\t\t\tif (!text.trim() || isProcessing) return;\n\t\t\tif (liveChat?.state === \"live\") return;\n\t\t\tsetShowWelcome(false);\n\t\t\tsetInput(\"\");\n\t\t\tsendMessage(text);\n\t\t},\n\t\t[isProcessing, sendMessage, liveChat],\n\t);\n\n\tconst handleSelectCategory = useCallback(\n\t\t(category: string, hideMessage = false) => {\n\t\t\tif (hideMessage && !props.showFirstMessage) setHideFirstUserMessage(true);\n\t\t\thandleSubmit(category);\n\t\t},\n\t\t[handleSubmit, props.showFirstMessage],\n\t);\n\n\tconst handleNewConversation = useCallback(() => {\n\t\tclearMessages();\n\t\tsetShowWelcome(true);\n\t\tsetInput(\"\");\n\t\tsetHideFirstUserMessage(false);\n\t\tprops.onNewConversation?.();\n\t}, [clearMessages, props]);\n\n\t// Auto-submit pending message\n\tuseEffect(() => {\n\t\tif (props.pendingMessage && props.isOpen) {\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\thandleSubmit(props.pendingMessage!);\n\t\t\t\tprops.onPendingMessageConsumed?.();\n\t\t\t}, 300);\n\t\t\treturn () => clearTimeout(timer);\n\t\t}\n\t}, [props.pendingMessage, props.isOpen, handleSubmit, props]);\n\n\t// Live chat: register AI history\n\tuseEffect(() => {\n\t\tif (!liveChat) return;\n\t\tliveChat.registerAiHistoryGetter(() =>\n\t\t\tmessages.map((m) => ({\n\t\t\t\trole: m.role,\n\t\t\t\tcontent:\n\t\t\t\t\ttypeof m.content === \"string\"\n\t\t\t\t\t\t? m.content\n\t\t\t\t\t\t: (m.parts || [])\n\t\t\t\t\t\t\t\t.filter((p) => p.type === \"text\")\n\t\t\t\t\t\t\t\t.map((p) => p.text || \"\")\n\t\t\t\t\t\t\t\t.join(\"\") || \"\",\n\t\t\t})),\n\t\t);\n\t}, [messages, liveChat]);\n\n\t// Header slot\n\tconst headerProps = useMemo(\n\t\t() => ({\n\t\t\tisWelcome: showWelcome && messages.length === 0,\n\t\t\tonNewConversation: handleNewConversation,\n\t\t\tonClose: props.onClose,\n\t\t\tclientName: config.clientName,\n\t\t\tlogoUrl: props.logoUrl,\n\t\t\tcartCount,\n\t\t\tonCartClick: () => setCartOpen(!cartOpen),\n\t\t}),\n\t\t[showWelcome, messages.length, handleNewConversation, props.onClose, props.logoUrl, config.clientName, cartCount, cartOpen],\n\t);\n\n\t// Welcome page view\n\tif (showWelcome && messages.length === 0) {\n\t\treturn (\n\t\t\t<div className=\"flex h-full flex-col\" dir={direction} style={{ backgroundColor: \"var(--ac-background)\" }}>\n\t\t\t\t{!props.hideHeader && renderSlot(\"header\", headerProps, ChatHeader, slots)}\n\t\t\t\t{renderSlot(\n\t\t\t\t\t\"welcomePage\",\n\t\t\t\t\t{\n\t\t\t\t\t\tonSelectCategory: handleSelectCategory,\n\t\t\t\t\t\tisProcessing,\n\t\t\t\t\t\tclientName: config.clientName,\n\t\t\t\t\t\tisOpen: props.isOpen,\n\t\t\t\t\t\tquestions: props.questions,\n\t\t\t\t\t\twelcomeTitle: props.pageWelcomeTitle || props.welcomeTitle,\n\t\t\t\t\t\twelcomeSubtitle: props.pageWelcomeSubtitle || props.welcomeSubtitle,\n\t\t\t\t\t\thideWelcomeHeader: props.hideWelcomeHeader,\n\t\t\t\t\t\tloading: props.pageContextLoading,\n\t\t\t\t\t\tquestionsLayout: props.questionsLayout,\n\t\t\t\t\t\tquestionsLayoutMobile: props.questionsLayoutMobile,\n\t\t\t\t\t},\n\t\t\t\t\tWelcomePage,\n\t\t\t\t\tslots,\n\t\t\t\t)}\n\t\t\t\t<div className=\"shrink-0 px-[15px] md:px-[40px]\" style={{ backgroundColor: \"var(--ac-background)\" }}>\n\t\t\t\t\t<div className=\"mx-auto z-40 w-full\">\n\t\t\t\t\t\t{renderSlot(\n\t\t\t\t\t\t\t\"input\",\n\t\t\t\t\t\t\t{ value: input, onChange: setInput, onSubmit: handleSubmit, isProcessing },\n\t\t\t\t\t\t\tChatInput,\n\t\t\t\t\t\t\tslots,\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t{renderSlot(\"footer\", { footerText: props.footerText }, ChatFooter, slots)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Conversation view\n\treturn (\n\t\t<div className=\"flex h-full flex-col\" dir={direction} style={{ backgroundColor: \"var(--ac-background)\" }}>\n\t\t\t{!props.hideHeader && renderSlot(\"header\", headerProps, ChatHeader, slots)}\n\n\t\t\t{storeOrigin && (\n\t\t\t\t<CartDrawer\n\t\t\t\t\tstoreOrigin={storeOrigin}\n\t\t\t\t\tisOpen={cartOpen}\n\t\t\t\t\tonClose={() => setCartOpen(false)}\n\t\t\t\t\tonCartUpdate={(count) => setCartCount(count)}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<Conversation className=\"flex-1\">\n\t\t\t\t<ConversationContent className=\"px-[15px] md:px-[40px] py-6 sm:py-8 w-full space-y-6\">\n\t\t\t\t\t{messages.length === 0 && renderSlot(\"emptyState\", {}, ConversationEmptyState, slots)}\n\t\t\t\t\t{messages.map((message, messageIndex) => {\n\t\t\t\t\t\tif (hideFirstUserMessage && messageIndex === 0 && message.role === \"user\") return null;\n\n\t\t\t\t\t\tif (message.role === \"system\") {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={message.id}>\n\t\t\t\t\t\t\t\t\t{renderSlot(\"systemMessage\", { message: message.content }, SystemMessage, slots)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={message.id}\n\t\t\t\t\t\t\t\tclassName={`group ${message.role === \"assistant\" ? \"is-assistant\" : \"is-user\"}`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{(props.messagePartOrder === \"stream-order\"\n\t\t\t\t\t\t\t\t\t? (message.parts || [])\n\t\t\t\t\t\t\t\t\t: [...(message.parts || [])].sort((a, b) => {\n\t\t\t\t\t\t\t\t\t\tconst textFirst = props.messagePartOrder !== \"tools-first\";\n\t\t\t\t\t\t\t\t\t\tif (a.type === \"text\" && b.type !== \"text\") return textFirst ? -1 : 1;\n\t\t\t\t\t\t\t\t\t\tif (a.type !== \"text\" && b.type === \"text\") return textFirst ? 1 : -1;\n\t\t\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t).map((part, i) => {\n\t\t\t\t\t\t\t\t\t\tif (part.type === \"text\") {\n\t\t\t\t\t\t\t\t\t\t\tif (message.role === \"assistant\") {\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div key={`${message.id}-${i}`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{renderSlot(\"assistantMessage\", { message, partIndex: i, text: part.text || \"\" }, DefaultAssistantMessage, slots)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<div key={`${message.id}-${i}`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{renderSlot(\"userMessage\", { message, partIndex: i, text: part.text || \"\" }, DefaultUserMessage, slots)}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (part.type.startsWith(\"tool-\")) {\n\t\t\t\t\t\t\t\t\t\t\tconst toolName = part.type.replace(\"tool-\", \"\");\n\t\t\t\t\t\t\t\t\t\t\tif (toolName === \"requestHumanChat\") return null;\n\t\t\t\t\t\t\t\t\t\t\t// AI SDK streams `output` as a JSON string — parse + coerce into ToolResult shape\n\t\t\t\t\t\t\t\t\t\t\tlet output: unknown = part.output;\n\t\t\t\t\t\t\t\t\t\t\tif (typeof output === \"string\") {\n\t\t\t\t\t\t\t\t\t\t\t\ttry { output = JSON.parse(output); } catch { /* leave as string */ }\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tconst result =\n\t\t\t\t\t\t\t\t\t\t\t\toutput && typeof output === \"object\" && !Array.isArray(output) &&\n\t\t\t\t\t\t\t\t\t\t\t\t(\"data\" in (output as object) || \"uiRenderMode\" in (output as object))\n\t\t\t\t\t\t\t\t\t\t\t\t\t? output\n\t\t\t\t\t\t\t\t\t\t\t\t\t: { data: output };\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<ChatErrorBoundary\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={`${message.id}-tool-${i}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel={`tool \"${toolName}\"`}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ToolRenderer\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttoolName={toolName}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate={part.state ?? \"output-available\"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\targs={(part.input ?? {}) as Record<string, unknown>}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult={result as ToolResult}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSendMessage={handleSubmit}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisProcessing={isProcessing}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</ChatErrorBoundary>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t{showSources && message.role === \"assistant\" && (() => {\n\t\t\t\t\t\t\t\t\tconst kbSources = extractKbSources(message.parts);\n\t\t\t\t\t\t\t\t\tif (kbSources.length === 0) return null;\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<Sources>\n\t\t\t\t\t\t\t\t\t\t\t<SourcesTrigger count={kbSources.length} />\n\t\t\t\t\t\t\t\t\t\t\t<SourcesContent>\n\t\t\t\t\t\t\t\t\t\t\t\t{kbSources.map((s, idx) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Source\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={`${message.id}-src-${idx}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thref={s.sourceUrl ?? \"#\"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={s.documentName || s.pageTitle || `Source ${idx + 1}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t</SourcesContent>\n\t\t\t\t\t\t\t\t\t\t</Sources>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})()}\n\t\t\t\t\t\t\t\t{message.role === \"assistant\" && renderSlot(\"feedback\", {\n\t\t\t\t\t\t\t\t\tmessageId: message.id,\n\t\t\t\t\t\t\t\t\tprojectId: config.projectId,\n\t\t\t\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\t\t\t\tapiKey: config.apiKey,\n\t\t\t\t\t\t\t\t\tapiEndpoint: config.apiEndpoint,\n\t\t\t\t\t\t\t\t\ttextContent: (message.parts || []).filter((p) => p.type === \"text\").map((p) => p.text || \"\").join(\"\\n\") || (typeof message.content === \"string\" ? message.content : \"\"),\n\t\t\t\t\t\t\t\t}, MessageFeedback, slots)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t{status === \"streaming\" && (() => {\n\t\t\t\t\t\tconst lastMessage = messages[messages.length - 1];\n\t\t\t\t\t\tif (!lastMessage || lastMessage.role !== \"assistant\") return true;\n\t\t\t\t\t\tconst hasText = (lastMessage.parts || []).some(\n\t\t\t\t\t\t\t(p) => p.type === \"text\" && (p.text || \"\").trim(),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst allToolsComplete = (lastMessage.parts || [])\n\t\t\t\t\t\t\t.filter((p) => p.type.startsWith(\"tool-\"))\n\t\t\t\t\t\t\t.every((p) => p.state === \"output-available\");\n\t\t\t\t\t\treturn allToolsComplete && !hasText;\n\t\t\t\t\t})() && <Loader text={t(\"thinking\")} />}\n\t\t\t\t</ConversationContent>\n\t\t\t</Conversation>\n\n\t\t\t<div className=\"shrink-0 px-[15px] md:px-[40px] pb-2\" style={{ backgroundColor: \"var(--ac-background)\" }}>\n\t\t\t\t{props.pageQuestions && props.pageQuestions.length > 0 && (\n\t\t\t\t\t<QuickQuestions\n\t\t\t\t\t\tquestions={props.pageQuestions}\n\t\t\t\t\t\tonSelect={(query) => handleSelectCategory(query, true)}\n\t\t\t\t\t\tisProcessing={isProcessing}\n\t\t\t\t\t\tpageKey={props.pageUrl}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<div className=\"mx-auto z-40 w-full flex items-end gap-2\">\n\t\t\t\t\t<div className=\"flex-1\">\n\t\t\t\t\t\t{renderSlot(\n\t\t\t\t\t\t\t\"input\",\n\t\t\t\t\t\t\t{ value: input, onChange: setInput, onSubmit: () => handleSubmit(input), isProcessing },\n\t\t\t\t\t\t\tChatInput,\n\t\t\t\t\t\t\tslots,\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t{liveChat && liveChat.state === \"ai\" && !showWelcome && (\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={() => liveChat!.requestManualHandoff()}\n\t\t\t\t\t\t\ttitle={t(\"liveChatTalkToHuman\")}\n\t\t\t\t\t\t\tclassName=\"shrink-0 mb-[7px] h-[36px] w-[36px] rounded-lg hover:bg-muted flex items-center justify-center transition-colors opacity-50 hover:opacity-100\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Headset className=\"h-4 w-4 text-muted-foreground\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{renderSlot(\"footer\", { footerText: props.footerText }, ChatFooter, slots)}\n\t\t\t</div>\n\n\t\t\t{/* Reference unused state to silence linter; sessionId kept for future analytics wiring */}\n\t\t\t<span data-session-id={sessionId} className=\"hidden\" />\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { useState, useEffect } from \"react\";\nimport { useIsMobile } from \"../hooks/use-mobile\";\nimport { MessageSquare, X } from \"lucide-react\";\nimport { cn } from \"../core/utils\";\nimport { useI18n } from \"../hooks/use-i18n\";\n\ninterface FloatingButtonProps {\n\tonClick: () => void;\n\tposition: \"bottom-right\" | \"bottom-left\" | \"top-right\" | \"top-left\";\n\tpositionMobile?: \"bottom-right\" | \"bottom-left\" | \"top-right\" | \"top-left\";\n\tgreeting?: string;\n\tisOpen?: boolean;\n\tgreetingOffsetX?: string;\n\tgreetingOffsetY?: string;\n\tbuttonOffsetXMobile?: string;\n\tbuttonOffsetYMobile?: string;\n\tbuttonOffsetXDesktop?: string;\n\tbuttonOffsetYDesktop?: string;\n\tbuttonIconUrl?: string;\n\tbuttonImageUrl?: string;\n\tbuttonImageUrlMobile?: string;\n\tbuttonWidth?: string;\n\tbuttonHeight?: string;\n\tbuttonIconSize?: string;\n\tbuttonWidthMobile?: string;\n\tbuttonHeightMobile?: string;\n\tbuttonIconSizeMobile?: string;\n\tbuttonBgColor?: string;\n\tbuttonBorderRadius?: string;\n\tgreetingMaxWidth?: string;\n\tzIndex?: number;\n\thideGreeting?: boolean;\n}\n\nexport function FloatingButton({\n\tonClick,\n\tposition,\n\tpositionMobile,\n\tgreeting,\n\tisOpen = false,\n\tgreetingOffsetX = \"-20px\",\n\tgreetingOffsetY = \"-20px\",\n\tbuttonOffsetXMobile = \"16px\",\n\tbuttonOffsetYMobile = \"16px\",\n\tbuttonOffsetXDesktop = \"24px\",\n\tbuttonOffsetYDesktop = \"24px\",\n\tbuttonIconUrl,\n\tbuttonImageUrl,\n\tbuttonImageUrlMobile,\n\tbuttonWidth,\n\tbuttonHeight,\n\tbuttonIconSize,\n\tbuttonWidthMobile,\n\tbuttonHeightMobile,\n\tbuttonIconSizeMobile,\n\tbuttonBgColor,\n\tbuttonBorderRadius,\n\tgreetingMaxWidth,\n\tzIndex = 999999,\n\thideGreeting = false,\n}: FloatingButtonProps) {\n\tconst [showGreeting, setShowGreeting] = useState(false);\n\tconst { t, direction } = useI18n();\n\n\tconst isRtl = direction === \"rtl\";\n\tconst effectiveGreeting = greeting || t(\"greeting\");\n\tconst [greetingDismissed, setGreetingDismissed] = useState(false);\n\tconst isMobile = useIsMobile();\n\n\tconst effectivePosition = isMobile && positionMobile ? positionMobile : position;\n\tconst isRightSide = effectivePosition === \"bottom-right\" || effectivePosition === \"top-right\";\n\tconst isBottom = effectivePosition === \"bottom-right\" || effectivePosition === \"bottom-left\";\n\n\tconst buttonOffsetX = isMobile ? buttonOffsetXMobile : buttonOffsetXDesktop;\n\tconst buttonOffsetY = isMobile ? buttonOffsetYMobile : buttonOffsetYDesktop;\n\n\tuseEffect(() => {\n\t\tif (greetingDismissed || isOpen) return;\n\t\tconst timer = setTimeout(() => setShowGreeting(true), 2000);\n\t\treturn () => clearTimeout(timer);\n\t}, [greetingDismissed, isOpen]);\n\n\tconst getPositionStyles = (): React.CSSProperties => {\n\t\tconst styles: React.CSSProperties = {};\n\t\tif (isBottom) styles.bottom = buttonOffsetY;\n\t\telse styles.top = buttonOffsetY;\n\t\tif (isRightSide) styles.right = buttonOffsetX;\n\t\telse styles.left = buttonOffsetX;\n\t\treturn styles;\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`fixed flex items-end gap-3 ${isRightSide ? \"flex-row\" : \"flex-row-reverse\"}`}\n\t\t\tdir=\"ltr\"\n\t\t\tstyle={{ ...getPositionStyles(), zIndex }}\n\t\t>\n\t\t\t{showGreeting && !isOpen && !hideGreeting && (\n\t\t\t\t<div\n\t\t\t\t\tdir={isRtl ? \"rtl\" : \"ltr\"}\n\t\t\t\t\tclassName={`relative bg-card rounded-sm animate-fadeIn ${isBottom ? \"mb-1\" : \"mt-1\"}`}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tanimation: \"fadeIn 0.3s ease-out\",\n\t\t\t\t\t\tboxShadow: \"0 4px 16px rgba(0, 0, 0, 0.12)\",\n\t\t\t\t\t\tpadding: \"12px\",\n\t\t\t\t\t\tmaxWidth: greetingMaxWidth || \"240px\",\n\t\t\t\t\t\tcolor: \"#000\",\n\t\t\t\t\t\ttextAlign: \"center\",\n\t\t\t\t\t\tfontSize: \"16px\",\n\t\t\t\t\t\tfontWeight: 400,\n\t\t\t\t\t\tlineHeight: \"16px\",\n\t\t\t\t\t\tright: greetingOffsetX,\n\t\t\t\t\t\ttop: greetingOffsetY,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{effectiveGreeting}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"absolute top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\twidth: \"14px\",\n\t\t\t\t\t\t\theight: \"14px\",\n\t\t\t\t\t\t\tbackground: \"var(--ac-card)\",\n\t\t\t\t\t\t\ttransform: \"translateY(-50%) rotate(45deg)\",\n\t\t\t\t\t\t\tboxShadow: \"2px -2px 4px rgba(0, 0, 0, 0.06)\",\n\t\t\t\t\t\t\t...(isRightSide ? { right: \"-7px\" } : { left: \"-7px\" }),\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{(buttonImageUrl || buttonImageUrlMobile) && !isOpen ? (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={onClick}\n\t\t\t\t\tclassName=\"bg-transparent border-none p-0 cursor-pointer hover:scale-105 transition-all duration-200 flex-shrink-0 z-[2]\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...((buttonWidth || buttonWidthMobile) && { width: isMobile ? buttonWidthMobile || buttonWidth : buttonWidth }),\n\t\t\t\t\t\t...((buttonHeight || buttonHeightMobile) && { height: isMobile ? buttonHeightMobile || buttonHeight : buttonHeight }),\n\t\t\t\t\t}}\n\t\t\t\t\taria-label=\"Open chat\"\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc={(isMobile && buttonImageUrlMobile) ? buttonImageUrlMobile : buttonImageUrl || buttonImageUrlMobile!}\n\t\t\t\t\t\talt=\"Chat\"\n\t\t\t\t\t\tclassName=\"w-full h-full object-contain\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t...(!buttonWidth && !buttonWidthMobile && { width: isMobile ? \"48px\" : \"56px\" }),\n\t\t\t\t\t\t\t...(!buttonHeight && !buttonHeightMobile && { height: isMobile ? \"48px\" : \"56px\" }),\n\t\t\t\t\t\t\t...(buttonBorderRadius != null && { borderRadius: buttonBorderRadius }),\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</button>\n\t\t\t) : (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={onClick}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"shadow-lg hover:shadow-xl hover:scale-105 transition-all duration-200 flex items-center justify-center flex-shrink-0 z-[2]\",\n\t\t\t\t\t\t!buttonBorderRadius && \"rounded-full\",\n\t\t\t\t\t\t!buttonWidth && !buttonWidthMobile && !buttonHeight && !buttonHeightMobile && \"w-12 h-12 md:w-14 md:h-14\",\n\t\t\t\t\t)}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tbackgroundColor: buttonBgColor || \"var(--ac-primary)\",\n\t\t\t\t\t\tcolor: \"var(--ac-primary-foreground, #fff)\",\n\t\t\t\t\t\t...((buttonWidth || buttonWidthMobile) && { width: isMobile ? buttonWidthMobile || buttonWidth : buttonWidth }),\n\t\t\t\t\t\t...((buttonHeight || buttonHeightMobile) && { height: isMobile ? buttonHeightMobile || buttonHeight : buttonHeight }),\n\t\t\t\t\t\t...(buttonBorderRadius != null && { borderRadius: buttonBorderRadius }),\n\t\t\t\t\t}}\n\t\t\t\t\taria-label={isOpen ? \"Close chat\" : \"Open chat\"}\n\t\t\t\t>\n\t\t\t\t\t{(() => {\n\t\t\t\t\t\tconst effectiveIconSize = isMobile ? buttonIconSizeMobile || buttonIconSize : buttonIconSize;\n\t\t\t\t\t\tconst iconStyle = effectiveIconSize ? { width: effectiveIconSize, height: effectiveIconSize } : undefined;\n\t\t\t\t\t\tconst iconClass = !effectiveIconSize ? \"w-6 h-6 md:w-7 md:h-7\" : undefined;\n\t\t\t\t\t\tif (isOpen) return <X className={iconClass} style={iconStyle} strokeWidth={2.5} />;\n\t\t\t\t\t\tif (buttonIconUrl) return <img src={buttonIconUrl} alt=\"Chat\" className={cn(\"object-contain\", iconClass)} style={iconStyle} />;\n\t\t\t\t\t\treturn <MessageSquare className={iconClass} style={iconStyle} strokeWidth={2.5} />;\n\t\t\t\t\t})()}\n\t\t\t\t</button>\n\t\t\t)}\n\n\t\t\t<style>{`\n\t\t\t\t@keyframes fadeIn {\n\t\t\t\t\tfrom { opacity: 0; transform: scale(0.95); }\n\t\t\t\t\tto { opacity: 1; transform: scale(1); }\n\t\t\t\t}\n\t\t\t`}</style>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\n/* eslint-disable react-hooks/exhaustive-deps */\nimport { useState, useRef, useEffect } from \"react\";\nimport { useLiveChat } from \"../providers/LiveChatProvider\";\n/**\n * Sub-views are only rendered from the parent panel/drawer, which already\n * bails out when no LiveChatProvider is present. So sub-views can safely\n * assert the context exists.\n */\nfunction useLiveChatOrThrow() {\n\tconst ctx = useLiveChat();\n\tif (!ctx) throw new Error(\"LiveChat sub-view rendered outside LiveChatProvider — this should never happen\");\n\treturn ctx;\n}\nimport { useI18n } from \"../hooks/use-i18n\";\nimport { Send, Headset, ThumbsUp, ThumbsDown } from \"lucide-react\";\n\ninterface LiveChatPanelProps {\n\tisWidgetOpen: boolean;\n\tisRightSide: boolean;\n\tzIndex: number;\n}\n\n/** Desktop side panel — only renders when viewport is wide enough (>1200px) */\nexport function LiveChatPanel({ isWidgetOpen, isRightSide, zIndex }: LiveChatPanelProps) {\n\tconst lc = useLiveChat();\n\tif (!lc) return null;\n\tconst isActive = lc.state !== \"ai\" || lc.showIdentityForm;\n\tconst showPanel = isWidgetOpen && isActive;\n\n\tconst [isWide, setIsWide] = useState(() =>\n\t\ttypeof window !== \"undefined\" ? window.innerWidth >= 1200 : true,\n\t);\n\n\tuseEffect(() => {\n\t\tif (typeof window === \"undefined\") return;\n\t\tconst mq = window.matchMedia(\"(min-width: 1200px)\");\n\t\tconst handler = (e: MediaQueryListEvent) => setIsWide(e.matches);\n\t\tmq.addEventListener(\"change\", handler);\n\t\treturn () => mq.removeEventListener(\"change\", handler);\n\t}, []);\n\n\tif (!isWide) return null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"fixed top-1/2 flex flex-col rounded-2xl border shadow-lg overflow-hidden\"\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: \"var(--ac-background)\",\n\t\t\t\tborderColor: \"var(--ac-border)\",\n\t\t\t\tzIndex,\n\t\t\t\twidth: \"min(420px, calc(100vw - 800px))\",\n\t\t\t\theight: \"75vh\",\n\t\t\t\t...(isRightSide ? { right: \"790px\" } : { left: \"790px\" }),\n\t\t\t\ttransform: showPanel\n\t\t\t\t\t? \"translateY(-50%) translateX(0)\"\n\t\t\t\t\t: `translateY(-50%) ${isRightSide ? \"translateX(20px)\" : \"translateX(-20px)\"}`,\n\t\t\t\topacity: showPanel ? 1 : 0,\n\t\t\t\tpointerEvents: showPanel ? \"auto\" : \"none\",\n\t\t\t\ttransition: \"transform 300ms ease-in-out, opacity 300ms ease-in-out\",\n\t\t\t}}\n\t\t>\n\t\t\t{lc.showIdentityForm ? (\n\t\t\t\t<IdentityView />\n\t\t\t) : lc.state === \"requesting\" || lc.state === \"queued\" ? (\n\t\t\t\t<QueueView />\n\t\t\t) : lc.state === \"live\" ? (\n\t\t\t\t<ChatView />\n\t\t\t) : lc.state === \"ended\" ? (\n\t\t\t\t<EndedView />\n\t\t\t) : null}\n\t\t</div>\n\t);\n}\n\n/** Mobile / narrow viewport: drawer that slides up from bottom */\nexport function MobileLiveChatDrawer() {\n\tconst lc = useLiveChat();\n\tconst { t } = useI18n();\n\tif (!lc) return null;\n\tconst isActive = lc.state !== \"ai\" || lc.showIdentityForm;\n\tconst [minimized, setMinimized] = useState(false);\n\n\tconst [isNarrow, setIsNarrow] = useState(() =>\n\t\ttypeof window !== \"undefined\" ? window.innerWidth < 1200 : false,\n\t);\n\n\tuseEffect(() => {\n\t\tif (typeof window === \"undefined\") return;\n\t\tconst mq = window.matchMedia(\"(max-width: 1199px)\");\n\t\tconst handler = (e: MediaQueryListEvent) => setIsNarrow(e.matches);\n\t\tmq.addEventListener(\"change\", handler);\n\t\treturn () => mq.removeEventListener(\"change\", handler);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (!isActive) setMinimized(false);\n\t}, [isActive]);\n\n\tif (!isNarrow) return null;\n\n\tif (isActive && minimized) {\n\t\treturn (\n\t\t\t<div className=\"absolute bottom-[100px] inset-x-0 z-50 flex justify-center px-4\">\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={() => setMinimized(false)}\n\t\t\t\t\tclassName=\"flex items-center gap-2 px-4 py-2 rounded-full border shadow-md bg-green-50 hover:bg-green-100 transition-colors\"\n\t\t\t\t>\n\t\t\t\t\t<div className=\"h-2 w-2 rounded-full bg-green-500 animate-pulse\" />\n\t\t\t\t\t<span className=\"text-xs font-medium text-green-800\">\n\t\t\t\t\t\t{t(\"liveChatChattingWith\" as never, { name: lc.operatorName || \"...\" } as never)}\n\t\t\t\t\t</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclassName=\"absolute inset-0 z-40 bg-black/50\"\n\t\t\t\tstyle={{\n\t\t\t\t\topacity: isActive ? 1 : 0,\n\t\t\t\t\tpointerEvents: isActive ? \"auto\" : \"none\",\n\t\t\t\t\ttransition: \"opacity 200ms ease-out\",\n\t\t\t\t}}\n\t\t\t\tonClick={() => (lc.state === \"live\" ? setMinimized(true) : undefined)}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclassName=\"absolute inset-x-0 bottom-0 z-50 rounded-t-2xl border-t shadow-2xl flex flex-col\"\n\t\t\t\tstyle={{\n\t\t\t\t\tbackgroundColor: \"var(--ac-background)\",\n\t\t\t\t\tborderColor: \"var(--ac-border)\",\n\t\t\t\t\theight: \"calc(100dvh - 150px)\",\n\t\t\t\t\ttransform: isActive ? \"translateY(0)\" : \"translateY(100%)\",\n\t\t\t\t\ttransition: \"transform 300ms cubic-bezier(0.32, 0.72, 0, 1)\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className=\"flex items-center justify-between px-4 pt-2 pb-1 shrink-0\">\n\t\t\t\t\t<div className=\"flex-1\" />\n\t\t\t\t\t<div className=\"w-[80px] h-1.5 rounded-full bg-muted\" />\n\t\t\t\t\t<div className=\"flex-1 flex justify-end\">\n\t\t\t\t\t\t{lc.state === \"live\" && (\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={() => setMinimized(true)}\n\t\t\t\t\t\t\t\tclassName=\"text-[11px] text-muted-foreground hover:text-foreground px-2 py-1 rounded-lg hover:bg-muted transition-colors whitespace-nowrap\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{t(\"liveChatBackToAI\" as never)}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{lc.showIdentityForm ? (\n\t\t\t\t\t<IdentityView />\n\t\t\t\t) : lc.state === \"requesting\" || lc.state === \"queued\" ? (\n\t\t\t\t\t<QueueView />\n\t\t\t\t) : lc.state === \"live\" ? (\n\t\t\t\t\t<ChatView />\n\t\t\t\t) : lc.state === \"ended\" ? (\n\t\t\t\t\t<EndedView />\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\n// ─── Sub-views ──────────────────────────────────────────────────────\n\nfunction isValidEmail(email: string): boolean {\n\treturn /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n}\n\nfunction IdentityView() {\n\tconst lc = useLiveChatOrThrow();\n\tconst { t, direction } = useI18n();\n\t// TODO: wpUserInfo — not exposed by SDK LiveChatProvider. Using generic userInfo.\n\tconst userInfo = (lc as unknown as { userInfo?: { name?: string; email?: string } | null }).userInfo;\n\tconst [name, setName] = useState(userInfo?.name || \"\");\n\tconst [email, setEmail] = useState(userInfo?.email || \"\");\n\tconst [emailError, setEmailError] = useState(false);\n\tconst isRTL = direction === \"rtl\";\n\n\tuseEffect(() => {\n\t\tif (userInfo?.name && userInfo?.email && isValidEmail(userInfo.email)) {\n\t\t\tlc.setShowIdentityForm(false);\n\t\t\tlc.initiate(userInfo.name, userInfo.email);\n\t\t}\n\t}, []);\n\n\tconst handleConnect = () => {\n\t\tif (!isValidEmail(email)) {\n\t\t\tsetEmailError(true);\n\t\t\treturn;\n\t\t}\n\t\tlc.setShowIdentityForm(false);\n\t\tlc.initiate(name, email);\n\t};\n\n\treturn (\n\t\t<div className=\"flex-1 flex flex-col items-center justify-center p-8\" dir={isRTL ? \"rtl\" : \"ltr\"}>\n\t\t\t<div className=\"h-14 w-14 rounded-2xl bg-blue-50 flex items-center justify-center mb-5\">\n\t\t\t\t<Headset className=\"h-7 w-7 text-blue-500\" />\n\t\t\t</div>\n\t\t\t<p className=\"text-sm font-medium mb-5\" style={{ color: \"var(--ac-text)\" }}>\n\t\t\t\t{t(\"liveChatIdentityTitle\" as never)}\n\t\t\t</p>\n\t\t\t<div className=\"w-full max-w-xs space-y-3\">\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\" as never)}\n\t\t\t\t\tclassName=\"w-full text-sm p-3 border rounded-xl bg-background focus:outline-none focus:ring-2\"\n\t\t\t\t\tautoFocus\n\t\t\t\t/>\n\t\t\t\t<div>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"email\"\n\t\t\t\t\t\tvalue={email}\n\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\tsetEmail(e.target.value);\n\t\t\t\t\t\t\tsetEmailError(false);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tplaceholder={t(\"liveChatIdentityEmail\" as never)}\n\t\t\t\t\t\tclassName={`w-full text-sm p-3 border rounded-xl bg-background focus:outline-none focus:ring-2 ${\n\t\t\t\t\t\t\temailError ? \"border-red-400 focus:ring-red-300\" : \"\"\n\t\t\t\t\t\t}`}\n\t\t\t\t\t/>\n\t\t\t\t\t{emailError && (\n\t\t\t\t\t\t<p className=\"text-xs text-red-500 mt-1 px-1\">\n\t\t\t\t\t\t\t{isRTL ? \"כתובת אימייל לא תקינה\" : \"Invalid email address\"}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"flex gap-2 justify-end pt-1\">\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={() => lc.setShowIdentityForm(false)}\n\t\t\t\t\t\tclassName=\"text-sm text-muted-foreground hover:text-foreground px-4 py-2 rounded-xl\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{t(\"liveChatCancel\" as never)}\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={handleConnect}\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.5 rounded-xl disabled:opacity-40 transition-opacity\"\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\" as never)}\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\nfunction QueueView() {\n\tconst lc = useLiveChatOrThrow();\n\tconst { t, direction } = useI18n();\n\n\treturn (\n\t\t<div className=\"flex-1 flex flex-col items-center justify-center p-8 text-center\" dir={direction}>\n\t\t\t<div className=\"h-16 w-16 rounded-2xl bg-blue-50 flex items-center justify-center mb-4\">\n\t\t\t\t<Headset className=\"h-8 w-8 text-blue-500\" />\n\t\t\t</div>\n\t\t\t<div className=\"h-2 w-2 rounded-full bg-blue-500 animate-pulse mb-4\" />\n\t\t\t<p className=\"text-sm font-medium mb-1\" style={{ color: \"var(--ac-text)\" }}>\n\t\t\t\t{t(\"liveChatConnecting\" as never)}\n\t\t\t</p>\n\t\t\t{lc.queuePosition > 0 && (\n\t\t\t\t<p className=\"text-xs text-muted-foreground mb-4\">\n\t\t\t\t\t{t(\"liveChatPosition\" as never, { position: String(lc.queuePosition) } as never)}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tonClick={lc.cancel}\n\t\t\t\tclassName=\"text-xs text-muted-foreground hover:text-foreground underline mt-2\"\n\t\t\t>\n\t\t\t\t{t(\"liveChatCancel\" as never)}\n\t\t\t</button>\n\t\t</div>\n\t);\n}\n\nfunction ChatView() {\n\tconst lc = useLiveChatOrThrow();\n\tconst { t, language, direction } = useI18n();\n\tconst [input, setInput] = useState(\"\");\n\tconst messagesEndRef = useRef<HTMLDivElement>(null);\n\tconst isRTL = direction === \"rtl\";\n\n\tuseEffect(() => {\n\t\tmessagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n\t}, [lc.messages]);\n\n\tconst handleSend = () => {\n\t\tif (!input.trim()) return;\n\t\tlc.send(input.trim());\n\t\tsetInput(\"\");\n\t};\n\n\treturn (\n\t\t<div className=\"flex-1 flex flex-col min-h-0\" dir={isRTL ? \"rtl\" : \"ltr\"}>\n\t\t\t<div className=\"shrink-0 bg-green-50 border-b border-green-200 px-4 py-3 flex items-center justify-between\">\n\t\t\t\t<div className=\"flex items-center gap-2.5\">\n\t\t\t\t\t<div className=\"h-8 w-8 rounded-full bg-green-500 flex items-center justify-center\">\n\t\t\t\t\t\t<span className=\"text-xs text-white font-bold\">\n\t\t\t\t\t\t\t{lc.operatorName.charAt(0).toUpperCase() || \"O\"}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<p className=\"text-sm font-medium text-green-900\">\n\t\t\t\t\t\t\t{t(\"liveChatChattingWith\" as never, { name: lc.operatorName } as never)}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<div className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t<div className=\"h-1.5 w-1.5 rounded-full bg-green-500\" />\n\t\t\t\t\t\t\t<span className=\"text-[10px] text-green-600\">Online</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={lc.end}\n\t\t\t\t\tclassName=\"text-xs text-red-600 hover:text-red-800 bg-red-50 hover:bg-red-100 px-3 py-1.5 rounded-lg transition-colors\"\n\t\t\t\t>\n\t\t\t\t\t{t(\"liveChatEndChat\" as never)}\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div className=\"flex-1 overflow-y-auto px-4 py-3 space-y-1\">\n\t\t\t\t{lc.messages.map((msg, idx) => {\n\t\t\t\t\tif (msg.senderType === \"system\") {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div key={msg.id} className=\"flex justify-center my-3\">\n\t\t\t\t\t\t\t\t<span className=\"text-[11px] text-muted-foreground bg-muted/70 px-3 py-1 rounded-full\">\n\t\t\t\t\t\t\t\t\t{msg.content}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst isOperator = msg.senderType === \"operator\";\n\t\t\t\t\tconst prevMsg = idx > 0 ? lc.messages[idx - 1] : null;\n\t\t\t\t\tconst isFirstInGroup = !prevMsg || prevMsg.senderType !== msg.senderType || (prevMsg.senderType as string) === \"system\";\n\t\t\t\t\tconst locale = language === \"he\" ? \"he-IL\" : \"en-US\";\n\t\t\t\t\tconst timeStr = new Date(msg.timestamp).toLocaleTimeString(locale, {\n\t\t\t\t\t\thour: \"2-digit\",\n\t\t\t\t\t\tminute: \"2-digit\",\n\t\t\t\t\t\thour12: false,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={msg.id}\n\t\t\t\t\t\t\tclassName={`flex items-end gap-2 ${isOperator ? \"justify-start\" : \"flex-row-reverse\"} ${isFirstInGroup ? \"mt-3\" : \"mt-0.5\"}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"w-7 shrink-0\">\n\t\t\t\t\t\t\t\t{isOperator && isFirstInGroup && (\n\t\t\t\t\t\t\t\t\t<div className=\"h-7 w-7 rounded-full bg-green-500 flex items-center justify-center\">\n\t\t\t\t\t\t\t\t\t\t<span className=\"text-[11px] text-white font-bold\">\n\t\t\t\t\t\t\t\t\t\t\t{lc.operatorName.charAt(0).toUpperCase() || \"O\"}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"max-w-[75%]\">\n\t\t\t\t\t\t\t\t{isOperator && isFirstInGroup && (\n\t\t\t\t\t\t\t\t\t<p className=\"text-[11px] text-muted-foreground mb-0.5 font-medium\">{lc.operatorName}</p>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={`rounded-2xl px-3.5 py-2.5 text-[14px] leading-relaxed ${\n\t\t\t\t\t\t\t\t\t\tisOperator\n\t\t\t\t\t\t\t\t\t\t\t? \"bg-card border border-border text-foreground rounded-bl-md\"\n\t\t\t\t\t\t\t\t\t\t\t: \"text-white rounded-br-md\"\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tstyle={!isOperator ? { backgroundColor: \"var(--ac-primary, #2f80ed)\" } : undefined}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{msg.content}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<p className={`text-[10px] text-muted-foreground mt-0.5 px-1 ${isOperator ? \"\" : \"text-end\"}`}>{timeStr}</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t<div ref={messagesEndRef} />\n\t\t\t</div>\n\n\t\t\t<div className=\"shrink-0 border-t bg-background p-3\">\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tvalue={input}\n\t\t\t\t\t\tonChange={(e) => setInput(e.target.value)}\n\t\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\t\tif (e.key === \"Enter\" && !e.shiftKey) {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\thandleSend();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tplaceholder={t(\"typeMessage\")}\n\t\t\t\t\t\tclassName=\"flex-1 text-sm px-3.5 py-2.5 border rounded-xl bg-background focus:outline-none focus:ring-2\"\n\t\t\t\t\t\tautoFocus\n\t\t\t\t\t/>\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={handleSend}\n\t\t\t\t\t\tdisabled={!input.trim()}\n\t\t\t\t\t\tclassName=\"shrink-0 h-10 w-10 rounded-xl flex items-center justify-center text-white disabled:opacity-40 transition-opacity\"\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<Send className=\"h-4 w-4\" />\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\nfunction EndedView() {\n\tconst lc = useLiveChatOrThrow();\n\tconst { t, direction } = useI18n();\n\tconst [selected, setSelected] = useState<\"positive\" | \"negative\" | null>(null);\n\tconst [comment, setComment] = useState(\"\");\n\tconst [submitted, setSubmitted] = useState(false);\n\tconst isRTL = direction === \"rtl\";\n\n\tif (submitted) {\n\t\treturn (\n\t\t\t<div className=\"flex-1 flex flex-col items-center justify-center p-8 text-center\" dir={isRTL ? \"rtl\" : \"ltr\"}>\n\t\t\t\t<div className=\"h-14 w-14 rounded-2xl bg-green-50 flex items-center justify-center mb-4\">\n\t\t\t\t\t<ThumbsUp className=\"h-7 w-7 text-green-500\" />\n\t\t\t\t</div>\n\t\t\t\t<p className=\"text-sm font-medium mb-1\" style={{ color: \"var(--ac-text)\" }}>\n\t\t\t\t\t{t(\"liveChatRateThank\" as never)}\n\t\t\t\t</p>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={lc.returnToAI}\n\t\t\t\t\tclassName=\"text-sm font-medium mt-4 px-5 py-2 rounded-xl transition-colors\"\n\t\t\t\t\tstyle={{ backgroundColor: \"var(--ac-primary, #2f80ed)\", color: \"white\" }}\n\t\t\t\t>\n\t\t\t\t\t{t(\"liveChatBackToAI\" as never)}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"flex-1 flex flex-col items-center justify-center p-8\" dir={isRTL ? \"rtl\" : \"ltr\"}>\n\t\t\t<div className=\"h-14 w-14 rounded-2xl bg-muted/50 flex items-center justify-center mb-4\">\n\t\t\t\t<Headset className=\"h-7 w-7 text-muted-foreground/50\" />\n\t\t\t</div>\n\t\t\t<p className=\"text-sm font-medium mb-1\" style={{ color: \"var(--ac-text)\" }}>\n\t\t\t\t{t(\"liveChatEnded\" as never)}\n\t\t\t</p>\n\t\t\t<p className=\"text-sm text-muted-foreground mb-5\">{t(\"liveChatRateTitle\" as never)}</p>\n\n\t\t\t<div className=\"flex gap-4 mb-4\">\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-3 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-6 w-6\" />\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-3 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-6 w-6\" />\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t{selected && (\n\t\t\t\t<div className=\"w-full max-w-xs space-y-3\">\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={t(\"liveChatFeedbackPlaceholder\" as never)}\n\t\t\t\t\t\tclassName=\"w-full text-sm p-3 border rounded-xl resize-none h-20 focus:outline-none focus:ring-2\"\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\tlc.submitRating(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-sm text-white px-4 py-2 rounded-xl\"\n\t\t\t\t\t\t\tstyle={{ backgroundColor: \"var(--ac-primary, #2f80ed)\" }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{t(\"liveChatSubmit\" as never)}\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={lc.returnToAI}\n\t\t\t\t\t\t\tclassName=\"text-sm text-muted-foreground hover:text-foreground px-4 py-2\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{t(\"liveChatSkip\" as never)}\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\n\t\t\t{!selected && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={lc.returnToAI}\n\t\t\t\t\tclassName=\"text-xs text-muted-foreground hover:text-foreground underline mt-2\"\n\t\t\t\t>\n\t\t\t\t\t{t(\"liveChatSkip\" as never)}\n\t\t\t\t</button>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { usePreviewEmbed } from \"../providers/PreviewEmbedProvider\";\nimport { X, ExternalLink } from \"lucide-react\";\n\ninterface PreviewEmbedPanelProps {\n\tisOpen: boolean;\n\tisRightSide: boolean;\n\tzIndex: number;\n}\n\nexport function PreviewEmbedPanel({ isOpen, isRightSide, zIndex }: PreviewEmbedPanelProps) {\n\tconst previewEmbed = usePreviewEmbed();\n\tif (!previewEmbed) return null;\n\n\tconst { preview, closePreview } = previewEmbed;\n\tconst showPanel = isOpen && !!preview;\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"fixed top-1/2 flex flex-col rounded-2xl border shadow-sm overflow-hidden\"\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: \"var(--ac-background)\",\n\t\t\t\tborderColor: \"var(--ac-border)\",\n\t\t\t\tzIndex,\n\t\t\t\twidth: \"min(560px, calc(100vw - 800px))\",\n\t\t\t\theight: \"70vh\",\n\t\t\t\t...(isRightSide ? { right: \"790px\" } : { left: \"790px\" }),\n\t\t\t\ttransform: showPanel\n\t\t\t\t\t? \"translateY(-50%) translateX(0)\"\n\t\t\t\t\t: `translateY(-50%) ${isRightSide ? \"translateX(20px)\" : \"translateX(-20px)\"}`,\n\t\t\t\topacity: showPanel ? 1 : 0,\n\t\t\t\tpointerEvents: showPanel ? \"auto\" : \"none\",\n\t\t\t\ttransition: \"transform 300ms ease-in-out, opacity 300ms ease-in-out\",\n\t\t\t}}\n\t\t>\n\t\t\t<div className=\"bg-muted/30 px-5 py-4 border-b flex items-center justify-between shrink-0\" style={{ borderColor: \"var(--ac-border)\" }}>\n\t\t\t\t<div className=\"flex items-center gap-3 min-w-0\">\n\t\t\t\t\t<span className=\"shrink-0 w-10 h-10 rounded-xl bg-muted flex items-center justify-center\">\n\t\t\t\t\t\t<ExternalLink className=\"w-5 h-5 text-muted-foreground\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t\t<h3 className=\"font-medium text-sm truncate\" style={{ color: \"var(--ac-text)\" }}>\n\t\t\t\t\t\t\t{preview?.title || \"Preview\"}\n\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t{preview?.description && (\n\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground mt-0.5 truncate\">{preview.description}</p>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={closePreview}\n\t\t\t\t\tclassName=\"shrink-0 w-8 h-8 rounded-full border flex items-center justify-center hover:bg-muted transition-colors ml-3\"\n\t\t\t\t\tstyle={{ backgroundColor: \"var(--ac-background)\", borderColor: \"var(--ac-border)\" }}\n\t\t\t\t>\n\t\t\t\t\t<X className=\"w-4 h-4\" />\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div className=\"flex-1 min-h-0\">\n\t\t\t\t{preview && (\n\t\t\t\t\t<iframe\n\t\t\t\t\t\tkey={preview.url}\n\t\t\t\t\t\tsrc={preview.url}\n\t\t\t\t\t\tclassName=\"w-full h-full border-none\"\n\t\t\t\t\t\tsandbox=\"allow-scripts allow-same-origin allow-forms allow-popups allow-presentation\"\n\t\t\t\t\t\ttitle={preview.title || \"Preview\"}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
@@ -523,7 +523,8 @@ function JsonRenderResult({
523
523
  onSendMessage,
524
524
  className,
525
525
  conversationMessages,
526
- apiKey
526
+ apiKey,
527
+ apiEndpoint
527
528
  }) {
528
529
  const rawSpecObj = rawSpec;
529
530
  const spec = useMemo(() => normalizeSpec(rawSpecObj), [rawSpecObj]);
@@ -583,8 +584,18 @@ function JsonRenderResult({
583
584
  const headers = {
584
585
  "Content-Type": "application/json"
585
586
  };
586
- if (apiKey) {
587
- headers.Authorization = `Bearer ${apiKey}`;
587
+ if (resolved?.headers && typeof resolved.headers === "object") {
588
+ for (const [k, v] of Object.entries(
589
+ resolved.headers
590
+ )) {
591
+ if (typeof v === "string") headers[k] = v;
592
+ }
593
+ }
594
+ if (apiKey && !headers.Authorization) {
595
+ const sameOrigin = !apiEndpoint || url.startsWith(apiEndpoint);
596
+ if (sameOrigin) {
597
+ headers.Authorization = `Bearer ${apiKey}`;
598
+ }
588
599
  }
589
600
  const res = await fetch(url, {
590
601
  method,
@@ -602,7 +613,7 @@ function JsonRenderResult({
602
613
  return responseData;
603
614
  }
604
615
  }),
605
- [onSendMessage, apiKey]
616
+ [onSendMessage, apiKey, apiEndpoint]
606
617
  );
607
618
  return /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsxs(
608
619
  JSONUIProvider,
@@ -672,5 +683,5 @@ function ValidationBridge({
672
683
  }
673
684
 
674
685
  export { JsonRenderResult, catalog, registry };
675
- //# sourceMappingURL=chunk-RPDJXB3U.js.map
676
- //# sourceMappingURL=chunk-RPDJXB3U.js.map
686
+ //# sourceMappingURL=chunk-ZXP7IYRC.js.map
687
+ //# sourceMappingURL=chunk-ZXP7IYRC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/json-render/catalog.ts","../src/json-render/registry.tsx","../src/json-render/JsonRenderResult.tsx"],"names":["jsx"],"mappings":"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","file":"chunk-ZXP7IYRC.js","sourcesContent":["/**\n * json-render catalog for the widget.\n * Uses @json-render/shadcn standard component definitions.\n */\n\nimport { defineCatalog } from \"@json-render/core\";\nimport { schema } from \"@json-render/react/schema\";\nimport { shadcnComponentDefinitions } from \"@json-render/shadcn/catalog\";\nimport { z } from \"zod\";\n\n// ── Chart prop schemas ──────────────────────────────────────\nconst seriesSchema = z.object({\n dataKey: z.string(),\n label: z.string(),\n color: z.string().nullable().optional(),\n type: z.enum([\"line\", \"bar\", \"area\"]).nullable().optional(),\n});\n\nconst chartConfigSchema = z.object({\n xAxis: z.string().nullable().optional(),\n series: z.array(seriesSchema),\n showGrid: z.boolean().nullable().optional(),\n showLegend: z.boolean().nullable().optional(),\n stacked: z.boolean().nullable().optional(),\n valueFormatter: z\n .enum([\"currency\", \"percent\", \"number\", \"compact\"])\n .nullable()\n .optional(),\n});\n\nconst chartBaseProps = {\n title: z.string().nullable().optional(),\n description: z.string().nullable().optional(),\n data: z.array(z.record(z.string(), z.unknown())),\n config: chartConfigSchema,\n height: z.number().nullable().optional(),\n};\n\nexport const catalog = defineCatalog(schema, {\n components: {\n // ── Layout ──────────────────────────────────────────────\n Card: shadcnComponentDefinitions.Card,\n Stack: shadcnComponentDefinitions.Stack,\n Grid: shadcnComponentDefinitions.Grid,\n Separator: shadcnComponentDefinitions.Separator,\n Tabs: shadcnComponentDefinitions.Tabs,\n Accordion: shadcnComponentDefinitions.Accordion,\n Collapsible: shadcnComponentDefinitions.Collapsible,\n Dialog: shadcnComponentDefinitions.Dialog,\n Drawer: shadcnComponentDefinitions.Drawer,\n Carousel: shadcnComponentDefinitions.Carousel,\n\n // ── Typography ──────────────────────────────────────────\n Heading: shadcnComponentDefinitions.Heading,\n Text: shadcnComponentDefinitions.Text,\n Badge: shadcnComponentDefinitions.Badge,\n Link: shadcnComponentDefinitions.Link,\n Alert: shadcnComponentDefinitions.Alert,\n\n // ── Media ───────────────────────────────────────────────\n Image: shadcnComponentDefinitions.Image,\n Avatar: shadcnComponentDefinitions.Avatar,\n\n // ── Data ────────────────────────────────────────────────\n Table: shadcnComponentDefinitions.Table,\n\n // ── Charts & Visualization ────────────────────────────\n LineChart: {\n props: z.object(chartBaseProps),\n description: \"Line chart for trends over time. Provide data array + config.xAxis + config.series.\",\n example: {\n title: \"Monthly Sales\",\n data: [{ month: \"Jan\", sales: 100 }, { month: \"Feb\", sales: 150 }],\n config: { xAxis: \"month\", series: [{ dataKey: \"sales\", label: \"Sales\" }] },\n },\n },\n BarChart: {\n props: z.object(chartBaseProps),\n description: \"Bar chart for comparing categories. Provide data array + config.xAxis + config.series.\",\n example: {\n title: \"Product Comparison\",\n data: [{ product: \"A\", revenue: 500 }, { product: \"B\", revenue: 300 }],\n config: { xAxis: \"product\", series: [{ dataKey: \"revenue\", label: \"Revenue\" }] },\n },\n },\n PieChart: {\n props: z.object({\n title: z.string().nullable().optional(),\n description: z.string().nullable().optional(),\n data: z.array(z.record(z.string(), z.unknown())),\n dataKey: z.string(),\n nameKey: z.string().nullable().optional(),\n height: z.number().nullable().optional(),\n }),\n description: \"Pie chart for proportional breakdown. Each data item needs a name and a value field.\",\n example: {\n title: \"Market Share\",\n data: [{ name: \"Product A\", value: 60 }, { name: \"Product B\", value: 40 }],\n dataKey: \"value\",\n nameKey: \"name\",\n },\n },\n AreaChart: {\n props: z.object(chartBaseProps),\n description: \"Area chart for cumulative values over time with gradient fills.\",\n example: {\n title: \"Traffic Volume\",\n data: [{ day: \"Mon\", visits: 200 }, { day: \"Tue\", visits: 350 }],\n config: { xAxis: \"day\", series: [{ dataKey: \"visits\", label: \"Visits\" }] },\n },\n },\n MetricCards: {\n props: z.object({\n title: z.string().nullable().optional(),\n metrics: z.array(\n z.object({\n label: z.string(),\n value: z.string(),\n unit: z.string().nullable().optional(),\n trend: z.string().nullable().optional(),\n trendDirection: z.enum([\"up\", \"down\", \"neutral\"]).nullable().optional(),\n description: z.string().nullable().optional(),\n }),\n ),\n }),\n description: \"KPI metric cards grid with big numbers and optional trend indicators.\",\n example: {\n metrics: [\n { label: \"Revenue\", value: \"$1.2M\", trend: \"+12%\", trendDirection: \"up\" },\n { label: \"Users\", value: \"45K\", trend: \"-3%\", trendDirection: \"down\" },\n ],\n },\n },\n ComparisonTable: {\n props: z.object({\n title: z.string().nullable().optional(),\n items: z.array(\n z.object({\n name: z.string(),\n highlight: z.boolean().nullable().optional(),\n features: z.record(z.string(), z.union([z.string(), z.boolean(), z.number()])),\n }),\n ),\n fields: z.array(\n z.object({\n key: z.string(),\n label: z.string(),\n type: z.enum([\"text\", \"boolean\", \"rating\"]).nullable().optional(),\n }),\n ),\n }),\n description: \"Side-by-side comparison table. Items are columns, fields are rows.\",\n example: {\n title: \"Plan Comparison\",\n items: [\n { name: \"Basic\", features: { price: \"$9/mo\", storage: \"10GB\", support: true } },\n { name: \"Pro\", highlight: true, features: { price: \"$29/mo\", storage: \"100GB\", support: true } },\n ],\n fields: [\n { key: \"price\", label: \"Price\", type: \"text\" },\n { key: \"storage\", label: \"Storage\", type: \"text\" },\n { key: \"support\", label: \"Support\", type: \"boolean\" },\n ],\n },\n },\n Timeline: {\n props: z.object({\n title: z.string().nullable().optional(),\n events: z.array(\n z.object({\n date: z.string().nullable().optional(),\n title: z.string(),\n description: z.string().nullable().optional(),\n status: z.enum([\"completed\", \"current\", \"upcoming\"]).nullable().optional(),\n }),\n ),\n }),\n description: \"Vertical timeline for chronological events or process steps.\",\n example: {\n events: [\n { title: \"Order Placed\", date: \"Jan 1\", status: \"completed\" },\n { title: \"Shipped\", date: \"Jan 3\", status: \"current\" },\n { title: \"Delivered\", status: \"upcoming\" },\n ],\n },\n },\n ProgressBars: {\n props: z.object({\n title: z.string().nullable().optional(),\n goals: z.array(\n z.object({\n label: z.string(),\n current: z.number(),\n target: z.number(),\n unit: z.string().nullable().optional(),\n }),\n ),\n }),\n description: \"Progress bars for goal tracking with current/target values.\",\n example: {\n goals: [\n { label: \"Revenue\", current: 75000, target: 100000, unit: \"$\" },\n { label: \"Users\", current: 800, target: 1000 },\n ],\n },\n },\n\n // ── Form ────────────────────────────────────────────────\n Input: shadcnComponentDefinitions.Input,\n Textarea: shadcnComponentDefinitions.Textarea,\n Select: shadcnComponentDefinitions.Select,\n Checkbox: shadcnComponentDefinitions.Checkbox,\n Radio: shadcnComponentDefinitions.Radio,\n Switch: shadcnComponentDefinitions.Switch,\n Slider: shadcnComponentDefinitions.Slider,\n Button: shadcnComponentDefinitions.Button,\n ButtonGroup: shadcnComponentDefinitions.ButtonGroup,\n Toggle: shadcnComponentDefinitions.Toggle,\n ToggleGroup: shadcnComponentDefinitions.ToggleGroup,\n DropdownMenu: shadcnComponentDefinitions.DropdownMenu,\n\n // ── Feedback ────────────────────────────────────────────\n Progress: shadcnComponentDefinitions.Progress,\n Spinner: shadcnComponentDefinitions.Spinner,\n Skeleton: shadcnComponentDefinitions.Skeleton,\n Tooltip: shadcnComponentDefinitions.Tooltip,\n Popover: shadcnComponentDefinitions.Popover,\n\n // ── Navigation ──────────────────────────────────────────\n Pagination: shadcnComponentDefinitions.Pagination,\n },\n\n actions: {\n navigate_url: {\n params: z.object({\n url: z.string(),\n target: z.enum([\"_self\", \"_blank\"]).default(\"_blank\"),\n }),\n description: \"Open a URL in a new tab or the current tab.\",\n },\n send_message: {\n params: z.object({\n message: z.string(),\n }),\n description: \"Send a follow-up chat message on behalf of the user.\",\n },\n call_api: {\n params: z.object({\n endpoint: z.string(),\n method: z.enum([\"GET\", \"POST\", \"PUT\", \"DELETE\"]).default(\"POST\"),\n body: z.record(z.string(), z.unknown()).optional(),\n }),\n description: \"Make a proxied API call through the platform backend.\",\n },\n },\n});\n\nexport type PlatformCatalog = typeof catalog;\nexport type PlatformSpec = typeof catalog._specType;\n","\"use client\";\n\n/**\n * json-render registry for the widget.\n * Uses @json-render/shadcn standard component implementations.\n * Includes custom chart & visualization components.\n */\n\nimport { defineRegistry } from \"@json-render/react\";\nimport { shadcnComponents } from \"@json-render/shadcn\";\nimport { VisualizationRenderer } from \"../tools/VisualizationRenderer\";\nimport type { VisualizationSpec } from \"../tools/VisualizationRenderer\";\nimport { catalog } from \"./catalog\";\n\nexport const { registry, handlers: createActionHandlers } = defineRegistry(\n catalog,\n {\n components: {\n // ── Layout ──────────────────────────────────────────────\n Card: (p) => <div className=\"w-full [&>div]:border-0 [&>div]:shadow-none\">{shadcnComponents.Card(p)}</div>,\n Stack: shadcnComponents.Stack,\n Grid: shadcnComponents.Grid,\n Separator: shadcnComponents.Separator,\n Tabs: shadcnComponents.Tabs,\n Accordion: shadcnComponents.Accordion,\n Collapsible: shadcnComponents.Collapsible,\n Dialog: shadcnComponents.Dialog,\n Drawer: shadcnComponents.Drawer,\n Carousel: shadcnComponents.Carousel,\n\n // ── Typography ──────────────────────────────────────────\n Heading: shadcnComponents.Heading,\n Text: shadcnComponents.Text,\n Badge: shadcnComponents.Badge,\n Link: shadcnComponents.Link,\n Alert: shadcnComponents.Alert,\n\n // ── Media ───────────────────────────────────────────────\n Image: shadcnComponents.Image,\n Avatar: shadcnComponents.Avatar,\n\n // ── Data ────────────────────────────────────────────────\n Table: shadcnComponents.Table,\n\n // ── Charts & Visualization ────────────────────────────\n LineChart: ({ props }) => (\n <VisualizationRenderer\n spec={{\n type: \"line_chart\",\n title: props.title ?? undefined,\n description: props.description ?? undefined,\n data: props.data as VisualizationSpec[\"data\"],\n config: {\n xAxis: props.config?.xAxis ?? undefined,\n series: props.config?.series?.map((s) => ({\n dataKey: s.dataKey,\n label: s.label,\n color: s.color ?? undefined,\n })),\n showGrid: props.config?.showGrid ?? undefined,\n showLegend: props.config?.showLegend ?? undefined,\n stacked: props.config?.stacked ?? undefined,\n valueFormatter: props.config?.valueFormatter ?? undefined,\n },\n }}\n />\n ),\n BarChart: ({ props }) => (\n <VisualizationRenderer\n spec={{\n type: \"bar_chart\",\n title: props.title ?? undefined,\n description: props.description ?? undefined,\n data: props.data as VisualizationSpec[\"data\"],\n config: {\n xAxis: props.config?.xAxis ?? undefined,\n series: props.config?.series?.map((s) => ({\n dataKey: s.dataKey,\n label: s.label,\n color: s.color ?? undefined,\n })),\n showGrid: props.config?.showGrid ?? undefined,\n showLegend: props.config?.showLegend ?? undefined,\n stacked: props.config?.stacked ?? undefined,\n valueFormatter: props.config?.valueFormatter ?? undefined,\n },\n }}\n />\n ),\n PieChart: ({ props }) => (\n <VisualizationRenderer\n spec={{\n type: \"pie_chart\",\n title: props.title ?? undefined,\n description: props.description ?? undefined,\n data: props.data as VisualizationSpec[\"data\"],\n config: {\n series: [{ dataKey: props.dataKey, label: props.dataKey }],\n },\n }}\n />\n ),\n AreaChart: ({ props }) => (\n <VisualizationRenderer\n spec={{\n type: \"area_chart\",\n title: props.title ?? undefined,\n description: props.description ?? undefined,\n data: props.data as VisualizationSpec[\"data\"],\n config: {\n xAxis: props.config?.xAxis ?? undefined,\n series: props.config?.series?.map((s) => ({\n dataKey: s.dataKey,\n label: s.label,\n color: s.color ?? undefined,\n })),\n showGrid: props.config?.showGrid ?? undefined,\n showLegend: props.config?.showLegend ?? undefined,\n stacked: props.config?.stacked ?? undefined,\n valueFormatter: props.config?.valueFormatter ?? undefined,\n },\n }}\n />\n ),\n MetricCards: ({ props }) => (\n <VisualizationRenderer\n spec={{\n type: \"metric_cards\",\n title: props.title ?? undefined,\n metrics: props.metrics?.map((m) => ({\n label: m.label,\n value: m.value,\n unit: m.unit ?? undefined,\n trend: m.trend ?? undefined,\n trendDirection: m.trendDirection ?? undefined,\n description: m.description ?? undefined,\n })),\n }}\n />\n ),\n ComparisonTable: ({ props }) => (\n <VisualizationRenderer\n spec={{\n type: \"comparison\",\n title: props.title ?? undefined,\n items: props.items?.map((item) => ({\n name: item.name,\n highlight: item.highlight ?? undefined,\n features: item.features as Record<string, string | boolean | number>,\n })),\n comparisonFields: props.fields?.map((f) => ({\n key: f.key,\n label: f.label,\n type: f.type ?? undefined,\n })),\n }}\n />\n ),\n Timeline: ({ props }) => (\n <VisualizationRenderer\n spec={{\n type: \"timeline\",\n title: props.title ?? undefined,\n events: props.events?.map((e) => ({\n date: e.date ?? undefined,\n title: e.title,\n description: e.description ?? undefined,\n status: e.status ?? undefined,\n })),\n }}\n />\n ),\n ProgressBars: ({ props }) => (\n <VisualizationRenderer\n spec={{\n type: \"progress\",\n title: props.title ?? undefined,\n goals: props.goals?.map((g) => ({\n label: g.label,\n current: g.current,\n target: g.target,\n unit: g.unit ?? undefined,\n })),\n }}\n />\n ),\n\n // ── Form (wrapped with w-full for proper layout) ────────\n Input: (p) => <div className=\"w-full\">{shadcnComponents.Input(p)}</div>,\n Textarea: (p) => <div className=\"w-full\">{shadcnComponents.Textarea(p)}</div>,\n Select: (p) => <div className=\"w-full\">{shadcnComponents.Select(p)}</div>,\n Checkbox: shadcnComponents.Checkbox,\n Radio: shadcnComponents.Radio,\n Switch: shadcnComponents.Switch,\n Slider: shadcnComponents.Slider,\n Button: shadcnComponents.Button,\n ButtonGroup: shadcnComponents.ButtonGroup,\n Toggle: shadcnComponents.Toggle,\n ToggleGroup: shadcnComponents.ToggleGroup,\n DropdownMenu: shadcnComponents.DropdownMenu,\n\n // ── Feedback ────────────────────────────────────────────\n Progress: shadcnComponents.Progress,\n Spinner: shadcnComponents.Spinner,\n Skeleton: shadcnComponents.Skeleton,\n Tooltip: shadcnComponents.Tooltip,\n Popover: shadcnComponents.Popover,\n\n // ── Navigation ──────────────────────────────────────────\n Pagination: shadcnComponents.Pagination,\n },\n\n actions: {\n navigate_url: async (params) => {\n if (params?.url) {\n window.open(params.url, params.target ?? \"_blank\");\n }\n },\n send_message: async (params) => {\n console.log(\"[json-render] send_message action:\", params?.message);\n },\n call_api: async (params) => {\n const p = params as Record<string, unknown>;\n const url = (p?.endpoint || p?.url) as string | undefined;\n if (!url) {\n console.warn(\"[json-render] call_api: missing endpoint/url\");\n return;\n }\n const method = ((params?.method as string) || \"POST\").toUpperCase();\n try {\n const res = await fetch(url, {\n method,\n headers: { \"Content-Type\": \"application/json\" },\n ...(method !== \"GET\" && params?.body\n ? { body: JSON.stringify(params.body) }\n : {}),\n });\n const data = await res.json().catch(() => null);\n console.log(\"[json-render] call_api response:\", res.status, data);\n return data;\n } catch (err) {\n console.error(\"[json-render] call_api error:\", err);\n }\n },\n },\n },\n);\n","\"use client\";\n\n/**\n * JsonRenderResult — wrapper component for rendering json-render specs\n * inside tool results (both frontend dashboard and widget).\n */\n\nimport type { Spec } from \"@json-render/core\";\nimport {\n JSONUIProvider,\n Renderer,\n useStateValue,\n useValidation,\n} from \"@json-render/react\";\nimport { useMemo, useRef, useCallback, useEffect } from \"react\";\nimport { registry } from \"./registry\";\n\n/** Normalize a spec to the { root: string, elements: {...} } format. */\nfunction normalizeSpec(raw: Record<string, unknown>): Spec {\n if (typeof raw.root === \"string\" && raw.elements) {\n return raw as unknown as Spec;\n }\n const elements: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(raw)) {\n if (\n value &&\n typeof value === \"object\" &&\n \"type\" in (value as Record<string, unknown>)\n ) {\n elements[key] = value;\n }\n }\n return { root: \"root\", elements } as unknown as Spec;\n}\n\n/** Extract the `state` field from a spec and flatten into state paths. */\nfunction extractSpecState(\n raw: Record<string, unknown>,\n): Record<string, unknown> {\n const state = raw.state as Record<string, unknown> | undefined;\n if (!state || typeof state !== \"object\") return {};\n\n const result: Record<string, unknown> = {};\n function walk(obj: Record<string, unknown>, prefix: string) {\n for (const [key, value] of Object.entries(obj)) {\n const path = `${prefix}/${key}`;\n result[path] = value;\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n walk(value as Record<string, unknown>, path);\n }\n }\n }\n walk(state, \"\");\n return result;\n}\n\n/** Deeply resolve $state expressions in a value tree. */\nfunction deepResolve(\n value: unknown,\n stateMap: Record<string, unknown>,\n): unknown {\n if (value === null || value === undefined) return value;\n if (typeof value === \"object\" && !Array.isArray(value)) {\n const obj = value as Record<string, unknown>;\n if (Object.keys(obj).length === 1 && typeof obj.$state === \"string\") {\n return stateMap[obj.$state];\n }\n const resolved: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(obj)) {\n resolved[key] = deepResolve(val, stateMap);\n }\n return resolved;\n }\n if (Array.isArray(value)) {\n return value.map((item) => deepResolve(item, stateMap));\n }\n return value;\n}\n\ninterface FormConfig {\n successMessage?: string;\n errorMessage?: string;\n hideFormAfter?: boolean;\n}\n\ninterface JsonRenderResultProps {\n spec: Spec;\n data: unknown;\n onSendMessage?: (message: string) => void;\n className?: string;\n conversationMessages?: Array<{ role: string; content: string }>;\n /** API key for authenticated requests (form submissions etc.) */\n apiKey?: string;\n /**\n * Same-origin guard for apiKey injection. `call_api` actions only\n * attach the Bearer token when the target URL starts with this\n * endpoint — prevents the key leaking to third-party URLs referenced\n * in a tool spec (e.g. user-generated specs in data_store tools).\n */\n apiEndpoint?: string;\n}\n\nexport function JsonRenderResult({\n spec: rawSpec,\n data,\n onSendMessage,\n className,\n conversationMessages,\n apiKey,\n apiEndpoint,\n}: JsonRenderResultProps) {\n const rawSpecObj = rawSpec as unknown as Record<string, unknown>;\n const spec = useMemo(() => normalizeSpec(rawSpecObj), [rawSpecObj]);\n\n // Extract _formConfig from spec (set by the Form Settings panel)\n const formConfig = useMemo(\n () => (rawSpecObj._formConfig as FormConfig) || null,\n [rawSpecObj],\n );\n\n const initialState = useMemo(() => {\n const specState = extractSpecState(rawSpecObj);\n return {\n \"/data\": data,\n ...(conversationMessages\n ? { \"/conversationMessages\": conversationMessages }\n : {}),\n ...specState,\n };\n }, [data, rawSpecObj, conversationMessages]);\n\n // Ref for state tracking (updated via onStateChange)\n const stateRef = useRef<Record<string, unknown>>(initialState);\n const validateRef = useRef<(() => boolean) | null>(null);\n\n const handleStateChange = useCallback(\n (changes: Array<{ path: string; value: unknown }>) => {\n for (const { path, value } of changes) {\n stateRef.current[path] = value;\n }\n },\n [],\n );\n\n const handlers = useMemo(\n () => ({\n navigate_url: async (params: Record<string, unknown>) => {\n if (params?.url) {\n window.open(\n params.url as string,\n (params.target as string) ?? \"_blank\",\n );\n }\n },\n\n send_message: async (params: Record<string, unknown>) => {\n if (\n onSendMessage &&\n params?.message &&\n typeof params.message === \"string\"\n ) {\n onSendMessage(params.message);\n }\n },\n\n call_api: async (params: Record<string, unknown>) => {\n if (validateRef.current) {\n const isValid = validateRef.current();\n if (!isValid) {\n throw new Error(\"Validation failed\");\n }\n }\n\n const resolved = deepResolve(\n params,\n stateRef.current,\n ) as Record<string, unknown>;\n\n const url = (resolved?.endpoint || resolved?.url) as\n | string\n | undefined;\n if (!url) {\n throw new Error(\"Missing endpoint/url in call_api params\");\n }\n const method = (\n (resolved?.method as string) || \"POST\"\n ).toUpperCase();\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n // Merge user-supplied headers (from spec's params.headers).\n if (resolved?.headers && typeof resolved.headers === \"object\") {\n for (const [k, v] of Object.entries(\n resolved.headers as Record<string, unknown>,\n )) {\n if (typeof v === \"string\") headers[k] = v;\n }\n }\n // Auto-inject Bearer apiKey, but only for same-origin calls against\n // the project's apiEndpoint. Keeps tokens out of third-party URLs\n // referenced in user-supplied specs. If apiEndpoint isn't configured\n // (standalone previews), fall back to attaching — matches previous\n // behaviour so current flows don't break.\n if (apiKey && !headers.Authorization) {\n const sameOrigin =\n !apiEndpoint || url.startsWith(apiEndpoint);\n if (sameOrigin) {\n headers.Authorization = `Bearer ${apiKey}`;\n }\n }\n\n const res = await fetch(url, {\n method,\n headers,\n credentials: \"include\",\n ...(method !== \"GET\" && resolved?.body\n ? { body: JSON.stringify(resolved.body) }\n : {}),\n });\n\n if (!res.ok) {\n const errBody = await res.text().catch(() => \"\");\n throw new Error(\n errBody || `Request failed with status ${res.status}`,\n );\n }\n\n const responseData = await res.json().catch(() => null);\n return responseData;\n },\n }),\n [onSendMessage, apiKey, apiEndpoint],\n );\n\n return (\n <div className={className}>\n <JSONUIProvider\n registry={registry}\n initialState={initialState}\n handlers={handlers}\n onStateChange={handleStateChange}\n >\n <ValidationBridge validateRef={validateRef} />\n {formConfig ? (\n <FormFeedbackWrapper formConfig={formConfig}>\n <Renderer spec={spec} registry={registry} />\n </FormFeedbackWrapper>\n ) : (\n <Renderer spec={spec} registry={registry} />\n )}\n </JSONUIProvider>\n </div>\n );\n}\n\n/** Reads /formSubmitted and /formError from state and shows feedback UI.\n * Optionally hides form children after success. */\nfunction FormFeedbackWrapper({\n formConfig,\n children,\n}: {\n formConfig: FormConfig;\n children: React.ReactNode;\n}) {\n const formSubmitted = useStateValue(\"/formSubmitted\");\n const formError = useStateValue(\"/formError\");\n\n // Only show feedback when state has been explicitly set to truthy values\n const isSubmitted = formSubmitted === true;\n const hasError = !!formError && formError !== \"\" && formError !== false;\n\n if (isSubmitted && formConfig.hideFormAfter) {\n return (\n <div\n className=\"rounded-lg border border-green-200 bg-green-50 p-4 dark:border-green-800 dark:bg-green-950/30\"\n role=\"alert\"\n >\n <p className=\"text-sm font-medium text-green-800 dark:text-green-200\">\n {formConfig.successMessage || \"Submitted successfully!\"}\n </p>\n </div>\n );\n }\n\n return (\n <>\n {isSubmitted && formConfig.successMessage && (\n <div\n className=\"rounded-lg border border-green-200 bg-green-50 p-3 mb-3 dark:border-green-800 dark:bg-green-950/30\"\n role=\"alert\"\n >\n <p className=\"text-sm font-medium text-green-800 dark:text-green-200\">\n {formConfig.successMessage}\n </p>\n </div>\n )}\n {hasError && formConfig.errorMessage && (\n <div\n className=\"rounded-lg border border-red-200 bg-red-50 p-3 mb-3 dark:border-red-800 dark:bg-red-950/30\"\n role=\"alert\"\n >\n <p className=\"text-sm font-medium text-red-800 dark:text-red-200\">\n {formConfig.errorMessage}\n </p>\n </div>\n )}\n {children}\n </>\n );\n}\n\n/** Bridges the validation context to the parent's ref. */\nfunction ValidationBridge({\n validateRef,\n}: {\n validateRef: React.RefObject<(() => boolean) | null>;\n}) {\n const validation = useValidation();\n\n useEffect(() => {\n if (validation?.validateAll) {\n validateRef.current = () => validation.validateAll();\n }\n return () => {\n validateRef.current = null;\n };\n }, [validation, validateRef]);\n\n return null;\n}\n"]}