@eshal-bot/chat-widget 0.2.52 → 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.
- package/dist/{chat-widget-MarkdownRenderer-CLQhhk33.esm.js → chat-widget-MarkdownRenderer-D4fhjH4t.esm.js} +3 -3
- package/dist/chat-widget-index-C0VY-3ea.esm.js +20 -0
- package/dist/chat-widget.esm.js +1 -1
- package/dist/chat-widget.js +735 -452
- package/dist/chat-widget.min.js +6 -6
- package/dist/chat-widget.umd.js +8 -8
- package/package.json +1 -1
- package/dist/chat-widget-index-BZbPoQVV.esm.js +0 -20
package/dist/chat-widget.js
CHANGED
|
@@ -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);
|
|
@@ -13398,10 +13629,35 @@
|
|
|
13398
13629
|
const line = lines[i];
|
|
13399
13630
|
if (line.role !== "assistant") continue;
|
|
13400
13631
|
if (line.a2ui) return line.a2ui;
|
|
13401
|
-
if (!line.isProcessing && (line.content || "").trim())
|
|
13632
|
+
if (!line.isProcessing && (line.content || "").trim()) {
|
|
13633
|
+
// A verify card still waiting for its code stays (dev, 12 Nov 2026: the caller said "Hello" while
|
|
13634
|
+
// the code box was up and heard "please confirm the box on your screen", with the box gone).
|
|
13635
|
+
const older = lines.slice(0, i).reverse().find(l => l.role === "assistant" && l.a2ui);
|
|
13636
|
+
return older && waitsForCode(older) ? older.a2ui || "" : "";
|
|
13637
|
+
}
|
|
13402
13638
|
}
|
|
13403
13639
|
return "";
|
|
13404
13640
|
}
|
|
13641
|
+
const VERIFY_CARD = /"type"\s*:\s*"verification"/;
|
|
13642
|
+
|
|
13643
|
+
/** A verification code card (VerifyCard) whose code is not confirmed yet. */
|
|
13644
|
+
function waitsForCode(line) {
|
|
13645
|
+
return Boolean(line?.a2ui && VERIFY_CARD.test(line.a2ui) && !line.cardDone);
|
|
13646
|
+
}
|
|
13647
|
+
|
|
13648
|
+
/**
|
|
13649
|
+
* The lines with the verify card of this held call marked done, once its code is confirmed: the card
|
|
13650
|
+
* then goes like any other, when a newer answer has words of its own.
|
|
13651
|
+
* Mirrors packages/frontend/src/components/chatbot-preview/voiceCard.ts.
|
|
13652
|
+
*/
|
|
13653
|
+
function markCodeConfirmed(lines, card) {
|
|
13654
|
+
const id = String(card?.tool_call_id || "").trim();
|
|
13655
|
+
if (!id) return lines;
|
|
13656
|
+
return lines.map(l => l.a2ui && VERIFY_CARD.test(l.a2ui) && l.a2ui.includes(id) ? {
|
|
13657
|
+
...l,
|
|
13658
|
+
cardDone: true
|
|
13659
|
+
} : l);
|
|
13660
|
+
}
|
|
13405
13661
|
const CARD_FENCE = /```[ \t]*(?:eshal-ui|eshal-chart|chart)\b[^\n]*\n[\s\S]*?(?:```|$)/g;
|
|
13406
13662
|
|
|
13407
13663
|
/**
|
|
@@ -13744,6 +14000,34 @@
|
|
|
13744
14000
|
return ONBOARDING_FIELD_ORDER[key] ?? 99;
|
|
13745
14001
|
};
|
|
13746
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
|
+
|
|
13747
14031
|
const SESSION_KEY$1 = 'eshal_chat_session';
|
|
13748
14032
|
const SESSION_MSG_KEY = 'eshal_chat_session_messages';
|
|
13749
14033
|
// EV-4956: the ids of the messages a hand-off to the team came after (below).
|
|
@@ -14394,6 +14678,10 @@
|
|
|
14394
14678
|
const [pendingUserIntent, setPendingUserIntent] = reactExports.useState(null);
|
|
14395
14679
|
const [onboardingAnswers, setOnboardingAnswers] = reactExports.useState({});
|
|
14396
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);
|
|
14397
14685
|
|
|
14398
14686
|
// UX-M09: ref-based concurrency guard for sendMessage. The isLoading
|
|
14399
14687
|
// state alone is not sufficient - setState is batched async, so two
|
|
@@ -15353,6 +15641,24 @@
|
|
|
15353
15641
|
setInputValue("");
|
|
15354
15642
|
}
|
|
15355
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
|
+
|
|
15356
15662
|
// Prepare chat request
|
|
15357
15663
|
const chatRequest = {
|
|
15358
15664
|
message: trimmed,
|
|
@@ -15715,13 +16021,7 @@
|
|
|
15715
16021
|
// /api/v1/support/onboarding writes directly - and the generated
|
|
15716
16022
|
// "answer" was thrown away either way (see sendMessage's userName/
|
|
15717
16023
|
// email/phone branch). A single fast upsert replaces all of that.
|
|
15718
|
-
const
|
|
15719
|
-
const payloadAnswers = {};
|
|
15720
|
-
for (const q of sorted) {
|
|
15721
|
-
const key = q.fieldType || "question";
|
|
15722
|
-
const value = (answers[key] ?? "").trim();
|
|
15723
|
-
if (value) payloadAnswers[key] = value;
|
|
15724
|
-
}
|
|
16024
|
+
const payloadAnswers = onboardingPayload(questions, answers);
|
|
15725
16025
|
if (Object.keys(payloadAnswers).length > 0 && apiBaseUrl && bidiSessionId) {
|
|
15726
16026
|
try {
|
|
15727
16027
|
await sendOnboardingAnswers(payloadAnswers, {
|
|
@@ -17036,6 +17336,8 @@
|
|
|
17036
17336
|
ws.send(message);
|
|
17037
17337
|
updateActivity(organizationId);
|
|
17038
17338
|
setIsLoading(true);
|
|
17339
|
+
// The card's code is confirmed: it may go once the resumed answer speaks.
|
|
17340
|
+
setBidiMessages(prev => markCodeConfirmed(prev, card));
|
|
17039
17341
|
}, []);
|
|
17040
17342
|
|
|
17041
17343
|
// Cleanup on unmount
|
|
@@ -17076,7 +17378,16 @@
|
|
|
17076
17378
|
}, []);
|
|
17077
17379
|
|
|
17078
17380
|
// Reset entire conversation state after CSAT / closing - mirrors preview behaviour
|
|
17079
|
-
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
|
+
|
|
17080
17391
|
// Clear persisted session and prompt suggestions so the next mount starts fresh
|
|
17081
17392
|
clearSession$2(organizationId);
|
|
17082
17393
|
savePromptSuggestions(organizationId, []);
|
|
@@ -17113,10 +17424,13 @@
|
|
|
17113
17424
|
// Reset onboarding. Clear the name too - the new session (saveSession
|
|
17114
17425
|
// below writes a fresh record without it) will re-collect it, so the
|
|
17115
17426
|
// re-shown welcome stays generic until the user re-onboards.
|
|
17427
|
+
// EV-5040: a carried visitor keeps their answers, name and completed form.
|
|
17116
17428
|
setOnboardingActive(false);
|
|
17117
|
-
|
|
17118
|
-
|
|
17119
|
-
|
|
17429
|
+
if (!carriedAnswers) {
|
|
17430
|
+
setOnboardingCompleted(false);
|
|
17431
|
+
setOnboardingAnswers({});
|
|
17432
|
+
setOnboardingName("");
|
|
17433
|
+
}
|
|
17120
17434
|
setPendingUserIntent(null);
|
|
17121
17435
|
pendingIntentProcessedRef.current = false;
|
|
17122
17436
|
userHasSpokenRef.current = false;
|
|
@@ -17145,27 +17459,36 @@
|
|
|
17145
17459
|
})
|
|
17146
17460
|
});
|
|
17147
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
|
+
}
|
|
17148
17471
|
|
|
17149
|
-
// Re-show the welcome message
|
|
17472
|
+
// Re-show the welcome message (EV-5040: still by name for a carried visitor)
|
|
17150
17473
|
if (welcomeMessage && welcomeMessage.trim() !== "") {
|
|
17151
17474
|
setMessages([{
|
|
17152
17475
|
...createMessage({
|
|
17153
17476
|
id: Date.now().toString(),
|
|
17154
17477
|
role: "assistant",
|
|
17155
|
-
content: welcomeMessage
|
|
17478
|
+
content: carriedAnswers ? personalizedWelcome : welcomeMessage
|
|
17156
17479
|
}),
|
|
17157
17480
|
isWelcome: true
|
|
17158
17481
|
}]);
|
|
17159
17482
|
}
|
|
17160
17483
|
|
|
17161
17484
|
// Re-trigger onboarding if enabled
|
|
17162
|
-
if (onboardingEnabled) {
|
|
17485
|
+
if (onboardingEnabled && !carriedAnswers) {
|
|
17163
17486
|
const questions = getOnboardingQuestions(onboardingQuestions);
|
|
17164
17487
|
if (questions.length > 0) {
|
|
17165
17488
|
setOnboardingActive(true);
|
|
17166
17489
|
}
|
|
17167
17490
|
}
|
|
17168
|
-
}, [organizationId, bidiSessionId, welcomeMessage, onboardingEnabled, onboardingQuestions, inactivityTimeoutValue, inactivityTimeoutUnit]);
|
|
17491
|
+
}, [organizationId, bidiSessionId, welcomeMessage, onboardingEnabled, onboardingQuestions, inactivityTimeoutValue, inactivityTimeoutUnit, onboardingCompleted, onboardingAnswers, onboardingName, personalizedWelcome]);
|
|
17169
17492
|
|
|
17170
17493
|
// Keep a stable ref to resetConversation so the timer effect does not need to
|
|
17171
17494
|
// list it as a dependency (avoids spurious re-runs - and spurious updateActivity
|
|
@@ -17512,7 +17835,7 @@
|
|
|
17512
17835
|
* See the LICENSE file in the root directory of this source tree.
|
|
17513
17836
|
*/
|
|
17514
17837
|
|
|
17515
|
-
const __iconNode$
|
|
17838
|
+
const __iconNode$o = [["path", {
|
|
17516
17839
|
d: "M2 10v3",
|
|
17517
17840
|
key: "1fnikh"
|
|
17518
17841
|
}], ["path", {
|
|
@@ -17531,7 +17854,7 @@
|
|
|
17531
17854
|
d: "M22 10v3",
|
|
17532
17855
|
key: "154ddg"
|
|
17533
17856
|
}]];
|
|
17534
|
-
const AudioLines = createLucideIcon("audio-lines", __iconNode$
|
|
17857
|
+
const AudioLines = createLucideIcon("audio-lines", __iconNode$o);
|
|
17535
17858
|
|
|
17536
17859
|
/**
|
|
17537
17860
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -17540,11 +17863,11 @@
|
|
|
17540
17863
|
* See the LICENSE file in the root directory of this source tree.
|
|
17541
17864
|
*/
|
|
17542
17865
|
|
|
17543
|
-
const __iconNode$
|
|
17866
|
+
const __iconNode$n = [["path", {
|
|
17544
17867
|
d: "M20 6 9 17l-5-5",
|
|
17545
17868
|
key: "1gmf2c"
|
|
17546
17869
|
}]];
|
|
17547
|
-
const Check = createLucideIcon("check", __iconNode$
|
|
17870
|
+
const Check = createLucideIcon("check", __iconNode$n);
|
|
17548
17871
|
|
|
17549
17872
|
/**
|
|
17550
17873
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -17553,11 +17876,11 @@
|
|
|
17553
17876
|
* See the LICENSE file in the root directory of this source tree.
|
|
17554
17877
|
*/
|
|
17555
17878
|
|
|
17556
|
-
const __iconNode$
|
|
17879
|
+
const __iconNode$m = [["path", {
|
|
17557
17880
|
d: "m15 18-6-6 6-6",
|
|
17558
17881
|
key: "1wnfg3"
|
|
17559
17882
|
}]];
|
|
17560
|
-
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$
|
|
17883
|
+
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$m);
|
|
17561
17884
|
|
|
17562
17885
|
/**
|
|
17563
17886
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -17566,11 +17889,11 @@
|
|
|
17566
17889
|
* See the LICENSE file in the root directory of this source tree.
|
|
17567
17890
|
*/
|
|
17568
17891
|
|
|
17569
|
-
const __iconNode$
|
|
17892
|
+
const __iconNode$l = [["path", {
|
|
17570
17893
|
d: "m9 18 6-6-6-6",
|
|
17571
17894
|
key: "mthhwq"
|
|
17572
17895
|
}]];
|
|
17573
|
-
const ChevronRight = createLucideIcon("chevron-right", __iconNode$
|
|
17896
|
+
const ChevronRight = createLucideIcon("chevron-right", __iconNode$l);
|
|
17574
17897
|
|
|
17575
17898
|
/**
|
|
17576
17899
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -17579,7 +17902,7 @@
|
|
|
17579
17902
|
* See the LICENSE file in the root directory of this source tree.
|
|
17580
17903
|
*/
|
|
17581
17904
|
|
|
17582
|
-
const __iconNode$
|
|
17905
|
+
const __iconNode$k = [["circle", {
|
|
17583
17906
|
cx: "12",
|
|
17584
17907
|
cy: "12",
|
|
17585
17908
|
r: "10",
|
|
@@ -17597,7 +17920,7 @@
|
|
|
17597
17920
|
y2: "16",
|
|
17598
17921
|
key: "4dfq90"
|
|
17599
17922
|
}]];
|
|
17600
|
-
const CircleAlert = createLucideIcon("circle-alert", __iconNode$
|
|
17923
|
+
const CircleAlert = createLucideIcon("circle-alert", __iconNode$k);
|
|
17601
17924
|
|
|
17602
17925
|
/**
|
|
17603
17926
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -17606,7 +17929,25 @@
|
|
|
17606
17929
|
* See the LICENSE file in the root directory of this source tree.
|
|
17607
17930
|
*/
|
|
17608
17931
|
|
|
17609
|
-
const __iconNode$
|
|
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", {
|
|
17610
17951
|
width: "14",
|
|
17611
17952
|
height: "14",
|
|
17612
17953
|
x: "8",
|
|
@@ -17618,7 +17959,7 @@
|
|
|
17618
17959
|
d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",
|
|
17619
17960
|
key: "zix9uf"
|
|
17620
17961
|
}]];
|
|
17621
|
-
const Copy = createLucideIcon("copy", __iconNode$
|
|
17962
|
+
const Copy = createLucideIcon("copy", __iconNode$i);
|
|
17622
17963
|
|
|
17623
17964
|
/**
|
|
17624
17965
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -17627,7 +17968,7 @@
|
|
|
17627
17968
|
* See the LICENSE file in the root directory of this source tree.
|
|
17628
17969
|
*/
|
|
17629
17970
|
|
|
17630
|
-
const __iconNode$
|
|
17971
|
+
const __iconNode$h = [["circle", {
|
|
17631
17972
|
cx: "12",
|
|
17632
17973
|
cy: "12",
|
|
17633
17974
|
r: "1",
|
|
@@ -17643,7 +17984,7 @@
|
|
|
17643
17984
|
r: "1",
|
|
17644
17985
|
key: "1pcz8c"
|
|
17645
17986
|
}]];
|
|
17646
|
-
const Ellipsis = createLucideIcon("ellipsis", __iconNode$
|
|
17987
|
+
const Ellipsis = createLucideIcon("ellipsis", __iconNode$h);
|
|
17647
17988
|
|
|
17648
17989
|
/**
|
|
17649
17990
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -17652,7 +17993,7 @@
|
|
|
17652
17993
|
* See the LICENSE file in the root directory of this source tree.
|
|
17653
17994
|
*/
|
|
17654
17995
|
|
|
17655
|
-
const __iconNode$
|
|
17996
|
+
const __iconNode$g = [["path", {
|
|
17656
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",
|
|
17657
17998
|
key: "1oefj6"
|
|
17658
17999
|
}], ["path", {
|
|
@@ -17668,7 +18009,7 @@
|
|
|
17668
18009
|
d: "M16 17H8",
|
|
17669
18010
|
key: "z1uh3a"
|
|
17670
18011
|
}]];
|
|
17671
|
-
const FileText = createLucideIcon("file-text", __iconNode$
|
|
18012
|
+
const FileText = createLucideIcon("file-text", __iconNode$g);
|
|
17672
18013
|
|
|
17673
18014
|
/**
|
|
17674
18015
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -17677,11 +18018,11 @@
|
|
|
17677
18018
|
* See the LICENSE file in the root directory of this source tree.
|
|
17678
18019
|
*/
|
|
17679
18020
|
|
|
17680
|
-
const __iconNode$
|
|
18021
|
+
const __iconNode$f = [["path", {
|
|
17681
18022
|
d: "M21 12a9 9 0 1 1-6.219-8.56",
|
|
17682
18023
|
key: "13zald"
|
|
17683
18024
|
}]];
|
|
17684
|
-
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$
|
|
18025
|
+
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$f);
|
|
17685
18026
|
|
|
17686
18027
|
/**
|
|
17687
18028
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -17690,11 +18031,30 @@
|
|
|
17690
18031
|
* See the LICENSE file in the root directory of this source tree.
|
|
17691
18032
|
*/
|
|
17692
18033
|
|
|
17693
|
-
const __iconNode$
|
|
18034
|
+
const __iconNode$e = [["path", {
|
|
17694
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",
|
|
17695
18036
|
key: "1sd12s"
|
|
17696
18037
|
}]];
|
|
17697
|
-
const MessageCircle = createLucideIcon("message-circle", __iconNode$
|
|
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);
|
|
17698
18058
|
|
|
17699
18059
|
/**
|
|
17700
18060
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -22487,6 +22847,9 @@
|
|
|
22487
22847
|
officeHours = null,
|
|
22488
22848
|
onRefreshChat,
|
|
22489
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,
|
|
22490
22853
|
defaultLanguage = "en",
|
|
22491
22854
|
// EV-4956: the team owns the conversation. The subtitle then says so, so
|
|
22492
22855
|
// the header no longer looks exactly as it did while the AI was answering.
|
|
@@ -22744,7 +23107,26 @@
|
|
|
22744
23107
|
}) : /*#__PURE__*/jsxRuntimeExports.jsx(Moon, {
|
|
22745
23108
|
className: "w-3.5 h-3.5 flex-shrink-0"
|
|
22746
23109
|
}), isDark ? t("lightMode") : t("nightMode")]
|
|
22747
|
-
})
|
|
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]
|
|
22748
23130
|
})]
|
|
22749
23131
|
}), /*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
22750
23132
|
type: "button",
|
|
@@ -23614,191 +23996,192 @@
|
|
|
23614
23996
|
}, [containerRef, enabled, threshold, behavior, delay, ...dependencies]);
|
|
23615
23997
|
}
|
|
23616
23998
|
|
|
23617
|
-
const
|
|
23618
|
-
|
|
23619
|
-
|
|
23620
|
-
|
|
23621
|
-
|
|
23622
|
-
|
|
23623
|
-
|
|
23624
|
-
|
|
23625
|
-
|
|
23626
|
-
|
|
23627
|
-
|
|
23628
|
-
bg: "bg-yellow-200"
|
|
23629
|
-
}, {
|
|
23630
|
-
value: "😊",
|
|
23631
|
-
label: "😊",
|
|
23632
|
-
bg: "bg-green-200"
|
|
23633
|
-
}, {
|
|
23634
|
-
value: "😍",
|
|
23635
|
-
label: "😍",
|
|
23636
|
-
bg: "bg-pink-200"
|
|
23637
|
-
}];
|
|
23638
|
-
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 = [{
|
|
23639
24010
|
value: "positive",
|
|
23640
|
-
|
|
24011
|
+
glyph: "👍",
|
|
24012
|
+
labelKey: "thumbsUp"
|
|
23641
24013
|
}, {
|
|
23642
24014
|
value: "negative",
|
|
23643
|
-
|
|
23644
|
-
|
|
23645
|
-
const NUMERIC_RATINGS = [{
|
|
23646
|
-
value: "1",
|
|
23647
|
-
label: "1"
|
|
23648
|
-
}, {
|
|
23649
|
-
value: "2",
|
|
23650
|
-
label: "2"
|
|
23651
|
-
}, {
|
|
23652
|
-
value: "3",
|
|
23653
|
-
label: "3"
|
|
23654
|
-
}, {
|
|
23655
|
-
value: "4",
|
|
23656
|
-
label: "4"
|
|
23657
|
-
}, {
|
|
23658
|
-
value: "5",
|
|
23659
|
-
label: "5"
|
|
23660
|
-
}];
|
|
23661
|
-
const STARS_RATINGS = [{
|
|
23662
|
-
value: "1",
|
|
23663
|
-
label: "⭐"
|
|
23664
|
-
}, {
|
|
23665
|
-
value: "2",
|
|
23666
|
-
label: "⭐"
|
|
23667
|
-
}, {
|
|
23668
|
-
value: "3",
|
|
23669
|
-
label: "⭐"
|
|
23670
|
-
}, {
|
|
23671
|
-
value: "4",
|
|
23672
|
-
label: "⭐"
|
|
23673
|
-
}, {
|
|
23674
|
-
value: "5",
|
|
23675
|
-
label: "⭐"
|
|
24015
|
+
glyph: "👎",
|
|
24016
|
+
labelKey: "thumbsDown"
|
|
23676
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";
|
|
23677
24020
|
const CSATWidget = ({
|
|
23678
24021
|
format = "EMOJI",
|
|
23679
|
-
prompt
|
|
23680
|
-
|
|
23681
|
-
|
|
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,
|
|
23682
24031
|
isDark = false,
|
|
23683
24032
|
primaryColor = "#2563eb",
|
|
23684
|
-
defaultLanguage = "en"
|
|
24033
|
+
defaultLanguage = "en",
|
|
24034
|
+
id = "csat"
|
|
23685
24035
|
}) => {
|
|
23686
24036
|
const t = reactExports.useMemo(() => createTranslator(defaultLanguage), [defaultLanguage]);
|
|
23687
|
-
const
|
|
23688
|
-
const [
|
|
23689
|
-
const [
|
|
23690
|
-
const
|
|
23691
|
-
|
|
23692
|
-
|
|
23693
|
-
|
|
23694
|
-
|
|
23695
|
-
|
|
23696
|
-
|
|
23697
|
-
|
|
23698
|
-
|
|
23699
|
-
|
|
23700
|
-
|
|
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;
|
|
23701
24073
|
}
|
|
24074
|
+
setStatus(ok ? "idle" : "failed");
|
|
23702
24075
|
};
|
|
23703
|
-
const
|
|
23704
|
-
|
|
23705
|
-
|
|
23706
|
-
|
|
23707
|
-
|
|
23708
|
-
|
|
23709
|
-
|
|
23710
|
-
|
|
23711
|
-
|
|
23712
|
-
|
|
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));
|
|
23713
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));
|
|
23714
24128
|
};
|
|
23715
|
-
const ratings = getRatings();
|
|
23716
24129
|
return /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
|
|
23717
|
-
className:
|
|
23718
|
-
|
|
23719
|
-
|
|
23720
|
-
|
|
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")
|
|
23721
24154
|
}), /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
|
|
23722
|
-
className: "
|
|
23723
|
-
children: [
|
|
23724
|
-
|
|
23725
|
-
|
|
23726
|
-
|
|
23727
|
-
|
|
23728
|
-
|
|
23729
|
-
|
|
23730
|
-
|
|
23731
|
-
|
|
23732
|
-
|
|
23733
|
-
|
|
23734
|
-
|
|
23735
|
-
|
|
23736
|
-
|
|
23737
|
-
}, rating.value))
|
|
23738
|
-
}), format === "THUMBS" && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
23739
|
-
className: "flex gap-6 justify-center items-center",
|
|
23740
|
-
role: "group",
|
|
23741
|
-
"aria-label": t("rateExperience"),
|
|
23742
|
-
children: ratings.map(rating => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
23743
|
-
"aria-label": rating.value === 1 ? t("thumbsUp") : t("thumbsDown"),
|
|
23744
|
-
onClick: () => handleRating(rating.value),
|
|
23745
|
-
disabled: disabled || isSubmitting,
|
|
23746
|
-
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"),
|
|
23747
|
-
style: {
|
|
23748
|
-
borderColor: selectedRating === rating.value ? primaryColor : undefined
|
|
23749
|
-
},
|
|
23750
|
-
children: /*#__PURE__*/jsxRuntimeExports.jsx("span", {
|
|
23751
|
-
className: "drop-shadow-md",
|
|
23752
|
-
"aria-hidden": "true",
|
|
23753
|
-
children: rating.label
|
|
23754
|
-
})
|
|
23755
|
-
}, rating.value))
|
|
23756
|
-
}), format === "NUMERIC" && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
23757
|
-
className: "flex gap-2 justify-center items-center",
|
|
23758
|
-
role: "group",
|
|
23759
|
-
"aria-label": t("rateExperience"),
|
|
23760
|
-
children: ratings.map(rating => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
23761
|
-
"aria-label": `${t("rate")} ${rating.value}`,
|
|
23762
|
-
onClick: () => handleRating(rating.value),
|
|
23763
|
-
disabled: disabled || isSubmitting,
|
|
23764
|
-
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"),
|
|
23765
|
-
style: {
|
|
23766
|
-
backgroundColor: selectedRating === rating.value ? primaryColor : undefined,
|
|
23767
|
-
borderColor: selectedRating === rating.value ? primaryColor : undefined
|
|
23768
|
-
},
|
|
23769
|
-
children: rating.label
|
|
23770
|
-
}, rating.value))
|
|
23771
|
-
}), format === "STARS" && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
23772
|
-
className: "flex gap-2 justify-center items-center",
|
|
23773
|
-
onMouseLeave: () => setHoveredStar(null),
|
|
23774
|
-
children: ratings.map(rating => {
|
|
23775
|
-
const isHovered = hoveredStar === rating.value;
|
|
23776
|
-
return /*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
23777
|
-
onClick: () => handleRating(rating.value),
|
|
23778
|
-
onMouseEnter: () => setHoveredStar(rating.value),
|
|
23779
|
-
disabled: disabled || isSubmitting,
|
|
23780
|
-
className: cn("flex items-center justify-center text-2xl", "bg-transparent border-0 p-0 cursor-pointer focus:outline-none",
|
|
23781
|
-
// EV-4798 (MERN-21): visible keyboard focus.
|
|
23782
|
-
"rounded-md focus-visible:ring-2 focus-visible:ring-blue-700", "disabled:opacity-50 disabled:cursor-not-allowed"),
|
|
23783
|
-
style: {
|
|
23784
|
-
transform: isHovered ? "scale(1.25)" : "scale(1)",
|
|
23785
|
-
filter: isHovered ? "brightness(1.1) drop-shadow(0 2px 4px rgba(0,0,0,0.15))" : "none",
|
|
23786
|
-
opacity: isHovered ? 1 : 0.6,
|
|
23787
|
-
transition: "all 0.2s ease"
|
|
23788
|
-
},
|
|
23789
|
-
"aria-label": `${t("rate")} ${rating.value}`,
|
|
23790
|
-
children: /*#__PURE__*/jsxRuntimeExports.jsx("span", {
|
|
23791
|
-
"aria-hidden": "true",
|
|
23792
|
-
children: rating.label
|
|
23793
|
-
})
|
|
23794
|
-
}, rating.value);
|
|
23795
|
-
})
|
|
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")
|
|
23796
24170
|
})]
|
|
23797
|
-
}),
|
|
23798
|
-
|
|
23799
|
-
className: cn("
|
|
23800
|
-
children: t("
|
|
23801
|
-
})
|
|
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]
|
|
23802
24185
|
});
|
|
23803
24186
|
};
|
|
23804
24187
|
|
|
@@ -23982,13 +24365,10 @@
|
|
|
23982
24365
|
hour12: true
|
|
23983
24366
|
}).replace(/am|pm/i, match => match.toUpperCase());
|
|
23984
24367
|
};
|
|
23985
|
-
|
|
23986
|
-
|
|
23987
|
-
|
|
23988
|
-
|
|
23989
|
-
if (raw === "NUMERIC" || raw === "NUMBER") return "NUMERIC";
|
|
23990
|
-
return "EMOJI";
|
|
23991
|
-
};
|
|
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;
|
|
23992
24372
|
const ChatWindow = ({
|
|
23993
24373
|
isOpen,
|
|
23994
24374
|
isMinimized,
|
|
@@ -24071,7 +24451,8 @@
|
|
|
24071
24451
|
// CSAT configuration
|
|
24072
24452
|
csatEnabled = false,
|
|
24073
24453
|
csatFormat = "EMOJI",
|
|
24074
|
-
|
|
24454
|
+
// EV-4968: blank means the translated default question.
|
|
24455
|
+
csatPrompt = "",
|
|
24075
24456
|
// A rating an agent asked for from the Inbox: { format, prompt } or null.
|
|
24076
24457
|
// Shown whether or not the automatic survey (csatEnabled) is on.
|
|
24077
24458
|
csatRequest = null,
|
|
@@ -24300,13 +24681,16 @@
|
|
|
24300
24681
|
}
|
|
24301
24682
|
});
|
|
24302
24683
|
|
|
24303
|
-
// Resolve / Feedback state
|
|
24684
|
+
// Resolve / Feedback state. The rating and comment live in CSATWidget.
|
|
24304
24685
|
const [showResolveForm, setShowResolveForm] = reactExports.useState(false);
|
|
24305
24686
|
const [isConversationResolved, setIsConversationResolved] = reactExports.useState(false);
|
|
24306
|
-
|
|
24307
|
-
|
|
24308
|
-
|
|
24309
|
-
|
|
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);
|
|
24310
24694
|
|
|
24311
24695
|
// EV-4826: this component stays mounted while the widget is closed
|
|
24312
24696
|
// (it renders null), so the feedback form used to survive a close and
|
|
@@ -24315,16 +24699,15 @@
|
|
|
24315
24699
|
reactExports.useEffect(() => {
|
|
24316
24700
|
if (isOpen) return;
|
|
24317
24701
|
setShowResolveForm(false);
|
|
24318
|
-
setResolveRating(0);
|
|
24319
|
-
setResolveFeedbackText("");
|
|
24320
|
-
setResolveSubmitFailed(false);
|
|
24321
24702
|
}, [isOpen]);
|
|
24322
24703
|
reactExports.useEffect(() => {
|
|
24323
24704
|
setShowResolveForm(false);
|
|
24324
|
-
|
|
24325
|
-
|
|
24326
|
-
|
|
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);
|
|
24327
24709
|
}, [conversationId]);
|
|
24710
|
+
reactExports.useEffect(() => () => clearTimeout(surveyDoneTimerRef.current), []);
|
|
24328
24711
|
|
|
24329
24712
|
// Sync csatSubmitted from session whenever the conversation changes
|
|
24330
24713
|
reactExports.useEffect(() => {
|
|
@@ -24476,18 +24859,21 @@
|
|
|
24476
24859
|
const hasOnboardingQuestions = onboardingQuestions && onboardingQuestions.length > 0;
|
|
24477
24860
|
const isCsatEnabled = Boolean(csatEnabled);
|
|
24478
24861
|
const shouldHideResolveForOnboarding = onboardingEnabled && hasOnboardingQuestions && !onboardingCompleted;
|
|
24479
|
-
const handleCsatRating = async (rating, format) => {
|
|
24480
|
-
setCsatSubmitted(true); // optimistic UI
|
|
24481
|
-
setShowCsat(false);
|
|
24482
|
-
markCsatSubmitted(organizationId); // persist so page refresh doesn't re-show CSAT
|
|
24483
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) => {
|
|
24484
24870
|
try {
|
|
24485
24871
|
const headers = {
|
|
24486
24872
|
"Content-Type": "application/json"
|
|
24487
24873
|
};
|
|
24488
|
-
if (typeof getAuthToken ===
|
|
24874
|
+
if (typeof getAuthToken === "function") {
|
|
24489
24875
|
const token = await getAuthToken();
|
|
24490
|
-
if (token) headers[
|
|
24876
|
+
if (token) headers["Authorization"] = `Bearer ${token}`;
|
|
24491
24877
|
}
|
|
24492
24878
|
const response = await fetch(`${apiBaseUrl.replace(/\/$/, "")}/api/v1/support/csat`, {
|
|
24493
24879
|
method: "POST",
|
|
@@ -24495,84 +24881,98 @@
|
|
|
24495
24881
|
credentials: "include",
|
|
24496
24882
|
body: JSON.stringify({
|
|
24497
24883
|
conversationId,
|
|
24498
|
-
rating,
|
|
24884
|
+
rating: String(rating),
|
|
24499
24885
|
ratingFormat: format,
|
|
24500
|
-
conciergeId
|
|
24886
|
+
conciergeId,
|
|
24887
|
+
feedback: feedback || undefined
|
|
24501
24888
|
})
|
|
24502
24889
|
});
|
|
24503
24890
|
if (!response.ok) {
|
|
24504
24891
|
console.error("CSAT submission failed:", await response.text());
|
|
24892
|
+
return false;
|
|
24505
24893
|
}
|
|
24506
|
-
|
|
24507
|
-
// Session continues after CSAT submission - no reset
|
|
24894
|
+
return true;
|
|
24508
24895
|
} catch (error) {
|
|
24509
24896
|
console.error("CSAT submission error:", error);
|
|
24897
|
+
return false;
|
|
24510
24898
|
}
|
|
24511
|
-
};
|
|
24512
|
-
|
|
24513
|
-
//
|
|
24514
|
-
const
|
|
24515
|
-
|
|
24516
|
-
if (
|
|
24517
|
-
|
|
24518
|
-
|
|
24519
|
-
|
|
24520
|
-
|
|
24521
|
-
|
|
24522
|
-
|
|
24523
|
-
|
|
24524
|
-
|
|
24525
|
-
|
|
24526
|
-
|
|
24527
|
-
|
|
24528
|
-
|
|
24529
|
-
|
|
24530
|
-
|
|
24531
|
-
|
|
24532
|
-
|
|
24533
|
-
|
|
24534
|
-
|
|
24535
|
-
|
|
24536
|
-
|
|
24537
|
-
|
|
24538
|
-
|
|
24539
|
-
|
|
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
|
|
24540
24933
|
});
|
|
24541
|
-
if (response.ok) {
|
|
24542
|
-
// EV-901: do exactly what the kebab-menu "Refresh Chat" does.
|
|
24543
|
-
// We route through onRefreshChat (same entry point the kebab
|
|
24544
|
-
// menu uses) instead of onResetConversation so any change to
|
|
24545
|
-
// the Refresh path automatically applies here too. We ALSO
|
|
24546
|
-
// explicitly clear widgetFilter via onWidgetFilterChange(null):
|
|
24547
|
-
// resetConversation calls setWidgetFilter(null) internally, but
|
|
24548
|
-
// doing it here too pins down a reported bug where the post-
|
|
24549
|
-
// resolve render kept the previous category set (showing the
|
|
24550
|
-
// top CategoryTabsBar instead of the inline topic chips).
|
|
24551
|
-
setShowResolveForm(false);
|
|
24552
|
-
setResolveRating(0);
|
|
24553
|
-
setResolveFeedbackText("");
|
|
24554
|
-
if (onWidgetFilterChange) {
|
|
24555
|
-
onWidgetFilterChange(null);
|
|
24556
|
-
}
|
|
24557
|
-
if (onRefreshChat) {
|
|
24558
|
-
onRefreshChat();
|
|
24559
|
-
} else if (onResetConversation) {
|
|
24560
|
-
onResetConversation();
|
|
24561
|
-
}
|
|
24562
|
-
} else {
|
|
24563
|
-
console.error("Failed to submit resolve feedback:", await response.text());
|
|
24564
|
-
setResolveSubmitFailed(true);
|
|
24565
|
-
}
|
|
24566
|
-
} catch (error) {
|
|
24567
|
-
console.error("Error submitting resolve feedback:", error);
|
|
24568
|
-
setResolveSubmitFailed(true);
|
|
24569
|
-
} finally {
|
|
24570
|
-
setIsSubmittingResolve(false);
|
|
24571
24934
|
}
|
|
24572
|
-
|
|
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
|
+
}, []);
|
|
24573
24966
|
|
|
24574
24967
|
// Handle X button: first click shows form, second click closes
|
|
24575
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
|
+
}
|
|
24576
24976
|
// No conversation yet (no conversationId or no user messages) → skip the
|
|
24577
24977
|
// CSAT/resolve form entirely. Rating a never-used widget is nonsensical
|
|
24578
24978
|
// and the underlying POST /api/v1/support/csat would fail with no
|
|
@@ -24580,7 +24980,7 @@
|
|
|
24580
24980
|
if (!isCsatEnabled || !conversationId || !hasUserMessages) {
|
|
24581
24981
|
// CSAT disabled (or no conversation to rate): closing the chat should
|
|
24582
24982
|
// also clear out the conversation, mirroring the post-CSAT clear in
|
|
24583
|
-
//
|
|
24983
|
+
// finishEndSurvey. Without this the X button only hides
|
|
24584
24984
|
// the window while the old transcript persists in the session and
|
|
24585
24985
|
// re-appears on reopen / reload. Route through onRefreshChat (same
|
|
24586
24986
|
// entry point the kebab "Refresh Chat" uses) so any change to the
|
|
@@ -24600,18 +25000,20 @@
|
|
|
24600
25000
|
setShowResolveForm(false);
|
|
24601
25001
|
onClose?.();
|
|
24602
25002
|
} else if (!isConversationResolved) {
|
|
25003
|
+
surveyClosesWidgetRef.current = true;
|
|
24603
25004
|
setShowResolveForm(true);
|
|
24604
25005
|
} else {
|
|
24605
25006
|
onClose?.();
|
|
24606
25007
|
}
|
|
24607
|
-
}, [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;
|
|
24608
25012
|
reactExports.useEffect(() => {
|
|
24609
25013
|
if (isCsatEnabled) return;
|
|
24610
25014
|
if (showResolveForm) setShowResolveForm(false);
|
|
24611
25015
|
if (isConversationResolved) setIsConversationResolved(false);
|
|
24612
|
-
|
|
24613
|
-
if (resolveFeedbackText) setResolveFeedbackText("");
|
|
24614
|
-
}, [isCsatEnabled, showResolveForm, isConversationResolved, resolveRating, resolveFeedbackText]);
|
|
25016
|
+
}, [isCsatEnabled, showResolveForm, isConversationResolved]);
|
|
24615
25017
|
const latestPromptSuggestions = reactExports.useMemo(() => {
|
|
24616
25018
|
if (!messages || !Array.isArray(messages)) return [];
|
|
24617
25019
|
// Reflect the LATEST assistant message's prompts ONLY - do NOT walk back
|
|
@@ -24671,148 +25073,20 @@
|
|
|
24671
25073
|
};
|
|
24672
25074
|
}, [showCsat, csatEnabled, csatSubmitted]);
|
|
24673
25075
|
|
|
24674
|
-
//
|
|
24675
|
-
|
|
24676
|
-
const format = normalizeCsatFormat(csatFormat);
|
|
24677
|
-
if (format === "STARS") {
|
|
24678
|
-
return /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
24679
|
-
className: "flex justify-center gap-2 mb-5",
|
|
24680
|
-
role: "group",
|
|
24681
|
-
"aria-label": t("rateExperience"),
|
|
24682
|
-
children: [1, 2, 3, 4, 5].map(star => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
24683
|
-
"aria-label": `${t("rate")} ${star}`,
|
|
24684
|
-
onClick: () => setResolveRating(star),
|
|
24685
|
-
className: "transition-all duration-150 hover:scale-110 active:scale-95 bg-transparent border-0 p-0 cursor-pointer",
|
|
24686
|
-
disabled: isSubmittingResolve,
|
|
24687
|
-
children: /*#__PURE__*/jsxRuntimeExports.jsx(Star, {
|
|
24688
|
-
className: cn("w-8 h-8 transition-colors", star <= resolveRating ? "text-yellow-400 drop-shadow-sm" : isDark ? "text-gray-600" : "text-gray-300"),
|
|
24689
|
-
fill: star <= resolveRating ? "#FBBF24" : "none"
|
|
24690
|
-
})
|
|
24691
|
-
}, star))
|
|
24692
|
-
});
|
|
24693
|
-
}
|
|
24694
|
-
if (format === "THUMBS") {
|
|
24695
|
-
return /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
24696
|
-
className: "flex gap-4 justify-center mb-5",
|
|
24697
|
-
role: "group",
|
|
24698
|
-
"aria-label": t("rateExperience"),
|
|
24699
|
-
children: [{
|
|
24700
|
-
value: "positive",
|
|
24701
|
-
emoji: "👍"
|
|
24702
|
-
}, {
|
|
24703
|
-
value: "negative",
|
|
24704
|
-
emoji: "👎"
|
|
24705
|
-
}].map(item => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
24706
|
-
"aria-label": item.value === "positive" ? t("thumbsUp") : t("thumbsDown"),
|
|
24707
|
-
onClick: () => setResolveRating(item.value),
|
|
24708
|
-
disabled: isSubmittingResolve,
|
|
24709
|
-
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"),
|
|
24710
|
-
children: /*#__PURE__*/jsxRuntimeExports.jsx("span", {
|
|
24711
|
-
className: "drop-shadow-md",
|
|
24712
|
-
children: item.emoji
|
|
24713
|
-
})
|
|
24714
|
-
}, item.value))
|
|
24715
|
-
});
|
|
24716
|
-
}
|
|
24717
|
-
|
|
24718
|
-
// Default: Emoji format. Same faces as CSATWidget's EMOJI_RATINGS.
|
|
24719
|
-
// The two ladders had drifted (this one showed 😐 at position 2 and 🙂/😀
|
|
24720
|
-
// at 3/4), so the same face meant a different value depending on which
|
|
24721
|
-
// surface asked (EV-3616). This form posts the NUMBER, so the glyphs are
|
|
24722
|
-
// presentation only; keep them identical to CSATWidget's.
|
|
24723
|
-
const emojis = [{
|
|
24724
|
-
value: 1,
|
|
24725
|
-
emoji: "😡"
|
|
24726
|
-
}, {
|
|
24727
|
-
value: 2,
|
|
24728
|
-
emoji: "😕"
|
|
24729
|
-
}, {
|
|
24730
|
-
value: 3,
|
|
24731
|
-
emoji: "😐"
|
|
24732
|
-
}, {
|
|
24733
|
-
value: 4,
|
|
24734
|
-
emoji: "😊"
|
|
24735
|
-
}, {
|
|
24736
|
-
value: 5,
|
|
24737
|
-
emoji: "😍"
|
|
24738
|
-
}];
|
|
24739
|
-
return /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
24740
|
-
className: "flex gap-2 justify-center items-center mb-5",
|
|
24741
|
-
role: "group",
|
|
24742
|
-
"aria-label": t("rateExperience"),
|
|
24743
|
-
children: emojis.map(item => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
24744
|
-
"aria-label": `${t("rate")} ${item.value}`,
|
|
24745
|
-
onClick: () => setResolveRating(item.value),
|
|
24746
|
-
disabled: isSubmittingResolve,
|
|
24747
|
-
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"),
|
|
24748
|
-
children: /*#__PURE__*/jsxRuntimeExports.jsx("span", {
|
|
24749
|
-
role: "img",
|
|
24750
|
-
"aria-label": `${t("rate")} ${item.value}`,
|
|
24751
|
-
className: "drop-shadow-sm filter",
|
|
24752
|
-
children: item.emoji
|
|
24753
|
-
})
|
|
24754
|
-
}, item.value))
|
|
24755
|
-
});
|
|
24756
|
-
};
|
|
24757
|
-
|
|
24758
|
-
// Render the feedback form. All three text surfaces (title, textarea,
|
|
24759
|
-
// submit button) share the same font-family + font-size, sourced from the
|
|
24760
|
-
// user message bubble tokens. Tailwind's text-sm utility is dropped so the
|
|
24761
|
-
// inline fontSize is the only size driver - otherwise browsers were
|
|
24762
|
-
// rendering form elements (button, textarea) with their own defaults
|
|
24763
|
-
// (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.
|
|
24764
25078
|
const renderFeedbackForm = () => /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
24765
25079
|
className: "animate-in slide-in-from-top-4 fade-in duration-300 mt-4 mx-2",
|
|
24766
|
-
children: /*#__PURE__*/jsxRuntimeExports.
|
|
24767
|
-
|
|
24768
|
-
|
|
24769
|
-
|
|
24770
|
-
|
|
24771
|
-
|
|
24772
|
-
|
|
24773
|
-
|
|
24774
|
-
|
|
24775
|
-
|
|
24776
|
-
setResolveFeedbackText(e.target.value);
|
|
24777
|
-
}
|
|
24778
|
-
},
|
|
24779
|
-
maxLength: 1000,
|
|
24780
|
-
placeholder: t("feedbackPlaceholder"),
|
|
24781
|
-
rows: 4,
|
|
24782
|
-
disabled: isSubmittingResolve,
|
|
24783
|
-
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")
|
|
24784
|
-
}), /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
|
|
24785
|
-
className: "relative group",
|
|
24786
|
-
children: [/*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
24787
|
-
onClick: handleResolveSubmission,
|
|
24788
|
-
disabled: resolveRating === 0 || isSubmittingResolve,
|
|
24789
|
-
"aria-describedby": resolveRating === 0 ? "resolve-rating-hint" : undefined,
|
|
24790
|
-
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",
|
|
24791
|
-
// EV-4798 (MERN-21): keyboard focus stays visible.
|
|
24792
|
-
"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"),
|
|
24793
|
-
children: isSubmittingResolve ? t("submitting") : t("submitFeedback")
|
|
24794
|
-
}), resolveRating === 0 && !isSubmittingResolve && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
24795
|
-
id: "resolve-rating-hint",
|
|
24796
|
-
role: "tooltip",
|
|
24797
|
-
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",
|
|
24798
|
-
children: t("selectRatingFirst")
|
|
24799
|
-
})]
|
|
24800
|
-
}), resolveSubmitFailed && !isSubmittingResolve && /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
|
|
24801
|
-
role: "alert",
|
|
24802
|
-
className: "mt-3 text-center text-sm",
|
|
24803
|
-
children: [/*#__PURE__*/jsxRuntimeExports.jsx("p", {
|
|
24804
|
-
className: isDark ? "text-red-300" : "text-red-700",
|
|
24805
|
-
children: t("feedbackSendFailed")
|
|
24806
|
-
}), /*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
24807
|
-
type: "button",
|
|
24808
|
-
onClick: () => {
|
|
24809
|
-
setShowResolveForm(false);
|
|
24810
|
-
setResolveSubmitFailed(false);
|
|
24811
|
-
},
|
|
24812
|
-
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"),
|
|
24813
|
-
children: t("backToChat")
|
|
24814
|
-
})]
|
|
24815
|
-
})]
|
|
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
|
|
24816
25090
|
})
|
|
24817
25091
|
});
|
|
24818
25092
|
if (!isOpen) {
|
|
@@ -24888,6 +25162,7 @@
|
|
|
24888
25162
|
officeHours: officeHours,
|
|
24889
25163
|
onRefreshChat: onRefreshChat,
|
|
24890
25164
|
onCopyChat: onCopyChat,
|
|
25165
|
+
onEndChat: canEndChat ? handleEndChat : undefined,
|
|
24891
25166
|
defaultLanguage: defaultLanguage,
|
|
24892
25167
|
isHandedOff: isHandedOff
|
|
24893
25168
|
}), !isMinimized && filterEnabled && !showInlineFilter && !(showResolveForm && !isConversationResolved) && !(onboardingActive && !onboardingCompleted) && /*#__PURE__*/jsxRuntimeExports.jsx(CategoryTabsBar, {
|
|
@@ -24999,14 +25274,16 @@
|
|
|
24999
25274
|
regionLabel: t("categoryFilter")
|
|
25000
25275
|
}) : null,
|
|
25001
25276
|
quickQuestionsHeadingLabel: filterEnabled ? t("quickQuestionsHeadingLabel") : undefined
|
|
25002
|
-
}), (showCsat && csatEnabled || csatRequest) && !csatSubmitted && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
25003
|
-
className: "",
|
|
25277
|
+
}), ((showCsat && csatEnabled || csatRequest) && !csatSubmitted || surveyThanks === "inline") && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
25278
|
+
className: "mx-2",
|
|
25004
25279
|
"data-testid": "widget-csat-card",
|
|
25005
25280
|
children: /*#__PURE__*/jsxRuntimeExports.jsx(CSATWidget, {
|
|
25281
|
+
id: "csat-requested",
|
|
25006
25282
|
format: normalizeCsatFormat(csatRequest?.format || csatFormat),
|
|
25007
|
-
prompt:
|
|
25008
|
-
|
|
25009
|
-
|
|
25283
|
+
prompt: requestedSurveyPrompt,
|
|
25284
|
+
note: csatRequest ? t("surveyRequestedNote") : undefined,
|
|
25285
|
+
onSubmit: handleRequestedSurveySubmit,
|
|
25286
|
+
submitted: surveyThanks === "inline",
|
|
25010
25287
|
isDark: isDark,
|
|
25011
25288
|
primaryColor: primaryColor,
|
|
25012
25289
|
defaultLanguage: defaultLanguage
|
|
@@ -25397,7 +25674,7 @@
|
|
|
25397
25674
|
* value by its own test (that constant sat at 0.1.113 while this package was
|
|
25398
25675
|
* at 0.2.2 precisely because nothing enforced it - EV-2431).
|
|
25399
25676
|
*/
|
|
25400
|
-
const WIDGET_VERSION = '0.2.
|
|
25677
|
+
const WIDGET_VERSION = '0.2.54';
|
|
25401
25678
|
|
|
25402
25679
|
/**
|
|
25403
25680
|
* API utility functions
|
|
@@ -25718,7 +25995,9 @@
|
|
|
25718
25995
|
userMessageBubbleFontSize: userMessageBubbleFontSize ?? typography.userMessageBubbleFontSize ?? fontSize ?? "14px",
|
|
25719
25996
|
csatEnabled: csat.enabled ?? false,
|
|
25720
25997
|
csatFormat: csat.format ?? "EMOJI",
|
|
25721
|
-
|
|
25998
|
+
// EV-4968: no English literal here; ChatWindow falls back to the
|
|
25999
|
+
// translated default question on every survey path.
|
|
26000
|
+
csatPrompt: csat.prompt ?? "",
|
|
25722
26001
|
// EV-3229: csat triggerType/idleTimeoutMins/followUpEnabled/
|
|
25723
26002
|
// followUpPrompt removed - they were plumbed to the prop boundary and
|
|
25724
26003
|
// never consulted; every deployment behaved as ON_END with no
|
|
@@ -25925,10 +26204,14 @@
|
|
|
25925
26204
|
})();
|
|
25926
26205
|
}, [conversationId, apiBaseUrl, getAuthToken, updateMessageFeedback]);
|
|
25927
26206
|
|
|
25928
|
-
// Refresh chat handler - reset conversation
|
|
25929
|
-
|
|
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 => {
|
|
25930
26211
|
if (resetConversation) {
|
|
25931
|
-
resetConversation(
|
|
26212
|
+
resetConversation(opts?.keepVisitor === true ? {
|
|
26213
|
+
keepVisitor: true
|
|
26214
|
+
} : undefined);
|
|
25932
26215
|
}
|
|
25933
26216
|
}, [resetConversation]);
|
|
25934
26217
|
|