@eshal-bot/chat-widget 0.2.53 → 0.2.54

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.
@@ -7803,9 +7803,9 @@
7803
7803
  m$1.hydrateRoot;
7804
7804
  }
7805
7805
 
7806
- var css_248z$1 = "*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.chat-widget-root{--cw-primary:#1d4ed8;--cw-primary-hover:#1e40af;--cw-status-success:160 84% 39%;--cw-status-success-bg:152 81% 96%;--cw-status-warning:35 100% 50%;--cw-status-warning-bg:34 100% 95%;--cw-status-error:350 89% 60%;--cw-status-error-bg:356 100% 97%;--cw-status-info:199 89% 48%;--cw-status-info-bg:204 100% 97%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.chat-widget-root.dark{--cw-status-success:158 64% 52%;--cw-status-success-bg:152 36% 14%;--cw-status-warning:38 92% 60%;--cw-status-warning-bg:36 33% 14%;--cw-status-error:350 89% 65%;--cw-status-error-bg:356 33% 16%;--cw-status-info:199 89% 58%;--cw-status-info-bg:204 33% 14%}.\\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\\!container{max-width:1536px!important}.container{max-width:1536px}}#chat-widget-root .chat-widget-root *{box-sizing:border-box;margin:0;padding:0}#chat-widget-root .chat-messages::-webkit-scrollbar{width:6px}#chat-widget-root .chat-messages::-webkit-scrollbar-track{background:transparent}#chat-widget-root .chat-messages::-webkit-scrollbar-thumb{background:rgba(156,163,175,.5);border-radius:10px}#chat-widget-root .chat-messages::-webkit-scrollbar-thumb:hover{background:rgba(156,163,175,.7)}#chat-widget-root .dark .chat-messages::-webkit-scrollbar-thumb{background:rgba(75,85,99,.5)}#chat-widget-root .dark .chat-messages::-webkit-scrollbar-thumb:hover{background:rgba(75,85,99,.7)}#chat-widget-root .sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}#chat-widget-root .pointer-events-none{pointer-events:none}#chat-widget-root .visible{visibility:visible}#chat-widget-root .invisible{visibility:hidden}#chat-widget-root .collapse{visibility:collapse}#chat-widget-root .static{position:static}#chat-widget-root .fixed{position:fixed}#chat-widget-root .absolute{position:absolute}#chat-widget-root .relative{position:relative}#chat-widget-root .sticky{position:sticky}#chat-widget-root .inset-0{inset:0}#chat-widget-root .-bottom-1\\/3{bottom:-33.333333%}#chat-widget-root .-left-\\[15\\%\\]{left:-15%}#chat-widget-root .-right-\\[15\\%\\]{right:-15%}#chat-widget-root .-top-8{top:-2rem}#chat-widget-root .bottom-0{bottom:0}#chat-widget-root .bottom-5{bottom:1.25rem}#chat-widget-root .bottom-full{bottom:100%}#chat-widget-root .left-0{left:0}#chat-widget-root .left-1\\/2{left:50%}#chat-widget-root .left-5{left:1.25rem}#chat-widget-root .left-\\[20\\%\\]{left:20%}#chat-widget-root .right-0{right:0}#chat-widget-root .right-5{right:1.25rem}#chat-widget-root .top-0{top:0}#chat-widget-root .top-1\\/2{top:50%}#chat-widget-root .top-5{top:1.25rem}#chat-widget-root .top-full{top:100%}#chat-widget-root .isolate{isolation:isolate}#chat-widget-root .z-10{z-index:10}#chat-widget-root .z-50{z-index:50}#chat-widget-root .z-\\[60\\]{z-index:60}#chat-widget-root .z-\\[70\\]{z-index:70}#chat-widget-root .z-\\[71\\]{z-index:71}#chat-widget-root .z-\\[999999\\]{z-index:999999}#chat-widget-root .z-\\[9999\\]{z-index:9999}#chat-widget-root .m-0{margin:0}#chat-widget-root .mx-2{margin-left:.5rem;margin-right:.5rem}#chat-widget-root .mx-3{margin-left:.75rem;margin-right:.75rem}#chat-widget-root .mx-5{margin-left:1.25rem;margin-right:1.25rem}#chat-widget-root .my-3{margin-bottom:.75rem;margin-top:.75rem}#chat-widget-root .my-4{margin-bottom:1rem;margin-top:1rem}#chat-widget-root .-mb-px{margin-bottom:-1px}#chat-widget-root .mb-0{margin-bottom:0}#chat-widget-root .mb-1{margin-bottom:.25rem}#chat-widget-root .mb-1\\.5{margin-bottom:.375rem}#chat-widget-root .mb-2{margin-bottom:.5rem}#chat-widget-root .mb-3{margin-bottom:.75rem}#chat-widget-root .mb-4{margin-bottom:1rem}#chat-widget-root .mb-5{margin-bottom:1.25rem}#chat-widget-root .ml-1{margin-left:.25rem}#chat-widget-root .ms-0\\.5{margin-inline-start:.125rem}#chat-widget-root .mt-0\\.5{margin-top:.125rem}#chat-widget-root .mt-1{margin-top:.25rem}#chat-widget-root .mt-1\\.5{margin-top:.375rem}#chat-widget-root .mt-2{margin-top:.5rem}#chat-widget-root .mt-3{margin-top:.75rem}#chat-widget-root .mt-4{margin-top:1rem}#chat-widget-root .block{display:block}#chat-widget-root .inline-block{display:inline-block}#chat-widget-root .inline{display:inline}#chat-widget-root .flex{display:flex}#chat-widget-root .inline-flex{display:inline-flex}#chat-widget-root .table{display:table}#chat-widget-root .grid{display:grid}#chat-widget-root .contents{display:contents}#chat-widget-root .hidden{display:none}#chat-widget-root .h-1\\.5{height:.375rem}#chat-widget-root .h-10{height:2.5rem}#chat-widget-root .h-11{height:2.75rem}#chat-widget-root .h-12{height:3rem}#chat-widget-root .h-16{height:4rem}#chat-widget-root .h-2{height:.5rem}#chat-widget-root .h-3{height:.75rem}#chat-widget-root .h-3\\.5{height:.875rem}#chat-widget-root .h-4{height:1rem}#chat-widget-root .h-5{height:1.25rem}#chat-widget-root .h-6{height:1.5rem}#chat-widget-root .h-7{height:1.75rem}#chat-widget-root .h-8{height:2rem}#chat-widget-root .h-\\[120\\%\\]{height:120%}#chat-widget-root .h-\\[130\\%\\]{height:130%}#chat-widget-root .h-\\[650px\\]{height:650px}#chat-widget-root .h-auto{height:auto}#chat-widget-root .h-full{height:100%}#chat-widget-root .h-px{height:1px}#chat-widget-root .max-h-\\[85vh\\]{max-height:85vh}#chat-widget-root .min-h-0{min-height:0}#chat-widget-root .min-h-\\[48px\\]{min-height:48px}#chat-widget-root .w-1\\.5{width:.375rem}#chat-widget-root .w-10{width:2.5rem}#chat-widget-root .w-11{width:2.75rem}#chat-widget-root .w-12{width:3rem}#chat-widget-root .w-16{width:4rem}#chat-widget-root .w-2{width:.5rem}#chat-widget-root .w-3{width:.75rem}#chat-widget-root .w-3\\.5{width:.875rem}#chat-widget-root .w-4{width:1rem}#chat-widget-root .w-44{width:11rem}#chat-widget-root .w-5{width:1.25rem}#chat-widget-root .w-6{width:1.5rem}#chat-widget-root .w-7{width:1.75rem}#chat-widget-root .w-8{width:2rem}#chat-widget-root .w-80{width:20rem}#chat-widget-root .w-96{width:24rem}#chat-widget-root .w-\\[380px\\]{width:380px}#chat-widget-root .w-\\[60\\%\\]{width:60%}#chat-widget-root .w-\\[70\\%\\]{width:70%}#chat-widget-root .w-full{width:100%}#chat-widget-root .min-w-0{min-width:0}#chat-widget-root .min-w-\\[60px\\]{min-width:60px}#chat-widget-root .min-w-full{min-width:100%}#chat-widget-root .max-w-\\[75\\%\\]{max-width:75%}#chat-widget-root .max-w-\\[92vw\\]{max-width:92vw}#chat-widget-root .max-w-full{max-width:100%}#chat-widget-root .max-w-none{max-width:none}#chat-widget-root .max-w-sm{max-width:24rem}#chat-widget-root .max-w-xs{max-width:20rem}#chat-widget-root .flex-1{flex:1 1 0%}#chat-widget-root .flex-shrink-0,#chat-widget-root .shrink-0{flex-shrink:0}#chat-widget-root .grow{flex-grow:1}#chat-widget-root .border-collapse{border-collapse:collapse}#chat-widget-root .origin-bottom{transform-origin:bottom}#chat-widget-root .-translate-x-1\\/2{--tw-translate-x:-50%}#chat-widget-root .-translate-x-1\\/2,#chat-widget-root .-translate-y-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .-translate-y-1\\/2{--tw-translate-y:-50%}#chat-widget-root .-rotate-90{--tw-rotate:-90deg}#chat-widget-root .-rotate-90,#chat-widget-root .rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .rotate-180{--tw-rotate:180deg}#chat-widget-root .rotate-90{--tw-rotate:90deg}#chat-widget-root .rotate-90,#chat-widget-root .scale-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .scale-0{--tw-scale-x:0;--tw-scale-y:0}#chat-widget-root .scale-100{--tw-scale-x:1;--tw-scale-y:1}#chat-widget-root .scale-100,#chat-widget-root .scale-110{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1}#chat-widget-root .scale-125{--tw-scale-x:1.25;--tw-scale-y:1.25}#chat-widget-root .scale-125,#chat-widget-root .scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .scale-95{--tw-scale-x:.95;--tw-scale-y:.95}#chat-widget-root .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}#chat-widget-root .animate-bounce{animation:bounce 1s infinite}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}#chat-widget-root .animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}#chat-widget-root .animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}#chat-widget-root .animate-spin{animation:spin 1s linear infinite}#chat-widget-root .animate-voice-glow{animation:voice-glow 7s ease-in-out infinite}@keyframes voice-glow{0%,to{transform:translate(0) scale(1)}50%{transform:translate(12%,-8%) scale(1.15)}}#chat-widget-root .animate-voice-glow-slow{animation:voice-glow 11s ease-in-out infinite reverse}#chat-widget-root .cursor-ew-resize{cursor:ew-resize}#chat-widget-root .cursor-nesw-resize{cursor:nesw-resize}#chat-widget-root .cursor-not-allowed{cursor:not-allowed}#chat-widget-root .cursor-ns-resize{cursor:ns-resize}#chat-widget-root .cursor-nwse-resize{cursor:nwse-resize}#chat-widget-root .cursor-pointer{cursor:pointer}#chat-widget-root .resize-none{resize:none}#chat-widget-root .resize{resize:both}#chat-widget-root .list-decimal{list-style-type:decimal}#chat-widget-root .list-disc{list-style-type:disc}#chat-widget-root .list-none{list-style-type:none}#chat-widget-root .flex-row{flex-direction:row}#chat-widget-root .flex-row-reverse{flex-direction:row-reverse}#chat-widget-root .flex-col{flex-direction:column}#chat-widget-root .flex-wrap{flex-wrap:wrap}#chat-widget-root .items-start{align-items:flex-start}#chat-widget-root .items-end{align-items:flex-end}#chat-widget-root .items-center{align-items:center}#chat-widget-root .justify-start{justify-content:flex-start}#chat-widget-root .justify-end{justify-content:flex-end}#chat-widget-root .justify-center{justify-content:center}#chat-widget-root .justify-between{justify-content:space-between}#chat-widget-root .gap-0{gap:0}#chat-widget-root .gap-0\\.5{gap:.125rem}#chat-widget-root .gap-1{gap:.25rem}#chat-widget-root .gap-1\\.5{gap:.375rem}#chat-widget-root .gap-10{gap:2.5rem}#chat-widget-root .gap-2{gap:.5rem}#chat-widget-root .gap-2\\.5{gap:.625rem}#chat-widget-root .gap-3{gap:.75rem}#chat-widget-root .gap-4{gap:1rem}#chat-widget-root .gap-6{gap:1.5rem}#chat-widget-root :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}#chat-widget-root :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}#chat-widget-root .overflow-hidden{overflow:hidden}#chat-widget-root .overflow-visible{overflow:visible}#chat-widget-root .overflow-x-auto{overflow-x:auto}#chat-widget-root .overflow-y-auto{overflow-y:auto}#chat-widget-root .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#chat-widget-root .whitespace-nowrap{white-space:nowrap}#chat-widget-root .whitespace-pre-wrap{white-space:pre-wrap}#chat-widget-root .break-words{overflow-wrap:break-word}#chat-widget-root .break-all{word-break:break-all}#chat-widget-root .rounded{border-radius:.25rem}#chat-widget-root .rounded-2xl{border-radius:1rem}#chat-widget-root .rounded-3xl{border-radius:1.5rem}#chat-widget-root .rounded-full{border-radius:9999px}#chat-widget-root .rounded-lg{border-radius:.5rem}#chat-widget-root .rounded-md{border-radius:.375rem}#chat-widget-root .rounded-xl{border-radius:.75rem}#chat-widget-root .rounded-t-2xl{border-top-left-radius:1rem;border-top-right-radius:1rem}#chat-widget-root .rounded-tl-sm{border-top-left-radius:.125rem}#chat-widget-root .rounded-tr-sm{border-top-right-radius:.125rem}#chat-widget-root .border{border-width:1px}#chat-widget-root .border-0{border-width:0}#chat-widget-root .border-b{border-bottom-width:1px}#chat-widget-root .border-l-4{border-left-width:4px}#chat-widget-root .border-t{border-top-width:1px}#chat-widget-root .border-t-2{border-top-width:2px}#chat-widget-root .border-solid{border-style:solid}#chat-widget-root .border-dotted{border-style:dotted}#chat-widget-root .border-none{border-style:none}#chat-widget-root .\\!border-status-error{border-color:hsl(var(--cw-status-error))!important}#chat-widget-root .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}#chat-widget-root .border-amber-700\\/50{border-color:rgba(180,83,9,.5)}#chat-widget-root .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}#chat-widget-root .border-blue-700\\/50{border-color:rgba(29,78,216,.5)}#chat-widget-root .border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-200\\/60{border-color:rgba(229,231,235,.6)}#chat-widget-root .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-700\\/50{border-color:rgba(55,65,81,.5)}#chat-widget-root .border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}#chat-widget-root .border-transparent{border-color:transparent}#chat-widget-root .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}#chat-widget-root .bg-amber-900\\/40{background-color:rgba(120,53,15,.4)}#chat-widget-root .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}#chat-widget-root .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}#chat-widget-root .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}#chat-widget-root .bg-current{background-color:currentColor}#chat-widget-root .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-50\\/30{background-color:rgba(249,250,251,.3)}#chat-widget-root .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-700\\/50{background-color:rgba(55,65,81,.5)}#chat-widget-root .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-800\\/50{background-color:rgba(31,41,55,.5)}#chat-widget-root .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}#chat-widget-root .bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity,1))}#chat-widget-root .bg-orange-200{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity,1))}#chat-widget-root .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}#chat-widget-root .bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity,1))}#chat-widget-root .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}#chat-widget-root .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}#chat-widget-root .bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}#chat-widget-root .bg-slate-50\\/50{background-color:rgba(248,250,252,.5)}#chat-widget-root .bg-slate-800\\/50{background-color:rgba(30,41,59,.5)}#chat-widget-root .bg-status-success{background-color:hsl(var(--cw-status-success))}#chat-widget-root .bg-status-warning{background-color:hsl(var(--cw-status-warning))}#chat-widget-root .bg-transparent{background-color:transparent}#chat-widget-root .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}#chat-widget-root .bg-white\\/10{background-color:hsla(0,0%,100%,.1)}#chat-widget-root .bg-white\\/20{background-color:hsla(0,0%,100%,.2)}#chat-widget-root .bg-yellow-200{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}#chat-widget-root .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}#chat-widget-root .from-gray-50\\/50{--tw-gradient-from:rgba(249,250,251,.5) var(--tw-gradient-from-position);--tw-gradient-to:rgba(249,250,251,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#chat-widget-root .from-white\\/0{--tw-gradient-from:hsla(0,0%,100%,0) var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#chat-widget-root .from-white\\/10{--tw-gradient-from:hsla(0,0%,100%,.1) var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#chat-widget-root .from-yellow-200{--tw-gradient-from:#fef08a var(--tw-gradient-from-position);--tw-gradient-to:hsla(53,98%,77%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#chat-widget-root .via-white\\/5{--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsla(0,0%,100%,.05) var(--tw-gradient-via-position),var(--tw-gradient-to)}#chat-widget-root .to-white{--tw-gradient-to:#fff var(--tw-gradient-to-position)}#chat-widget-root .to-white\\/10{--tw-gradient-to:hsla(0,0%,100%,.1) var(--tw-gradient-to-position)}#chat-widget-root .to-yellow-400{--tw-gradient-to:#facc15 var(--tw-gradient-to-position)}#chat-widget-root .object-contain{-o-object-fit:contain;object-fit:contain}#chat-widget-root .p-0{padding:0}#chat-widget-root .p-0\\.5{padding:.125rem}#chat-widget-root .p-3{padding:.75rem}#chat-widget-root .p-5{padding:1.25rem}#chat-widget-root .p-6{padding:1.5rem}#chat-widget-root .p-8{padding:2rem}#chat-widget-root .px-1{padding-left:.25rem;padding-right:.25rem}#chat-widget-root .px-2{padding-left:.5rem;padding-right:.5rem}#chat-widget-root .px-2\\.5{padding-left:.625rem;padding-right:.625rem}#chat-widget-root .px-3{padding-left:.75rem;padding-right:.75rem}#chat-widget-root .px-3\\.5{padding-left:.875rem;padding-right:.875rem}#chat-widget-root .px-4{padding-left:1rem;padding-right:1rem}#chat-widget-root .px-5{padding-left:1.25rem;padding-right:1.25rem}#chat-widget-root .py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}#chat-widget-root .py-1{padding-bottom:.25rem;padding-top:.25rem}#chat-widget-root .py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}#chat-widget-root .py-12{padding-bottom:3rem;padding-top:3rem}#chat-widget-root .py-2{padding-bottom:.5rem;padding-top:.5rem}#chat-widget-root .py-2\\.5{padding-bottom:.625rem;padding-top:.625rem}#chat-widget-root .py-3{padding-bottom:.75rem;padding-top:.75rem}#chat-widget-root .py-3\\.5{padding-bottom:.875rem;padding-top:.875rem}#chat-widget-root .py-4{padding-bottom:1rem;padding-top:1rem}#chat-widget-root .pb-1{padding-bottom:.25rem}#chat-widget-root .pb-2{padding-bottom:.5rem}#chat-widget-root .pb-6{padding-bottom:1.5rem}#chat-widget-root .pl-1{padding-left:.25rem}#chat-widget-root .pl-2{padding-left:.5rem}#chat-widget-root .pl-4{padding-left:1rem}#chat-widget-root .pl-\\[50px\\]{padding-left:50px}#chat-widget-root .pr-1{padding-right:.25rem}#chat-widget-root .pt-1{padding-top:.25rem}#chat-widget-root .pt-10{padding-top:2.5rem}#chat-widget-root .pt-3{padding-top:.75rem}#chat-widget-root .pt-4{padding-top:1rem}#chat-widget-root .text-left{text-align:left}#chat-widget-root .text-center{text-align:center}#chat-widget-root .text-right{text-align:right}#chat-widget-root .text-start{text-align:start}#chat-widget-root .align-text-bottom{vertical-align:text-bottom}#chat-widget-root .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}#chat-widget-root .text-2xl{font-size:1.5rem;line-height:2rem}#chat-widget-root .text-\\[10px\\]{font-size:10px}#chat-widget-root .text-base{font-size:1rem;line-height:1.5rem}#chat-widget-root .text-chip{font-size:11px;letter-spacing:0;line-height:1.4}#chat-widget-root .text-h4{font-size:18px;letter-spacing:0;line-height:1.3}#chat-widget-root .text-lg{font-size:1.125rem;line-height:1.75rem}#chat-widget-root .text-sm{font-size:.875rem;line-height:1.25rem}#chat-widget-root .text-xl{font-size:1.25rem;line-height:1.75rem}#chat-widget-root .text-xs{font-size:.75rem;line-height:1rem}#chat-widget-root .font-bold{font-weight:700}#chat-widget-root .font-medium{font-weight:500}#chat-widget-root .font-semibold{font-weight:600}#chat-widget-root .uppercase{text-transform:uppercase}#chat-widget-root .lowercase{text-transform:lowercase}#chat-widget-root .italic{font-style:italic}#chat-widget-root .tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}#chat-widget-root .leading-5{line-height:1.25rem}#chat-widget-root .leading-none{line-height:1}#chat-widget-root .leading-normal{line-height:1.5}#chat-widget-root .leading-relaxed{line-height:1.625}#chat-widget-root .leading-snug{line-height:1.375}#chat-widget-root .tracking-wide{letter-spacing:.025em}#chat-widget-root .text-\\[\\#4A5568\\]{--tw-text-opacity:1;color:rgb(74 85 104/var(--tw-text-opacity,1))}#chat-widget-root .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}#chat-widget-root .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}#chat-widget-root .text-current{color:currentColor}#chat-widget-root .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-500\\/80{color:hsla(220,9%,46%,.8)}#chat-widget-root .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}#chat-widget-root .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}#chat-widget-root .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}#chat-widget-root .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}#chat-widget-root .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}#chat-widget-root .text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}#chat-widget-root .text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}#chat-widget-root .text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}#chat-widget-root .text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}#chat-widget-root .text-status-error{color:hsl(var(--cw-status-error))}#chat-widget-root .text-status-success{color:hsl(var(--cw-status-success))}#chat-widget-root .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}#chat-widget-root .text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}#chat-widget-root .underline{text-decoration-line:underline}#chat-widget-root .no-underline{text-decoration-line:none}#chat-widget-root .placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}#chat-widget-root .placeholder-gray-400::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}#chat-widget-root .placeholder-gray-500::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(107 114 128/var(--tw-placeholder-opacity,1))}#chat-widget-root .placeholder-gray-500::placeholder{--tw-placeholder-opacity:1;color:rgb(107 114 128/var(--tw-placeholder-opacity,1))}#chat-widget-root .opacity-0{opacity:0}#chat-widget-root .opacity-50{opacity:.5}#chat-widget-root .opacity-60{opacity:.6}#chat-widget-root .opacity-70{opacity:.7}#chat-widget-root .opacity-75{opacity:.75}#chat-widget-root .opacity-80{opacity:.8}#chat-widget-root .opacity-90{opacity:.9}#chat-widget-root .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}#chat-widget-root .shadow,#chat-widget-root .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}#chat-widget-root .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}#chat-widget-root .shadow-lg,#chat-widget-root .shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}#chat-widget-root .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}#chat-widget-root .shadow-sm,#chat-widget-root .shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}#chat-widget-root .shadow-black\\/20{--tw-shadow-color:rgba(0,0,0,.2);--tw-shadow:var(--tw-shadow-colored)}#chat-widget-root .shadow-gray-200\\/80{--tw-shadow-color:rgba(229,231,235,.8);--tw-shadow:var(--tw-shadow-colored)}#chat-widget-root .outline-none{outline:2px solid transparent;outline-offset:2px}#chat-widget-root .outline{outline-style:solid}#chat-widget-root .ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}#chat-widget-root .ring,#chat-widget-root .ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#chat-widget-root .ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}#chat-widget-root .ring-blue-100{--tw-ring-opacity:1;--tw-ring-color:rgb(219 234 254/var(--tw-ring-opacity,1))}#chat-widget-root .ring-blue-300{--tw-ring-opacity:1;--tw-ring-color:rgb(147 197 253/var(--tw-ring-opacity,1))}#chat-widget-root .ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity,1))}#chat-widget-root .blur{--tw-blur:blur(8px)}#chat-widget-root .blur,#chat-widget-root .blur-2xl{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .blur-2xl{--tw-blur:blur(40px)}#chat-widget-root .drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}#chat-widget-root .drop-shadow,#chat-widget-root .drop-shadow-md{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .drop-shadow-md{--tw-drop-shadow:drop-shadow(0 4px 3px rgba(0,0,0,.07)) drop-shadow(0 2px 2px rgba(0,0,0,.06))}#chat-widget-root .drop-shadow-sm{--tw-drop-shadow:drop-shadow(0 1px 1px rgba(0,0,0,.05))}#chat-widget-root .drop-shadow-sm,#chat-widget-root .grayscale-\\[0\\.3\\]{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .grayscale-\\[0\\.3\\]{--tw-grayscale:grayscale(0.3)}#chat-widget-root .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .backdrop-blur-sm{--tw-backdrop-blur:blur(4px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}#chat-widget-root .transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-\\[opacity\\2c transform\\]{transition-duration:.15s;transition-property:opacity,transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .duration-150{transition-duration:.15s}#chat-widget-root .duration-200{transition-duration:.2s}#chat-widget-root .duration-300{transition-duration:.3s}#chat-widget-root .duration-500{transition-duration:.5s}#chat-widget-root .ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}#chat-widget-root :is(#chat-widget-root .animate-in){animation:slideIn .3s ease-out}#chat-widget-root :is(#chat-widget-root .transition-all){transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .\\[font-family\\:inherit\\]{font-family:inherit}#chat-widget-root .\\[overflow-wrap\\:anywhere\\]{overflow-wrap:anywhere}#chat-widget-root .placeholder\\:text-\\[\\#A2A9B2\\]::-moz-placeholder{--tw-text-opacity:1;color:rgb(162 169 178/var(--tw-text-opacity,1))}#chat-widget-root .placeholder\\:text-\\[\\#A2A9B2\\]::placeholder{--tw-text-opacity:1;color:rgb(162 169 178/var(--tw-text-opacity,1))}#chat-widget-root .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}#chat-widget-root .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}#chat-widget-root .hover\\:scale-105:hover,#chat-widget-root .hover\\:scale-110:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .hover\\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}#chat-widget-root .hover\\:scale-\\[1\\.02\\]:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .hover\\:border-blue-400:hover{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}#chat-widget-root .hover\\:border-blue-600:hover{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}#chat-widget-root .hover\\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-blue-500\\/20:hover{background-color:rgba(59,130,246,.2)}#chat-widget-root .hover\\:bg-blue-900\\/50:hover{background-color:rgba(30,58,138,.5)}#chat-widget-root .hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-transparent:hover{background-color:transparent}#chat-widget-root .hover\\:text-blue-500:hover{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:underline:hover{text-decoration-line:underline}#chat-widget-root .hover\\:opacity-80:hover{opacity:.8}#chat-widget-root .hover\\:opacity-90:hover{opacity:.9}#chat-widget-root .hover\\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}#chat-widget-root .hover\\:shadow-md:hover,#chat-widget-root .hover\\:shadow-xl:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}#chat-widget-root .hover\\:grayscale-0:hover{--tw-grayscale:grayscale(0);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .focus\\:\\!border-status-error:focus{border-color:hsl(var(--cw-status-error))!important}#chat-widget-root .focus\\:border-\\[\\#5A6069\\]:focus{--tw-border-opacity:1;border-color:rgb(90 96 105/var(--tw-border-opacity,1))}#chat-widget-root .focus\\:border-\\[\\#B0B0B0\\]:focus{--tw-border-opacity:1;border-color:rgb(176 176 176/var(--tw-border-opacity,1))}#chat-widget-root .focus\\:bg-white:focus{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}#chat-widget-root .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}#chat-widget-root .focus\\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}#chat-widget-root .focus\\:ring-0:focus,#chat-widget-root .focus\\:ring-1:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#chat-widget-root .focus\\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}#chat-widget-root .focus\\:ring-gray-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity,1))}#chat-widget-root .focus\\:ring-gray-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(75 85 99/var(--tw-ring-opacity,1))}#chat-widget-root .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}#chat-widget-root .focus-visible\\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#chat-widget-root .focus-visible\\:ring-blue-700:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(29 78 216/var(--tw-ring-opacity,1))}#chat-widget-root .focus-visible\\:ring-primary:focus-visible{--tw-ring-color:var(--cw-primary,#1d4ed8)}#chat-widget-root .focus-visible\\:ring-red-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(220 38 38/var(--tw-ring-opacity,1))}#chat-widget-root .focus-visible\\:ring-white\\/40:focus-visible{--tw-ring-color:hsla(0,0%,100%,.4)}#chat-widget-root .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}#chat-widget-root .focus-visible\\:ring-offset-gray-900:focus-visible{--tw-ring-offset-color:#111827}#chat-widget-root .active\\:scale-95:active{--tw-scale-x:.95;--tw-scale-y:.95}#chat-widget-root .active\\:scale-95:active,#chat-widget-root .active\\:scale-\\[0\\.97\\]:active{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .active\\:scale-\\[0\\.97\\]:active{--tw-scale-x:0.97;--tw-scale-y:0.97}#chat-widget-root .active\\:scale-\\[0\\.98\\]:active{--tw-scale-x:0.98;--tw-scale-y:0.98}#chat-widget-root .active\\:scale-\\[0\\.98\\]:active,#chat-widget-root .active\\:scale-\\[0\\.99\\]:active{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .active\\:scale-\\[0\\.99\\]:active{--tw-scale-x:0.99;--tw-scale-y:0.99}#chat-widget-root .active\\:outline-none:active{outline:2px solid transparent;outline-offset:2px}#chat-widget-root .active\\:ring-0:active{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#chat-widget-root .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}#chat-widget-root .disabled\\:opacity-40:disabled{opacity:.4}#chat-widget-root .disabled\\:opacity-50:disabled{opacity:.5}#chat-widget-root .disabled\\:shadow-none:disabled{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root :is(.group:hover .group-hover\\:scale-100){--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root :is(.group:hover .group-hover\\:opacity-100){opacity:1}#chat-widget-root .dark\\:text-gray-300:is(.dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}#chat-widget-root .dark\\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}@media (min-width:768px){#chat-widget-root .md\\:text-sm{font-size:.875rem;line-height:1.25rem}}#chat-widget-root .rtl\\:rounded-tl-2xl:where([dir=rtl],[dir=rtl] *){border-top-left-radius:1rem}#chat-widget-root .rtl\\:rounded-tr-sm:where([dir=rtl],[dir=rtl] *){border-top-right-radius:.125rem}#chat-widget-root .\\[\\&\\:first-child\\]\\:\\!mt-0:first-child{margin-top:0!important}#chat-widget-root :is(.\\[\\&\\>\\*\\:first-child\\]\\:\\!mt-0>:first-child){margin-top:0!important}#chat-widget-root :is(.\\[\\&\\>\\*\\:last-child\\]\\:\\!mb-0>:last-child){margin-bottom:0!important}";
7806
+ var css_248z$1 = "*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.chat-widget-root{--cw-primary:#1d4ed8;--cw-primary-hover:#1e40af;--cw-status-success:160 84% 39%;--cw-status-success-bg:152 81% 96%;--cw-status-warning:35 100% 50%;--cw-status-warning-bg:34 100% 95%;--cw-status-error:350 89% 60%;--cw-status-error-bg:356 100% 97%;--cw-status-info:199 89% 48%;--cw-status-info-bg:204 100% 97%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.chat-widget-root.dark{--cw-status-success:158 64% 52%;--cw-status-success-bg:152 36% 14%;--cw-status-warning:38 92% 60%;--cw-status-warning-bg:36 33% 14%;--cw-status-error:350 89% 65%;--cw-status-error-bg:356 33% 16%;--cw-status-info:199 89% 58%;--cw-status-info-bg:204 33% 14%}.\\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\\!container{max-width:1536px!important}.container{max-width:1536px}}#chat-widget-root .chat-widget-root *{box-sizing:border-box;margin:0;padding:0}#chat-widget-root .chat-messages::-webkit-scrollbar{width:6px}#chat-widget-root .chat-messages::-webkit-scrollbar-track{background:transparent}#chat-widget-root .chat-messages::-webkit-scrollbar-thumb{background:rgba(156,163,175,.5);border-radius:10px}#chat-widget-root .chat-messages::-webkit-scrollbar-thumb:hover{background:rgba(156,163,175,.7)}#chat-widget-root .dark .chat-messages::-webkit-scrollbar-thumb{background:rgba(75,85,99,.5)}#chat-widget-root .dark .chat-messages::-webkit-scrollbar-thumb:hover{background:rgba(75,85,99,.7)}#chat-widget-root .sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}#chat-widget-root .pointer-events-none{pointer-events:none}#chat-widget-root .visible{visibility:visible}#chat-widget-root .invisible{visibility:hidden}#chat-widget-root .collapse{visibility:collapse}#chat-widget-root .static{position:static}#chat-widget-root .fixed{position:fixed}#chat-widget-root .absolute{position:absolute}#chat-widget-root .relative{position:relative}#chat-widget-root .sticky{position:sticky}#chat-widget-root .inset-0{inset:0}#chat-widget-root .-bottom-1\\/3{bottom:-33.333333%}#chat-widget-root .-left-\\[15\\%\\]{left:-15%}#chat-widget-root .-right-\\[15\\%\\]{right:-15%}#chat-widget-root .-top-8{top:-2rem}#chat-widget-root .bottom-0{bottom:0}#chat-widget-root .bottom-5{bottom:1.25rem}#chat-widget-root .bottom-full{bottom:100%}#chat-widget-root .left-0{left:0}#chat-widget-root .left-1\\/2{left:50%}#chat-widget-root .left-5{left:1.25rem}#chat-widget-root .left-\\[20\\%\\]{left:20%}#chat-widget-root .right-0{right:0}#chat-widget-root .right-5{right:1.25rem}#chat-widget-root .top-0{top:0}#chat-widget-root .top-1\\/2{top:50%}#chat-widget-root .top-5{top:1.25rem}#chat-widget-root .top-full{top:100%}#chat-widget-root .isolate{isolation:isolate}#chat-widget-root .z-10{z-index:10}#chat-widget-root .z-50{z-index:50}#chat-widget-root .z-\\[60\\]{z-index:60}#chat-widget-root .z-\\[70\\]{z-index:70}#chat-widget-root .z-\\[71\\]{z-index:71}#chat-widget-root .z-\\[999999\\]{z-index:999999}#chat-widget-root .z-\\[9999\\]{z-index:9999}#chat-widget-root .m-0{margin:0}#chat-widget-root .mx-2{margin-left:.5rem;margin-right:.5rem}#chat-widget-root .mx-3{margin-left:.75rem;margin-right:.75rem}#chat-widget-root .mx-5{margin-left:1.25rem;margin-right:1.25rem}#chat-widget-root .my-3{margin-bottom:.75rem;margin-top:.75rem}#chat-widget-root .my-4{margin-bottom:1rem;margin-top:1rem}#chat-widget-root .-mb-px{margin-bottom:-1px}#chat-widget-root .mb-0{margin-bottom:0}#chat-widget-root .mb-1{margin-bottom:.25rem}#chat-widget-root .mb-1\\.5{margin-bottom:.375rem}#chat-widget-root .mb-2{margin-bottom:.5rem}#chat-widget-root .mb-3{margin-bottom:.75rem}#chat-widget-root .mb-4{margin-bottom:1rem}#chat-widget-root .mb-5{margin-bottom:1.25rem}#chat-widget-root .ml-1{margin-left:.25rem}#chat-widget-root .ms-0\\.5{margin-inline-start:.125rem}#chat-widget-root .mt-0\\.5{margin-top:.125rem}#chat-widget-root .mt-1{margin-top:.25rem}#chat-widget-root .mt-1\\.5{margin-top:.375rem}#chat-widget-root .mt-2{margin-top:.5rem}#chat-widget-root .mt-3{margin-top:.75rem}#chat-widget-root .mt-4{margin-top:1rem}#chat-widget-root .block{display:block}#chat-widget-root .inline-block{display:inline-block}#chat-widget-root .inline{display:inline}#chat-widget-root .flex{display:flex}#chat-widget-root .inline-flex{display:inline-flex}#chat-widget-root .table{display:table}#chat-widget-root .grid{display:grid}#chat-widget-root .contents{display:contents}#chat-widget-root .hidden{display:none}#chat-widget-root .h-1\\.5{height:.375rem}#chat-widget-root .h-10{height:2.5rem}#chat-widget-root .h-11{height:2.75rem}#chat-widget-root .h-12{height:3rem}#chat-widget-root .h-16{height:4rem}#chat-widget-root .h-2{height:.5rem}#chat-widget-root .h-3{height:.75rem}#chat-widget-root .h-3\\.5{height:.875rem}#chat-widget-root .h-4{height:1rem}#chat-widget-root .h-5{height:1.25rem}#chat-widget-root .h-6{height:1.5rem}#chat-widget-root .h-7{height:1.75rem}#chat-widget-root .h-8{height:2rem}#chat-widget-root .h-\\[120\\%\\]{height:120%}#chat-widget-root .h-\\[130\\%\\]{height:130%}#chat-widget-root .h-\\[650px\\]{height:650px}#chat-widget-root .h-auto{height:auto}#chat-widget-root .h-full{height:100%}#chat-widget-root .h-px{height:1px}#chat-widget-root .max-h-\\[85vh\\]{max-height:85vh}#chat-widget-root .min-h-0{min-height:0}#chat-widget-root .min-h-\\[48px\\]{min-height:48px}#chat-widget-root .w-1\\.5{width:.375rem}#chat-widget-root .w-10{width:2.5rem}#chat-widget-root .w-11{width:2.75rem}#chat-widget-root .w-12{width:3rem}#chat-widget-root .w-16{width:4rem}#chat-widget-root .w-2{width:.5rem}#chat-widget-root .w-3{width:.75rem}#chat-widget-root .w-3\\.5{width:.875rem}#chat-widget-root .w-4{width:1rem}#chat-widget-root .w-44{width:11rem}#chat-widget-root .w-5{width:1.25rem}#chat-widget-root .w-6{width:1.5rem}#chat-widget-root .w-7{width:1.75rem}#chat-widget-root .w-8{width:2rem}#chat-widget-root .w-80{width:20rem}#chat-widget-root .w-96{width:24rem}#chat-widget-root .w-\\[380px\\]{width:380px}#chat-widget-root .w-\\[60\\%\\]{width:60%}#chat-widget-root .w-\\[70\\%\\]{width:70%}#chat-widget-root .w-full{width:100%}#chat-widget-root .min-w-0{min-width:0}#chat-widget-root .min-w-\\[60px\\]{min-width:60px}#chat-widget-root .min-w-full{min-width:100%}#chat-widget-root .max-w-\\[75\\%\\]{max-width:75%}#chat-widget-root .max-w-\\[92vw\\]{max-width:92vw}#chat-widget-root .max-w-full{max-width:100%}#chat-widget-root .max-w-none{max-width:none}#chat-widget-root .max-w-sm{max-width:24rem}#chat-widget-root .max-w-xs{max-width:20rem}#chat-widget-root .flex-1{flex:1 1 0%}#chat-widget-root .flex-shrink-0,#chat-widget-root .shrink-0{flex-shrink:0}#chat-widget-root .grow{flex-grow:1}#chat-widget-root .border-collapse{border-collapse:collapse}#chat-widget-root .origin-bottom{transform-origin:bottom}#chat-widget-root .-translate-x-1\\/2{--tw-translate-x:-50%}#chat-widget-root .-translate-x-1\\/2,#chat-widget-root .-translate-y-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .-translate-y-1\\/2{--tw-translate-y:-50%}#chat-widget-root .-rotate-90{--tw-rotate:-90deg}#chat-widget-root .-rotate-90,#chat-widget-root .rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .rotate-180{--tw-rotate:180deg}#chat-widget-root .rotate-90{--tw-rotate:90deg}#chat-widget-root .rotate-90,#chat-widget-root .scale-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .scale-0{--tw-scale-x:0;--tw-scale-y:0}#chat-widget-root .scale-100{--tw-scale-x:1;--tw-scale-y:1}#chat-widget-root .scale-100,#chat-widget-root .scale-110{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1}#chat-widget-root .scale-125{--tw-scale-x:1.25;--tw-scale-y:1.25}#chat-widget-root .scale-125,#chat-widget-root .scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .scale-95{--tw-scale-x:.95;--tw-scale-y:.95}#chat-widget-root .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}#chat-widget-root .animate-bounce{animation:bounce 1s infinite}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}#chat-widget-root .animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}#chat-widget-root .animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}#chat-widget-root .animate-spin{animation:spin 1s linear infinite}#chat-widget-root .animate-voice-glow{animation:voice-glow 7s ease-in-out infinite}@keyframes voice-glow{0%,to{transform:translate(0) scale(1)}50%{transform:translate(12%,-8%) scale(1.15)}}#chat-widget-root .animate-voice-glow-slow{animation:voice-glow 11s ease-in-out infinite reverse}#chat-widget-root .cursor-ew-resize{cursor:ew-resize}#chat-widget-root .cursor-nesw-resize{cursor:nesw-resize}#chat-widget-root .cursor-not-allowed{cursor:not-allowed}#chat-widget-root .cursor-ns-resize{cursor:ns-resize}#chat-widget-root .cursor-nwse-resize{cursor:nwse-resize}#chat-widget-root .cursor-pointer{cursor:pointer}#chat-widget-root .resize-none{resize:none}#chat-widget-root .resize{resize:both}#chat-widget-root .list-decimal{list-style-type:decimal}#chat-widget-root .list-disc{list-style-type:disc}#chat-widget-root .list-none{list-style-type:none}#chat-widget-root .flex-row{flex-direction:row}#chat-widget-root .flex-row-reverse{flex-direction:row-reverse}#chat-widget-root .flex-col{flex-direction:column}#chat-widget-root .flex-wrap{flex-wrap:wrap}#chat-widget-root .items-start{align-items:flex-start}#chat-widget-root .items-end{align-items:flex-end}#chat-widget-root .items-center{align-items:center}#chat-widget-root .justify-start{justify-content:flex-start}#chat-widget-root .justify-end{justify-content:flex-end}#chat-widget-root .justify-center{justify-content:center}#chat-widget-root .justify-between{justify-content:space-between}#chat-widget-root .gap-0{gap:0}#chat-widget-root .gap-0\\.5{gap:.125rem}#chat-widget-root .gap-1{gap:.25rem}#chat-widget-root .gap-1\\.5{gap:.375rem}#chat-widget-root .gap-10{gap:2.5rem}#chat-widget-root .gap-2{gap:.5rem}#chat-widget-root .gap-2\\.5{gap:.625rem}#chat-widget-root .gap-3{gap:.75rem}#chat-widget-root :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}#chat-widget-root :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}#chat-widget-root .overflow-hidden{overflow:hidden}#chat-widget-root .overflow-visible{overflow:visible}#chat-widget-root .overflow-x-auto{overflow-x:auto}#chat-widget-root .overflow-y-auto{overflow-y:auto}#chat-widget-root .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#chat-widget-root .whitespace-nowrap{white-space:nowrap}#chat-widget-root .whitespace-pre-wrap{white-space:pre-wrap}#chat-widget-root .break-words{overflow-wrap:break-word}#chat-widget-root .break-all{word-break:break-all}#chat-widget-root .rounded{border-radius:.25rem}#chat-widget-root .rounded-2xl{border-radius:1rem}#chat-widget-root .rounded-3xl{border-radius:1.5rem}#chat-widget-root .rounded-full{border-radius:9999px}#chat-widget-root .rounded-lg{border-radius:.5rem}#chat-widget-root .rounded-md{border-radius:.375rem}#chat-widget-root .rounded-xl{border-radius:.75rem}#chat-widget-root .rounded-t-2xl{border-top-left-radius:1rem;border-top-right-radius:1rem}#chat-widget-root .rounded-tl-sm{border-top-left-radius:.125rem}#chat-widget-root .rounded-tr-sm{border-top-right-radius:.125rem}#chat-widget-root .border{border-width:1px}#chat-widget-root .border-0{border-width:0}#chat-widget-root .border-b{border-bottom-width:1px}#chat-widget-root .border-l-4{border-left-width:4px}#chat-widget-root .border-t{border-top-width:1px}#chat-widget-root .border-t-2{border-top-width:2px}#chat-widget-root .border-solid{border-style:solid}#chat-widget-root .border-dotted{border-style:dotted}#chat-widget-root .border-none{border-style:none}#chat-widget-root .\\!border-status-error{border-color:hsl(var(--cw-status-error))!important}#chat-widget-root .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}#chat-widget-root .border-amber-700\\/50{border-color:rgba(180,83,9,.5)}#chat-widget-root .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}#chat-widget-root .border-blue-700\\/50{border-color:rgba(29,78,216,.5)}#chat-widget-root .border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-200\\/60{border-color:rgba(229,231,235,.6)}#chat-widget-root .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}#chat-widget-root .border-gray-700\\/50{border-color:rgba(55,65,81,.5)}#chat-widget-root .border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}#chat-widget-root .border-transparent{border-color:transparent}#chat-widget-root .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}#chat-widget-root .bg-amber-900\\/40{background-color:rgba(120,53,15,.4)}#chat-widget-root .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}#chat-widget-root .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}#chat-widget-root .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}#chat-widget-root .bg-current{background-color:currentColor}#chat-widget-root .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-50\\/30{background-color:rgba(249,250,251,.3)}#chat-widget-root .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-700\\/50{background-color:rgba(55,65,81,.5)}#chat-widget-root .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}#chat-widget-root .bg-gray-800\\/50{background-color:rgba(31,41,55,.5)}#chat-widget-root .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}#chat-widget-root .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}#chat-widget-root .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}#chat-widget-root .bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}#chat-widget-root .bg-status-success{background-color:hsl(var(--cw-status-success))}#chat-widget-root .bg-status-warning{background-color:hsl(var(--cw-status-warning))}#chat-widget-root .bg-transparent{background-color:transparent}#chat-widget-root .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}#chat-widget-root .bg-white\\/10{background-color:hsla(0,0%,100%,.1)}#chat-widget-root .bg-white\\/20{background-color:hsla(0,0%,100%,.2)}#chat-widget-root .bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}#chat-widget-root .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}#chat-widget-root .from-gray-50\\/50{--tw-gradient-from:rgba(249,250,251,.5) var(--tw-gradient-from-position);--tw-gradient-to:rgba(249,250,251,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#chat-widget-root .from-white\\/0{--tw-gradient-from:hsla(0,0%,100%,0) var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#chat-widget-root .from-white\\/10{--tw-gradient-from:hsla(0,0%,100%,.1) var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#chat-widget-root .from-yellow-200{--tw-gradient-from:#fef08a var(--tw-gradient-from-position);--tw-gradient-to:hsla(53,98%,77%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#chat-widget-root .via-white\\/5{--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsla(0,0%,100%,.05) var(--tw-gradient-via-position),var(--tw-gradient-to)}#chat-widget-root .to-white{--tw-gradient-to:#fff var(--tw-gradient-to-position)}#chat-widget-root .to-white\\/10{--tw-gradient-to:hsla(0,0%,100%,.1) var(--tw-gradient-to-position)}#chat-widget-root .to-yellow-400{--tw-gradient-to:#facc15 var(--tw-gradient-to-position)}#chat-widget-root .object-contain{-o-object-fit:contain;object-fit:contain}#chat-widget-root .p-0{padding:0}#chat-widget-root .p-0\\.5{padding:.125rem}#chat-widget-root .p-3{padding:.75rem}#chat-widget-root .p-5{padding:1.25rem}#chat-widget-root .p-6{padding:1.5rem}#chat-widget-root .p-8{padding:2rem}#chat-widget-root .px-1{padding-left:.25rem;padding-right:.25rem}#chat-widget-root .px-2{padding-left:.5rem;padding-right:.5rem}#chat-widget-root .px-2\\.5{padding-left:.625rem;padding-right:.625rem}#chat-widget-root .px-3{padding-left:.75rem;padding-right:.75rem}#chat-widget-root .px-3\\.5{padding-left:.875rem;padding-right:.875rem}#chat-widget-root .px-4{padding-left:1rem;padding-right:1rem}#chat-widget-root .px-5{padding-left:1.25rem;padding-right:1.25rem}#chat-widget-root .py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}#chat-widget-root .py-1{padding-bottom:.25rem;padding-top:.25rem}#chat-widget-root .py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}#chat-widget-root .py-12{padding-bottom:3rem;padding-top:3rem}#chat-widget-root .py-2{padding-bottom:.5rem;padding-top:.5rem}#chat-widget-root .py-2\\.5{padding-bottom:.625rem;padding-top:.625rem}#chat-widget-root .py-3{padding-bottom:.75rem;padding-top:.75rem}#chat-widget-root .py-3\\.5{padding-bottom:.875rem;padding-top:.875rem}#chat-widget-root .py-4{padding-bottom:1rem;padding-top:1rem}#chat-widget-root .pb-1{padding-bottom:.25rem}#chat-widget-root .pb-2{padding-bottom:.5rem}#chat-widget-root .pb-6{padding-bottom:1.5rem}#chat-widget-root .pl-1{padding-left:.25rem}#chat-widget-root .pl-2{padding-left:.5rem}#chat-widget-root .pl-4{padding-left:1rem}#chat-widget-root .pl-\\[50px\\]{padding-left:50px}#chat-widget-root .pr-1{padding-right:.25rem}#chat-widget-root .pt-1{padding-top:.25rem}#chat-widget-root .pt-10{padding-top:2.5rem}#chat-widget-root .pt-3{padding-top:.75rem}#chat-widget-root .pt-4{padding-top:1rem}#chat-widget-root .text-left{text-align:left}#chat-widget-root .text-center{text-align:center}#chat-widget-root .text-right{text-align:right}#chat-widget-root .text-start{text-align:start}#chat-widget-root .align-text-bottom{vertical-align:text-bottom}#chat-widget-root .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}#chat-widget-root .text-2xl{font-size:1.5rem;line-height:2rem}#chat-widget-root .text-\\[10px\\]{font-size:10px}#chat-widget-root .text-base{font-size:1rem;line-height:1.5rem}#chat-widget-root .text-chip{font-size:11px;letter-spacing:0;line-height:1.4}#chat-widget-root .text-h4{font-size:18px;letter-spacing:0;line-height:1.3}#chat-widget-root .text-lg{font-size:1.125rem;line-height:1.75rem}#chat-widget-root .text-sm{font-size:.875rem;line-height:1.25rem}#chat-widget-root .text-xl{font-size:1.25rem;line-height:1.75rem}#chat-widget-root .text-xs{font-size:.75rem;line-height:1rem}#chat-widget-root .font-bold{font-weight:700}#chat-widget-root .font-medium{font-weight:500}#chat-widget-root .font-semibold{font-weight:600}#chat-widget-root .uppercase{text-transform:uppercase}#chat-widget-root .lowercase{text-transform:lowercase}#chat-widget-root .italic{font-style:italic}#chat-widget-root .tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}#chat-widget-root .leading-5{line-height:1.25rem}#chat-widget-root .leading-none{line-height:1}#chat-widget-root .leading-normal{line-height:1.5}#chat-widget-root .leading-relaxed{line-height:1.625}#chat-widget-root .leading-snug{line-height:1.375}#chat-widget-root .tracking-wide{letter-spacing:.025em}#chat-widget-root .text-\\[\\#4A5568\\]{--tw-text-opacity:1;color:rgb(74 85 104/var(--tw-text-opacity,1))}#chat-widget-root .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}#chat-widget-root .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}#chat-widget-root .text-current{color:currentColor}#chat-widget-root .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}#chat-widget-root .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}#chat-widget-root .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}#chat-widget-root .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}#chat-widget-root .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}#chat-widget-root .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}#chat-widget-root .text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}#chat-widget-root .text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}#chat-widget-root .text-status-error{color:hsl(var(--cw-status-error))}#chat-widget-root .text-status-success{color:hsl(var(--cw-status-success))}#chat-widget-root .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}#chat-widget-root .text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}#chat-widget-root .underline{text-decoration-line:underline}#chat-widget-root .no-underline{text-decoration-line:none}#chat-widget-root .placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}#chat-widget-root .placeholder-gray-400::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}#chat-widget-root .placeholder-gray-500::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(107 114 128/var(--tw-placeholder-opacity,1))}#chat-widget-root .placeholder-gray-500::placeholder{--tw-placeholder-opacity:1;color:rgb(107 114 128/var(--tw-placeholder-opacity,1))}#chat-widget-root .opacity-0{opacity:0}#chat-widget-root .opacity-50{opacity:.5}#chat-widget-root .opacity-60{opacity:.6}#chat-widget-root .opacity-70{opacity:.7}#chat-widget-root .opacity-75{opacity:.75}#chat-widget-root .opacity-80{opacity:.8}#chat-widget-root .opacity-90{opacity:.9}#chat-widget-root .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}#chat-widget-root .shadow,#chat-widget-root .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}#chat-widget-root .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}#chat-widget-root .shadow-lg,#chat-widget-root .shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}#chat-widget-root .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}#chat-widget-root .shadow-sm,#chat-widget-root .shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}#chat-widget-root .shadow-black\\/20{--tw-shadow-color:rgba(0,0,0,.2);--tw-shadow:var(--tw-shadow-colored)}#chat-widget-root .shadow-gray-200\\/80{--tw-shadow-color:rgba(229,231,235,.8);--tw-shadow:var(--tw-shadow-colored)}#chat-widget-root .outline-none{outline:2px solid transparent;outline-offset:2px}#chat-widget-root .outline{outline-style:solid}#chat-widget-root .ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}#chat-widget-root .ring,#chat-widget-root .ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#chat-widget-root .ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}#chat-widget-root .ring-blue-100{--tw-ring-opacity:1;--tw-ring-color:rgb(219 234 254/var(--tw-ring-opacity,1))}#chat-widget-root .ring-blue-300{--tw-ring-opacity:1;--tw-ring-color:rgb(147 197 253/var(--tw-ring-opacity,1))}#chat-widget-root .ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity,1))}#chat-widget-root .blur{--tw-blur:blur(8px)}#chat-widget-root .blur,#chat-widget-root .blur-2xl{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .blur-2xl{--tw-blur:blur(40px)}#chat-widget-root .drop-shadow-md{--tw-drop-shadow:drop-shadow(0 4px 3px rgba(0,0,0,.07)) drop-shadow(0 2px 2px rgba(0,0,0,.06))}#chat-widget-root .drop-shadow-md,#chat-widget-root .drop-shadow-sm{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .drop-shadow-sm{--tw-drop-shadow:drop-shadow(0 1px 1px rgba(0,0,0,.05))}#chat-widget-root .grayscale-\\[0\\.3\\]{--tw-grayscale:grayscale(0.3)}#chat-widget-root .filter,#chat-widget-root .grayscale-\\[0\\.3\\]{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .backdrop-blur-sm{--tw-backdrop-blur:blur(4px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}#chat-widget-root .transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-\\[opacity\\2c transform\\]{transition-duration:.15s;transition-property:opacity,transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .duration-150{transition-duration:.15s}#chat-widget-root .duration-200{transition-duration:.2s}#chat-widget-root .duration-300{transition-duration:.3s}#chat-widget-root .duration-500{transition-duration:.5s}#chat-widget-root .ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}#chat-widget-root :is(#chat-widget-root .animate-in){animation:slideIn .3s ease-out}#chat-widget-root :is(#chat-widget-root .transition-all){transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .\\[font-family\\:inherit\\]{font-family:inherit}#chat-widget-root .\\[overflow-wrap\\:anywhere\\]{overflow-wrap:anywhere}#chat-widget-root .placeholder\\:text-\\[\\#A2A9B2\\]::-moz-placeholder{--tw-text-opacity:1;color:rgb(162 169 178/var(--tw-text-opacity,1))}#chat-widget-root .placeholder\\:text-\\[\\#A2A9B2\\]::placeholder{--tw-text-opacity:1;color:rgb(162 169 178/var(--tw-text-opacity,1))}#chat-widget-root .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}#chat-widget-root .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}#chat-widget-root .hover\\:scale-105:hover,#chat-widget-root .hover\\:scale-110:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .hover\\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}#chat-widget-root .hover\\:scale-\\[1\\.02\\]:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .hover\\:border-blue-400:hover{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}#chat-widget-root .hover\\:border-blue-600:hover{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}#chat-widget-root .hover\\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-blue-500\\/20:hover{background-color:rgba(59,130,246,.2)}#chat-widget-root .hover\\:bg-blue-900\\/50:hover{background-color:rgba(30,58,138,.5)}#chat-widget-root .hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}#chat-widget-root .hover\\:bg-transparent:hover{background-color:transparent}#chat-widget-root .hover\\:text-blue-500:hover{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}#chat-widget-root .hover\\:underline:hover{text-decoration-line:underline}#chat-widget-root .hover\\:opacity-80:hover{opacity:.8}#chat-widget-root .hover\\:opacity-90:hover{opacity:.9}#chat-widget-root .hover\\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}#chat-widget-root .hover\\:shadow-md:hover,#chat-widget-root .hover\\:shadow-xl:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}#chat-widget-root .hover\\:grayscale-0:hover{--tw-grayscale:grayscale(0);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .focus\\:\\!border-status-error:focus{border-color:hsl(var(--cw-status-error))!important}#chat-widget-root .focus\\:border-\\[\\#5A6069\\]:focus{--tw-border-opacity:1;border-color:rgb(90 96 105/var(--tw-border-opacity,1))}#chat-widget-root .focus\\:border-\\[\\#B0B0B0\\]:focus{--tw-border-opacity:1;border-color:rgb(176 176 176/var(--tw-border-opacity,1))}#chat-widget-root .focus\\:bg-white:focus{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}#chat-widget-root .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}#chat-widget-root .focus\\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}#chat-widget-root .focus\\:ring-0:focus,#chat-widget-root .focus\\:ring-1:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#chat-widget-root .focus\\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}#chat-widget-root .focus\\:ring-gray-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity,1))}#chat-widget-root .focus\\:ring-gray-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(75 85 99/var(--tw-ring-opacity,1))}#chat-widget-root .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}#chat-widget-root .focus-visible\\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#chat-widget-root .focus-visible\\:ring-blue-700:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(29 78 216/var(--tw-ring-opacity,1))}#chat-widget-root .focus-visible\\:ring-primary:focus-visible{--tw-ring-color:var(--cw-primary,#1d4ed8)}#chat-widget-root .focus-visible\\:ring-red-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(220 38 38/var(--tw-ring-opacity,1))}#chat-widget-root .focus-visible\\:ring-white\\/40:focus-visible{--tw-ring-color:hsla(0,0%,100%,.4)}#chat-widget-root .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}#chat-widget-root .focus-visible\\:ring-offset-gray-900:focus-visible{--tw-ring-offset-color:#111827}#chat-widget-root .active\\:scale-95:active{--tw-scale-x:.95;--tw-scale-y:.95}#chat-widget-root .active\\:scale-95:active,#chat-widget-root .active\\:scale-\\[0\\.97\\]:active{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .active\\:scale-\\[0\\.97\\]:active{--tw-scale-x:0.97;--tw-scale-y:0.97}#chat-widget-root .active\\:scale-\\[0\\.98\\]:active{--tw-scale-x:0.98;--tw-scale-y:0.98}#chat-widget-root .active\\:scale-\\[0\\.98\\]:active,#chat-widget-root .active\\:scale-\\[0\\.99\\]:active{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root .active\\:scale-\\[0\\.99\\]:active{--tw-scale-x:0.99;--tw-scale-y:0.99}#chat-widget-root .active\\:outline-none:active{outline:2px solid transparent;outline-offset:2px}#chat-widget-root .active\\:ring-0:active{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#chat-widget-root .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}#chat-widget-root .disabled\\:opacity-40:disabled{opacity:.4}#chat-widget-root .disabled\\:opacity-50:disabled{opacity:.5}#chat-widget-root .disabled\\:shadow-none:disabled{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root :is(.group:hover .group-hover\\:scale-100){--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#chat-widget-root :is(.group:hover .group-hover\\:opacity-100){opacity:1}#chat-widget-root .dark\\:text-gray-300:is(.dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}#chat-widget-root .dark\\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}@media (min-width:768px){#chat-widget-root .md\\:text-sm{font-size:.875rem;line-height:1.25rem}}#chat-widget-root .rtl\\:rounded-tl-2xl:where([dir=rtl],[dir=rtl] *){border-top-left-radius:1rem}#chat-widget-root .rtl\\:rounded-tr-sm:where([dir=rtl],[dir=rtl] *){border-top-right-radius:.125rem}#chat-widget-root .\\[\\&\\:first-child\\]\\:\\!mt-0:first-child{margin-top:0!important}#chat-widget-root :is(.\\[\\&\\>\\*\\:first-child\\]\\:\\!mt-0>:first-child){margin-top:0!important}#chat-widget-root :is(.\\[\\&\\>\\*\\:last-child\\]\\:\\!mb-0>:last-child){margin-bottom:0!important}";
7807
7807
 
