@aigentyc/chat-sdk 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/context7.json +1 -1
- package/dist/{ChatInterface--yaDB5yp.d.ts → ChatInterface-2MN5cpYB.d.ts} +1 -1
- package/dist/{ChatInterface-0rq8D5-8.d.cts → ChatInterface-BnVyOUG5.d.cts} +1 -1
- package/dist/{SlotsContext-CWTjP0mA.d.ts → SlotsContext-BZBi51ZT.d.ts} +89 -4
- package/dist/{SlotsContext-u5CFB7MS.d.cts → SlotsContext-D_C7zlUA.d.cts} +89 -4
- package/dist/ai-elements.cjs +163 -566
- package/dist/ai-elements.cjs.map +1 -1
- package/dist/ai-elements.d.cts +10 -2
- package/dist/ai-elements.d.ts +10 -2
- package/dist/ai-elements.js +16 -461
- package/dist/ai-elements.js.map +1 -1
- package/dist/{chunk-LSKOJ7SH.js → chunk-3H4CX3MS.js} +8 -5
- package/dist/chunk-3H4CX3MS.js.map +1 -0
- package/dist/{chunk-46MUOYPR.cjs → chunk-52ZHMTAA.cjs} +8 -5
- package/dist/chunk-52ZHMTAA.cjs.map +1 -0
- package/dist/{chunk-B27JIQ4Z.js → chunk-5XF3NEFB.js} +576 -6
- package/dist/chunk-5XF3NEFB.js.map +1 -0
- package/dist/{chunk-LVWSWTI3.cjs → chunk-7ESWDFF5.cjs} +92 -58
- package/dist/chunk-7ESWDFF5.cjs.map +1 -0
- package/dist/{chunk-RAQVW2D7.js → chunk-BWWN5LSE.js} +62 -28
- package/dist/chunk-BWWN5LSE.js.map +1 -0
- package/dist/chunk-BYTPAQ7F.js +70 -0
- package/dist/chunk-BYTPAQ7F.js.map +1 -0
- package/dist/{chunk-3EN3DMUL.js → chunk-D75TDRBH.js} +8 -5
- package/dist/chunk-D75TDRBH.js.map +1 -0
- package/dist/chunk-DDATCJ3O.cjs +75 -0
- package/dist/chunk-DDATCJ3O.cjs.map +1 -0
- package/dist/{chunk-NYQSM3EB.cjs → chunk-DVWX2UGY.cjs} +16 -2
- package/dist/chunk-DVWX2UGY.cjs.map +1 -0
- package/dist/{chunk-TZ7EM3EG.cjs → chunk-EMVZ7HWM.cjs} +44 -2
- package/dist/chunk-EMVZ7HWM.cjs.map +1 -0
- package/dist/{chunk-6ZZTTD5E.js → chunk-FJZL33KP.js} +3 -3
- package/dist/{chunk-6ZZTTD5E.js.map → chunk-FJZL33KP.js.map} +1 -1
- package/dist/{chunk-JHWSG5IB.js → chunk-JAOD6CNW.js} +38 -3
- package/dist/chunk-JAOD6CNW.js.map +1 -0
- package/dist/{chunk-4WOBNRRB.cjs → chunk-KTYYLZN7.cjs} +592 -8
- package/dist/chunk-KTYYLZN7.cjs.map +1 -0
- package/dist/{chunk-AWRQSM42.cjs → chunk-NBZDBH4M.cjs} +8 -5
- package/dist/chunk-NBZDBH4M.cjs.map +1 -0
- package/dist/{chunk-5F3O3ZJH.js → chunk-P7UR37HP.js} +17 -4
- package/dist/chunk-P7UR37HP.js.map +1 -0
- package/dist/{chunk-OEEDYJTV.cjs → chunk-Q3UJEIBN.cjs} +6 -6
- package/dist/{chunk-OEEDYJTV.cjs.map → chunk-Q3UJEIBN.cjs.map} +1 -1
- package/dist/{chunk-3KSMOHNY.js → chunk-R3TYC66R.js} +46 -81
- package/dist/chunk-R3TYC66R.js.map +1 -0
- package/dist/{chunk-OU5OZKYH.cjs → chunk-Y4B45DW4.cjs} +48 -90
- package/dist/chunk-Y4B45DW4.cjs.map +1 -0
- package/dist/components.cjs +18 -18
- package/dist/components.d.cts +3 -3
- package/dist/components.d.ts +3 -3
- package/dist/components.js +7 -7
- package/dist/core.d.cts +2 -2
- package/dist/core.d.ts +2 -2
- package/dist/hooks.cjs +31 -10
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.d.cts +2 -2
- package/dist/hooks.d.ts +2 -2
- package/dist/hooks.js +4 -3
- package/dist/hooks.js.map +1 -1
- package/dist/i18n.d.cts +1 -1
- package/dist/i18n.d.ts +1 -1
- package/dist/index.cjs +52 -31
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +11 -10
- package/dist/index.js.map +1 -1
- package/dist/llms-full.txt +9 -9
- package/dist/styles.css +1 -1
- package/dist/theme.d.cts +1 -1
- package/dist/theme.d.ts +1 -1
- package/dist/tools.cjs +5 -5
- package/dist/tools.d.cts +2 -2
- package/dist/tools.d.ts +2 -2
- package/dist/tools.js +2 -2
- package/dist/{types-DQCjs81O.d.cts → types-bsR_-fq8.d.cts} +24 -1
- package/dist/{types-DQCjs81O.d.ts → types-bsR_-fq8.d.ts} +24 -1
- package/dist/ui.cjs +52 -52
- package/dist/ui.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-3EN3DMUL.js.map +0 -1
- package/dist/chunk-3KSMOHNY.js.map +0 -1
- package/dist/chunk-46MUOYPR.cjs.map +0 -1
- package/dist/chunk-4WOBNRRB.cjs.map +0 -1
- package/dist/chunk-5F3O3ZJH.js.map +0 -1
- package/dist/chunk-AWRQSM42.cjs.map +0 -1
- package/dist/chunk-B27JIQ4Z.js.map +0 -1
- package/dist/chunk-JHWSG5IB.js.map +0 -1
- package/dist/chunk-LSKOJ7SH.js.map +0 -1
- package/dist/chunk-LVWSWTI3.cjs.map +0 -1
- package/dist/chunk-NYQSM3EB.cjs.map +0 -1
- package/dist/chunk-OU5OZKYH.cjs.map +0 -1
- package/dist/chunk-RAQVW2D7.js.map +0 -1
- package/dist/chunk-TZ7EM3EG.cjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
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":["jsxs","jsx","memo","ChatHeader","useI18n","useChatContext","X","Fragment","ArrowLeft","cn","ShoppingCart","Plus","ChatInput","useState","Shield","MessageSquare","Zap","Search","HelpCircle","FileText","Users","Settings","Utensils","Coffee","Hotel","MapPin","Calendar","Star","Heart","Building","Flag","FerrisWheel","Ticket","useIsMobile","useRef","useEffect","useCallback","Minus","Trash2","Component","SparklesIcon","useTheme","useSlots","useLiveChat","useMemo","renderSlot","Conversation","ConversationContent","ConversationEmptyState","ToolRenderer","Sources","SourcesTrigger","SourcesContent","Source","MessageFeedback","Loader","Headset","Send","ThumbsUp","ThumbsDown","usePreviewEmbed","ExternalLink"],"mappings":"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","file":"chunk-LVWSWTI3.cjs","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(/&/g, \"&\")\n\t\t.replace(/</g, \"<\")\n\t\t.replace(/>/g, \">\")\n\t\t.replace(/"/g, '\"')\n\t\t.replace(/–/g, \"–\")\n\t\t.replace(/—/g, \"—\")\n\t\t.replace(/«/g, \"«\")\n\t\t.replace(/»/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, newConversation: ctxNewConversation } = 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\t// Full reset: clears messages AND mints a new sessionId. Previously this\n\t\t// called clearMessages(), which kept the same sessionId — so the server\n\t\t// (analytics, session-scoped state) saw a continuation, not a new chat.\n\t\tctxNewConversation();\n\t\tsetShowWelcome(true);\n\t\tsetInput(\"\");\n\t\tsetHideFirstUserMessage(false);\n\t\tprops.onNewConversation?.();\n\t}, [ctxNewConversation, 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"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/providers/LiveChatProvider.tsx","../src/providers/PreviewEmbedProvider.tsx","../src/hooks/use-mobile.ts"],"names":["createContext","useState","useRef","useCallback","useEffect","useMemo","jsx","useContext"],"mappings":"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","file":"chunk-NYQSM3EB.cjs","sourcesContent":["\"use client\";\n\nimport {\n createContext,\n useContext,\n useState,\n useCallback,\n useRef,\n useEffect,\n useMemo,\n type ReactNode,\n} from \"react\";\nimport type {\n LiveChatState,\n LiveChatMessage,\n} from \"../core/types\";\nimport { LiveChatTransport } from \"../core/live-chat-transport\";\nimport type { LiveChatConfig as LiveChatTransportConfig } from \"../core/live-chat-transport\";\n\ninterface LiveChatContextValue {\n /** Current live chat state machine state. */\n state: LiveChatState;\n /** Live chat messages. */\n messages: LiveChatMessage[];\n /** Name of the connected operator. */\n operatorName: string;\n /** Current position in queue. */\n queuePosition: number;\n /** Whether to show the visitor identity form. */\n showIdentityForm: boolean;\n /** Initiate a live chat session. */\n initiate: (visitorName?: string, visitorEmail?: string) => Promise<void>;\n /** Send a message in live chat. */\n send: (content: string) => void;\n /** End the live chat session. */\n end: () => void;\n /** Cancel a pending live chat request. */\n cancel: () => void;\n /** Submit a satisfaction rating. */\n submitRating: (rating: \"positive\" | \"negative\", comment?: string) => void;\n /** Return to AI chat mode. */\n returnToAI: () => void;\n /** Request manual handoff (shows identity form). */\n requestManualHandoff: () => void;\n /** Control identity form visibility. */\n setShowIdentityForm: (show: boolean) => void;\n /** Register a getter for AI chat history (used for context handoff). */\n registerAiHistoryGetter: (\n getter: () => Array<{ role: string; content: string }>\n ) => void;\n /** Pre-filled user info. */\n userInfo?: { name?: string; email?: string } | null;\n}\n\nconst LiveChatContext = createContext<LiveChatContextValue | null>(null);\n\n/** Props for the LiveChatProvider. */\nexport interface LiveChatProviderProps {\n children: ReactNode;\n /** Chat service WebSocket URL. */\n chatServiceUrl: string;\n /** API key for authentication. */\n apiKey: string;\n /** Project identifier. */\n projectId: string;\n /** Visitor session ID (typically the AI chat session). */\n sessionId: string;\n /** Pre-filled user info. */\n userInfo?: { name?: string; email?: string } | null;\n}\n\n/**\n * Provides live chat functionality with operators.\n * Manages a state machine: \"ai\" -> \"requesting\" -> \"queued\" -> \"live\" -> \"ended\".\n * Uses a Socket.IO transport that is lazily loaded.\n */\nexport function LiveChatProvider({\n children,\n chatServiceUrl,\n apiKey,\n projectId,\n sessionId,\n userInfo,\n}: LiveChatProviderProps) {\n const [state, setState] = useState<LiveChatState>(\"ai\");\n const [messages, setMessages] = useState<LiveChatMessage[]>([]);\n const [operatorName, setOperatorName] = useState(\"\");\n const [queuePosition, setQueuePosition] = useState(0);\n const [showIdentityForm, setShowIdentityForm] = useState(false);\n const transportRef = useRef<any>(null);\n const aiHistoryGetterRef = useRef<\n (() => Array<{ role: string; content: string }>) | null\n >(null);\n\n const STORAGE_KEY = `livechat-session-${projectId}`;\n\n const registerAiHistoryGetter = useCallback(\n (getter: () => Array<{ role: string; content: string }>) => {\n aiHistoryGetterRef.current = getter;\n },\n []\n );\n\n const resetState = useCallback(() => {\n transportRef.current?.disconnect?.();\n transportRef.current = null;\n setState(\"ai\");\n setMessages([]);\n setOperatorName(\"\");\n setQueuePosition(0);\n setShowIdentityForm(false);\n if (typeof window !== \"undefined\") {\n try {\n sessionStorage.removeItem(STORAGE_KEY);\n } catch {\n // Ignore.\n }\n }\n }, [STORAGE_KEY]);\n\n const persistSession = useCallback(\n (liveChatSessionId: string) => {\n if (typeof window === \"undefined\") return;\n try {\n sessionStorage.setItem(STORAGE_KEY, liveChatSessionId);\n } catch {\n // Ignore.\n }\n },\n [STORAGE_KEY]\n );\n\n /** Attach standard event listeners to a transport instance. */\n const attachListeners = useCallback(\n (transport: any) => {\n transport.on(\"state-change\", setState);\n transport.on(\"queued\", (data: any) => {\n setQueuePosition(data.position);\n if (data.liveChatSessionId) persistSession(data.liveChatSessionId);\n });\n transport.on(\"queue-update\", (data: any) =>\n setQueuePosition(data.position)\n );\n transport.on(\"accepted\", (data: any) =>\n setOperatorName(data.operatorName)\n );\n transport.on(\"message\", (data: LiveChatMessage) =>\n setMessages((prev) => [...prev, data])\n );\n transport.on(\"system\", (data: any) => {\n setMessages((prev) => [\n ...prev,\n {\n id: Date.now(),\n content: data.message,\n senderType: \"system\" as const,\n timestamp: new Date().toISOString(),\n systemMessageType: data.type,\n },\n ]);\n });\n transport.on(\"ended\", () => setState(\"ended\"));\n transport.on(\"handback-ai\", () => resetState());\n },\n [persistSession, resetState]\n );\n\n // Attempt to rejoin on mount if there's a stored session\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n let cancelled = false;\n\n const storedSessionId = (() => {\n try {\n return sessionStorage.getItem(STORAGE_KEY);\n } catch {\n return null;\n }\n })();\n\n if (!storedSessionId || transportRef.current) return;\n\n async function rejoin() {\n // Dynamically import the transport to avoid bundling Socket.IO unconditionally\n const { LiveChatTransport } = await import(\"../core/live-chat-transport\");\n if (cancelled || !LiveChatTransport) return;\n\n const transportConfig: LiveChatTransportConfig = {\n chatServiceUrl,\n apiKey,\n projectId,\n visitorSessionId: sessionId,\n };\n\n const transport = new (LiveChatTransport as any)(transportConfig);\n attachListeners(transport);\n\n transport.on(\"rejoin-success\", (data: any) => {\n if (cancelled) return;\n if (data.state === \"live\") {\n setState(\"live\");\n setOperatorName(data.operatorName || \"Operator\");\n } else if (data.state === \"queued\") {\n setState(\"queued\");\n setQueuePosition(data.position || 1);\n }\n if (data.messages?.length) {\n setMessages(data.messages);\n }\n });\n\n transport.on(\"rejoin-failed\", () => {\n if (cancelled) return;\n if (typeof window !== \"undefined\") {\n try {\n sessionStorage.removeItem(STORAGE_KEY);\n } catch {\n // Ignore.\n }\n }\n transport.disconnect?.();\n transportRef.current = null;\n });\n\n transportRef.current = transport;\n await transport.connect();\n transport.rejoinSession(storedSessionId!);\n }\n\n rejoin().catch(() => {\n if (typeof window !== \"undefined\") {\n try {\n sessionStorage.removeItem(STORAGE_KEY);\n } catch {\n // Ignore.\n }\n }\n });\n\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const initiate = useCallback(\n async (visitorName?: string, visitorEmail?: string) => {\n if (transportRef.current) return;\n\n try {\n const { LiveChatTransport } = await import(\"../core/live-chat-transport\");\n if (!LiveChatTransport) {\n console.error(\"[LiveChat] LiveChatTransport not available\");\n return;\n }\n\n const transportConfig: LiveChatTransportConfig = {\n chatServiceUrl,\n apiKey,\n projectId,\n visitorSessionId: sessionId,\n };\n\n const transport = new (LiveChatTransport as any)(transportConfig);\n attachListeners(transport);\n\n transportRef.current = transport;\n await transport.connect();\n\n transport.requestHandoff({\n visitorName,\n visitorEmail,\n aiChatHistory: aiHistoryGetterRef.current?.() || [],\n });\n } catch (error) {\n console.error(\"[LiveChat] Failed to initiate:\", error);\n setState(\"ai\");\n }\n },\n [chatServiceUrl, apiKey, projectId, sessionId, attachListeners]\n );\n\n const cancel = useCallback(() => {\n const sid = transportRef.current?.getSessionId?.();\n if (sid) transportRef.current?.cancelRequest?.(sid);\n resetState();\n }, [resetState]);\n\n const end = useCallback(() => {\n transportRef.current?.endChat?.();\n }, []);\n\n const send = useCallback((content: string) => {\n if (!content.trim()) return;\n transportRef.current?.sendMessage?.(content);\n setMessages((prev) => [\n ...prev,\n {\n id: Date.now(),\n content,\n senderType: \"visitor\" as const,\n timestamp: new Date().toISOString(),\n },\n ]);\n }, []);\n\n const submitRating = useCallback(\n (rating: \"positive\" | \"negative\", comment?: string) => {\n transportRef.current?.submitRating?.(rating, comment);\n },\n []\n );\n\n const returnToAI = useCallback(() => {\n resetState();\n }, [resetState]);\n\n const requestManualHandoff = useCallback(() => {\n setShowIdentityForm(true);\n }, []);\n\n const value = useMemo<LiveChatContextValue>(\n () => ({\n state,\n messages,\n operatorName,\n queuePosition,\n showIdentityForm,\n initiate,\n send,\n end,\n cancel,\n submitRating,\n returnToAI,\n requestManualHandoff,\n setShowIdentityForm,\n registerAiHistoryGetter,\n userInfo,\n }),\n [\n state,\n messages,\n operatorName,\n queuePosition,\n showIdentityForm,\n initiate,\n send,\n end,\n cancel,\n submitRating,\n returnToAI,\n requestManualHandoff,\n registerAiHistoryGetter,\n userInfo,\n ]\n );\n\n return (\n <LiveChatContext.Provider value={value}>{children}</LiveChatContext.Provider>\n );\n}\n\n/**\n * Returns the live chat context, or `null` if not within a LiveChatProvider.\n *\n * Live chat is opt-in (`enableLiveChat` on `ChatProvider`), so components that\n * optionally show live-chat UI should handle the null case gracefully.\n */\nexport function useLiveChat(): LiveChatContextValue | null {\n return useContext(LiveChatContext);\n}\n","\"use client\";\n\nimport {\n createContext,\n useContext,\n useState,\n useCallback,\n useMemo,\n type ReactNode,\n} from \"react\";\n\n/** Information about a preview to display in an embedded panel. */\nexport interface PreviewInfo {\n /** URL to preview. */\n url: string;\n /** Optional title for the preview. */\n title?: string;\n /** Optional description for the preview. */\n description?: string;\n}\n\ninterface PreviewEmbedContextValue {\n /** Current preview info, or null if no preview is active. */\n preview: PreviewInfo | null;\n /** Open a preview panel with the given info. */\n openPreview: (info: PreviewInfo) => void;\n /** Close the active preview panel. */\n closePreview: () => void;\n}\n\nconst PreviewEmbedContext = createContext<PreviewEmbedContextValue | null>(null);\n\n/** Props for the PreviewEmbedProvider. */\nexport interface PreviewEmbedProviderProps {\n children: ReactNode;\n}\n\n/**\n * Provides state for an embedded preview panel (e.g. in-chat link previews).\n */\nexport function PreviewEmbedProvider({ children }: PreviewEmbedProviderProps) {\n const [preview, setPreview] = useState<PreviewInfo | null>(null);\n\n const openPreview = useCallback(\n (info: PreviewInfo) => setPreview(info),\n []\n );\n\n const closePreview = useCallback(() => setPreview(null), []);\n\n const value = useMemo<PreviewEmbedContextValue>(\n () => ({ preview, openPreview, closePreview }),\n [preview, openPreview, closePreview]\n );\n\n return (\n <PreviewEmbedContext.Provider value={value}>\n {children}\n </PreviewEmbedContext.Provider>\n );\n}\n\n/**\n * Returns the preview embed context.\n * Returns null if used outside a PreviewEmbedProvider (non-throwing for optional usage).\n */\nexport function usePreviewEmbed(): PreviewEmbedContextValue | null {\n return useContext(PreviewEmbedContext);\n}\n","\"use client\";\n\nimport { useState, useEffect, useRef } from \"react\";\n\nconst MOBILE_BREAKPOINT = 768;\n\n/** Get initial mobile state with SSR guard. */\nconst getIsMobile = () =>\n typeof window !== \"undefined\" && window.innerWidth < MOBILE_BREAKPOINT;\n\n/**\n * Detects whether the viewport is mobile-sized.\n * Ignores height-only changes (e.g. virtual keyboard) and only reacts\n * when width actually crosses the breakpoint.\n *\n * SSR-safe: returns false during server rendering.\n */\nexport function useIsMobile(): boolean {\n const [isMobile, setIsMobile] = useState<boolean>(getIsMobile);\n const initialWidthRef = useRef<number | null>(null);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n if (initialWidthRef.current === null) {\n initialWidthRef.current = window.innerWidth;\n }\n\n const checkMobile = () => {\n const currentWidth = window.innerWidth;\n const widthCrossedBreakpoint =\n currentWidth < MOBILE_BREAKPOINT !==\n initialWidthRef.current! < MOBILE_BREAKPOINT ||\n Math.abs(currentWidth - initialWidthRef.current!) > 100;\n\n if (widthCrossedBreakpoint) {\n initialWidthRef.current = currentWidth;\n setIsMobile(currentWidth < MOBILE_BREAKPOINT);\n }\n };\n\n window.addEventListener(\"resize\", checkMobile);\n return () => window.removeEventListener(\"resize\", checkMobile);\n }, []);\n\n return isMobile;\n}\n\nexport default useIsMobile;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/separator.tsx","../src/ui/tooltip.tsx","../src/ui/input.tsx","../src/ui/badge.tsx","../src/ui/carousel.tsx","../src/ui/scroll-area.tsx","../src/ui/progress.tsx","../src/ui/alert.tsx","../src/ui/dialog.tsx","../src/ui/dropdown-menu.tsx","../src/ui/select.tsx"],"names":["React","jsx","SeparatorPrimitive","cn","TooltipPrimitive","React2","React3","cva","React4","useEmblaCarousel","api","jsxs","Button","ArrowLeft","ArrowRight","React5","ScrollAreaPrimitive","React6","ProgressPrimitive","React7","DialogPrimitive","React8","X","DropdownMenuPrimitive","React9","ChevronRight","Check","Circle","SelectPrimitive","React10","ChevronDown","ChevronUp"],"mappings":"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","file":"chunk-OU5OZKYH.cjs","sourcesContent":["\"use client\";\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"../core/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","\"use client\";\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"../core/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]\",\n className\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","\"use client\";\n\nimport * as React from \"react\"\n\nimport { cn } from \"../core/utils\"\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n","\"use client\";\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../core/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }\n","\"use client\";\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\n\nimport { cn } from \"../core/utils\"\nimport { Button } from \"./button\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nconst Carousel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & CarouselProps\n>(\n (\n {\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) {\n return\n }\n\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) {\n return\n }\n\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) {\n return\n }\n\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api?.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n ref={ref}\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n }\n)\nCarousel.displayName = \"Carousel\"\n\nconst CarouselContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\">\n <div\n ref={ref}\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className\n )}\n {...props}\n />\n </div>\n )\n})\nCarouselContent.displayName = \"CarouselContent\"\n\nconst CarouselItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { orientation } = useCarousel()\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n )\n})\nCarouselItem.displayName = \"CarouselItem\"\n\nconst CarouselPrevious = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute h-8 w-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"-left-12 top-1/2 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n})\nCarouselPrevious.displayName = \"CarouselPrevious\"\n\nconst CarouselNext = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute h-8 w-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"-right-12 top-1/2 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n})\nCarouselNext.displayName = \"CarouselNext\"\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"../core/utils\"\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n))\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n))\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\n\nexport { ScrollArea, ScrollBar }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\n\nimport { cn } from \"../core/utils\"\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\n \"relative h-2 w-full overflow-hidden rounded-full bg-primary/20\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"h-full w-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n))\nProgress.displayName = ProgressPrimitive.Root.displayName\n\nexport { Progress }\n","\"use client\";\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../core/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n))\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }\n","\"use client\";\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"../core/utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-start\",\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","\"use client\";\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../core/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","\"use client\";\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\n\nimport { cn } from \"../core/utils\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n"]}
|