@eshal-bot/chat-widget 0.2.41 → 0.2.43
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-BiM7QweB.esm.js → chat-widget-MarkdownRenderer-CLkfo2rS.esm.js} +1 -1
- package/dist/chat-widget-index-DrYC7TkS.esm.js +20 -0
- package/dist/chat-widget.esm.js +1 -1
- package/dist/chat-widget.js +347 -33
- package/dist/chat-widget.min.js +4 -4
- package/dist/chat-widget.umd.js +8 -8
- package/package.json +1 -1
- package/dist/chat-widget-index-i7Tp1iNw.esm.js +0 -20
package/dist/chat-widget.js
CHANGED
|
@@ -7803,7 +7803,7 @@
|
|
|
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 .-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 .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 .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-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 .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-\\[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-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 .-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 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 .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-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-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-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-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-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-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 .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-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-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 .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 .drop-shadow{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{--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-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-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 :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 .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-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-white\\/40:focus-visible{--tw-ring-color:hsla(0,0%,100%,.4)}#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 .-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 .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 .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-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 .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-\\[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-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 .-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 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 .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-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-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-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-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-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-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 .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-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-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 .drop-shadow{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{--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-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-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 :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 .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-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-white\\/40:focus-visible{--tw-ring-color:hsla(0,0%,100%,.4)}#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
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}}";
|
|
7809
7809
|
|
|
@@ -8948,8 +8948,9 @@
|
|
|
8948
8948
|
* is a small energy-based state machine between the mic and the socket: it
|
|
8949
8949
|
* forwards audio ONLY inside a confirmed speech turn.
|
|
8950
8950
|
*
|
|
8951
|
-
* - idle -> speech needs
|
|
8952
|
-
* click, breath or keyboard tap never arms a turn
|
|
8951
|
+
* - idle -> speech needs `speechStartMs` of voiced energy inside the last
|
|
8952
|
+
* `speechWindowMs`, so a click, breath or keyboard tap never arms a turn,
|
|
8953
|
+
* while a quiet frame inside a short word does not throw the onset away;
|
|
8953
8954
|
* - on open it fires `onSpeechStart` (barge-in: stop assistant TTS), then
|
|
8954
8955
|
* flushes `preRollMs` of buffered audio so the first word is not clipped;
|
|
8955
8956
|
* - while speaking it forwards every frame, including short pauses;
|
|
@@ -8965,8 +8966,18 @@
|
|
|
8965
8966
|
// RMS energy (0..1) at/above which a frame counts as voiced. Speech is
|
|
8966
8967
|
// typically 0.05-0.3; quiet room tone sits well under 0.02.
|
|
8967
8968
|
energyThreshold: 0.025,
|
|
8968
|
-
//
|
|
8969
|
-
|
|
8969
|
+
// Voiced audio (ms) inside `speechWindowMs` required to OPEN a turn -
|
|
8970
|
+
// rejects coughs/clicks. EV-4952: this was 200 ms of strictly continuous
|
|
8971
|
+
// voiced frames, and on dev (4 Nov 2026) short answers like "yes" and
|
|
8972
|
+
// "hello" often never opened the gate: at 8 ms frames one quiet frame
|
|
8973
|
+
// between syllables reset the run, so the caller had to repeat themselves.
|
|
8974
|
+
speechStartMs: 120,
|
|
8975
|
+
// Sliding window (ms) the voiced audio above is counted over.
|
|
8976
|
+
speechWindowMs: 200,
|
|
8977
|
+
// Continuous quiet (ms) that abandons a half-built onset. A dip shorter
|
|
8978
|
+
// than this (a plosive, the gap inside "hel-lo") is tolerated; anything
|
|
8979
|
+
// longer is a real pause, so isolated pops cannot add up over time.
|
|
8980
|
+
onsetGapMs: 40,
|
|
8970
8981
|
// Continuous silence (ms) after speech that CLOSES the turn.
|
|
8971
8982
|
hangoverMs: 1000,
|
|
8972
8983
|
// Audio (ms) preceding turn-open to retain and flush.
|
|
@@ -8998,12 +9009,18 @@
|
|
|
8998
9009
|
sampleRate: config.sampleRate,
|
|
8999
9010
|
energyThreshold: pick(config.energyThreshold, DEFAULT_SPEECH_GATE_CONFIG.energyThreshold),
|
|
9000
9011
|
speechStartMs: pick(config.speechStartMs, DEFAULT_SPEECH_GATE_CONFIG.speechStartMs),
|
|
9012
|
+
speechWindowMs: pick(config.speechWindowMs, DEFAULT_SPEECH_GATE_CONFIG.speechWindowMs),
|
|
9013
|
+
onsetGapMs: pick(config.onsetGapMs, DEFAULT_SPEECH_GATE_CONFIG.onsetGapMs),
|
|
9001
9014
|
hangoverMs: pick(config.hangoverMs, DEFAULT_SPEECH_GATE_CONFIG.hangoverMs),
|
|
9002
9015
|
preRollMs: pick(config.preRollMs, DEFAULT_SPEECH_GATE_CONFIG.preRollMs)
|
|
9003
9016
|
};
|
|
9004
9017
|
let speaking = false;
|
|
9005
|
-
// While idle:
|
|
9006
|
-
|
|
9018
|
+
// While idle: recent frames ({ durationMs, voiced }) covering the last
|
|
9019
|
+
// `speechWindowMs`, with their voiced total, plus the current quiet run.
|
|
9020
|
+
let onset = [];
|
|
9021
|
+
let onsetMs = 0;
|
|
9022
|
+
let voicedMs = 0;
|
|
9023
|
+
let quietRunMs = 0;
|
|
9007
9024
|
// While speaking: how much consecutive silence has been seen (to close).
|
|
9008
9025
|
let silenceRunMs = 0;
|
|
9009
9026
|
// Ring of recent frames kept only while idle, for pre-roll on open.
|
|
@@ -9014,9 +9031,15 @@
|
|
|
9014
9031
|
const frameDurationMs = function (pcm) {
|
|
9015
9032
|
return pcm.byteLength / 2 / cfg.sampleRate * 1000;
|
|
9016
9033
|
};
|
|
9034
|
+
const clearOnset = function () {
|
|
9035
|
+
onset = [];
|
|
9036
|
+
onsetMs = 0;
|
|
9037
|
+
voicedMs = 0;
|
|
9038
|
+
quietRunMs = 0;
|
|
9039
|
+
};
|
|
9017
9040
|
const reset = function () {
|
|
9018
9041
|
speaking = false;
|
|
9019
|
-
|
|
9042
|
+
clearOnset();
|
|
9020
9043
|
silenceRunMs = 0;
|
|
9021
9044
|
preRoll = [];
|
|
9022
9045
|
preRollMsBuffered = 0;
|
|
@@ -9036,22 +9059,35 @@
|
|
|
9036
9059
|
const dropped = preRoll.shift();
|
|
9037
9060
|
preRollMsBuffered -= dropped ? dropped.durationMs : 0;
|
|
9038
9061
|
}
|
|
9062
|
+
onset.push({
|
|
9063
|
+
durationMs: durationMs,
|
|
9064
|
+
voiced: voiced
|
|
9065
|
+
});
|
|
9066
|
+
onsetMs += durationMs;
|
|
9067
|
+
if (voiced) voicedMs += durationMs;
|
|
9068
|
+
while (onsetMs > cfg.speechWindowMs && onset.length > 1) {
|
|
9069
|
+
const old = onset.shift();
|
|
9070
|
+
onsetMs -= old.durationMs;
|
|
9071
|
+
if (old.voiced) voicedMs -= old.durationMs;
|
|
9072
|
+
}
|
|
9039
9073
|
if (voiced) {
|
|
9040
|
-
|
|
9041
|
-
if (
|
|
9074
|
+
quietRunMs = 0;
|
|
9075
|
+
if (voicedMs >= cfg.speechStartMs) {
|
|
9042
9076
|
// Confirmed speech: open the turn. onSpeechStart first so the
|
|
9043
9077
|
// caller can barge in, then flush the pre-roll and go live.
|
|
9044
9078
|
speaking = true;
|
|
9045
9079
|
silenceRunMs = 0;
|
|
9080
|
+
clearOnset();
|
|
9046
9081
|
if (typeof callbacks.onSpeechStart === 'function') callbacks.onSpeechStart();
|
|
9047
9082
|
for (let i = 0; i < preRoll.length; i += 1) callbacks.onVoiceFrame(preRoll[i].pcm);
|
|
9048
9083
|
preRoll = [];
|
|
9049
9084
|
preRollMsBuffered = 0;
|
|
9050
9085
|
}
|
|
9051
9086
|
} else {
|
|
9052
|
-
//
|
|
9053
|
-
// transient cannot accumulate its way over the threshold.
|
|
9054
|
-
|
|
9087
|
+
// A brief dip is tolerated; a real pause abandons the onset so a
|
|
9088
|
+
// stray transient cannot accumulate its way over the threshold.
|
|
9089
|
+
quietRunMs += durationMs;
|
|
9090
|
+
if (quietRunMs >= cfg.onsetGapMs) clearOnset();
|
|
9055
9091
|
}
|
|
9056
9092
|
return;
|
|
9057
9093
|
}
|
|
@@ -9065,7 +9101,7 @@
|
|
|
9065
9101
|
silenceRunMs += durationMs;
|
|
9066
9102
|
if (silenceRunMs >= cfg.hangoverMs) {
|
|
9067
9103
|
speaking = false;
|
|
9068
|
-
|
|
9104
|
+
clearOnset();
|
|
9069
9105
|
silenceRunMs = 0;
|
|
9070
9106
|
callbacks.onSpeechEnd();
|
|
9071
9107
|
}
|
|
@@ -9246,6 +9282,10 @@
|
|
|
9246
9282
|
// EV-4048: system line when a human agent first replies. {name} is
|
|
9247
9283
|
// substituted at the call site.
|
|
9248
9284
|
agentJoinedConversation: "{name} has joined the conversation",
|
|
9285
|
+
// EV-4956: the widget's sign that the AI passed the conversation to a person:
|
|
9286
|
+
// a line in the transcript, and the header's status while the team owns it.
|
|
9287
|
+
handedOffToTeam: "Your conversation has been passed to our team",
|
|
9288
|
+
handedOffStatus: "Our team will reply here",
|
|
9249
9289
|
// EV-4233: launcher channel picker.
|
|
9250
9290
|
chatHere: "Chat here",
|
|
9251
9291
|
chooseChannel: "Choose how to chat",
|
|
@@ -9324,6 +9364,8 @@
|
|
|
9324
9364
|
en: EN,
|
|
9325
9365
|
ar: {
|
|
9326
9366
|
agentJoinedConversation: "انضم {name} إلى المحادثة",
|
|
9367
|
+
handedOffToTeam: "تم تحويل محادثتك إلى فريقنا",
|
|
9368
|
+
handedOffStatus: "سيرد فريقنا هنا",
|
|
9327
9369
|
chatHere: "الدردشة هنا",
|
|
9328
9370
|
chooseChannel: "اختر طريقة الدردشة",
|
|
9329
9371
|
connectionError: "عذرًا، أواجه مشكلة في الاتصال حاليًا. يرجى المحاولة مرة أخرى.",
|
|
@@ -9381,6 +9423,8 @@
|
|
|
9381
9423
|
},
|
|
9382
9424
|
es: {
|
|
9383
9425
|
agentJoinedConversation: "{name} se ha unido a la conversación",
|
|
9426
|
+
handedOffToTeam: "Tu conversación se ha pasado a nuestro equipo",
|
|
9427
|
+
handedOffStatus: "Nuestro equipo responderá aquí",
|
|
9384
9428
|
connectionError: "Lo sentimos, estoy teniendo problemas de conexión en este momento. Inténtalo de nuevo.",
|
|
9385
9429
|
micDenied: "No pudimos acceder a tu micrófono. Permite el acceso e inténtalo de nuevo.",
|
|
9386
9430
|
micNotFound: "No se encontró ningún micrófono. Conecta uno e inténtalo de nuevo.",
|
|
@@ -9634,6 +9678,8 @@
|
|
|
9634
9678
|
},
|
|
9635
9679
|
zh: {
|
|
9636
9680
|
agentJoinedConversation: "{name} 已加入对话",
|
|
9681
|
+
handedOffToTeam: "您的对话已转交给我们的团队",
|
|
9682
|
+
handedOffStatus: "我们的团队将在此回复",
|
|
9637
9683
|
connectionError: "抱歉,我现在连接遇到问题。请重试。",
|
|
9638
9684
|
micDenied: "无法访问您的麦克风。请允许访问后重试。",
|
|
9639
9685
|
micNotFound: "未检测到麦克风。请连接麦克风后重试。",
|
|
@@ -9803,6 +9849,8 @@
|
|
|
9803
9849
|
},
|
|
9804
9850
|
nl: {
|
|
9805
9851
|
agentJoinedConversation: "{name} neemt deel aan het gesprek",
|
|
9852
|
+
handedOffToTeam: "Uw gesprek is doorgegeven aan ons team",
|
|
9853
|
+
handedOffStatus: "Ons team reageert hier",
|
|
9806
9854
|
connectionError: "Sorry, ik heb momenteel verbindingsproblemen. Probeer het opnieuw.",
|
|
9807
9855
|
micDenied: "We konden geen toegang krijgen tot je microfoon. Geef toegang en probeer het opnieuw.",
|
|
9808
9856
|
micNotFound: "Geen microfoon gevonden. Sluit een microfoon aan en probeer het opnieuw.",
|
|
@@ -9930,6 +9978,8 @@
|
|
|
9930
9978
|
},
|
|
9931
9979
|
fr: {
|
|
9932
9980
|
agentJoinedConversation: "{name} a rejoint la conversation",
|
|
9981
|
+
handedOffToTeam: "Votre conversation a été transmise à notre équipe",
|
|
9982
|
+
handedOffStatus: "Notre équipe vous répondra ici",
|
|
9933
9983
|
connectionError: "Désolé, je rencontre des problèmes de connexion en ce moment. Veuillez réessayer.",
|
|
9934
9984
|
micDenied: "Nous n'avons pas pu accéder à votre microphone. Autorisez l'accès et réessayez.",
|
|
9935
9985
|
micNotFound: "Aucun microphone détecté. Connectez-en un et réessayez.",
|
|
@@ -9973,6 +10023,8 @@
|
|
|
9973
10023
|
},
|
|
9974
10024
|
de: {
|
|
9975
10025
|
agentJoinedConversation: "{name} ist dem Gespräch beigetreten",
|
|
10026
|
+
handedOffToTeam: "Ihr Gespräch wurde an unser Team übergeben",
|
|
10027
|
+
handedOffStatus: "Unser Team antwortet Ihnen hier",
|
|
9976
10028
|
connectionError: "Entschuldigung, ich habe gerade Verbindungsprobleme. Bitte versuchen Sie es erneut.",
|
|
9977
10029
|
micDenied: "Wir konnten nicht auf Ihr Mikrofon zugreifen. Bitte erlauben Sie den Zugriff und versuchen Sie es erneut.",
|
|
9978
10030
|
micNotFound: "Kein Mikrofon gefunden. Bitte schließen Sie eines an und versuchen Sie es erneut.",
|
|
@@ -10314,6 +10366,8 @@
|
|
|
10314
10366
|
},
|
|
10315
10367
|
ja: {
|
|
10316
10368
|
agentJoinedConversation: "{name}が会話に参加しました",
|
|
10369
|
+
handedOffToTeam: "会話を担当チームに引き継ぎました",
|
|
10370
|
+
handedOffStatus: "担当チームがこちらで返信します",
|
|
10317
10371
|
connectionError: "申し訳ありません。現在接続に問題が発生しています。もう一度お試しください。",
|
|
10318
10372
|
micDenied: "マイクにアクセスできませんでした。アクセスを許可してもう一度お試しください。",
|
|
10319
10373
|
micNotFound: "マイクが見つかりません。マイクを接続してもう一度お試しください。",
|
|
@@ -10819,6 +10873,8 @@
|
|
|
10819
10873
|
},
|
|
10820
10874
|
sr: {
|
|
10821
10875
|
agentJoinedConversation: "{name} se pridružio/la razgovoru",
|
|
10876
|
+
handedOffToTeam: "Vaš razgovor je prosleđen našem timu",
|
|
10877
|
+
handedOffStatus: "Naš tim će odgovoriti ovde",
|
|
10822
10878
|
connectionError: "Izvinite, trenutno imam problema sa povezivanjem. Probajte ponovo.",
|
|
10823
10879
|
micDenied: "Nismo mogli da pristupimo vašem mikrofonu. Dozvolite pristup i probajte ponovo.",
|
|
10824
10880
|
micNotFound: "Mikrofon nije pronađen. Priključite mikrofon i probajte ponovo.",
|
|
@@ -12278,6 +12334,54 @@
|
|
|
12278
12334
|
return "voiceUnavailable";
|
|
12279
12335
|
}
|
|
12280
12336
|
|
|
12337
|
+
/**
|
|
12338
|
+
* The spoken greeting voice-runtime sends as soon as a call connects (EV-4952).
|
|
12339
|
+
*
|
|
12340
|
+
* The server sends `{"greeting": {"text": "..."}}` once, before the greeting
|
|
12341
|
+
* audio, then the audio frames as usual, then `turnComplete`. Until now the
|
|
12342
|
+
* widget dropped every bot reply before the user had spoken, so on the dev
|
|
12343
|
+
* call UR-0016 (Aurelia org org_1793698095653_c341070ff1, 4 Nov 2026) the
|
|
12344
|
+
* caller sat in silence until they spoke first. The marker is what lets the
|
|
12345
|
+
* client tell the greeting apart from a stray reply and play it.
|
|
12346
|
+
*
|
|
12347
|
+
* A client that never gets the marker behaves exactly as before. Mirrors
|
|
12348
|
+
* packages/frontend/src/components/chatbot-preview/voiceGreeting.ts.
|
|
12349
|
+
*/
|
|
12350
|
+
|
|
12351
|
+
/** The greeting text if the event is the greeting marker, else null. */
|
|
12352
|
+
function voiceGreetingText(event) {
|
|
12353
|
+
const text = event?.greeting?.text;
|
|
12354
|
+
if (typeof text !== "string") return null;
|
|
12355
|
+
const trimmed = text.trim();
|
|
12356
|
+
return trimmed === "" ? null : trimmed;
|
|
12357
|
+
}
|
|
12358
|
+
|
|
12359
|
+
/**
|
|
12360
|
+
* The bubbles after the greeting arrives.
|
|
12361
|
+
*
|
|
12362
|
+
* - The static welcome this call added (`welcomeId`) is replaced by the
|
|
12363
|
+
* greeting, so the call does not show both.
|
|
12364
|
+
* - A bubble already on screen with the same text (a welcome shown before the
|
|
12365
|
+
* call started, in either list) is kept and no duplicate is added.
|
|
12366
|
+
* - Otherwise the greeting is appended as the bot's bubble.
|
|
12367
|
+
*/
|
|
12368
|
+
function applyVoiceGreeting(prev, text, welcomeId, others, makeBubble) {
|
|
12369
|
+
if (welcomeId) {
|
|
12370
|
+
const at = prev.findIndex(m => m.id === welcomeId);
|
|
12371
|
+
if (at >= 0) {
|
|
12372
|
+
const next = [...prev];
|
|
12373
|
+
next[at] = {
|
|
12374
|
+
...next[at],
|
|
12375
|
+
content: text
|
|
12376
|
+
};
|
|
12377
|
+
return next;
|
|
12378
|
+
}
|
|
12379
|
+
}
|
|
12380
|
+
const shown = [...prev, ...(others || [])].some(m => m.role === "assistant" && typeof m.content === "string" && m.content.trim() === text);
|
|
12381
|
+
if (shown) return prev;
|
|
12382
|
+
return [...prev, makeBubble(text)];
|
|
12383
|
+
}
|
|
12384
|
+
|
|
12281
12385
|
/**
|
|
12282
12386
|
* Replies the widget never streamed itself.
|
|
12283
12387
|
*
|
|
@@ -12559,6 +12663,14 @@
|
|
|
12559
12663
|
// Persisting it would cause a duplicate-welcome render on reload because the
|
|
12560
12664
|
// stored copy lacks the `isWelcome` flag (sanitize would strip it) and gets
|
|
12561
12665
|
// rendered as a regular assistant message alongside the freshly-added one.
|
|
12666
|
+
// The metadata fields worth keeping across a reload; null when there are none.
|
|
12667
|
+
function storedMetadata(metadata) {
|
|
12668
|
+
if (!metadata || typeof metadata !== 'object') return null;
|
|
12669
|
+
const kept = {};
|
|
12670
|
+
if (typeof metadata.senderName === 'string' && metadata.senderName) kept.senderName = metadata.senderName;
|
|
12671
|
+
if (typeof metadata.contentType === 'string' && metadata.contentType) kept.contentType = metadata.contentType;
|
|
12672
|
+
return Object.keys(kept).length > 0 ? kept : null;
|
|
12673
|
+
}
|
|
12562
12674
|
function sanitizeMessagesForStorage(messages) {
|
|
12563
12675
|
if (!Array.isArray(messages)) return [];
|
|
12564
12676
|
return messages.filter(m => m && !m.isWelcome && (m.content || Array.isArray(m.sources) && m.sources.length > 0 || Array.isArray(m.attachments) && m.attachments.length > 0)).map(m => ({
|
|
@@ -12576,6 +12688,13 @@
|
|
|
12576
12688
|
...(Array.isArray(m.prompts) && m.prompts.length > 0 ? {
|
|
12577
12689
|
prompts: m.prompts
|
|
12578
12690
|
} : {}),
|
|
12691
|
+
// EV-4956: who sent a server-side message and whether it is a platform
|
|
12692
|
+
// line. Dropped before, so after a reload a person's reply lost its
|
|
12693
|
+
// name and a holding line went back to looking like an AI reply (the
|
|
12694
|
+
// server merge skips ids already restored from here).
|
|
12695
|
+
...(storedMetadata(m.metadata) ? {
|
|
12696
|
+
metadata: storedMetadata(m.metadata)
|
|
12697
|
+
} : {}),
|
|
12579
12698
|
// 2026-07-02 - persist paperclip attachments so refresh restores
|
|
12580
12699
|
// the chip stack above the user's text bubble. Copy only the
|
|
12581
12700
|
// wire-shape fields the widget renders from; no chunk content
|
|
@@ -12885,6 +13004,17 @@
|
|
|
12885
13004
|
return [String(content ?? '').trim(), ...links].filter(Boolean).join('\n\n');
|
|
12886
13005
|
};
|
|
12887
13006
|
|
|
13007
|
+
// EV-4956: what the widget keeps about a server-side message. The sender's
|
|
13008
|
+
// name (a person's reply) and, for the platform's own lines (handoff_ack,
|
|
13009
|
+
// handoff_wait), the content type, so MessageList can show those as system
|
|
13010
|
+
// lines instead of in the AI's bubble.
|
|
13011
|
+
const agentMessageMetadata = m => ({
|
|
13012
|
+
senderName: m?.senderName,
|
|
13013
|
+
...(typeof m?.contentType === 'string' && m.contentType ? {
|
|
13014
|
+
contentType: m.contentType
|
|
13015
|
+
} : {})
|
|
13016
|
+
});
|
|
13017
|
+
|
|
12888
13018
|
// 2026-07-06 - accept and preserve `attachments` on the returned
|
|
12889
13019
|
// message object. Historically createMessage's destructure omitted
|
|
12890
13020
|
// this field, so callers who spread `{...(attachmentsPayload.length
|
|
@@ -13190,10 +13320,25 @@
|
|
|
13190
13320
|
reactExports.useEffect(() => {
|
|
13191
13321
|
messagesNowRef.current = messages;
|
|
13192
13322
|
}, [messages]);
|
|
13323
|
+
// EV-4956: where the conversation passed to the team, as the ids of the
|
|
13324
|
+
// messages the hand-off came after. MessageList shows a "passed to our
|
|
13325
|
+
// team" line there, so the customer can see they are now waiting for a
|
|
13326
|
+
// person and not the AI.
|
|
13327
|
+
const [handoffPoints, setHandoffPoints] = reactExports.useState([]);
|
|
13193
13328
|
const isHandedOffRef = reactExports.useRef(false);
|
|
13194
|
-
|
|
13329
|
+
// recordPoint: false when the hand-off is read back from history on a
|
|
13330
|
+
// reload; the point it happened at is not known then, so no line is drawn.
|
|
13331
|
+
const markHandedOff = reactExports.useCallback(({
|
|
13332
|
+
recordPoint = true
|
|
13333
|
+
} = {}) => {
|
|
13334
|
+
const wasHandedOff = isHandedOffRef.current;
|
|
13195
13335
|
isHandedOffRef.current = true;
|
|
13196
13336
|
setIsHandedOff(true);
|
|
13337
|
+
if (wasHandedOff || !recordPoint) return;
|
|
13338
|
+
const now = messagesNowRef.current || [];
|
|
13339
|
+
const afterMessageId = now.length > 0 ? now[now.length - 1].id : null;
|
|
13340
|
+
if (!afterMessageId) return;
|
|
13341
|
+
setHandoffPoints(points => points.includes(afterMessageId) ? points : [...points, afterMessageId]);
|
|
13197
13342
|
}, []);
|
|
13198
13343
|
// The AI owns the conversation again: a Skill replied to an Instruct Skill.
|
|
13199
13344
|
// Left handed off, the customer's next message was sent and the AI's
|
|
@@ -13267,6 +13412,14 @@
|
|
|
13267
13412
|
const lastProcessedAssistantContentRef = reactExports.useRef(null); // Track last processed content to prevent duplicates
|
|
13268
13413
|
const userHasSpokenRef = reactExports.useRef(false); // Track if user has sent first message - prevents automatic greetings
|
|
13269
13414
|
const turnHasTranscriptionRef = reactExports.useRef(false); // True when outputTranscription received this turn - skip content.parts text
|
|
13415
|
+
// EV-4952: true from the server's greeting marker until its turnComplete
|
|
13416
|
+
// (or a barge-in), so the greeting audio plays before the user has spoken.
|
|
13417
|
+
const greetingActiveRef = reactExports.useRef(false);
|
|
13418
|
+
const voiceWelcomeIdRef = reactExports.useRef(null); // the static welcome bubble this voice call added, if any
|
|
13419
|
+
// The text-mode bubbles, read by the greeting de-dup without re-binding the
|
|
13420
|
+
// socket handler on every message.
|
|
13421
|
+
const voiceTextMessagesRef = reactExports.useRef(messages);
|
|
13422
|
+
voiceTextMessagesRef.current = messages;
|
|
13270
13423
|
const stopVoiceSessionRef = reactExports.useRef(null); // Ref to avoid referencing stopVoiceSession before it is defined in handleBidiEvent
|
|
13271
13424
|
const pendingVoiceSourcesRef = reactExports.useRef(null); // Hold sources until the assistant bubble for this turn exists
|
|
13272
13425
|
// Anonymous browser fingerprint from @eshal-tracker/sdk. Resolved
|
|
@@ -13308,9 +13461,7 @@
|
|
|
13308
13461
|
role: m.role || 'assistant',
|
|
13309
13462
|
content: withAgentAttachmentLinks(m.content, m.attachments),
|
|
13310
13463
|
isProcessing: false,
|
|
13311
|
-
metadata:
|
|
13312
|
-
senderName: m.senderName
|
|
13313
|
-
}
|
|
13464
|
+
metadata: agentMessageMetadata(m)
|
|
13314
13465
|
}),
|
|
13315
13466
|
timestamp: m.createdAt ? new Date(m.createdAt) : new Date()
|
|
13316
13467
|
}));
|
|
@@ -13437,9 +13588,7 @@
|
|
|
13437
13588
|
role: data.message.role || 'assistant',
|
|
13438
13589
|
content: withAgentAttachmentLinks(data.message.content, data.message.attachments),
|
|
13439
13590
|
isProcessing: false,
|
|
13440
|
-
metadata:
|
|
13441
|
-
senderName: data.message.senderName
|
|
13442
|
-
}
|
|
13591
|
+
metadata: agentMessageMetadata(data.message)
|
|
13443
13592
|
})];
|
|
13444
13593
|
});
|
|
13445
13594
|
}
|
|
@@ -13729,7 +13878,10 @@
|
|
|
13729
13878
|
// (not merely the presence of past agent messages) means a reopened
|
|
13730
13879
|
// conversation (responder back to 'ai') is AI-handled again.
|
|
13731
13880
|
if (!cancelled && data?.responder === 'human') {
|
|
13732
|
-
|
|
13881
|
+
// EV-4956: read back on a reload, so where it happened is unknown.
|
|
13882
|
+
markHandedOff({
|
|
13883
|
+
recordPoint: false
|
|
13884
|
+
});
|
|
13733
13885
|
startHandoffEventSource();
|
|
13734
13886
|
}
|
|
13735
13887
|
} catch {
|
|
@@ -14998,6 +15150,7 @@
|
|
|
14998
15150
|
currentAssistantMessageIdRef.current = null;
|
|
14999
15151
|
currentInputMessageIdRef.current = null;
|
|
15000
15152
|
turnHasTranscriptionRef.current = false; // reset for next turn
|
|
15153
|
+
greetingActiveRef.current = false; // the greeting turn, if any, is over
|
|
15001
15154
|
pendingVoiceSourcesRef.current = null;
|
|
15002
15155
|
}, []);
|
|
15003
15156
|
const handleInterrupted = reactExports.useCallback(() => {
|
|
@@ -15009,6 +15162,7 @@
|
|
|
15009
15162
|
}
|
|
15010
15163
|
currentAssistantMessageIdRef.current = null;
|
|
15011
15164
|
currentInputMessageIdRef.current = null;
|
|
15165
|
+
greetingActiveRef.current = false; // a barge-in over the greeting ends it
|
|
15012
15166
|
pendingVoiceSourcesRef.current = null;
|
|
15013
15167
|
setBidiMessages(prev => prev.map(message => message.metadata?.source === "bidi" ? {
|
|
15014
15168
|
...message,
|
|
@@ -15226,6 +15380,35 @@
|
|
|
15226
15380
|
return;
|
|
15227
15381
|
}
|
|
15228
15382
|
|
|
15383
|
+
// EV-4952: voice-runtime greets the caller as soon as the call connects
|
|
15384
|
+
// and marks it with {"greeting": {"text"}} before the audio. Show the
|
|
15385
|
+
// text as the bot's bubble now (replacing this call's static welcome,
|
|
15386
|
+
// never duplicating one already on screen) and let the audio that
|
|
15387
|
+
// follows play until turnComplete, even though the user has not spoken.
|
|
15388
|
+
const greetingText = voiceGreetingText(event);
|
|
15389
|
+
if (greetingText) {
|
|
15390
|
+
greetingActiveRef.current = true;
|
|
15391
|
+
setBidiMessages(prev => applyVoiceGreeting(prev, greetingText, voiceWelcomeIdRef.current, voiceTextMessagesRef.current, text => createMessage({
|
|
15392
|
+
id: `bidi-greeting-${Date.now()}`,
|
|
15393
|
+
role: "assistant",
|
|
15394
|
+
content: text,
|
|
15395
|
+
metadata: {
|
|
15396
|
+
source: "bidi"
|
|
15397
|
+
}
|
|
15398
|
+
})));
|
|
15399
|
+
return;
|
|
15400
|
+
}
|
|
15401
|
+
if (greetingActiveRef.current && !userHasSpokenRef.current) {
|
|
15402
|
+
// The greeting's text is already on screen: play its audio only.
|
|
15403
|
+
if (event.content?.parts) {
|
|
15404
|
+
handleContentParts(event.content.parts, Boolean(event.content?.finished || event.finished), true);
|
|
15405
|
+
}
|
|
15406
|
+
if (event.turnComplete) {
|
|
15407
|
+
handleTurnComplete();
|
|
15408
|
+
}
|
|
15409
|
+
return;
|
|
15410
|
+
}
|
|
15411
|
+
|
|
15229
15412
|
// CRITICAL: Ignore assistant responses until user has spoken
|
|
15230
15413
|
// This prevents automatic greetings from appearing before user's first message
|
|
15231
15414
|
if (!userHasSpokenRef.current) {
|
|
@@ -15523,6 +15706,8 @@
|
|
|
15523
15706
|
|
|
15524
15707
|
// Reset userHasSpoken flag when starting new session
|
|
15525
15708
|
userHasSpokenRef.current = false;
|
|
15709
|
+
greetingActiveRef.current = false;
|
|
15710
|
+
voiceWelcomeIdRef.current = null;
|
|
15526
15711
|
setBidiMessages(prev => {
|
|
15527
15712
|
// Don't add welcome message if there are already any messages (either bidi or text)
|
|
15528
15713
|
// This prevents showing welcome message when turning voice on again after a conversation
|
|
@@ -15543,6 +15728,8 @@
|
|
|
15543
15728
|
source: "bidi"
|
|
15544
15729
|
}
|
|
15545
15730
|
});
|
|
15731
|
+
// Remembered so a spoken greeting (EV-4952) replaces it, not doubles it.
|
|
15732
|
+
voiceWelcomeIdRef.current = welcomeMsg.id;
|
|
15546
15733
|
return [welcomeMsg];
|
|
15547
15734
|
});
|
|
15548
15735
|
connectWebsocket();
|
|
@@ -15661,6 +15848,7 @@
|
|
|
15661
15848
|
// The rating request belonged to the conversation being left.
|
|
15662
15849
|
setCsatRequest(null);
|
|
15663
15850
|
setLiveJoined([]);
|
|
15851
|
+
setHandoffPoints([]);
|
|
15664
15852
|
|
|
15665
15853
|
// Drop the localStorage transcript for the conversation we're abandoning
|
|
15666
15854
|
// BEFORE we rotate to a fresh sessionId, otherwise the old bucket leaks.
|
|
@@ -15910,6 +16098,10 @@
|
|
|
15910
16098
|
sessionExpiringSoon,
|
|
15911
16099
|
resetConversation,
|
|
15912
16100
|
updateMessageFeedback,
|
|
16101
|
+
// EV-4956: whether the team owns the conversation (header status), and
|
|
16102
|
+
// the messages a hand-off came after (the "passed to our team" line).
|
|
16103
|
+
isHandedOff,
|
|
16104
|
+
handoffPoints,
|
|
15913
16105
|
// Rating request from the Inbox (null when none is open).
|
|
15914
16106
|
csatRequest,
|
|
15915
16107
|
// EV-4803: agents who joined live, for the "has joined" line.
|
|
@@ -16508,6 +16700,12 @@
|
|
|
16508
16700
|
* a fence is. Shared by the frontend (Inbox, Testing lab), the widget and
|
|
16509
16701
|
* the agent-sdk.
|
|
16510
16702
|
*
|
|
16703
|
+
* EV-4953: a card the reader sees as text (a card, a confirmation, an alert)
|
|
16704
|
+
* is copied as that text, its title and body, instead of being dropped, so a
|
|
16705
|
+
* customer copying a quote gets the quote. Its buttons, choices, values and
|
|
16706
|
+
* variants are still left out, and every other fence (charts, button groups,
|
|
16707
|
+
* forms, a spec that does not parse) is removed as before.
|
|
16708
|
+
*
|
|
16511
16709
|
* Plain JavaScript (types in clipboardText.d.ts), conservative syntax: the
|
|
16512
16710
|
* widget's Rollup/Babel build compiles neither TypeScript nor this file.
|
|
16513
16711
|
*/
|
|
@@ -16516,15 +16714,70 @@
|
|
|
16516
16714
|
function a2uiFenceRe() {
|
|
16517
16715
|
return /```[ \t]*(?:eshal-ui|eshal-chart|chart)\b[ \t]*\r?\n([\s\S]*?)```/g;
|
|
16518
16716
|
}
|
|
16717
|
+
|
|
16718
|
+
// The spec types whose words are shown as text: title and body.
|
|
16719
|
+
const READABLE_TYPES = ['card', 'confirmation', 'alert'];
|
|
16720
|
+
|
|
16721
|
+
// Same normalisation as a2ui.js normalizeA2uiType, kept local because the
|
|
16722
|
+
// chat core's files import nothing but each other by letter-only names.
|
|
16723
|
+
function specType(type) {
|
|
16724
|
+
return String(type || '').trim().toLowerCase().replace(/_/g, '-');
|
|
16725
|
+
}
|
|
16726
|
+
function trimmedText(value) {
|
|
16727
|
+
if (typeof value === 'string') return value.trim();
|
|
16728
|
+
if (typeof value === 'number' && isFinite(value)) return String(value);
|
|
16729
|
+
return '';
|
|
16730
|
+
}
|
|
16731
|
+
|
|
16732
|
+
// A card's detail row as it reads on screen, "Label: value".
|
|
16733
|
+
function fieldLine(field) {
|
|
16734
|
+
if (!field || typeof field !== 'object') return '';
|
|
16735
|
+
const value = trimmedText(field.value);
|
|
16736
|
+
if (!value) return '';
|
|
16737
|
+
const label = trimmedText(field.label);
|
|
16738
|
+
return label ? label + ': ' + value : value;
|
|
16739
|
+
}
|
|
16740
|
+
|
|
16741
|
+
/**
|
|
16742
|
+
* The words a reader sees on one eshal-ui spec: the title, the body and, on a
|
|
16743
|
+
* card, its label/value rows. '' for a spec that shows no text of its own or
|
|
16744
|
+
* cannot be read.
|
|
16745
|
+
*/
|
|
16746
|
+
function a2uiSpecText(json) {
|
|
16747
|
+
let spec;
|
|
16748
|
+
try {
|
|
16749
|
+
spec = JSON.parse(json);
|
|
16750
|
+
} catch (e) {
|
|
16751
|
+
return '';
|
|
16752
|
+
}
|
|
16753
|
+
if (!spec || typeof spec !== 'object' || Array.isArray(spec)) return '';
|
|
16754
|
+
const type = specType(spec.type);
|
|
16755
|
+
if (READABLE_TYPES.indexOf(type) < 0) return '';
|
|
16756
|
+
const lines = [];
|
|
16757
|
+
const title = trimmedText(spec.title);
|
|
16758
|
+
const body = trimmedText(spec.body);
|
|
16759
|
+
if (title) lines.push(title);
|
|
16760
|
+
if (body) lines.push(body);
|
|
16761
|
+
if (type === 'card' && Array.isArray(spec.fields)) {
|
|
16762
|
+
for (let i = 0; i < spec.fields.length; i++) {
|
|
16763
|
+
const line = fieldLine(spec.fields[i]);
|
|
16764
|
+
if (line) lines.push(line);
|
|
16765
|
+
}
|
|
16766
|
+
}
|
|
16767
|
+
return lines.join('\n');
|
|
16768
|
+
}
|
|
16519
16769
|
function stripA2uiFences(text) {
|
|
16520
16770
|
if (!text || !A2UI_FENCE_TAGS.test(text)) return text;
|
|
16521
|
-
return text.replace(a2uiFenceRe(),
|
|
16771
|
+
return text.replace(a2uiFenceRe(), function (_fence, spec) {
|
|
16772
|
+
return a2uiSpecText(spec);
|
|
16773
|
+
}).replace(/\n{3,}/g, '\n\n').trim();
|
|
16522
16774
|
}
|
|
16523
16775
|
|
|
16524
16776
|
/**
|
|
16525
16777
|
* The whole-chat "Copy Chat" text: one "Role: words" stanza per message,
|
|
16526
|
-
* blank line between. A
|
|
16527
|
-
* left out like any
|
|
16778
|
+
* blank line between. A card is copied as its title and body (EV-4953); a
|
|
16779
|
+
* message left with no words (only buttons or a chart) is left out like any
|
|
16780
|
+
* other empty message.
|
|
16528
16781
|
*/
|
|
16529
16782
|
function formatChatForClipboard(messages, assistantName) {
|
|
16530
16783
|
if (!Array.isArray(messages)) return '';
|
|
@@ -18695,10 +18948,13 @@
|
|
|
18695
18948
|
// threaded through MessageBubble -> StreamingMarkdown -> MarkdownRenderer.
|
|
18696
18949
|
const A2uiAnsweredContext = /*#__PURE__*/reactExports.createContext(undefined);
|
|
18697
18950
|
|
|
18951
|
+
const PLATFORM_LINE_TYPES = new Set(["handoff_ack", "handoff_wait"]);
|
|
18698
18952
|
const MessageList = ({
|
|
18699
18953
|
messages = [],
|
|
18700
18954
|
// EV-4803: agents who joined live: [{ name, afterMessageId }].
|
|
18701
18955
|
liveJoined = [],
|
|
18956
|
+
// EV-4956: ids of the messages a hand-off to the team came after.
|
|
18957
|
+
handoffPoints = [],
|
|
18702
18958
|
isDark,
|
|
18703
18959
|
primaryColor,
|
|
18704
18960
|
isLoading,
|
|
@@ -18891,6 +19147,36 @@
|
|
|
18891
19147
|
},
|
|
18892
19148
|
children: translate(defaultLanguage, "agentJoinedConversation").replace("{name}", name)
|
|
18893
19149
|
}, key);
|
|
19150
|
+
// EV-4956: the system line where the AI passed the conversation to the
|
|
19151
|
+
// team, styled like the joined line so it reads as the platform's, not the AI's.
|
|
19152
|
+
const handoffAfter = reactExports.useMemo(() => new Set(handoffPoints), [handoffPoints]);
|
|
19153
|
+
// EV-4956: the platform's own lines while the customer waits for a person
|
|
19154
|
+
// (the hand-off acknowledgement, the away and holding lines) are shown as
|
|
19155
|
+
// centred system lines, without the AI's avatar and bubble.
|
|
19156
|
+
const platformLine = message => /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
19157
|
+
role: "status",
|
|
19158
|
+
"data-testid": "platform-line",
|
|
19159
|
+
dir: detectTextDirection(message.content, isRtl) ? "rtl" : "ltr",
|
|
19160
|
+
style: {
|
|
19161
|
+
textAlign: "center",
|
|
19162
|
+
fontSize: "12px",
|
|
19163
|
+
opacity: 0.7,
|
|
19164
|
+
margin: "8px 0",
|
|
19165
|
+
whiteSpace: "pre-wrap"
|
|
19166
|
+
},
|
|
19167
|
+
children: message.content
|
|
19168
|
+
});
|
|
19169
|
+
const handoffLine = key => /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
19170
|
+
role: "status",
|
|
19171
|
+
"data-testid": "handoff-line",
|
|
19172
|
+
style: {
|
|
19173
|
+
textAlign: "center",
|
|
19174
|
+
fontSize: "12px",
|
|
19175
|
+
opacity: 0.7,
|
|
19176
|
+
margin: "8px 0"
|
|
19177
|
+
},
|
|
19178
|
+
children: translate(defaultLanguage, "handedOffToTeam")
|
|
19179
|
+
}, key);
|
|
18894
19180
|
const disclaimerIsRtl = reactExports.useMemo(() => detectTextDirection(disclaimerText, isRtl), [disclaimerText, isRtl]);
|
|
18895
19181
|
return /*#__PURE__*/jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, {
|
|
18896
19182
|
children: [disclaimerEnabled && disclaimerText && disclaimerPosition === "top" && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
@@ -18939,6 +19225,7 @@
|
|
|
18939
19225
|
})
|
|
18940
19226
|
}), messages.map((message, index) => {
|
|
18941
19227
|
const humanAgent = humanAgentAnnotations.get(message.id);
|
|
19228
|
+
const isPlatformLine = message.role === "assistant" && PLATFORM_LINE_TYPES.has(message.metadata?.contentType);
|
|
18942
19229
|
return (
|
|
18943
19230
|
/*#__PURE__*/
|
|
18944
19231
|
// 2026-09-26: the turn that answered this message (if any) locks its
|
|
@@ -18955,7 +19242,7 @@
|
|
|
18955
19242
|
textAlign: isRtl ? "right" : "left"
|
|
18956
19243
|
},
|
|
18957
19244
|
children: humanAgent.name
|
|
18958
|
-
}), /*#__PURE__*/jsxRuntimeExports.jsx(MessageBubble$1, {
|
|
19245
|
+
}), isPlatformLine && platformLine(message), !isPlatformLine && /*#__PURE__*/jsxRuntimeExports.jsx(MessageBubble$1, {
|
|
18959
19246
|
message: message,
|
|
18960
19247
|
isDark: isDark,
|
|
18961
19248
|
primaryColor: primaryColor,
|
|
@@ -18993,7 +19280,7 @@
|
|
|
18993
19280
|
headerTextColor: headerTextColor,
|
|
18994
19281
|
onRetryMessage: onRetryMessage,
|
|
18995
19282
|
defaultLanguage: defaultLanguage
|
|
18996
|
-
}), (liveJoins.get(message.id) || []).map(name => joinedLine(name, `live-join-${name}`))]
|
|
19283
|
+
}), handoffAfter.has(message.id) && handoffLine(`handoff-${message.id}`), (liveJoins.get(message.id) || []).map(name => joinedLine(name, `live-join-${name}`))]
|
|
18997
19284
|
}, message.id)
|
|
18998
19285
|
);
|
|
18999
19286
|
}), (() => {
|
|
@@ -20851,18 +21138,25 @@
|
|
|
20851
21138
|
headerTextColor,
|
|
20852
21139
|
headerFontFamily,
|
|
20853
21140
|
headerFontSize,
|
|
20854
|
-
subtitle = null,
|
|
21141
|
+
subtitle: configuredSubtitle = null,
|
|
20855
21142
|
showStatus = false,
|
|
20856
21143
|
statusMode = "always",
|
|
20857
21144
|
officeHours = null,
|
|
20858
21145
|
onRefreshChat,
|
|
20859
21146
|
onCopyChat,
|
|
20860
|
-
defaultLanguage = "en"
|
|
21147
|
+
defaultLanguage = "en",
|
|
21148
|
+
// EV-4956: the team owns the conversation. The subtitle then says so, so
|
|
21149
|
+
// the header no longer looks exactly as it did while the AI was answering.
|
|
21150
|
+
isHandedOff = false
|
|
20861
21151
|
}) => {
|
|
20862
21152
|
const resolvedHeaderBg = primaryColor;
|
|
20863
21153
|
const resolvedHeaderText = headerTextColor || "#FFFFFF";
|
|
20864
21154
|
const resolvedHeaderFontFamily = headerFontFamily || fontFamily || "Inter";
|
|
20865
21155
|
const resolvedHeaderFontSize = headerFontSize || fontSize;
|
|
21156
|
+
|
|
21157
|
+
// EV-4956: while the team owns the conversation the status line below
|
|
21158
|
+
// replaces the configured subtitle.
|
|
21159
|
+
const subtitle = isHandedOff ? null : configuredSubtitle;
|
|
20866
21160
|
useGoogleFont(resolvedHeaderFontFamily);
|
|
20867
21161
|
const t = reactExports.useMemo(() => createTranslator(defaultLanguage), [defaultLanguage]);
|
|
20868
21162
|
const isRtl = isRtlLocale(defaultLanguage);
|
|
@@ -20969,7 +21263,17 @@
|
|
|
20969
21263
|
color: iconColor
|
|
20970
21264
|
},
|
|
20971
21265
|
children: conciergeName
|
|
20972
|
-
}),
|
|
21266
|
+
}), isHandedOff ? /*#__PURE__*/jsxRuntimeExports.jsx("p", {
|
|
21267
|
+
"data-testid": "handoff-status",
|
|
21268
|
+
role: "status",
|
|
21269
|
+
className: "leading-snug truncate opacity-90",
|
|
21270
|
+
style: {
|
|
21271
|
+
fontSize: "12px",
|
|
21272
|
+
color: iconColor,
|
|
21273
|
+
textAlign: isRtl ? "right" : "left"
|
|
21274
|
+
},
|
|
21275
|
+
children: t("handedOffStatus")
|
|
21276
|
+
}) : null, subtitle ? /*#__PURE__*/jsxRuntimeExports.jsx("p", {
|
|
20973
21277
|
title: subtitle,
|
|
20974
21278
|
className: "leading-snug truncate opacity-75",
|
|
20975
21279
|
dir: subtitleIsRtl ? "rtl" : "ltr",
|
|
@@ -22004,6 +22308,10 @@
|
|
|
22004
22308
|
csatRequest = null,
|
|
22005
22309
|
// EV-4803: agents who joined live: [{ name, afterMessageId }].
|
|
22006
22310
|
liveJoined = [],
|
|
22311
|
+
// EV-4956: the team owns the conversation, and the ids of the messages a
|
|
22312
|
+
// hand-off came after.
|
|
22313
|
+
isHandedOff = false,
|
|
22314
|
+
handoffPoints = [],
|
|
22007
22315
|
onPromptSuggestionClick,
|
|
22008
22316
|
onboardingEnabled = false,
|
|
22009
22317
|
onResetConversation,
|
|
@@ -22797,7 +23105,8 @@
|
|
|
22797
23105
|
officeHours: officeHours,
|
|
22798
23106
|
onRefreshChat: onRefreshChat,
|
|
22799
23107
|
onCopyChat: onCopyChat,
|
|
22800
|
-
defaultLanguage: defaultLanguage
|
|
23108
|
+
defaultLanguage: defaultLanguage,
|
|
23109
|
+
isHandedOff: isHandedOff
|
|
22801
23110
|
}), !isMinimized && filterEnabled && !showInlineFilter && !(showResolveForm && !isConversationResolved) && !(onboardingActive && !onboardingCompleted) && /*#__PURE__*/jsxRuntimeExports.jsx(CategoryTabsBar, {
|
|
22802
23111
|
categories: filterCategories,
|
|
22803
23112
|
selectedCategoryId: widgetFilter?.category || null,
|
|
@@ -22831,6 +23140,7 @@
|
|
|
22831
23140
|
}), /*#__PURE__*/jsxRuntimeExports.jsx(MessageList, {
|
|
22832
23141
|
messages: messages,
|
|
22833
23142
|
liveJoined: liveJoined,
|
|
23143
|
+
handoffPoints: handoffPoints,
|
|
22834
23144
|
isDark: isDark,
|
|
22835
23145
|
primaryColor: primaryColor,
|
|
22836
23146
|
isLoading: isLoading,
|
|
@@ -23285,7 +23595,7 @@
|
|
|
23285
23595
|
* value by its own test (that constant sat at 0.1.113 while this package was
|
|
23286
23596
|
* at 0.2.2 precisely because nothing enforced it - EV-2431).
|
|
23287
23597
|
*/
|
|
23288
|
-
const WIDGET_VERSION = '0.2.
|
|
23598
|
+
const WIDGET_VERSION = '0.2.43';
|
|
23289
23599
|
|
|
23290
23600
|
/**
|
|
23291
23601
|
* API utility functions
|
|
@@ -23707,7 +24017,9 @@
|
|
|
23707
24017
|
setWidgetFilter,
|
|
23708
24018
|
addAssistantMessage,
|
|
23709
24019
|
csatRequest,
|
|
23710
|
-
liveJoined
|
|
24020
|
+
liveJoined,
|
|
24021
|
+
isHandedOff,
|
|
24022
|
+
handoffPoints
|
|
23711
24023
|
} = useChatState(widgetConfig ? {
|
|
23712
24024
|
welcomeMessage: widgetConfig.welcomeMessage,
|
|
23713
24025
|
// Per the EV-3813 note below, this hook produces customer-facing
|
|
@@ -23930,6 +24242,8 @@
|
|
|
23930
24242
|
csatPrompt: widgetConfig.csatPrompt,
|
|
23931
24243
|
csatRequest: csatRequest,
|
|
23932
24244
|
liveJoined: liveJoined,
|
|
24245
|
+
isHandedOff: isHandedOff,
|
|
24246
|
+
handoffPoints: handoffPoints,
|
|
23933
24247
|
onboardingEnabled: widgetConfig.onboardingEnabled,
|
|
23934
24248
|
onResetConversation: resetConversation,
|
|
23935
24249
|
sessionExpiringSoon: sessionExpiringSoon,
|