7808
- var css_248z = ".chat-widget-root{position:fixed;z-index:999999}.chat-widget-container{color:var(--cw-text-color,inherit);font-family:var(\n --cw-font-family,-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Roboto\",\"Oxygen\",\"Ubuntu\",\"Cantarell\",\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",sans-serif\n )}#chat-widget-root .chat-messages p{overflow-wrap:anywhere;word-break:break-word}textarea#chat-widget-input::-moz-placeholder{border:none;line-height:48px;outline:none}textarea#chat-widget-input::placeholder{border:none;line-height:48px;outline:none}textarea#chat-widget-input{border:none;line-height:48px;outline:none}@keyframes slideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}#chat-widget-root .scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}#chat-widget-root .scrollbar-hide::-webkit-scrollbar{display:none}#chat-widget-root .slim-scrollbar-x{scrollbar-width:thin}#chat-widget-root .slim-scrollbar-x::-webkit-scrollbar{height:3px!important}#chat-widget-root .slim-scrollbar-x::-webkit-scrollbar-track{background:transparent!important}#chat-widget-root .slim-scrollbar-x::-webkit-scrollbar-thumb{background:#d1d5db!important;border-radius:2px!important}#chat-widget-root .slim-scrollbar-x::-webkit-scrollbar-thumb:hover{background:#9ca3af!important}@media print{.chat-widget-root{display:none!important}}";
7808
+ var css_248z = ".chat-widget-root{position:fixed;z-index:999999}.chat-widget-container{color:var(--cw-text-color,inherit);font-family:var(\n --cw-font-family,-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Roboto\",\"Oxygen\",\"Ubuntu\",\"Cantarell\",\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",sans-serif\n )}#chat-widget-root .chat-messages p{overflow-wrap:anywhere;word-break:break-word}textarea#chat-widget-input::-moz-placeholder{border:none;line-height:48px;outline:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}textarea#chat-widget-input::placeholder{border:none;line-height:48px;outline:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}textarea#chat-widget-input{border:none;line-height:48px;outline:none}@keyframes slideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}#chat-widget-root .scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}#chat-widget-root .scrollbar-hide::-webkit-scrollbar{display:none}#chat-widget-root .slim-scrollbar-x{scrollbar-width:thin}#chat-widget-root .slim-scrollbar-x::-webkit-scrollbar{height:3px!important}#chat-widget-root .slim-scrollbar-x::-webkit-scrollbar-track{background:transparent!important}#chat-widget-root .slim-scrollbar-x::-webkit-scrollbar-thumb{background:#d1d5db!important;border-radius:2px!important}#chat-widget-root .slim-scrollbar-x::-webkit-scrollbar-thumb:hover{background:#9ca3af!important}@media print{.chat-widget-root{display:none!important}}";
7809
7809
 
7810
7810
  /**
7811
7811
  * SSE (Server-Sent Events) parsing utilities
@@ -12898,6 +12898,237 @@
12898
12898
  callEndLabel: "Kết thúc"
12899
12899
  }
12900
12900
  };
12901
+
12902
+ // EV-4968 / EV-5040: the survey's thank-you, the line above a rating an agent
12903
+ // asked for, and the header menu's End chat. Kept as its own table, like
12904
+ // VOICE_CALL_TEXTS above, so every supported locale carries the full set.
12905
+ const SURVEY_TEXTS = {
12906
+ en: {
12907
+ surveyThanks: "Thank you for your feedback!",
12908
+ surveyRequestedNote: "Our agent has asked you to rate this conversation.",
12909
+ endChat: "End chat"
12910
+ },
12911
+ ar: {
12912
+ surveyThanks: "شكرًا لك على ملاحظاتك!",
12913
+ surveyRequestedNote: "طلب منك موظف الدعم تقييم هذه المحادثة.",
12914
+ endChat: "إنهاء المحادثة"
12915
+ },
12916
+ es: {
12917
+ surveyThanks: "¡Gracias por tus comentarios!",
12918
+ surveyRequestedNote: "Nuestro agente te ha pedido que valores esta conversación.",
12919
+ endChat: "Finalizar chat"
12920
+ },
12921
+ be: {
12922
+ surveyThanks: "Дзякуй за ваш водгук!",
12923
+ surveyRequestedNote: "Наш агент папрасіў вас ацаніць гэту размову.",
12924
+ endChat: "Завяршыць чат"
12925
+ },
12926
+ bs: {
12927
+ surveyThanks: "Hvala vam na povratnim informacijama!",
12928
+ surveyRequestedNote: "Naš agent vas je zamolio da ocijenite ovaj razgovor.",
12929
+ endChat: "Završi chat"
12930
+ },
12931
+ bg: {
12932
+ surveyThanks: "Благодарим ви за отзива!",
12933
+ surveyRequestedNote: "Нашият агент ви помоли да оцените този разговор.",
12934
+ endChat: "Приключи чата"
12935
+ },
12936
+ my: {
12937
+ surveyThanks: "သင့်အကြံပြုချက်အတွက် ကျေးဇူးတင်ပါသည်!",
12938
+ surveyRequestedNote: "ကျွန်ုပ်တို့၏ ကိုယ်စားလှယ်က ဤစကားဝိုင်းကို အဆင့်သတ်မှတ်ပေးရန် တောင်းဆိုထားပါသည်။",
12939
+ endChat: "ချတ် အဆုံးသတ်ပါ"
12940
+ },
12941
+ ca: {
12942
+ surveyThanks: "Gràcies pels teus comentaris!",
12943
+ surveyRequestedNote: "El nostre agent t'ha demanat que valoris aquesta conversa.",
12944
+ endChat: "Finalitza el xat"
12945
+ },
12946
+ zh: {
12947
+ surveyThanks: "感谢您的反馈!",
12948
+ surveyRequestedNote: "我们的客服请您为本次对话评分。",
12949
+ endChat: "结束聊天"
12950
+ },
12951
+ hr: {
12952
+ surveyThanks: "Hvala vam na povratnim informacijama!",
12953
+ surveyRequestedNote: "Naš vas je agent zamolio da ocijenite ovaj razgovor.",
12954
+ endChat: "Završi chat"
12955
+ },
12956
+ cs: {
12957
+ surveyThanks: "Děkujeme za vaši zpětnou vazbu!",
12958
+ surveyRequestedNote: "Náš agent vás požádal o hodnocení této konverzace.",
12959
+ endChat: "Ukončit chat"
12960
+ },
12961
+ da: {
12962
+ surveyThanks: "Tak for din feedback!",
12963
+ surveyRequestedNote: "Vores medarbejder har bedt dig om at bedømme denne samtale.",
12964
+ endChat: "Afslut chat"
12965
+ },
12966
+ nl: {
12967
+ surveyThanks: "Bedankt voor je feedback!",
12968
+ surveyRequestedNote: "Onze medewerker heeft je gevraagd dit gesprek te beoordelen.",
12969
+ endChat: "Chat beëindigen"
12970
+ },
12971
+ et: {
12972
+ surveyThanks: "Täname tagasiside eest!",
12973
+ surveyRequestedNote: "Meie klienditeenindaja palus teil seda vestlust hinnata.",
12974
+ endChat: "Lõpeta vestlus"
12975
+ },
12976
+ fi: {
12977
+ surveyThanks: "Kiitos palautteestasi!",
12978
+ surveyRequestedNote: "Asiakaspalvelijamme pyysi sinua arvioimaan tämän keskustelun.",
12979
+ endChat: "Lopeta keskustelu"
12980
+ },
12981
+ fr: {
12982
+ surveyThanks: "Merci pour vos commentaires !",
12983
+ surveyRequestedNote: "Notre agent vous a demandé d'évaluer cette conversation.",
12984
+ endChat: "Terminer le chat"
12985
+ },
12986
+ de: {
12987
+ surveyThanks: "Vielen Dank für Ihr Feedback!",
12988
+ surveyRequestedNote: "Unser Mitarbeiter hat Sie gebeten, dieses Gespräch zu bewerten.",
12989
+ endChat: "Chat beenden"
12990
+ },
12991
+ el: {
12992
+ surveyThanks: "Σας ευχαριστούμε για τα σχόλιά σας!",
12993
+ surveyRequestedNote: "Ο εκπρόσωπός μας σας ζήτησε να αξιολογήσετε αυτή τη συνομιλία.",
12994
+ endChat: "Τερματισμός συνομιλίας"
12995
+ },
12996
+ hi: {
12997
+ surveyThanks: "आपकी प्रतिक्रिया के लिए धन्यवाद!",
12998
+ surveyRequestedNote: "हमारे एजेंट ने आपसे इस बातचीत को रेट करने का अनुरोध किया है।",
12999
+ endChat: "चैट समाप्त करें"
13000
+ },
13001
+ mr: {
13002
+ surveyThanks: "आपल्या अभिप्रायाबद्दल धन्यवाद!",
13003
+ surveyRequestedNote: "आमच्या एजंटने आपल्याला या संभाषणाला रेटिंग देण्याची विनंती केली आहे.",
13004
+ endChat: "चॅट समाप्त करा"
13005
+ },
13006
+ hu: {
13007
+ surveyThanks: "Köszönjük a visszajelzését!",
13008
+ surveyRequestedNote: "Munkatársunk arra kérte, hogy értékelje ezt a beszélgetést.",
13009
+ endChat: "Csevegés befejezése"
13010
+ },
13011
+ is: {
13012
+ surveyThanks: "Takk fyrir endurgjöfina!",
13013
+ surveyRequestedNote: "Þjónustufulltrúi okkar hefur beðið þig að gefa þessu samtali einkunn.",
13014
+ endChat: "Ljúka spjalli"
13015
+ },
13016
+ id: {
13017
+ surveyThanks: "Terima kasih atas masukan Anda!",
13018
+ surveyRequestedNote: "Agen kami meminta Anda menilai percakapan ini.",
13019
+ endChat: "Akhiri obrolan"
13020
+ },
13021
+ it: {
13022
+ surveyThanks: "Grazie per il tuo feedback!",
13023
+ surveyRequestedNote: "Il nostro operatore ti ha chiesto di valutare questa conversazione.",
13024
+ endChat: "Termina chat"
13025
+ },
13026
+ ja: {
13027
+ surveyThanks: "フィードバックをありがとうございます!",
13028
+ surveyRequestedNote: "担当者がこの会話の評価をお願いしています。",
13029
+ endChat: "チャットを終了"
13030
+ },
13031
+ ko: {
13032
+ surveyThanks: "피드백을 주셔서 감사합니다!",
13033
+ surveyRequestedNote: "상담원이 이 대화에 대한 평가를 요청했습니다.",
13034
+ endChat: "채팅 종료"
13035
+ },
13036
+ lv: {
13037
+ surveyThanks: "Paldies par jūsu atsauksmi!",
13038
+ surveyRequestedNote: "Mūsu konsultants lūdza jūs novērtēt šo sarunu.",
13039
+ endChat: "Beigt tērzēšanu"
13040
+ },
13041
+ lt: {
13042
+ surveyThanks: "Dėkojame už jūsų atsiliepimą!",
13043
+ surveyRequestedNote: "Mūsų konsultantas paprašė jūsų įvertinti šį pokalbį.",
13044
+ endChat: "Baigti pokalbį"
13045
+ },
13046
+ mk: {
13047
+ surveyThanks: "Ви благодариме за повратните информации!",
13048
+ surveyRequestedNote: "Нашиот агент ве замоли да го оцените овој разговор.",
13049
+ endChat: "Заврши го разговорот"
13050
+ },
13051
+ ms: {
13052
+ surveyThanks: "Terima kasih atas maklum balas anda!",
13053
+ surveyRequestedNote: "Ejen kami meminta anda menilai perbualan ini.",
13054
+ endChat: "Tamatkan sembang"
13055
+ },
13056
+ no: {
13057
+ surveyThanks: "Takk for tilbakemeldingen!",
13058
+ surveyRequestedNote: "Vår medarbeider har bedt deg om å vurdere denne samtalen.",
13059
+ endChat: "Avslutt chat"
13060
+ },
13061
+ fa: {
13062
+ surveyThanks: "از بازخورد شما سپاسگزاریم!",
13063
+ surveyRequestedNote: "کارشناس ما از شما خواسته است به این گفتگو امتیاز دهید.",
13064
+ endChat: "پایان چت"
13065
+ },
13066
+ pl: {
13067
+ surveyThanks: "Dziękujemy za opinię!",
13068
+ surveyRequestedNote: "Nasz konsultant poprosił Cię o ocenę tej rozmowy.",
13069
+ endChat: "Zakończ czat"
13070
+ },
13071
+ pt: {
13072
+ surveyThanks: "Obrigado pelo seu feedback!",
13073
+ surveyRequestedNote: "Nosso atendente pediu que você avalie esta conversa.",
13074
+ endChat: "Encerrar chat"
13075
+ },
13076
+ ro: {
13077
+ surveyThanks: "Vă mulțumim pentru feedback!",
13078
+ surveyRequestedNote: "Agentul nostru v-a rugat să evaluați această conversație.",
13079
+ endChat: "Încheie chatul"
13080
+ },
13081
+ ru: {
13082
+ surveyThanks: "Спасибо за ваш отзыв!",
13083
+ surveyRequestedNote: "Наш специалист попросил вас оценить этот разговор.",
13084
+ endChat: "Завершить чат"
13085
+ },
13086
+ sr: {
13087
+ surveyThanks: "Hvala vam na povratnim informacijama!",
13088
+ surveyRequestedNote: "Naš agent vas je zamolio da ocenite ovaj razgovor.",
13089
+ endChat: "Završi ćaskanje"
13090
+ },
13091
+ sk: {
13092
+ surveyThanks: "Ďakujeme za vašu spätnú väzbu!",
13093
+ surveyRequestedNote: "Náš agent vás požiadal o ohodnotenie tohto rozhovoru.",
13094
+ endChat: "Ukončiť chat"
13095
+ },
13096
+ sl: {
13097
+ surveyThanks: "Hvala za vaše povratne informacije!",
13098
+ surveyRequestedNote: "Naš svetovalec vas je prosil, da ocenite ta pogovor.",
13099
+ endChat: "Končaj klepet"
13100
+ },
13101
+ sv: {
13102
+ surveyThanks: "Tack för din feedback!",
13103
+ surveyRequestedNote: "Vår medarbetare har bett dig betygsätta det här samtalet.",
13104
+ endChat: "Avsluta chatten"
13105
+ },
13106
+ th: {
13107
+ surveyThanks: "ขอบคุณสำหรับความคิดเห็นของคุณ!",
13108
+ surveyRequestedNote: "เจ้าหน้าที่ของเราขอให้คุณให้คะแนนการสนทนานี้",
13109
+ endChat: "จบการแชท"
13110
+ },
13111
+ tr: {
13112
+ surveyThanks: "Geri bildiriminiz için teşekkür ederiz!",
13113
+ surveyRequestedNote: "Temsilcimiz bu görüşmeyi değerlendirmenizi istedi.",
13114
+ endChat: "Sohbeti bitir"
13115
+ },
13116
+ uk: {
13117
+ surveyThanks: "Дякуємо за ваш відгук!",
13118
+ surveyRequestedNote: "Наш фахівець попросив вас оцінити цю розмову.",
13119
+ endChat: "Завершити чат"
13120
+ },
13121
+ ur: {
13122
+ surveyThanks: "آپ کی رائے کا شکریہ!",
13123
+ surveyRequestedNote: "ہمارے نمائندے نے آپ سے اس گفتگو کی درجہ بندی کرنے کی درخواست کی ہے۔",
13124
+ endChat: "چیٹ ختم کریں"
13125
+ },
13126
+ vi: {
13127
+ surveyThanks: "Cảm ơn bạn đã gửi phản hồi!",
13128
+ surveyRequestedNote: "Nhân viên của chúng tôi đã đề nghị bạn đánh giá cuộc trò chuyện này.",
13129
+ endChat: "Kết thúc trò chuyện"
13130
+ }
13131
+ };
12901
13132
  const ONBOARDING_PLACEHOLDERS = {
12902
13133
  en: {
12903
13134
  onboardingNamePlaceholder: "Please enter your name",
@@ -13226,7 +13457,7 @@
13226
13457
  const normalized = normalizeLocale(locale);
13227
13458
  const dict = DICTIONARIES[normalized] || EN;
13228
13459
  const onboarding = ONBOARDING_PLACEHOLDERS[normalized];
13229
- return onboarding?.[key] ?? dict[key] ?? A11Y_LABELS[normalized]?.[key] ?? VOICE_CALL_TEXTS[normalized]?.[key] ?? ATTACHMENT_REJECTION_TEXTS[normalized]?.[key] ?? ONBOARDING_PLACEHOLDERS.en[key] ?? A11Y_LABELS.en[key] ?? VOICE_CALL_TEXTS.en[key] ?? ATTACHMENT_REJECTION_TEXTS.en[key] ?? EN[key] ?? key;
13460
+ return onboarding?.[key] ?? dict[key] ?? A11Y_LABELS[normalized]?.[key] ?? VOICE_CALL_TEXTS[normalized]?.[key] ?? SURVEY_TEXTS[normalized]?.[key] ?? ATTACHMENT_REJECTION_TEXTS[normalized]?.[key] ?? ONBOARDING_PLACEHOLDERS.en[key] ?? A11Y_LABELS.en[key] ?? VOICE_CALL_TEXTS.en[key] ?? SURVEY_TEXTS.en[key] ?? ATTACHMENT_REJECTION_TEXTS.en[key] ?? EN[key] ?? key;
13230
13461
  }
13231
13462
  function createTranslator(locale) {
13232
13463
  const normalized = normalizeLocale(locale);
@@ -13769,6 +14000,34 @@
13769
14000
  return ONBOARDING_FIELD_ORDER[key] ?? 99;
13770
14001
  };
13771
14002
 
14003
+ // The answers /support/onboarding stores: one per question, in field order
14004
+ // (name, email, phone, then the rest), blanks dropped.
14005
+ function onboardingPayload(questions, answers) {
14006
+ const sorted = [...(Array.isArray(questions) ? questions : [])].sort((a, b) => getOnboardingFieldOrder(a?.fieldType) - getOnboardingFieldOrder(b?.fieldType));
14007
+ const payload = {};
14008
+ for (const q of sorted) {
14009
+ const key = q?.fieldType || "question";
14010
+ const value = String(answers?.[key] ?? "").trim();
14011
+ if (value) payload[key] = value;
14012
+ }
14013
+ return payload;
14014
+ }
14015
+
14016
+ // EV-5040: after a survey the same visitor starts the next chat without the
14017
+ // onboarding form again. Returns the answers to send for that chat, or null
14018
+ // when the visitor is not kept: no keepVisitor request, onboarding not done,
14019
+ // or no answers in memory (they are never written to storage, so after a page
14020
+ // reload the form asks again rather than leave the chat unidentified).
14021
+ function carriedVisitorAnswers(opts, {
14022
+ onboardingCompleted,
14023
+ questions,
14024
+ answers
14025
+ } = {}) {
14026
+ if (opts?.keepVisitor !== true || !onboardingCompleted) return null;
14027
+ const payload = onboardingPayload(questions, answers);
14028
+ return Object.keys(payload).length > 0 ? payload : null;
14029
+ }
14030
+
13772
14031
  const SESSION_KEY$1 = 'eshal_chat_session';
13773
14032
  const SESSION_MSG_KEY = 'eshal_chat_session_messages';
13774
14033
  // EV-4956: the ids of the messages a hand-off to the team came after (below).
@@ -14419,6 +14678,10 @@
14419
14678
  const [pendingUserIntent, setPendingUserIntent] = reactExports.useState(null);
14420
14679
  const [onboardingAnswers, setOnboardingAnswers] = reactExports.useState({});
14421
14680
  const pendingIntentProcessedRef = reactExports.useRef(false);
14681
+ // EV-5040: a visitor kept across the reset after a survey:
14682
+ // { conversationId, answers, name }. Their onboarding answers go to the new
14683
+ // conversation with its first message (memory only, never storage).
14684
+ const carriedVisitorRef = reactExports.useRef(null);
14422
14685
 
14423
14686
  // UX-M09: ref-based concurrency guard for sendMessage. The isLoading
14424
14687
  // state alone is not sufficient - setState is batched async, so two
@@ -15378,6 +15641,24 @@
15378
15641
  setInputValue("");
15379
15642
  }
15380
15643
  try {
15644
+ // EV-5040: the visitor kept across a post-survey reset. Their
15645
+ // onboarding answers reach the new conversation before its first
15646
+ // message does, so the Inbox still knows who it is; and only now,
15647
+ // so a visitor who rates and leaves opens no empty conversation.
15648
+ const carried = carriedVisitorRef.current;
15649
+ if (carried && carried.conversationId === bidiSessionId) {
15650
+ carriedVisitorRef.current = null;
15651
+ markOnboardingCompleted(organizationId, carried.name);
15652
+ try {
15653
+ await sendOnboardingAnswers(carried.answers, {
15654
+ conversationId: bidiSessionId,
15655
+ organizationId
15656
+ }, apiBaseUrl, getAuthToken);
15657
+ } catch (err) {
15658
+ console.error("[onboarding] failed to save onboarding answers", err);
15659
+ }
15660
+ }
15661
+
15381
15662
  // Prepare chat request
15382
15663
  const chatRequest = {
15383
15664
  message: trimmed,
@@ -15740,13 +16021,7 @@
15740
16021
  // /api/v1/support/onboarding writes directly - and the generated
15741
16022
  // "answer" was thrown away either way (see sendMessage's userName/
15742
16023
  // email/phone branch). A single fast upsert replaces all of that.
15743
- const sorted = [...questions].sort((a, b) => getOnboardingFieldOrder(a.fieldType) - getOnboardingFieldOrder(b.fieldType));
15744
- const payloadAnswers = {};
15745
- for (const q of sorted) {
15746
- const key = q.fieldType || "question";
15747
- const value = (answers[key] ?? "").trim();
15748
- if (value) payloadAnswers[key] = value;
15749
- }
16024
+ const payloadAnswers = onboardingPayload(questions, answers);
15750
16025
  if (Object.keys(payloadAnswers).length > 0 && apiBaseUrl && bidiSessionId) {
15751
16026
  try {
15752
16027
  await sendOnboardingAnswers(payloadAnswers, {
@@ -17103,7 +17378,16 @@
17103
17378
  }, []);
17104
17379
 
17105
17380
  // Reset entire conversation state after CSAT / closing - mirrors preview behaviour
17106
- const resetConversation = reactExports.useCallback(() => {
17381
+ const resetConversation = reactExports.useCallback(opts => {
17382
+ // EV-5040: after a survey ({ keepVisitor: true }) the same visitor goes
17383
+ // on: their answers are carried, not asked again. Null otherwise.
17384
+ const carriedAnswers = carriedVisitorAnswers(opts, {
17385
+ onboardingCompleted,
17386
+ questions: getOnboardingQuestions(onboardingQuestions),
17387
+ answers: onboardingAnswers
17388
+ });
17389
+ carriedVisitorRef.current = null;
17390
+
17107
17391
  // Clear persisted session and prompt suggestions so the next mount starts fresh
17108
17392
  clearSession$2(organizationId);
17109
17393
  savePromptSuggestions(organizationId, []);
@@ -17140,10 +17424,13 @@
17140
17424
  // Reset onboarding. Clear the name too - the new session (saveSession
17141
17425
  // below writes a fresh record without it) will re-collect it, so the
17142
17426
  // re-shown welcome stays generic until the user re-onboards.
17427
+ // EV-5040: a carried visitor keeps their answers, name and completed form.
17143
17428
  setOnboardingActive(false);
17144
- setOnboardingCompleted(false);
17145
- setOnboardingAnswers({});
17146
- setOnboardingName("");
17429
+ if (!carriedAnswers) {
17430
+ setOnboardingCompleted(false);
17431
+ setOnboardingAnswers({});
17432
+ setOnboardingName("");
17433
+ }
17147
17434
  setPendingUserIntent(null);
17148
17435
  pendingIntentProcessedRef.current = false;
17149
17436
  userHasSpokenRef.current = false;
@@ -17172,27 +17459,36 @@
17172
17459
  })
17173
17460
  });
17174
17461
  setBidiSessionId(newSessionId);
17462
+ // EV-5040: the new session record does not say onboarding is done until
17463
+ // the first message sends the answers, so a reload before then asks again.
17464
+ if (carriedAnswers) {
17465
+ carriedVisitorRef.current = {
17466
+ conversationId: newSessionId,
17467
+ answers: carriedAnswers,
17468
+ name: onboardingName
17469
+ };
17470
+ }
17175
17471
 
17176
- // Re-show the welcome message
17472
+ // Re-show the welcome message (EV-5040: still by name for a carried visitor)
17177
17473
  if (welcomeMessage && welcomeMessage.trim() !== "") {
17178
17474
  setMessages([{
17179
17475
  ...createMessage({
17180
17476
  id: Date.now().toString(),
17181
17477
  role: "assistant",
17182
- content: welcomeMessage
17478
+ content: carriedAnswers ? personalizedWelcome : welcomeMessage
17183
17479
  }),
17184
17480
  isWelcome: true
17185
17481
  }]);
17186
17482
  }
17187
17483
 
17188
17484
  // Re-trigger onboarding if enabled
17189
- if (onboardingEnabled) {
17485
+ if (onboardingEnabled && !carriedAnswers) {
17190
17486
  const questions = getOnboardingQuestions(onboardingQuestions);
17191
17487
  if (questions.length > 0) {
17192
17488
  setOnboardingActive(true);
17193
17489
  }
17194
17490
  }
17195
- }, [organizationId, bidiSessionId, welcomeMessage, onboardingEnabled, onboardingQuestions, inactivityTimeoutValue, inactivityTimeoutUnit]);
17491
+ }, [organizationId, bidiSessionId, welcomeMessage, onboardingEnabled, onboardingQuestions, inactivityTimeoutValue, inactivityTimeoutUnit, onboardingCompleted, onboardingAnswers, onboardingName, personalizedWelcome]);
17196
17492
 
17197
17493
  // Keep a stable ref to resetConversation so the timer effect does not need to
17198
17494
  // list it as a dependency (avoids spurious re-runs - and spurious updateActivity
@@ -17539,7 +17835,7 @@
17539
17835
  * See the LICENSE file in the root directory of this source tree.
17540
17836
  */
17541
17837
 
17542
- const __iconNode$m = [["path", {
17838
+ const __iconNode$o = [["path", {
17543
17839
  d: "M2 10v3",
17544
17840
  key: "1fnikh"
17545
17841
  }], ["path", {
@@ -17558,7 +17854,7 @@
17558
17854
  d: "M22 10v3",
17559
17855
  key: "154ddg"
17560
17856
  }]];
17561
- const AudioLines = createLucideIcon("audio-lines", __iconNode$m);
17857
+ const AudioLines = createLucideIcon("audio-lines", __iconNode$o);
17562
17858
 
17563
17859
  /**
17564
17860
  * @license lucide-react v0.575.0 - ISC
@@ -17567,11 +17863,11 @@
17567
17863
  * See the LICENSE file in the root directory of this source tree.
17568
17864
  */
17569
17865
 
17570
- const __iconNode$l = [["path", {
17866
+ const __iconNode$n = [["path", {
17571
17867
  d: "M20 6 9 17l-5-5",
17572
17868
  key: "1gmf2c"
17573
17869
  }]];
17574
- const Check = createLucideIcon("check", __iconNode$l);
17870
+ const Check = createLucideIcon("check", __iconNode$n);
17575
17871
 
17576
17872
  /**
17577
17873
  * @license lucide-react v0.575.0 - ISC
@@ -17580,11 +17876,11 @@
17580
17876
  * See the LICENSE file in the root directory of this source tree.
17581
17877
  */
17582
17878
 
17583
- const __iconNode$k = [["path", {
17879
+ const __iconNode$m = [["path", {
17584
17880
  d: "m15 18-6-6 6-6",
17585
17881
  key: "1wnfg3"
17586
17882
  }]];
17587
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$k);
17883
+ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$m);
17588
17884
 
17589
17885
  /**
17590
17886
  * @license lucide-react v0.575.0 - ISC
@@ -17593,11 +17889,11 @@
17593
17889
  * See the LICENSE file in the root directory of this source tree.
17594
17890
  */
17595
17891
 
17596
- const __iconNode$j = [["path", {
17892
+ const __iconNode$l = [["path", {
17597
17893
  d: "m9 18 6-6-6-6",
17598
17894
  key: "mthhwq"
17599
17895
  }]];
17600
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$j);
17896
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$l);
17601
17897
 
17602
17898
  /**
17603
17899
  * @license lucide-react v0.575.0 - ISC
@@ -17606,7 +17902,7 @@
17606
17902
  * See the LICENSE file in the root directory of this source tree.
17607
17903
  */
17608
17904
 
17609
- const __iconNode$i = [["circle", {
17905
+ const __iconNode$k = [["circle", {
17610
17906
  cx: "12",
17611
17907
  cy: "12",
17612
17908
  r: "10",
@@ -17624,7 +17920,7 @@
17624
17920
  y2: "16",
17625
17921
  key: "4dfq90"
17626
17922
  }]];
17627
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$i);
17923
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$k);
17628
17924
 
17629
17925
  /**
17630
17926
  * @license lucide-react v0.575.0 - ISC
@@ -17633,7 +17929,25 @@
17633
17929
  * See the LICENSE file in the root directory of this source tree.
17634
17930
  */
17635
17931
 
17636
- const __iconNode$h = [["rect", {
17932
+ const __iconNode$j = [["circle", {
17933
+ cx: "12",
17934
+ cy: "12",
17935
+ r: "10",
17936
+ key: "1mglay"
17937
+ }], ["path", {
17938
+ d: "m9 12 2 2 4-4",
17939
+ key: "dzmm74"
17940
+ }]];
17941
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$j);
17942
+
17943
+ /**
17944
+ * @license lucide-react v0.575.0 - ISC
17945
+ *
17946
+ * This source code is licensed under the ISC license.
17947
+ * See the LICENSE file in the root directory of this source tree.
17948
+ */
17949
+
17950
+ const __iconNode$i = [["rect", {
17637
17951
  width: "14",
17638
17952
  height: "14",
17639
17953
  x: "8",
@@ -17645,7 +17959,7 @@
17645
17959
  d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",
17646
17960
  key: "zix9uf"
17647
17961
  }]];
17648
- const Copy = createLucideIcon("copy", __iconNode$h);
17962
+ const Copy = createLucideIcon("copy", __iconNode$i);
17649
17963
 
17650
17964
  /**
17651
17965
  * @license lucide-react v0.575.0 - ISC
@@ -17654,7 +17968,7 @@
17654
17968
  * See the LICENSE file in the root directory of this source tree.
17655
17969
  */
17656
17970
 
17657
- const __iconNode$g = [["circle", {
17971
+ const __iconNode$h = [["circle", {
17658
17972
  cx: "12",
17659
17973
  cy: "12",
17660
17974
  r: "1",
@@ -17670,7 +17984,7 @@
17670
17984
  r: "1",
17671
17985
  key: "1pcz8c"
17672
17986
  }]];
17673
- const Ellipsis = createLucideIcon("ellipsis", __iconNode$g);
17987
+ const Ellipsis = createLucideIcon("ellipsis", __iconNode$h);
17674
17988
 
17675
17989
  /**
17676
17990
  * @license lucide-react v0.575.0 - ISC
@@ -17679,7 +17993,7 @@
17679
17993
  * See the LICENSE file in the root directory of this source tree.
17680
17994
  */
17681
17995
 
17682
- const __iconNode$f = [["path", {
17996
+ const __iconNode$g = [["path", {
17683
17997
  d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
17684
17998
  key: "1oefj6"
17685
17999
  }], ["path", {
@@ -17695,7 +18009,7 @@
17695
18009
  d: "M16 17H8",
17696
18010
  key: "z1uh3a"
17697
18011
  }]];
17698
- const FileText = createLucideIcon("file-text", __iconNode$f);
18012
+ const FileText = createLucideIcon("file-text", __iconNode$g);
17699
18013
 
17700
18014
  /**
17701
18015
  * @license lucide-react v0.575.0 - ISC
@@ -17704,11 +18018,11 @@
17704
18018
  * See the LICENSE file in the root directory of this source tree.
17705
18019
  */
17706
18020
 
17707
- const __iconNode$e = [["path", {
18021
+ const __iconNode$f = [["path", {
17708
18022
  d: "M21 12a9 9 0 1 1-6.219-8.56",
17709
18023
  key: "13zald"
17710
18024
  }]];
17711
- const LoaderCircle = createLucideIcon("loader-circle", __iconNode$e);
18025
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$f);
17712
18026
 
17713
18027
  /**
17714
18028
  * @license lucide-react v0.575.0 - ISC
@@ -17717,11 +18031,30 @@
17717
18031
  * See the LICENSE file in the root directory of this source tree.
17718
18032
  */
17719
18033
 
17720
- const __iconNode$d = [["path", {
18034
+ const __iconNode$e = [["path", {
17721
18035
  d: "M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",
17722
18036
  key: "1sd12s"
17723
18037
  }]];
17724
- const MessageCircle = createLucideIcon("message-circle", __iconNode$d);
18038
+ const MessageCircle = createLucideIcon("message-circle", __iconNode$e);
18039
+
18040
+ /**
18041
+ * @license lucide-react v0.575.0 - ISC
18042
+ *
18043
+ * This source code is licensed under the ISC license.
18044
+ * See the LICENSE file in the root directory of this source tree.
18045
+ */
18046
+
18047
+ const __iconNode$d = [["path", {
18048
+ d: "M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",
18049
+ key: "18887p"
18050
+ }], ["path", {
18051
+ d: "m14.5 8.5-5 5",
18052
+ key: "19tnj2"
18053
+ }], ["path", {
18054
+ d: "m9.5 8.5 5 5",
18055
+ key: "1oa8ql"
18056
+ }]];
18057
+ const MessageSquareX = createLucideIcon("message-square-x", __iconNode$d);
17725
18058
 
17726
18059
  /**
17727
18060
  * @license lucide-react v0.575.0 - ISC
@@ -22514,6 +22847,9 @@
22514
22847
  officeHours = null,
22515
22848
  onRefreshChat,
22516
22849
  onCopyChat,
22850
+ // EV-5040: End chat opens the end-of-chat survey without closing the
22851
+ // widget. Shown only when given (the survey is on and there is a chat).
22852
+ onEndChat,
22517
22853
  defaultLanguage = "en",
22518
22854
  // EV-4956: the team owns the conversation. The subtitle then says so, so
22519
22855
  // the header no longer looks exactly as it did while the AI was answering.
@@ -22771,7 +23107,26 @@
22771
23107
  }) : /*#__PURE__*/jsxRuntimeExports.jsx(Moon, {
22772
23108
  className: "w-3.5 h-3.5 flex-shrink-0"
22773
23109
  }), isDark ? t("lightMode") : t("nightMode")]
22774
- })]
23110
+ }), onEndChat ? /*#__PURE__*/jsxRuntimeExports.jsxs("button", {
23111
+ role: "menuitem",
23112
+ onClick: () => {
23113
+ setShowMenu(false);
23114
+ onEndChat();
23115
+ },
23116
+ className: `flex items-center gap-2.5 w-full px-3 py-2 text-sm leading-5 transition-colors cursor-pointer ${isDark ? "text-gray-200 hover:bg-gray-700" : "text-gray-700 hover:bg-gray-50"}`,
23117
+ style: {
23118
+ fontFamily: resolvedHeaderFontFamily,
23119
+ fontSize: "14px",
23120
+ border: "none",
23121
+ background: "transparent",
23122
+ appearance: "none",
23123
+ WebkitAppearance: "none",
23124
+ textAlign: isRtl ? "right" : "left"
23125
+ },
23126
+ children: [/*#__PURE__*/jsxRuntimeExports.jsx(MessageSquareX, {
23127
+ className: "w-3.5 h-3.5 flex-shrink-0"
23128
+ }), t("endChat")]
23129
+ }) : null]
22775
23130
  })]
22776
23131
  }), /*#__PURE__*/jsxRuntimeExports.jsx("button", {
22777
23132
  type: "button",
@@ -23641,191 +23996,192 @@
23641
23996
  }, [containerRef, enabled, threshold, behavior, delay, ...dependencies]);
23642
23997
  }
23643
23998
 
23644
- const EMOJI_RATINGS = [{
23645
- value: "😡",
23646
- label: "😡",
23647
- bg: "bg-red-200"
23648
- }, {
23649
- value: "😕",
23650
- label: "😕",
23651
- bg: "bg-orange-200"
23652
- }, {
23653
- value: "😐",
23654
- label: "😐",
23655
- bg: "bg-yellow-200"
23656
- }, {
23657
- value: "😊",
23658
- label: "😊",
23659
- bg: "bg-green-200"
23660
- }, {
23661
- value: "😍",
23662
- label: "😍",
23663
- bg: "bg-pink-200"
23664
- }];
23665
- const THUMBS_RATINGS = [{
23999
+ const normalizeCsatFormat = format => {
24000
+ const raw = (format || "EMOJI").toString().trim().toUpperCase();
24001
+ if (raw === "THUMBS" || raw === "THUMB") return "THUMBS";
24002
+ if (raw === "STARS" || raw === "STAR") return "STARS";
24003
+ if (raw === "NUMERIC" || raw === "NUMBER") return "NUMERIC";
24004
+ return "EMOJI";
24005
+ };
24006
+ const SCALE = ["1", "2", "3", "4", "5"];
24007
+ // Same faces in the same order as EV-3616 settled on.
24008
+ const EMOJI_FACES = ["😡", "😕", "😐", "😊", "😍"];
24009
+ const THUMBS = [{
23666
24010
  value: "positive",
23667
- label: "👍"
24011
+ glyph: "👍",
24012
+ labelKey: "thumbsUp"
23668
24013
  }, {
23669
24014
  value: "negative",
23670
- label: "👎"
23671
- }];
23672
- const NUMERIC_RATINGS = [{
23673
- value: "1",
23674
- label: "1"
23675
- }, {
23676
- value: "2",
23677
- label: "2"
23678
- }, {
23679
- value: "3",
23680
- label: "3"
23681
- }, {
23682
- value: "4",
23683
- label: "4"
23684
- }, {
23685
- value: "5",
23686
- label: "5"
23687
- }];
23688
- const STARS_RATINGS = [{
23689
- value: "1",
23690
- label: "⭐"
23691
- }, {
23692
- value: "2",
23693
- label: "⭐"
23694
- }, {
23695
- value: "3",
23696
- label: "⭐"
23697
- }, {
23698
- value: "4",
23699
- label: "⭐"
23700
- }, {
23701
- value: "5",
23702
- label: "⭐"
24015
+ glyph: "👎",
24016
+ labelKey: "thumbsDown"
23703
24017
  }];
24018
+ const FOCUS_RING = "focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-700";
24019
+ const DISABLED = "disabled:opacity-50 disabled:cursor-not-allowed";
23704
24020
  const CSATWidget = ({
23705
24021
  format = "EMOJI",
23706
- prompt = "How was your experience?",
23707
- onRating,
23708
- disabled = false,
24022
+ prompt,
24023
+ // EV-4968: a short line above the question (why it appeared).
24024
+ note,
24025
+ // (rating, format, feedback) => Promise<boolean>: true once stored.
24026
+ onSubmit,
24027
+ // EV-4968 / EV-5040: show the thank-you instead of the form.
24028
+ submitted = false,
24029
+ // Renders "Back to chat" when given (the end-of-chat survey).
24030
+ onBack,
23709
24031
  isDark = false,
23710
24032
  primaryColor = "#2563eb",
23711
- defaultLanguage = "en"
24033
+ defaultLanguage = "en",
24034
+ id = "csat"
23712
24035
  }) => {
23713
24036
  const t = reactExports.useMemo(() => createTranslator(defaultLanguage), [defaultLanguage]);
23714
- const [selectedRating, setSelectedRating] = reactExports.useState(null);
23715
- const [hoveredStar, setHoveredStar] = reactExports.useState(null);
23716
- const [isSubmitting, setIsSubmitting] = reactExports.useState(false);
23717
- const getRatings = () => {
23718
- switch (format) {
23719
- case "THUMBS":
23720
- return THUMBS_RATINGS;
23721
- case "NUMERIC":
23722
- return NUMERIC_RATINGS;
23723
- case "STARS":
23724
- return STARS_RATINGS;
23725
- case "EMOJI":
23726
- default:
23727
- return EMOJI_RATINGS;
24037
+ const kind = normalizeCsatFormat(format);
24038
+ const [rating, setRating] = reactExports.useState(null);
24039
+ const [hovered, setHovered] = reactExports.useState(null);
24040
+ const [feedback, setFeedback] = reactExports.useState("");
24041
+ const [status, setStatus] = reactExports.useState("idle");
24042
+ const submitting = status === "submitting";
24043
+ const hintId = `${id}-rating-hint`;
24044
+ const cardClass = cn("w-full rounded-3xl p-6 shadow-lg [font-family:inherit]", isDark ? "bg-gray-800 shadow-black/20" : "bg-white shadow-gray-200/80");
24045
+ if (submitted) {
24046
+ return /*#__PURE__*/jsxRuntimeExports.jsx("div", {
24047
+ className: cardClass,
24048
+ role: "status",
24049
+ "data-testid": "csat-thanks",
24050
+ children: /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
24051
+ className: "flex flex-col items-center gap-2 text-center",
24052
+ children: [/*#__PURE__*/jsxRuntimeExports.jsx(CircleCheck, {
24053
+ className: "w-8 h-8",
24054
+ style: {
24055
+ color: primaryColor
24056
+ },
24057
+ "aria-hidden": "true"
24058
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("p", {
24059
+ className: cn("text-sm font-medium", isDark ? "text-gray-200" : "text-gray-700"),
24060
+ children: t("surveyThanks")
24061
+ })]
24062
+ })
24063
+ });
24064
+ }
24065
+ const handleSubmit = async () => {
24066
+ if (!rating || submitting) return;
24067
+ setStatus("submitting");
24068
+ let ok = false;
24069
+ try {
24070
+ ok = Boolean(await onSubmit?.(rating, kind, feedback.trim()));
24071
+ } catch {
24072
+ ok = false;
23728
24073
  }
24074
+ setStatus(ok ? "idle" : "failed");
23729
24075
  };
23730
- const handleRating = async value => {
23731
- if (disabled || isSubmitting) return;
23732
- setSelectedRating(value);
23733
- setIsSubmitting(true);
23734
- try {
23735
- if (onRating) {
23736
- onRating(value, format);
23737
- }
23738
- } finally {
23739
- setIsSubmitting(false);
24076
+ const optionProps = (value, label) => ({
24077
+ type: "button",
24078
+ "aria-label": label,
24079
+ "aria-pressed": rating === value,
24080
+ onClick: () => setRating(value),
24081
+ disabled: submitting
24082
+ });
24083
+ const renderScale = () => {
24084
+ if (kind === "THUMBS") {
24085
+ return THUMBS.map(item => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
24086
+ ...optionProps(item.value, t(item.labelKey)),
24087
+ className: cn("w-12 h-12 rounded-xl border flex items-center justify-center text-2xl transition-all hover:scale-105 active:scale-95", FOCUS_RING, DISABLED, rating === item.value ? "ring-2 ring-blue-300 scale-110 shadow-lg" : "", isDark ? "bg-gray-700 border-gray-600 hover:bg-gray-600" : "bg-white border-gray-200 hover:bg-gray-50"),
24088
+ children: /*#__PURE__*/jsxRuntimeExports.jsx("span", {
24089
+ className: "drop-shadow-md",
24090
+ "aria-hidden": "true",
24091
+ children: item.glyph
24092
+ })
24093
+ }, item.value));
23740
24094
  }
24095
+ if (kind === "NUMERIC") {
24096
+ return SCALE.map(value => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
24097
+ ...optionProps(value, `${t("rate")} ${value}`),
24098
+ className: cn("w-10 h-10 rounded-lg flex items-center justify-center text-sm font-semibold transition-all hover:scale-105 active:scale-95", FOCUS_RING, DISABLED, rating === value ? "ring-2 ring-primary/40 scale-110 shadow-md text-white" : isDark ? "bg-gray-700 border border-gray-600 text-gray-300 hover:bg-gray-600" : "bg-white border border-gray-200 text-gray-700 hover:bg-gray-50"),
24099
+ style: rating === value ? {
24100
+ backgroundColor: primaryColor,
24101
+ borderColor: primaryColor
24102
+ } : undefined,
24103
+ children: value
24104
+ }, value));
24105
+ }
24106
+ if (kind === "STARS") {
24107
+ const lit = Number(hovered || rating || 0);
24108
+ return SCALE.map(value => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
24109
+ ...optionProps(value, `${t("rate")} ${value}`),
24110
+ onMouseEnter: () => setHovered(value),
24111
+ className: cn("rounded-md transition-all duration-150 hover:scale-110 active:scale-95 bg-transparent border-0 p-0 cursor-pointer", FOCUS_RING, DISABLED),
24112
+ children: /*#__PURE__*/jsxRuntimeExports.jsx(Star, {
24113
+ "aria-hidden": "true",
24114
+ className: cn("w-8 h-8 transition-colors", Number(value) <= lit ? "text-yellow-400 drop-shadow-sm" : isDark ? "text-gray-600" : "text-gray-300"),
24115
+ fill: Number(value) <= lit ? "#FBBF24" : "none"
24116
+ })
24117
+ }, value));
24118
+ }
24119
+ return SCALE.map((value, index) => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
24120
+ ...optionProps(value, `${t("rate")} ${value}`),
24121
+ className: cn("rounded-full w-10 h-10 flex items-center justify-center text-xl transition-all hover:scale-110 active:scale-95 bg-transparent border-0 p-0 cursor-pointer", FOCUS_RING, DISABLED, rating === value ? "ring-2 ring-blue-100 scale-125 bg-gradient-to-b from-yellow-200 to-yellow-400 shadow-md" : "grayscale-[0.3] opacity-80 hover:grayscale-0"),
24122
+ children: /*#__PURE__*/jsxRuntimeExports.jsx("span", {
24123
+ "aria-hidden": "true",
24124
+ className: "drop-shadow-sm",
24125
+ children: EMOJI_FACES[index]
24126
+ })
24127
+ }, value));
23741
24128
  };
23742
- const ratings = getRatings();
23743
24129
  return /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
23744
- className: cn("transition-all duration-200 rounded-xl px-4", isDark ? "bg-slate-800/50" : "bg-slate-50/50"),
23745
- children: [/*#__PURE__*/jsxRuntimeExports.jsx("p", {
23746
- className: cn("text-sm font-semibold text-center mb-3", isDark ? "text-gray-300" : "text-gray-500/80"),
23747
- children: prompt
24130
+ className: cardClass,
24131
+ "data-testid": "csat-survey",
24132
+ children: [note ? /*#__PURE__*/jsxRuntimeExports.jsx("p", {
24133
+ "data-testid": "csat-note",
24134
+ className: cn("text-xs text-center mb-2", isDark ? "text-gray-400" : "text-gray-500"),
24135
+ children: note
24136
+ }) : null, /*#__PURE__*/jsxRuntimeExports.jsx("p", {
24137
+ className: cn("text-sm font-medium text-center mb-5", isDark ? "text-gray-300" : "text-gray-500"),
24138
+ children: prompt || t("howWasYourExperience")
24139
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("div", {
24140
+ className: "flex gap-2 justify-center items-center mb-5",
24141
+ role: "group",
24142
+ "aria-label": t("rateExperience"),
24143
+ onMouseLeave: kind === "STARS" ? () => setHovered(null) : undefined,
24144
+ children: renderScale()
24145
+ }), /*#__PURE__*/jsxRuntimeExports.jsx("textarea", {
24146
+ "aria-label": t("feedbackPlaceholder"),
24147
+ value: feedback,
24148
+ onChange: e => setFeedback(e.target.value.slice(0, 1000)),
24149
+ maxLength: 1000,
24150
+ placeholder: t("feedbackPlaceholder"),
24151
+ rows: 4,
24152
+ disabled: submitting,
24153
+ className: cn("w-full rounded-xl border px-4 py-3 text-sm [font-family:inherit] resize-none outline-none transition-colors mb-5", isDark ? "bg-gray-700 border-gray-600 text-gray-100 placeholder-gray-400" : "bg-gray-50 border-gray-200 text-gray-900 placeholder-gray-400")
23748
24154
  }), /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
23749
- className: "flex justify-center items-center",
23750
- children: [format === "EMOJI" && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
23751
- className: "flex gap-2 justify-center items-center",
23752
- children: ratings.map(rating => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
23753
- onClick: () => handleRating(rating.value),
23754
- disabled: disabled || isSubmitting,
23755
- className: cn("flex items-center justify-center text-2xl transition-transform", "bg-transparent border-0 p-0 cursor-pointer", "hover:scale-110 active:scale-95 disabled:opacity-50 disabled:cursor-not-allowed", "focus:outline-none focus:ring-0",
23756
- // EV-4798 (MERN-21): keyboard focus stays visible; the
23757
- // mouse-focus reset above is unchanged.
23758
- "rounded-md focus-visible:ring-2 focus-visible:ring-blue-700", selectedRating === rating.value ? "" : "opacity-80"),
23759
- children: /*#__PURE__*/jsxRuntimeExports.jsx("span", {
23760
- role: "img",
23761
- "aria-label": `${t("rate")} ${rating.value}`,
23762
- children: rating.label
23763
- })
23764
- }, rating.value))
23765
- }), format === "THUMBS" && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
23766
- className: "flex gap-6 justify-center items-center",
23767
- role: "group",
23768
- "aria-label": t("rateExperience"),
23769
- children: ratings.map(rating => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
23770
- "aria-label": rating.value === 1 ? t("thumbsUp") : t("thumbsDown"),
23771
- onClick: () => handleRating(rating.value),
23772
- disabled: disabled || isSubmitting,
23773
- className: cn("w-10 h-10 rounded-xl border flex items-center justify-center shadow-md text-2xl transition-all", "hover:scale-105 active:scale-95 disabled:opacity-50 disabled:cursor-not-allowed", "drop-shadow-md", isDark ? "bg-gray-700 border-gray-600 hover:bg-gray-600" : "bg-white border-gray-100 hover:bg-gray-50", selectedRating === rating.value && "ring-2 ring-primary/40 scale-110"),
23774
- style: {
23775
- borderColor: selectedRating === rating.value ? primaryColor : undefined
23776
- },
23777
- children: /*#__PURE__*/jsxRuntimeExports.jsx("span", {
23778
- className: "drop-shadow-md",
23779
- "aria-hidden": "true",
23780
- children: rating.label
23781
- })
23782
- }, rating.value))
23783
- }), format === "NUMERIC" && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
23784
- className: "flex gap-2 justify-center items-center",
23785
- role: "group",
23786
- "aria-label": t("rateExperience"),
23787
- children: ratings.map(rating => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
23788
- "aria-label": `${t("rate")} ${rating.value}`,
23789
- onClick: () => handleRating(rating.value),
23790
- disabled: disabled || isSubmitting,
23791
- className: cn("w-10 h-10 rounded-lg flex items-center justify-center text-sm font-semibold transition-all", "hover:scale-105 active:scale-95 disabled:opacity-50 disabled:cursor-not-allowed", selectedRating === rating.value ? "ring-2 ring-primary/40 scale-110 shadow-md text-white" : isDark ? "bg-gray-700 border border-gray-600 text-gray-300 hover:bg-gray-600" : "bg-white border border-gray-200 text-gray-700 hover:bg-gray-50"),
23792
- style: {
23793
- backgroundColor: selectedRating === rating.value ? primaryColor : undefined,
23794
- borderColor: selectedRating === rating.value ? primaryColor : undefined
23795
- },
23796
- children: rating.label
23797
- }, rating.value))
23798
- }), format === "STARS" && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
23799
- className: "flex gap-2 justify-center items-center",
23800
- onMouseLeave: () => setHoveredStar(null),
23801
- children: ratings.map(rating => {
23802
- const isHovered = hoveredStar === rating.value;
23803
- return /*#__PURE__*/jsxRuntimeExports.jsx("button", {
23804
- onClick: () => handleRating(rating.value),
23805
- onMouseEnter: () => setHoveredStar(rating.value),
23806
- disabled: disabled || isSubmitting,
23807
- className: cn("flex items-center justify-center text-2xl", "bg-transparent border-0 p-0 cursor-pointer focus:outline-none",
23808
- // EV-4798 (MERN-21): visible keyboard focus.
23809
- "rounded-md focus-visible:ring-2 focus-visible:ring-blue-700", "disabled:opacity-50 disabled:cursor-not-allowed"),
23810
- style: {
23811
- transform: isHovered ? "scale(1.25)" : "scale(1)",
23812
- filter: isHovered ? "brightness(1.1) drop-shadow(0 2px 4px rgba(0,0,0,0.15))" : "none",
23813
- opacity: isHovered ? 1 : 0.6,
23814
- transition: "all 0.2s ease"
23815
- },
23816
- "aria-label": `${t("rate")} ${rating.value}`,
23817
- children: /*#__PURE__*/jsxRuntimeExports.jsx("span", {
23818
- "aria-hidden": "true",
23819
- children: rating.label
23820
- })
23821
- }, rating.value);
23822
- })
24155
+ className: "relative group",
24156
+ children: [/*#__PURE__*/jsxRuntimeExports.jsx("button", {
24157
+ type: "button",
24158
+ onClick: handleSubmit,
24159
+ disabled: !rating || submitting,
24160
+ "aria-describedby": !rating ? hintId : undefined,
24161
+ className: cn("w-full py-3.5 rounded-xl text-sm font-semibold [font-family:inherit] transition-all duration-200 border-none outline-none focus:outline-none active:outline-none focus:ring-0 active:ring-0", DISABLED,
24162
+ // EV-4798 (MERN-21): keyboard focus stays visible.
24163
+ "focus-visible:ring-2 focus-visible:ring-blue-700", isDark ? "bg-gray-700 text-gray-100 hover:bg-gray-600" : "bg-gray-100 text-gray-700 hover:bg-gray-200"),
24164
+ children: submitting ? t("submitting") : t("submitFeedback")
24165
+ }), !rating && !submitting && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
24166
+ id: hintId,
24167
+ role: "tooltip",
24168
+ className: "absolute -top-8 left-1/2 -translate-x-1/2 whitespace-nowrap px-2 py-1 rounded-md text-xs bg-gray-800 text-white opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none",
24169
+ children: t("selectRatingFirst")
23823
24170
  })]
23824
- }), isSubmitting && /*#__PURE__*/jsxRuntimeExports.jsx("p", {
23825
- "aria-live": "polite",
23826
- className: cn("text-xs mt-3 text-center", isDark ? "text-slate-400" : "text-slate-500"),
23827
- children: t("submittingFeedback")
23828
- })]
24171
+ }), status === "failed" && /*#__PURE__*/jsxRuntimeExports.jsx("p", {
24172
+ role: "alert",
24173
+ className: cn("mt-3 text-center text-sm", isDark ? "text-red-300" : "text-red-700"),
24174
+ children: t("feedbackSendFailed")
24175
+ }), onBack ? /*#__PURE__*/jsxRuntimeExports.jsx("div", {
24176
+ className: "mt-3 text-center",
24177
+ children: /*#__PURE__*/jsxRuntimeExports.jsx("button", {
24178
+ type: "button",
24179
+ onClick: onBack,
24180
+ disabled: submitting,
24181
+ className: cn("text-sm underline bg-transparent border-none [font-family:inherit] rounded-md", FOCUS_RING, DISABLED, isDark ? "text-gray-200" : "text-gray-700"),
24182
+ children: t("backToChat")
24183
+ })
24184
+ }) : null]
23829
24185
  });
23830
24186
  };
23831
24187
 
@@ -24009,13 +24365,10 @@
24009
24365
  hour12: true
24010
24366
  }).replace(/am|pm/i, match => match.toUpperCase());
24011
24367
  };
24012
- const normalizeCsatFormat = format => {
24013
- const raw = (format || "EMOJI").toString().trim().toUpperCase();
24014
- if (raw === "THUMBS" || raw === "THUMB") return "THUMBS";
24015
- if (raw === "STARS" || raw === "STAR") return "STARS";
24016
- if (raw === "NUMERIC" || raw === "NUMBER") return "NUMERIC";
24017
- return "EMOJI";
24018
- };
24368
+
24369
+ // EV-4968 / EV-5040: how long the end-of-chat survey's thank-you shows before
24370
+ // the next chat starts (and, when it opened from X, the widget closes).
24371
+ const SURVEY_THANKS_MS = 2000;
24019
24372
  const ChatWindow = ({
24020
24373
  isOpen,
24021
24374
  isMinimized,
@@ -24098,7 +24451,8 @@
24098
24451
  // CSAT configuration
24099
24452
  csatEnabled = false,
24100
24453
  csatFormat = "EMOJI",
24101
- csatPrompt = "How was your experience?",
24454
+ // EV-4968: blank means the translated default question.
24455
+ csatPrompt = "",
24102
24456
  // A rating an agent asked for from the Inbox: { format, prompt } or null.
24103
24457
  // Shown whether or not the automatic survey (csatEnabled) is on.
24104
24458
  csatRequest = null,
@@ -24327,13 +24681,16 @@
24327
24681
  }
24328
24682
  });
24329
24683
 
24330
- // Resolve / Feedback state
24684
+ // Resolve / Feedback state. The rating and comment live in CSATWidget.
24331
24685
  const [showResolveForm, setShowResolveForm] = reactExports.useState(false);
24332
24686
  const [isConversationResolved, setIsConversationResolved] = reactExports.useState(false);
24333
- const [resolveRating, setResolveRating] = reactExports.useState(0);
24334
- const [resolveFeedbackText, setResolveFeedbackText] = reactExports.useState("");
24335
- const [isSubmittingResolve, setIsSubmittingResolve] = reactExports.useState(false);
24336
- const [resolveSubmitFailed, setResolveSubmitFailed] = reactExports.useState(false);
24687
+ // EV-4968 / EV-5040: which survey shows its thank-you ("inline": a rating
24688
+ // an agent asked for; "takeover": the end-of-chat survey), the timer that
24689
+ // then starts the next chat, and whether that also closes the widget
24690
+ // (opened from X) or not (opened from End chat).
24691
+ const [surveyThanks, setSurveyThanks] = reactExports.useState(null);
24692
+ const surveyDoneTimerRef = reactExports.useRef(null);
24693
+ const surveyClosesWidgetRef = reactExports.useRef(true);
24337
24694
 
24338
24695
  // EV-4826: this component stays mounted while the widget is closed
24339
24696
  // (it renders null), so the feedback form used to survive a close and
@@ -24342,16 +24699,15 @@
24342
24699
  reactExports.useEffect(() => {
24343
24700
  if (isOpen) return;
24344
24701
  setShowResolveForm(false);
24345
- setResolveRating(0);
24346
- setResolveFeedbackText("");
24347
- setResolveSubmitFailed(false);
24348
24702
  }, [isOpen]);
24349
24703
  reactExports.useEffect(() => {
24350
24704
  setShowResolveForm(false);
24351
- setResolveRating(0);
24352
- setResolveFeedbackText("");
24353
- setResolveSubmitFailed(false);
24705
+ // EV-5040: a new conversation drops any thank-you and its pending timer.
24706
+ clearTimeout(surveyDoneTimerRef.current);
24707
+ surveyDoneTimerRef.current = null;
24708
+ setSurveyThanks(null);
24354
24709
  }, [conversationId]);
24710
+ reactExports.useEffect(() => () => clearTimeout(surveyDoneTimerRef.current), []);
24355
24711
 
24356
24712
  // Sync csatSubmitted from session whenever the conversation changes
24357
24713
  reactExports.useEffect(() => {
@@ -24503,18 +24859,21 @@
24503
24859
  const hasOnboardingQuestions = onboardingQuestions && onboardingQuestions.length > 0;
24504
24860
  const isCsatEnabled = Boolean(csatEnabled);
24505
24861
  const shouldHideResolveForOnboarding = onboardingEnabled && hasOnboardingQuestions && !onboardingCompleted;
24506
- const handleCsatRating = async (rating, format) => {
24507
- setCsatSubmitted(true); // optimistic UI
24508
- setShowCsat(false);
24509
- markCsatSubmitted(organizationId); // persist so page refresh doesn't re-show CSAT
24510
24862
 
24863
+ // EV-4968: one question and one fallback for every survey trigger. A blank
24864
+ // configured question reads the translated default on both paths.
24865
+ const endSurveyPrompt = (csatPrompt || "").trim() || t("howWasYourExperience");
24866
+ const requestedSurveyPrompt = (csatRequest?.prompt || "").trim() || endSurveyPrompt;
24867
+
24868
+ // EV-4968: the one POST every survey sends. Resolves true once stored.
24869
+ const postSurvey = reactExports.useCallback(async (rating, format, feedback) => {
24511
24870
  try {
24512
24871
  const headers = {
24513
24872
  "Content-Type": "application/json"
24514
24873
  };
24515
- if (typeof getAuthToken === 'function') {
24874
+ if (typeof getAuthToken === "function") {
24516
24875
  const token = await getAuthToken();
24517
- if (token) headers['Authorization'] = `Bearer ${token}`;
24876
+ if (token) headers["Authorization"] = `Bearer ${token}`;
24518
24877
  }
24519
24878
  const response = await fetch(`${apiBaseUrl.replace(/\/$/, "")}/api/v1/support/csat`, {
24520
24879
  method: "POST",
@@ -24522,84 +24881,98 @@
24522
24881
  credentials: "include",
24523
24882
  body: JSON.stringify({
24524
24883
  conversationId,
24525
- rating,
24884
+ rating: String(rating),
24526
24885
  ratingFormat: format,
24527
- conciergeId
24886
+ conciergeId,
24887
+ feedback: feedback || undefined
24528
24888
  })
24529
24889
  });
24530
24890
  if (!response.ok) {
24531
24891
  console.error("CSAT submission failed:", await response.text());
24892
+ return false;
24532
24893
  }
24533
-
24534
- // Session continues after CSAT submission - no reset
24894
+ return true;
24535
24895
  } catch (error) {
24536
24896
  console.error("CSAT submission error:", error);
24897
+ return false;
24537
24898
  }
24538
- };
24539
-
24540
- // Handle Resolve feedback submission
24541
- const handleResolveSubmission = reactExports.useCallback(async () => {
24542
- if (!isCsatEnabled) return;
24543
- if (isSubmittingResolve || isConversationResolved) return;
24544
- if (resolveRating === 0) return;
24545
- setIsSubmittingResolve(true);
24546
- setResolveSubmitFailed(false);
24547
- try {
24548
- const headers = {
24549
- "Content-Type": "application/json"
24550
- };
24551
- if (typeof getAuthToken === 'function') {
24552
- const token = await getAuthToken();
24553
- if (token) headers['Authorization'] = `Bearer ${token}`;
24554
- }
24555
- const ratingFormat = normalizeCsatFormat(csatFormat);
24556
- const response = await fetch(`${apiBaseUrl.replace(/\/$/, "")}/api/v1/support/csat`, {
24557
- method: "POST",
24558
- headers,
24559
- credentials: "include",
24560
- body: JSON.stringify({
24561
- conversationId,
24562
- rating: String(resolveRating),
24563
- ratingFormat,
24564
- conciergeId,
24565
- feedback: resolveFeedbackText || undefined
24566
- })
24899
+ }, [apiBaseUrl, getAuthToken, conversationId, conciergeId]);
24900
+
24901
+ // A rating an agent asked for: stored, thanked, and the chat goes on.
24902
+ const handleRequestedSurveySubmit = reactExports.useCallback(async (rating, format, feedback) => {
24903
+ const ok = await postSurvey(rating, format, feedback);
24904
+ if (ok) {
24905
+ setCsatSubmitted(true);
24906
+ setShowCsat(false);
24907
+ markCsatSubmitted(organizationId); // persist so page refresh doesn't re-show CSAT
24908
+ setSurveyThanks("inline");
24909
+ }
24910
+ return ok;
24911
+ }, [postSurvey, organizationId]);
24912
+
24913
+ // EV-901: after the end-of-chat survey, start over exactly as the kebab
24914
+ // "Refresh Chat" does (same entry point, widgetFilter cleared explicitly),
24915
+ // but keep the visitor (EV-5040) so onboarding is not asked again.
24916
+ const finishEndSurvey = reactExports.useCallback(({
24917
+ close
24918
+ } = {}) => {
24919
+ clearTimeout(surveyDoneTimerRef.current);
24920
+ surveyDoneTimerRef.current = null;
24921
+ setSurveyThanks(null);
24922
+ setShowResolveForm(false);
24923
+ if (onWidgetFilterChange) {
24924
+ onWidgetFilterChange(null);
24925
+ }
24926
+ if (onRefreshChat) {
24927
+ onRefreshChat({
24928
+ keepVisitor: true
24929
+ });
24930
+ } else if (onResetConversation) {
24931
+ onResetConversation({
24932
+ keepVisitor: true
24567
24933
  });
24568
- if (response.ok) {
24569
- // EV-901: do exactly what the kebab-menu "Refresh Chat" does.
24570
- // We route through onRefreshChat (same entry point the kebab
24571
- // menu uses) instead of onResetConversation so any change to
24572
- // the Refresh path automatically applies here too. We ALSO
24573
- // explicitly clear widgetFilter via onWidgetFilterChange(null):
24574
- // resetConversation calls setWidgetFilter(null) internally, but
24575
- // doing it here too pins down a reported bug where the post-
24576
- // resolve render kept the previous category set (showing the
24577
- // top CategoryTabsBar instead of the inline topic chips).
24578
- setShowResolveForm(false);
24579
- setResolveRating(0);
24580
- setResolveFeedbackText("");
24581
- if (onWidgetFilterChange) {
24582
- onWidgetFilterChange(null);
24583
- }
24584
- if (onRefreshChat) {
24585
- onRefreshChat();
24586
- } else if (onResetConversation) {
24587
- onResetConversation();
24588
- }
24589
- } else {
24590
- console.error("Failed to submit resolve feedback:", await response.text());
24591
- setResolveSubmitFailed(true);
24592
- }
24593
- } catch (error) {
24594
- console.error("Error submitting resolve feedback:", error);
24595
- setResolveSubmitFailed(true);
24596
- } finally {
24597
- setIsSubmittingResolve(false);
24598
24934
  }
24599
- }, [isCsatEnabled, isSubmittingResolve, isConversationResolved, resolveRating, resolveFeedbackText, conversationId, getAuthToken, conciergeId, apiBaseUrl, csatFormat, onResetConversation, onRefreshChat, onWidgetFilterChange]);
24935
+ if (close ?? surveyClosesWidgetRef.current) onClose?.();
24936
+ }, [onWidgetFilterChange, onRefreshChat, onResetConversation, onClose]);
24937
+
24938
+ // EV-5040: the timer and the close effect call the latest finisher.
24939
+ const finishEndSurveyRef = reactExports.useRef(finishEndSurvey);
24940
+ finishEndSurveyRef.current = finishEndSurvey;
24941
+ // Closing the widget during the thank-you starts the next chat now.
24942
+ reactExports.useEffect(() => {
24943
+ if (!isOpen && surveyDoneTimerRef.current) finishEndSurveyRef.current?.({
24944
+ close: false
24945
+ });
24946
+ }, [isOpen]);
24947
+
24948
+ // EV-4968 / EV-5040: the end-of-chat survey thanks the visitor first, then
24949
+ // starts the next chat after SURVEY_THANKS_MS.
24950
+ const handleEndSurveySubmit = reactExports.useCallback(async (rating, format, feedback) => {
24951
+ if (!isCsatEnabled || isConversationResolved) return false;
24952
+ const ok = await postSurvey(rating, format, feedback);
24953
+ if (ok) {
24954
+ setSurveyThanks("takeover");
24955
+ clearTimeout(surveyDoneTimerRef.current);
24956
+ surveyDoneTimerRef.current = setTimeout(() => finishEndSurveyRef.current?.(), SURVEY_THANKS_MS);
24957
+ }
24958
+ return ok;
24959
+ }, [isCsatEnabled, isConversationResolved, postSurvey]);
24960
+
24961
+ // EV-5040: End chat in the header menu opens the same survey without closing.
24962
+ const handleEndChat = reactExports.useCallback(() => {
24963
+ surveyClosesWidgetRef.current = false;
24964
+ setShowResolveForm(true);
24965
+ }, []);
24600
24966
 
24601
24967
  // Handle X button: first click shows form, second click closes
24602
24968
  const handleCloseClick = reactExports.useCallback(() => {
24969
+ // EV-5040: X on the thank-you finishes now instead of waiting.
24970
+ if (surveyThanks === "takeover") {
24971
+ finishEndSurvey({
24972
+ close: true
24973
+ });
24974
+ return;
24975
+ }
24603
24976
  // No conversation yet (no conversationId or no user messages) → skip the
24604
24977
  // CSAT/resolve form entirely. Rating a never-used widget is nonsensical
24605
24978
  // and the underlying POST /api/v1/support/csat would fail with no
@@ -24607,7 +24980,7 @@
24607
24980
  if (!isCsatEnabled || !conversationId || !hasUserMessages) {
24608
24981
  // CSAT disabled (or no conversation to rate): closing the chat should
24609
24982
  // also clear out the conversation, mirroring the post-CSAT clear in
24610
- // handleResolveSubmission. Without this the X button only hides
24983
+ // finishEndSurvey. Without this the X button only hides
24611
24984
  // the window while the old transcript persists in the session and
24612
24985
  // re-appears on reopen / reload. Route through onRefreshChat (same
24613
24986
  // entry point the kebab "Refresh Chat" uses) so any change to the
@@ -24627,18 +25000,20 @@
24627
25000
  setShowResolveForm(false);
24628
25001
  onClose?.();
24629
25002
  } else if (!isConversationResolved) {
25003
+ surveyClosesWidgetRef.current = true;
24630
25004
  setShowResolveForm(true);
24631
25005
  } else {
24632
25006
  onClose?.();
24633
25007
  }
24634
- }, [isCsatEnabled, conversationId, hasUserMessages, showResolveForm, isConversationResolved, onClose, onWidgetFilterChange, onRefreshChat, onResetConversation]);
25008
+ }, [surveyThanks, finishEndSurvey, isCsatEnabled, conversationId, hasUserMessages, showResolveForm, isConversationResolved, onClose, onWidgetFilterChange, onRefreshChat, onResetConversation]);
25009
+
25010
+ // EV-5040: End chat shows only when there is a chat for the survey to rate.
25011
+ const canEndChat = isCsatEnabled && Boolean(conversationId) && hasUserMessages && !showResolveForm && !isConversationResolved && !isVoiceSessionActive && !shouldHideResolveForOnboarding;
24635
25012
  reactExports.useEffect(() => {
24636
25013
  if (isCsatEnabled) return;
24637
25014
  if (showResolveForm) setShowResolveForm(false);
24638
25015
  if (isConversationResolved) setIsConversationResolved(false);
24639
- if (resolveRating !== 0) setResolveRating(0);
24640
- if (resolveFeedbackText) setResolveFeedbackText("");
24641
- }, [isCsatEnabled, showResolveForm, isConversationResolved, resolveRating, resolveFeedbackText]);
25016
+ }, [isCsatEnabled, showResolveForm, isConversationResolved]);
24642
25017
  const latestPromptSuggestions = reactExports.useMemo(() => {
24643
25018
  if (!messages || !Array.isArray(messages)) return [];
24644
25019
  // Reflect the LATEST assistant message's prompts ONLY - do NOT walk back
@@ -24698,148 +25073,20 @@
24698
25073
  };
24699
25074
  }, [showCsat, csatEnabled, csatSubmitted]);
24700
25075
 
24701
- // Render the dynamic rating input based on csatFormat
24702
- const renderRatingInput = () => {
24703
- const format = normalizeCsatFormat(csatFormat);
24704
- if (format === "STARS") {
24705
- return /*#__PURE__*/jsxRuntimeExports.jsx("div", {
24706
- className: "flex justify-center gap-2 mb-5",
24707
- role: "group",
24708
- "aria-label": t("rateExperience"),
24709
- children: [1, 2, 3, 4, 5].map(star => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
24710
- "aria-label": `${t("rate")} ${star}`,
24711
- onClick: () => setResolveRating(star),
24712
- className: "transition-all duration-150 hover:scale-110 active:scale-95 bg-transparent border-0 p-0 cursor-pointer",
24713
- disabled: isSubmittingResolve,
24714
- children: /*#__PURE__*/jsxRuntimeExports.jsx(Star, {
24715
- className: cn("w-8 h-8 transition-colors", star <= resolveRating ? "text-yellow-400 drop-shadow-sm" : isDark ? "text-gray-600" : "text-gray-300"),
24716
- fill: star <= resolveRating ? "#FBBF24" : "none"
24717
- })
24718
- }, star))
24719
- });
24720
- }
24721
- if (format === "THUMBS") {
24722
- return /*#__PURE__*/jsxRuntimeExports.jsx("div", {
24723
- className: "flex gap-4 justify-center mb-5",
24724
- role: "group",
24725
- "aria-label": t("rateExperience"),
24726
- children: [{
24727
- value: "positive",
24728
- emoji: "👍"
24729
- }, {
24730
- value: "negative",
24731
- emoji: "👎"
24732
- }].map(item => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
24733
- "aria-label": item.value === "positive" ? t("thumbsUp") : t("thumbsDown"),
24734
- onClick: () => setResolveRating(item.value),
24735
- disabled: isSubmittingResolve,
24736
- className: cn("w-12 h-12 rounded-xl border flex items-center justify-center text-2xl transition-all hover:scale-105 active:scale-95", resolveRating === item.value ? "ring-2 ring-blue-300 scale-110 shadow-lg" : "", isDark ? "bg-gray-700 border-gray-600 hover:bg-gray-600" : "bg-white border-gray-200 hover:bg-gray-50"),
24737
- children: /*#__PURE__*/jsxRuntimeExports.jsx("span", {
24738
- className: "drop-shadow-md",
24739
- children: item.emoji
24740
- })
24741
- }, item.value))
24742
- });
24743
- }
24744
-
24745
- // Default: Emoji format. Same faces as CSATWidget's EMOJI_RATINGS.
24746
- // The two ladders had drifted (this one showed 😐 at position 2 and 🙂/😀
24747
- // at 3/4), so the same face meant a different value depending on which
24748
- // surface asked (EV-3616). This form posts the NUMBER, so the glyphs are
24749
- // presentation only; keep them identical to CSATWidget's.
24750
- const emojis = [{
24751
- value: 1,
24752
- emoji: "😡"
24753
- }, {
24754
- value: 2,
24755
- emoji: "😕"
24756
- }, {
24757
- value: 3,
24758
- emoji: "😐"
24759
- }, {
24760
- value: 4,
24761
- emoji: "😊"
24762
- }, {
24763
- value: 5,
24764
- emoji: "😍"
24765
- }];
24766
- return /*#__PURE__*/jsxRuntimeExports.jsx("div", {
24767
- className: "flex gap-2 justify-center items-center mb-5",
24768
- role: "group",
24769
- "aria-label": t("rateExperience"),
24770
- children: emojis.map(item => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
24771
- "aria-label": `${t("rate")} ${item.value}`,
24772
- onClick: () => setResolveRating(item.value),
24773
- disabled: isSubmittingResolve,
24774
- className: cn("rounded-full w-10 h-10 flex items-center justify-center text-xl transition-all hover:scale-110 active:scale-95 bg-transparent border-0 p-0 cursor-pointer", resolveRating === item.value ? "ring-2 ring-blue-100 scale-125 bg-gradient-to-b from-yellow-200 to-yellow-400 shadow-md" : "grayscale-[0.3] opacity-80 hover:grayscale-0"),
24775
- children: /*#__PURE__*/jsxRuntimeExports.jsx("span", {
24776
- role: "img",
24777
- "aria-label": `${t("rate")} ${item.value}`,
24778
- className: "drop-shadow-sm filter",
24779
- children: item.emoji
24780
- })
24781
- }, item.value))
24782
- });
24783
- };
24784
-
24785
- // Render the feedback form. All three text surfaces (title, textarea,
24786
- // submit button) share the same font-family + font-size, sourced from the
24787
- // user message bubble tokens. Tailwind's text-sm utility is dropped so the
24788
- // inline fontSize is the only size driver - otherwise browsers were
24789
- // rendering form elements (button, textarea) with their own defaults
24790
- // (e.g. serif on some platforms when Inter wasn't loaded yet).
25076
+ // EV-4968: the end-of-chat survey (X or End chat) is the same card as a
25077
+ // rating an agent asked for; it takes over the content area.
24791
25078
  const renderFeedbackForm = () => /*#__PURE__*/jsxRuntimeExports.jsx("div", {
24792
25079
  className: "animate-in slide-in-from-top-4 fade-in duration-300 mt-4 mx-2",
24793
- children: /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
24794
- className: cn("w-full rounded-3xl p-6 shadow-lg", isDark ? "bg-gray-800 shadow-black/20" : "bg-white shadow-gray-200/80"),
24795
- children: [/*#__PURE__*/jsxRuntimeExports.jsx("p", {
24796
- className: cn("text-sm font-medium text-center mb-5 [font-family:inherit]", isDark ? "text-gray-300" : "text-gray-500"),
24797
- children: csatPrompt || t("feedbackPrompt")
24798
- }), renderRatingInput(), /*#__PURE__*/jsxRuntimeExports.jsx("textarea", {
24799
- "aria-label": t("feedbackPlaceholder"),
24800
- value: resolveFeedbackText,
24801
- onChange: e => {
24802
- if (e.target.value.length <= 1000) {
24803
- setResolveFeedbackText(e.target.value);
24804
- }
24805
- },
24806
- maxLength: 1000,
24807
- placeholder: t("feedbackPlaceholder"),
24808
- rows: 4,
24809
- disabled: isSubmittingResolve,
24810
- className: cn("w-full rounded-xl border px-4 py-3 text-sm [font-family:inherit] resize-none outline-none transition-colors mb-5", isDark ? "bg-gray-700 border-gray-600 text-gray-100 placeholder-gray-400" : "bg-gray-50 border-gray-200 text-gray-900 placeholder-gray-400")
24811
- }), /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
24812
- className: "relative group",
24813
- children: [/*#__PURE__*/jsxRuntimeExports.jsx("button", {
24814
- onClick: handleResolveSubmission,
24815
- disabled: resolveRating === 0 || isSubmittingResolve,
24816
- "aria-describedby": resolveRating === 0 ? "resolve-rating-hint" : undefined,
24817
- className: cn("w-full py-3.5 rounded-xl text-sm font-semibold [font-family:inherit] transition-all duration-200 border-none outline-none focus:outline-none active:outline-none focus:ring-0 active:ring-0", "disabled:opacity-50 disabled:cursor-not-allowed",
24818
- // EV-4798 (MERN-21): keyboard focus stays visible.
24819
- "focus-visible:ring-2 focus-visible:ring-blue-700", isDark ? "bg-gray-700 text-gray-100 hover:bg-gray-600" : "bg-gray-100 text-gray-700 hover:bg-gray-200"),
24820
- children: isSubmittingResolve ? t("submitting") : t("submitFeedback")
24821
- }), resolveRating === 0 && !isSubmittingResolve && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
24822
- id: "resolve-rating-hint",
24823
- role: "tooltip",
24824
- className: "absolute -top-8 left-1/2 -translate-x-1/2 whitespace-nowrap px-2 py-1 rounded-md text-xs bg-gray-800 text-white opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none",
24825
- children: t("selectRatingFirst")
24826
- })]
24827
- }), resolveSubmitFailed && !isSubmittingResolve && /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
24828
- role: "alert",
24829
- className: "mt-3 text-center text-sm",
24830
- children: [/*#__PURE__*/jsxRuntimeExports.jsx("p", {
24831
- className: isDark ? "text-red-300" : "text-red-700",
24832
- children: t("feedbackSendFailed")
24833
- }), /*#__PURE__*/jsxRuntimeExports.jsx("button", {
24834
- type: "button",
24835
- onClick: () => {
24836
- setShowResolveForm(false);
24837
- setResolveSubmitFailed(false);
24838
- },
24839
- className: cn("mt-1 underline bg-transparent border-none [font-family:inherit] focus-visible:ring-2 focus-visible:ring-blue-700", isDark ? "text-gray-200" : "text-gray-700"),
24840
- children: t("backToChat")
24841
- })]
24842
- })]
25080
+ children: /*#__PURE__*/jsxRuntimeExports.jsx(CSATWidget, {
25081
+ id: "csat-end",
25082
+ format: normalizeCsatFormat(csatFormat),
25083
+ prompt: endSurveyPrompt,
25084
+ onSubmit: handleEndSurveySubmit,
25085
+ submitted: surveyThanks === "takeover",
25086
+ onBack: () => setShowResolveForm(false),
25087
+ isDark: isDark,
25088
+ primaryColor: primaryColor,
25089
+ defaultLanguage: defaultLanguage
24843
25090
  })
24844
25091
  });
24845
25092
  if (!isOpen) {
@@ -24915,6 +25162,7 @@
24915
25162
  officeHours: officeHours,
24916
25163
  onRefreshChat: onRefreshChat,
24917
25164
  onCopyChat: onCopyChat,
25165
+ onEndChat: canEndChat ? handleEndChat : undefined,
24918
25166
  defaultLanguage: defaultLanguage,
24919
25167
  isHandedOff: isHandedOff
24920
25168
  }), !isMinimized && filterEnabled && !showInlineFilter && !(showResolveForm && !isConversationResolved) && !(onboardingActive && !onboardingCompleted) && /*#__PURE__*/jsxRuntimeExports.jsx(CategoryTabsBar, {
@@ -25026,14 +25274,16 @@
25026
25274
  regionLabel: t("categoryFilter")
25027
25275
  }) : null,
25028
25276
  quickQuestionsHeadingLabel: filterEnabled ? t("quickQuestionsHeadingLabel") : undefined
25029
- }), (showCsat && csatEnabled || csatRequest) && !csatSubmitted && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
25030
- className: "",
25277
+ }), ((showCsat && csatEnabled || csatRequest) && !csatSubmitted || surveyThanks === "inline") && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
25278
+ className: "mx-2",
25031
25279
  "data-testid": "widget-csat-card",
25032
25280
  children: /*#__PURE__*/jsxRuntimeExports.jsx(CSATWidget, {
25281
+ id: "csat-requested",
25033
25282
  format: normalizeCsatFormat(csatRequest?.format || csatFormat),
25034
- prompt: csatRequest?.prompt || csatPrompt || t("howWasYourExperience"),
25035
- onRating: handleCsatRating,
25036
- disabled: false,
25283
+ prompt: requestedSurveyPrompt,
25284
+ note: csatRequest ? t("surveyRequestedNote") : undefined,
25285
+ onSubmit: handleRequestedSurveySubmit,
25286
+ submitted: surveyThanks === "inline",
25037
25287
  isDark: isDark,
25038
25288
  primaryColor: primaryColor,
25039
25289
  defaultLanguage: defaultLanguage
@@ -25424,7 +25674,7 @@
25424
25674
  * value by its own test (that constant sat at 0.1.113 while this package was
25425
25675
  * at 0.2.2 precisely because nothing enforced it - EV-2431).
25426
25676
  */
25427
- const WIDGET_VERSION = '0.2.53';
25677
+ const WIDGET_VERSION = '0.2.54';
25428
25678
 
25429
25679
  /**
25430
25680
  * API utility functions
@@ -25745,7 +25995,9 @@
25745
25995
  userMessageBubbleFontSize: userMessageBubbleFontSize ?? typography.userMessageBubbleFontSize ?? fontSize ?? "14px",
25746
25996
  csatEnabled: csat.enabled ?? false,
25747
25997
  csatFormat: csat.format ?? "EMOJI",
25748
- csatPrompt: csat.prompt ?? "How was your experience?",
25998
+ // EV-4968: no English literal here; ChatWindow falls back to the
25999
+ // translated default question on every survey path.
26000
+ csatPrompt: csat.prompt ?? "",
25749
26001
  // EV-3229: csat triggerType/idleTimeoutMins/followUpEnabled/
25750
26002
  // followUpPrompt removed - they were plumbed to the prop boundary and
25751
26003
  // never consulted; every deployment behaved as ON_END with no
@@ -25952,10 +26204,14 @@
25952
26204
  })();
25953
26205
  }, [conversationId, apiBaseUrl, getAuthToken, updateMessageFeedback]);
25954
26206
 
25955
- // Refresh chat handler - reset conversation
25956
- const handleRefreshChat = reactExports.useCallback(() => {
26207
+ // Refresh chat handler - reset conversation. EV-5040: the reset after a
26208
+ // survey passes { keepVisitor: true }; the header's Refresh Chat passes
26209
+ // nothing and starts fully over.
26210
+ const handleRefreshChat = reactExports.useCallback(opts => {
25957
26211
  if (resetConversation) {
25958
- resetConversation();
26212
+ resetConversation(opts?.keepVisitor === true ? {
26213
+ keepVisitor: true
26214
+ } : undefined);
25959
26215
  }
25960
26216
  }, [resetConversation]);
25961
26217