@eshal-bot/chat-widget 0.1.24 → 0.1.26
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.esm.js +5 -5
- package/dist/chat-widget.js +782 -212
- package/dist/chat-widget.min.js +7 -7
- package/dist/chat-widget.umd.js +4 -4
- package/package.json +2 -2
package/dist/chat-widget.js
CHANGED
|
@@ -7869,7 +7869,7 @@
|
|
|
7869
7869
|
m$1.hydrateRoot;
|
|
7870
7870
|
}
|
|
7871
7871
|
|
|
7872
|
-
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:#2563eb;--cw-primary-hover:#1d4ed8;-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}.\\!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 .pointer-events-none{pointer-events:none}#chat-widget-root .visible{visibility:visible}#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 .inset-0{inset:0}#chat-widget-root .-right-1{right:-.25rem}#chat-widget-root .-top-1{top:-.25rem}#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-5{left:1.25rem}#chat-widget-root .right-0{right:0}#chat-widget-root .right-5{right:1.25rem}#chat-widget-root .top-1\\/2{top:50%}#chat-widget-root .top-5{top:1.25rem}#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-\\[999999\\]{z-index:999999}#chat-widget-root .m-0{margin:0}#chat-widget-root .-mx-1{margin-left:-.25rem;margin-right:-.25rem}#chat-widget-root .my-3{margin-bottom:.75rem;margin-top:.75rem}#chat-widget-root .my-4{margin-bottom:1rem;margin-top:1rem}#chat-widget-root .-mb-px{margin-bottom:-1px}#chat-widget-root .mb-1{margin-bottom:.25rem}#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-0\\.5{margin-left:.125rem}#chat-widget-root .ml-1{margin-left:.25rem}#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 .hidden{display:none}#chat-widget-root .h-1\\.5{height:.375rem}#chat-widget-root .h-10{height:2.5rem}#chat-widget-root .h-12{height:3rem}#chat-widget-root .h-14{height:3.5rem}#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-7{height:1.75rem}#chat-widget-root .h-8{height:2rem}#chat-widget-root .h-\\[48px\\]{height:48px}#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-14{width:3.5rem}#chat-widget-root .w-16{width:4rem}#chat-widget-root .w-2{width:.5rem}#chat-widget-root .w-3\\.5{width:.875rem}#chat-widget-root .w-4{width:1rem}#chat-widget-root .w-5{width:1.25rem}#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-\\[48px\\]{width:48px}#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-\\[85\\%\\]{max-width:85%}#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{flex-shrink:0}#chat-widget-root .border-collapse{border-collapse:collapse}#chat-widget-root .-translate-y-1\\/2{--tw-translate-y:-50%}#chat-widget-root .-translate-y-1\\/2,#chat-widget-root .rotate-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 .rotate-0{--tw-rotate:0deg}#chat-widget-root .scale-0{--tw-scale-x:0;--tw-scale-y:0}#chat-widget-root .scale-0,#chat-widget-root .scale-100{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-100{--tw-scale-x:1;--tw-scale-y:1}#chat-widget-root .scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1}#chat-widget-root .scale-110,#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-not-allowed{cursor:not-allowed}#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-center{justify-content:center}#chat-widget-root .justify-between{justify-content:space-between}#chat-widget-root .gap-0{gap:0}#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-6{gap:1.5rem}#chat-widget-root :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}#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-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(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-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-normal{white-space:normal}#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 .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-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-2{border-width:2px}#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-red-500{--tw-border-opacity:1!important;border-color:rgb(239 68 68/var(--tw-border-opacity,1))!important}#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\\/50{border-color:rgba(229,231,235,.5)}#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-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}#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-100\\/80{background-color:rgba(243,244,246,.8)}#chat-widget-root .bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/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-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 .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-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}#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 .object-cover{-o-object-fit:cover;object-fit:cover}#chat-widget-root .p-0{padding:0}#chat-widget-root .p-3{padding:.75rem}#chat-widget-root .p-5{padding:1.25rem}#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-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-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-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-4{padding-left:1rem}#chat-widget-root .pl-\\[50px\\]{padding-left:50px}#chat-widget-root .ps-5{padding-inline-start:1.25rem}#chat-widget-root .pt-1{padding-top:.25rem}#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 .align-middle{vertical-align:middle}#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-\\[11px\\]{font-size:11px}#chat-widget-root .text-\\[15px\\]{font-size:15px}#chat-widget-root .text-base{font-size:1rem;line-height:1.5rem}#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 .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 .leading-tight{line-height:1.25}#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-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-500{--tw-text-opacity:1;color:rgb(239 68 68/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-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}#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 .opacity-0{opacity:0}#chat-widget-root .opacity-50{opacity:.5}#chat-widget-root .opacity-60{opacity:.6}#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-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}#chat-widget-root .shadow-none,#chat-widget-root .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#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-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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .outline-none{outline:2px solid transparent;outline-offset:2px}#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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#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 .brightness-0{--tw-brightness:brightness(0)}#chat-widget-root .brightness-0,#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 .invert{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 .invert{--tw-invert:invert(100%)}#chat-widget-root .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .backdrop-blur-sm{--tw-backdrop-blur:blur(4px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}#chat-widget-root .transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}#chat-widget-root .transition-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 .placeholder\\:text-\\[\\#8C8C8C\\]::-moz-placeholder{--tw-text-opacity:1;color:rgb(140 140 140/var(--tw-text-opacity,1))}#chat-widget-root .placeholder\\:text-\\[\\#8C8C8C\\]::placeholder{--tw-text-opacity:1;color:rgb(140 140 140/var(--tw-text-opacity,1))}#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 .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-900\\/50:hover{background-color:rgba(30,58,138,.5)}#chat-widget-root .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/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-gray-800\\/80:hover{background-color:rgba(31,41,55,.8)}#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\\: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-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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#chat-widget-root .focus\\:\\!border-red-500:focus{--tw-border-opacity:1!important;border-color:rgb(239 68 68/var(--tw-border-opacity,1))!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\\: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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#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-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\\.98\\]: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\\.98\\]:active{--tw-scale-x:0.98;--tw-scale-y:0.98}#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))}#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 .\\[\\&\\:not\\(\\:last-child\\)\\]\\:mb-2:not(:last-child){margin-bottom:.5rem}#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}";
|
|
7872
|
+
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:#2563eb;--cw-primary-hover:#1d4ed8;-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}.\\!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 .pointer-events-none{pointer-events:none}#chat-widget-root .visible{visibility:visible}#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 .inset-0{inset:0}#chat-widget-root .-right-1{right:-.25rem}#chat-widget-root .-top-1{top:-.25rem}#chat-widget-root .-top-8{top:-2rem}#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-1\\/2{top:50%}#chat-widget-root .top-5{top:1.25rem}#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-\\[999999\\]{z-index:999999}#chat-widget-root .m-0{margin:0}#chat-widget-root .mx-2{margin-left:.5rem;margin-right:.5rem}#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-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-0\\.5{margin-left:.125rem}#chat-widget-root .ml-1{margin-left:.25rem}#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 .hidden{display:none}#chat-widget-root .h-1\\.5{height:.375rem}#chat-widget-root .h-10{height:2.5rem}#chat-widget-root .h-12{height:3rem}#chat-widget-root .h-14{height:3.5rem}#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-7{height:1.75rem}#chat-widget-root .h-8{height:2rem}#chat-widget-root .h-\\[48px\\]{height:48px}#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-12{width:3rem}#chat-widget-root .w-14{width:3.5rem}#chat-widget-root .w-16{width:4rem}#chat-widget-root .w-2{width:.5rem}#chat-widget-root .w-3\\.5{width:.875rem}#chat-widget-root .w-4{width:1rem}#chat-widget-root .w-5{width:1.25rem}#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-\\[48px\\]{width:48px}#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-\\[85\\%\\]{max-width:85%}#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{flex-shrink:0}#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-0{--tw-rotate:0deg}#chat-widget-root .rotate-0,#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-not-allowed{cursor:not-allowed}#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-center{justify-content:center}#chat-widget-root .justify-between{justify-content:space-between}#chat-widget-root .gap-0{gap:0}#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-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}#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-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(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-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-normal{white-space:normal}#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 .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-2{border-width:2px}#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-red-500{--tw-border-opacity:1!important;border-color:rgb(239 68 68/var(--tw-border-opacity,1))!important}#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-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}#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-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/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-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-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-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}#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-cover{-o-object-fit:cover;object-fit:cover}#chat-widget-root .p-0{padding:0}#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-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-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-4{padding-left:1rem}#chat-widget-root .pl-\\[50px\\]{padding-left:50px}#chat-widget-root .ps-5{padding-inline-start:1.25rem}#chat-widget-root .pt-1{padding-top:.25rem}#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 .align-middle{vertical-align:middle}#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-\\[11px\\]{font-size:11px}#chat-widget-root .text-\\[15px\\]{font-size:15px}#chat-widget-root .text-base{font-size:1rem;line-height:1.5rem}#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 .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 .leading-tight{line-height:1.25}#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-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-500{--tw-text-opacity:1;color:rgb(239 68 68/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-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 .underline-offset-4{text-underline-offset:4px}#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 .opacity-0{opacity:0}#chat-widget-root .opacity-50{opacity:.5}#chat-widget-root .opacity-60{opacity:.6}#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-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}#chat-widget-root .shadow-none,#chat-widget-root .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#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-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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}#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 .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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#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 .blur{--tw-blur:blur(8px)}#chat-widget-root .blur,#chat-widget-root .brightness-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 .brightness-0{--tw-brightness:brightness(0)}#chat-widget-root .drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}#chat-widget-root .drop-shadow,#chat-widget-root .drop-shadow-md{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .drop-shadow-md{--tw-drop-shadow:drop-shadow(0 4px 3px rgba(0,0,0,.07)) drop-shadow(0 2px 2px rgba(0,0,0,.06))}#chat-widget-root .drop-shadow-sm{--tw-drop-shadow:drop-shadow(0 1px 1px rgba(0,0,0,.05))}#chat-widget-root .drop-shadow-sm,#chat-widget-root .grayscale-\\[0\\.3\\]{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#chat-widget-root .grayscale-\\[0\\.3\\]{--tw-grayscale:grayscale(0.3)}#chat-widget-root .invert{--tw-invert:invert(100%)}#chat-widget-root .filter,#chat-widget-root .invert{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 .placeholder\\:text-\\[\\#8C8C8C\\]::-moz-placeholder{--tw-text-opacity:1;color:rgb(140 140 140/var(--tw-text-opacity,1))}#chat-widget-root .placeholder\\:text-\\[\\#8C8C8C\\]::placeholder{--tw-text-opacity:1;color:rgb(140 140 140/var(--tw-text-opacity,1))}#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 .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-900\\/50:hover{background-color:rgba(30,58,138,.5)}#chat-widget-root .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}#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-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/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-red-500:focus{--tw-border-opacity:1!important;border-color:rgb(239 68 68/var(--tw-border-opacity,1))!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\\: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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}#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-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\\.98\\]: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\\.98\\]:active{--tw-scale-x:0.98;--tw-scale-y:0.98}#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))}#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 .\\[\\&\\:not\\(\\:last-child\\)\\]\\:mb-2:not(:last-child){margin-bottom:.5rem}#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}";
|
|
7873
7873
|
|
|
7874
7874
|
var css_248z = ".chat-widget-root{position:fixed;z-index:999999}.chat-widget-container{color:var(--cw-text-color,inherit);font-family:var(\r\n --cw-font-family,-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Roboto\",\"Oxygen\",\"Ubuntu\",\"Cantarell\",\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",sans-serif\r\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}@media print{.chat-widget-root{display:none!important}}";
|
|
7875
7875
|
|
|
@@ -8574,11 +8574,16 @@
|
|
|
8574
8574
|
};
|
|
8575
8575
|
|
|
8576
8576
|
/**
|
|
8577
|
-
* Constructs the WebSocket URL
|
|
8578
|
-
* @param {string} apiBaseUrl - The base URL of the API.
|
|
8579
|
-
* @
|
|
8577
|
+
* Constructs the WebSocket URL.
|
|
8578
|
+
* @param {string} apiBaseUrl - The base URL of the API (used when wsBaseUrl is not provided).
|
|
8579
|
+
* @param {string} [wsBaseUrl] - Explicit WebSocket base URL (e.g. wss://knowledge-api-prod.eshal.ai/ws).
|
|
8580
|
+
* When provided, it is returned directly without any transformation.
|
|
8581
|
+
* @returns {string} The WebSocket base URL.
|
|
8580
8582
|
*/
|
|
8581
|
-
const getWebSocketUrl = apiBaseUrl => {
|
|
8583
|
+
const getWebSocketUrl = (apiBaseUrl, wsBaseUrl) => {
|
|
8584
|
+
if (wsBaseUrl) {
|
|
8585
|
+
return wsBaseUrl.replace(/\/$/, '');
|
|
8586
|
+
}
|
|
8582
8587
|
if (!apiBaseUrl) {
|
|
8583
8588
|
// Default fallback if no API base URL is provided
|
|
8584
8589
|
return 'wss://dev.eshal.ai/knowledge-api/ws';
|
|
@@ -8770,6 +8775,23 @@
|
|
|
8770
8775
|
if (timeoutValue === undefined || timeoutValue === null || timeoutValue === 0) {
|
|
8771
8776
|
return true;
|
|
8772
8777
|
}
|
|
8778
|
+
|
|
8779
|
+
// Settings snapshot check — mirrors chatbot-preview: if timeout config changed, start a new session
|
|
8780
|
+
if (timeoutValue !== null && timeoutUnit !== null) {
|
|
8781
|
+
const currentSnapshot = JSON.stringify({
|
|
8782
|
+
value: timeoutValue,
|
|
8783
|
+
unit: timeoutUnit === null || timeoutUnit === void 0 ? void 0 : timeoutUnit.toUpperCase()
|
|
8784
|
+
});
|
|
8785
|
+
if (session.settingsSnapshot && session.settingsSnapshot !== currentSnapshot) {
|
|
8786
|
+
console.log('[Session] Timeout settings changed — treating session as invalid.');
|
|
8787
|
+
return false;
|
|
8788
|
+
}
|
|
8789
|
+
}
|
|
8790
|
+
|
|
8791
|
+
// Mirror chatbot-preview: don't count down until the user has first interacted.
|
|
8792
|
+
// null = explicitly new session (our format), user hasn't sent a message yet → always valid.
|
|
8793
|
+
// undefined = old session saved before this field existed → fall through and check by time.
|
|
8794
|
+
if (session.firstInteractionAt === null) return true;
|
|
8773
8795
|
const timeoutMs = getTimeoutMs(timeoutValue, timeoutUnit);
|
|
8774
8796
|
if (!timeoutMs) return true; // Default to valid if unit is missing but value was provided (to avoid accidental wipes)
|
|
8775
8797
|
|
|
@@ -8789,7 +8811,8 @@
|
|
|
8789
8811
|
localStorage.setItem("".concat(SESSION_KEY, "_").concat(orgId), JSON.stringify(_objectSpread2({
|
|
8790
8812
|
conversationId,
|
|
8791
8813
|
lastActivity: now,
|
|
8792
|
-
createdAt: now
|
|
8814
|
+
createdAt: now,
|
|
8815
|
+
firstInteractionAt: null
|
|
8793
8816
|
}, extra)));
|
|
8794
8817
|
} catch (_unused2) {}
|
|
8795
8818
|
};
|
|
@@ -8797,7 +8820,13 @@
|
|
|
8797
8820
|
try {
|
|
8798
8821
|
const session = getSession(orgId);
|
|
8799
8822
|
if (!session) return;
|
|
8800
|
-
|
|
8823
|
+
const now = new Date().toISOString();
|
|
8824
|
+
session.lastActivity = now;
|
|
8825
|
+
// Mirror chatbot-preview: record the first interaction time so the timeout
|
|
8826
|
+
// only starts counting from when the user actually sends their first message.
|
|
8827
|
+
if (!session.firstInteractionAt) {
|
|
8828
|
+
session.firstInteractionAt = now;
|
|
8829
|
+
}
|
|
8801
8830
|
localStorage.setItem("".concat(SESSION_KEY, "_").concat(orgId), JSON.stringify(session));
|
|
8802
8831
|
} catch (_unused3) {}
|
|
8803
8832
|
};
|
|
@@ -8872,6 +8901,7 @@
|
|
|
8872
8901
|
welcomeMessage,
|
|
8873
8902
|
quickQuestions = [],
|
|
8874
8903
|
apiBaseUrl,
|
|
8904
|
+
wsBaseUrl,
|
|
8875
8905
|
apiKey,
|
|
8876
8906
|
organizationId,
|
|
8877
8907
|
autoOpen,
|
|
@@ -8966,8 +8996,8 @@
|
|
|
8966
8996
|
const websocketUrl = reactExports.useMemo(() => {
|
|
8967
8997
|
if (!organizationId) return null;
|
|
8968
8998
|
// Construct WebSocket URL from the API base URL
|
|
8969
|
-
const
|
|
8970
|
-
return "".concat(
|
|
8999
|
+
const resolvedWsBaseUrl = getWebSocketUrl(apiBaseUrl, wsBaseUrl);
|
|
9000
|
+
return "".concat(resolvedWsBaseUrl, "/").concat(organizationId, "/").concat(bidiSessionId);
|
|
8971
9001
|
}, [apiBaseUrl, organizationId, bidiSessionId]);
|
|
8972
9002
|
const getNextMessageId = reactExports.useCallback(() => {
|
|
8973
9003
|
const id = "msg-".concat(messageIdRef.current);
|
|
@@ -8993,6 +9023,10 @@
|
|
|
8993
9023
|
const historyLoadedRef = reactExports.useRef(false); // true once fetch is initiated
|
|
8994
9024
|
const historyHasMessagesRef = reactExports.useRef(false); // true once history with messages is loaded
|
|
8995
9025
|
const inactivityInitializedRef = reactExports.useRef(false); // true after first inactivity effect run
|
|
9026
|
+
const prevTimeoutConfigRef = reactExports.useRef({
|
|
9027
|
+
value: null,
|
|
9028
|
+
unit: null
|
|
9029
|
+
}); // tracks previous timeout config to detect real changes
|
|
8996
9030
|
reactExports.useEffect(() => {
|
|
8997
9031
|
// Wait for all configuration to be ready
|
|
8998
9032
|
if (!organizationId || !bidiSessionId || inactivityTimeoutValue === undefined) return;
|
|
@@ -9047,7 +9081,28 @@
|
|
|
9047
9081
|
}
|
|
9048
9082
|
}
|
|
9049
9083
|
}
|
|
9050
|
-
|
|
9084
|
+
|
|
9085
|
+
// Always prepend the welcome message so it shows at the top after refresh,
|
|
9086
|
+
// matching chatbot-preview behaviour (welcome message is client-side only
|
|
9087
|
+
// and is not stored in server history).
|
|
9088
|
+
// Use a timestamp before the first history message so it sorts first
|
|
9089
|
+
// (activeMessages is sorted by timestamp before being passed to the UI).
|
|
9090
|
+
if (welcomeMessage) {
|
|
9091
|
+
var _historyMessages$;
|
|
9092
|
+
const firstTs = (_historyMessages$ = historyMessages[0]) === null || _historyMessages$ === void 0 ? void 0 : _historyMessages$.timestamp;
|
|
9093
|
+
const firstTsMs = firstTs instanceof Date ? firstTs.getTime() : firstTs ? new Date(firstTs).getTime() : Date.now();
|
|
9094
|
+
const welcomeMsg = _objectSpread2(_objectSpread2({}, createMessage({
|
|
9095
|
+
id: 'welcome-restored',
|
|
9096
|
+
role: 'assistant',
|
|
9097
|
+
content: welcomeMessage
|
|
9098
|
+
})), {}, {
|
|
9099
|
+
isWelcome: true,
|
|
9100
|
+
timestamp: new Date(firstTsMs - 1)
|
|
9101
|
+
});
|
|
9102
|
+
setMessages([welcomeMsg, ...historyMessages]);
|
|
9103
|
+
} else {
|
|
9104
|
+
setMessages(historyMessages);
|
|
9105
|
+
}
|
|
9051
9106
|
}
|
|
9052
9107
|
}).catch(err => {
|
|
9053
9108
|
console.error('[Session] History fetch failed:', err);
|
|
@@ -9070,7 +9125,12 @@
|
|
|
9070
9125
|
} else {
|
|
9071
9126
|
// We have a fresh ID (either from initializer or rotation), persist it if not already there
|
|
9072
9127
|
if (!existing || existing.conversationId !== bidiSessionId) {
|
|
9073
|
-
saveSession(organizationId, bidiSessionId
|
|
9128
|
+
saveSession(organizationId, bidiSessionId, {
|
|
9129
|
+
settingsSnapshot: JSON.stringify({
|
|
9130
|
+
value: inactivityTimeoutValue,
|
|
9131
|
+
unit: inactivityTimeoutUnit === null || inactivityTimeoutUnit === void 0 ? void 0 : inactivityTimeoutUnit.toUpperCase()
|
|
9132
|
+
})
|
|
9133
|
+
});
|
|
9074
9134
|
}
|
|
9075
9135
|
}
|
|
9076
9136
|
}
|
|
@@ -9893,10 +9953,6 @@
|
|
|
9893
9953
|
// Signal ChatWindow to show CSAT (voice path; backend sends conclusion in event, not on message)
|
|
9894
9954
|
setVoiceConclusionForCsat(true);
|
|
9895
9955
|
}
|
|
9896
|
-
if (event.turnComplete) {
|
|
9897
|
-
handleTurnComplete();
|
|
9898
|
-
return;
|
|
9899
|
-
}
|
|
9900
9956
|
|
|
9901
9957
|
// Handle conversation conclusion detection from bidi/voice
|
|
9902
9958
|
if (typeof conclusionDetected === "boolean" && conclusionDetected) {
|
|
@@ -9921,6 +9977,7 @@
|
|
|
9921
9977
|
handleInterrupted();
|
|
9922
9978
|
return;
|
|
9923
9979
|
}
|
|
9980
|
+
|
|
9924
9981
|
// Always process user transcriptions - they mark when user has spoken
|
|
9925
9982
|
if (event.inputTranscription) {
|
|
9926
9983
|
const transcriptionText = event.inputTranscription.text || '';
|
|
@@ -9941,15 +9998,42 @@
|
|
|
9941
9998
|
}
|
|
9942
9999
|
}
|
|
9943
10000
|
|
|
10001
|
+
// Handle sources that arrive as a separate message after turnComplete.
|
|
10002
|
+
// Must be checked before the !userHasSpokenRef gate so they are always
|
|
10003
|
+
// attached regardless of session state.
|
|
10004
|
+
if (Array.isArray(event.sources) && event.sources.length > 0) {
|
|
10005
|
+
setBidiMessages(prev => {
|
|
10006
|
+
const updated = [...prev];
|
|
10007
|
+
for (let i = updated.length - 1; i >= 0; i--) {
|
|
10008
|
+
if (updated[i].role === 'assistant') {
|
|
10009
|
+
updated[i] = _objectSpread2(_objectSpread2({}, updated[i]), {}, {
|
|
10010
|
+
sources: event.sources
|
|
10011
|
+
});
|
|
10012
|
+
break;
|
|
10013
|
+
}
|
|
10014
|
+
}
|
|
10015
|
+
return updated;
|
|
10016
|
+
});
|
|
10017
|
+
return;
|
|
10018
|
+
}
|
|
10019
|
+
|
|
9944
10020
|
// CRITICAL: Ignore assistant responses until user has spoken
|
|
9945
10021
|
// This prevents automatic greetings from appearing before user's first message
|
|
9946
10022
|
if (!userHasSpokenRef.current) {
|
|
9947
10023
|
var _event$outputTranscri, _event$content2;
|
|
9948
|
-
// Silently ignore assistant responses before user speaks
|
|
9949
10024
|
if ((_event$outputTranscri = event.outputTranscription) !== null && _event$outputTranscri !== void 0 && _event$outputTranscri.text || (_event$content2 = event.content) !== null && _event$content2 !== void 0 && _event$content2.parts) {
|
|
10025
|
+
// Still finalize the turn so state is consistent
|
|
10026
|
+
if (event.turnComplete) {
|
|
10027
|
+
handleTurnComplete();
|
|
10028
|
+
}
|
|
9950
10029
|
return;
|
|
9951
10030
|
}
|
|
9952
10031
|
}
|
|
10032
|
+
|
|
10033
|
+
// NOTE: The backend sends outputTranscription and turnComplete in the SAME WebSocket
|
|
10034
|
+
// message (voice_chat.py). Process transcription/content FIRST so the assistant message
|
|
10035
|
+
// exists in bidiMessages before handleTurnComplete clears currentAssistantMessageIdRef —
|
|
10036
|
+
// otherwise the follow-up prompts message that arrives next has no message to attach to.
|
|
9953
10037
|
if ((_event$outputTranscri2 = event.outputTranscription) !== null && _event$outputTranscri2 !== void 0 && _event$outputTranscri2.text) {
|
|
9954
10038
|
appendAssistantContent(event.outputTranscription.text, Boolean(event.outputTranscription.finished));
|
|
9955
10039
|
}
|
|
@@ -9959,9 +10043,37 @@
|
|
|
9959
10043
|
const contentFinished = ((_event$content4 = event.content) === null || _event$content4 === void 0 ? void 0 : _event$content4.finished) || event.finished || false;
|
|
9960
10044
|
handleContentParts(event.content.parts, contentFinished);
|
|
9961
10045
|
}
|
|
10046
|
+
if (event.prompts && Array.isArray(event.prompts) && event.prompts.length > 0) {
|
|
10047
|
+
console.log("[BIDI] handleBidiEvent: attaching prompts to last assistant message", {
|
|
10048
|
+
count: event.prompts.length
|
|
10049
|
+
});
|
|
10050
|
+
setBidiMessages(prev => {
|
|
10051
|
+
const updated = [...prev];
|
|
10052
|
+
for (let i = updated.length - 1; i >= 0; i--) {
|
|
10053
|
+
if (updated[i].role === "assistant") {
|
|
10054
|
+
updated[i] = _objectSpread2(_objectSpread2({}, updated[i]), {}, {
|
|
10055
|
+
prompts: event.prompts
|
|
10056
|
+
});
|
|
10057
|
+
break;
|
|
10058
|
+
}
|
|
10059
|
+
}
|
|
10060
|
+
return updated;
|
|
10061
|
+
});
|
|
10062
|
+
// Save prompts to localStorage for session persistence
|
|
10063
|
+
try {
|
|
10064
|
+
savePromptSuggestions(organizationId, event.prompts);
|
|
10065
|
+
} catch (_e) {/* ignore */}
|
|
10066
|
+
}
|
|
10067
|
+
|
|
10068
|
+
// Handle turn completion AFTER content is appended so the assistant message
|
|
10069
|
+
// exists in bidiMessages before the next turn's prompts arrive
|
|
10070
|
+
if (event.turnComplete) {
|
|
10071
|
+
handleTurnComplete();
|
|
10072
|
+
return;
|
|
10073
|
+
}
|
|
9962
10074
|
|
|
9963
10075
|
// Log if no handlers processed the event
|
|
9964
|
-
if (!event.
|
|
10076
|
+
if (!event.interrupted && !event.inputTranscription && !event.outputTranscription && !event.content && !event.prompts) {
|
|
9965
10077
|
console.warn("[BIDI] handleBidiEvent: event had no recognized fields", event);
|
|
9966
10078
|
}
|
|
9967
10079
|
}, [appendAssistantContent, appendUserTranscription, handleContentParts, handleInterrupted, handleTurnComplete, stopVoiceSession]);
|
|
@@ -10179,7 +10291,12 @@
|
|
|
10179
10291
|
|
|
10180
10292
|
// Create a new session id and persist it
|
|
10181
10293
|
const newSessionId = "widget-session-".concat(Math.random().toString(36).slice(2, 9));
|
|
10182
|
-
saveSession(organizationId, newSessionId
|
|
10294
|
+
saveSession(organizationId, newSessionId, {
|
|
10295
|
+
settingsSnapshot: JSON.stringify({
|
|
10296
|
+
value: inactivityTimeoutValue,
|
|
10297
|
+
unit: inactivityTimeoutUnit === null || inactivityTimeoutUnit === void 0 ? void 0 : inactivityTimeoutUnit.toUpperCase()
|
|
10298
|
+
})
|
|
10299
|
+
});
|
|
10183
10300
|
setBidiSessionId(newSessionId);
|
|
10184
10301
|
|
|
10185
10302
|
// Re-show the welcome message
|
|
@@ -10216,34 +10333,52 @@
|
|
|
10216
10333
|
// Corner cases handled:
|
|
10217
10334
|
// - Initial mount / page refresh: reads stored lastActivity and checks if already
|
|
10218
10335
|
// expired → resets immediately, otherwise schedules for the remaining time.
|
|
10219
|
-
// - Config change (value/unit updated):
|
|
10220
|
-
//
|
|
10336
|
+
// - Config change (value/unit updated): mirrors chatbot-preview by resetting the
|
|
10337
|
+
// entire conversation so the new period starts clean.
|
|
10221
10338
|
// - orgId change: resets the initialized flag so the next run is treated as initial mount.
|
|
10339
|
+
// - firstInteractionAt gate: mirrors chatbot-preview — countdown only starts after the
|
|
10340
|
+
// user sends their first message; the timer re-polls until that happens.
|
|
10222
10341
|
reactExports.useEffect(() => {
|
|
10223
10342
|
// Reset initialized flag when org changes so we do an immediate expiry check for the new org
|
|
10224
10343
|
inactivityInitializedRef.current = false;
|
|
10344
|
+
prevTimeoutConfigRef.current = {
|
|
10345
|
+
value: null,
|
|
10346
|
+
unit: null
|
|
10347
|
+
};
|
|
10225
10348
|
}, [organizationId]);
|
|
10226
10349
|
reactExports.useEffect(() => {
|
|
10227
10350
|
if (!organizationId || !inactivityTimeoutValue) return;
|
|
10228
10351
|
const timeoutMs = getTimeoutMs(inactivityTimeoutValue, inactivityTimeoutUnit);
|
|
10229
10352
|
if (!timeoutMs) return;
|
|
10230
|
-
|
|
10353
|
+
|
|
10354
|
+
// Detect a real timeout config change (value or unit changed), NOT a bidiSessionId change.
|
|
10355
|
+
const prev = prevTimeoutConfigRef.current;
|
|
10356
|
+
const isConfigChange = inactivityInitializedRef.current && (prev.value !== inactivityTimeoutValue || prev.unit !== inactivityTimeoutUnit);
|
|
10231
10357
|
inactivityInitializedRef.current = true;
|
|
10358
|
+
prevTimeoutConfigRef.current = {
|
|
10359
|
+
value: inactivityTimeoutValue,
|
|
10360
|
+
unit: inactivityTimeoutUnit
|
|
10361
|
+
};
|
|
10232
10362
|
if (isConfigChange) {
|
|
10233
|
-
//
|
|
10234
|
-
//
|
|
10235
|
-
|
|
10236
|
-
|
|
10237
|
-
|
|
10238
|
-
}
|
|
10363
|
+
// Timeout config changed at runtime — mirror chatbot-preview: reset the session so
|
|
10364
|
+
// the new period starts on a clean slate (previous conversation is discarded).
|
|
10365
|
+
console.warn("[Session] Inactivity timeout config changed — resetting conversation.");
|
|
10366
|
+
resetConversationRef.current();
|
|
10367
|
+
return; // Timer will restart via bidiSessionId change triggered by resetConversation
|
|
10239
10368
|
}
|
|
10240
|
-
// On page refresh or initial mount
|
|
10241
|
-
// lastActivity — the stored timestamp is used as-is to calculate remaining time.
|
|
10369
|
+
// On page refresh or initial mount isConfigChange is false — stored timestamp used as-is.
|
|
10242
10370
|
|
|
10243
10371
|
let timerId = null;
|
|
10244
10372
|
const scheduleCheck = () => {
|
|
10245
10373
|
const session = getSession(organizationId);
|
|
10246
10374
|
if (!session) return;
|
|
10375
|
+
|
|
10376
|
+
// Mirror chatbot-preview: don't expire before the user's first interaction.
|
|
10377
|
+
// Poll at timeoutMs intervals until firstInteractionAt is set.
|
|
10378
|
+
if (!session.firstInteractionAt) {
|
|
10379
|
+
timerId = setTimeout(scheduleCheck, timeoutMs);
|
|
10380
|
+
return;
|
|
10381
|
+
}
|
|
10247
10382
|
const lastActivityTime = new Date(session.lastActivity).getTime();
|
|
10248
10383
|
const elapsed = Date.now() - lastActivityTime;
|
|
10249
10384
|
const remaining = timeoutMs - elapsed;
|
|
@@ -10256,13 +10391,13 @@
|
|
|
10256
10391
|
};
|
|
10257
10392
|
|
|
10258
10393
|
// On initial mount: check immediately (session may already be expired).
|
|
10259
|
-
// On
|
|
10394
|
+
// On bidiSessionId change (after reset): session is fresh so remaining ≈ timeoutMs.
|
|
10260
10395
|
scheduleCheck();
|
|
10261
10396
|
return () => {
|
|
10262
10397
|
if (timerId) clearTimeout(timerId);
|
|
10263
10398
|
};
|
|
10264
10399
|
// resetConversation intentionally omitted — accessed via resetConversationRef to
|
|
10265
|
-
// prevent the effect from re-running (and resetting
|
|
10400
|
+
// prevent the effect from re-running (and spuriously resetting) on identity changes.
|
|
10266
10401
|
// bidiSessionId IS included so the timer restarts after a session reset.
|
|
10267
10402
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
10268
10403
|
}, [organizationId, inactivityTimeoutValue, inactivityTimeoutUnit, bidiSessionId]);
|
|
@@ -10487,7 +10622,7 @@
|
|
|
10487
10622
|
* See the LICENSE file in the root directory of this source tree.
|
|
10488
10623
|
*/
|
|
10489
10624
|
|
|
10490
|
-
const __iconNode$
|
|
10625
|
+
const __iconNode$d = [["path", {
|
|
10491
10626
|
d: "M2 10v3",
|
|
10492
10627
|
key: "1fnikh"
|
|
10493
10628
|
}], ["path", {
|
|
@@ -10506,7 +10641,7 @@
|
|
|
10506
10641
|
d: "M22 10v3",
|
|
10507
10642
|
key: "154ddg"
|
|
10508
10643
|
}]];
|
|
10509
|
-
const AudioLines = createLucideIcon("audio-lines", __iconNode$
|
|
10644
|
+
const AudioLines = createLucideIcon("audio-lines", __iconNode$d);
|
|
10510
10645
|
|
|
10511
10646
|
/**
|
|
10512
10647
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -10515,7 +10650,33 @@
|
|
|
10515
10650
|
* See the LICENSE file in the root directory of this source tree.
|
|
10516
10651
|
*/
|
|
10517
10652
|
|
|
10518
|
-
const __iconNode$
|
|
10653
|
+
const __iconNode$c = [["path", {
|
|
10654
|
+
d: "m15 18-6-6 6-6",
|
|
10655
|
+
key: "1wnfg3"
|
|
10656
|
+
}]];
|
|
10657
|
+
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$c);
|
|
10658
|
+
|
|
10659
|
+
/**
|
|
10660
|
+
* @license lucide-react v0.575.0 - ISC
|
|
10661
|
+
*
|
|
10662
|
+
* This source code is licensed under the ISC license.
|
|
10663
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
10664
|
+
*/
|
|
10665
|
+
|
|
10666
|
+
const __iconNode$b = [["path", {
|
|
10667
|
+
d: "m9 18 6-6-6-6",
|
|
10668
|
+
key: "mthhwq"
|
|
10669
|
+
}]];
|
|
10670
|
+
const ChevronRight = createLucideIcon("chevron-right", __iconNode$b);
|
|
10671
|
+
|
|
10672
|
+
/**
|
|
10673
|
+
* @license lucide-react v0.575.0 - ISC
|
|
10674
|
+
*
|
|
10675
|
+
* This source code is licensed under the ISC license.
|
|
10676
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
10677
|
+
*/
|
|
10678
|
+
|
|
10679
|
+
const __iconNode$a = [["path", {
|
|
10519
10680
|
d: "M12 15V3",
|
|
10520
10681
|
key: "m9g1x1"
|
|
10521
10682
|
}], ["path", {
|
|
@@ -10525,7 +10686,7 @@
|
|
|
10525
10686
|
d: "m7 10 5 5 5-5",
|
|
10526
10687
|
key: "brsn70"
|
|
10527
10688
|
}]];
|
|
10528
|
-
const Download = createLucideIcon("download", __iconNode$
|
|
10689
|
+
const Download = createLucideIcon("download", __iconNode$a);
|
|
10529
10690
|
|
|
10530
10691
|
/**
|
|
10531
10692
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -10534,7 +10695,7 @@
|
|
|
10534
10695
|
* See the LICENSE file in the root directory of this source tree.
|
|
10535
10696
|
*/
|
|
10536
10697
|
|
|
10537
|
-
const __iconNode$
|
|
10698
|
+
const __iconNode$9 = [["path", {
|
|
10538
10699
|
d: "M15 3h6v6",
|
|
10539
10700
|
key: "1q9fwt"
|
|
10540
10701
|
}], ["path", {
|
|
@@ -10544,7 +10705,7 @@
|
|
|
10544
10705
|
d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",
|
|
10545
10706
|
key: "a6xqqp"
|
|
10546
10707
|
}]];
|
|
10547
|
-
const ExternalLink = createLucideIcon("external-link", __iconNode$
|
|
10708
|
+
const ExternalLink = createLucideIcon("external-link", __iconNode$9);
|
|
10548
10709
|
|
|
10549
10710
|
/**
|
|
10550
10711
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -10553,7 +10714,7 @@
|
|
|
10553
10714
|
* See the LICENSE file in the root directory of this source tree.
|
|
10554
10715
|
*/
|
|
10555
10716
|
|
|
10556
|
-
const __iconNode$
|
|
10717
|
+
const __iconNode$8 = [["path", {
|
|
10557
10718
|
d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
|
|
10558
10719
|
key: "1oefj6"
|
|
10559
10720
|
}], ["path", {
|
|
@@ -10569,7 +10730,7 @@
|
|
|
10569
10730
|
d: "M16 17H8",
|
|
10570
10731
|
key: "z1uh3a"
|
|
10571
10732
|
}]];
|
|
10572
|
-
const FileText = createLucideIcon("file-text", __iconNode$
|
|
10733
|
+
const FileText = createLucideIcon("file-text", __iconNode$8);
|
|
10573
10734
|
|
|
10574
10735
|
/**
|
|
10575
10736
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -10578,7 +10739,7 @@
|
|
|
10578
10739
|
* See the LICENSE file in the root directory of this source tree.
|
|
10579
10740
|
*/
|
|
10580
10741
|
|
|
10581
|
-
const __iconNode$
|
|
10742
|
+
const __iconNode$7 = [["circle", {
|
|
10582
10743
|
cx: "12",
|
|
10583
10744
|
cy: "12",
|
|
10584
10745
|
r: "10",
|
|
@@ -10590,7 +10751,7 @@
|
|
|
10590
10751
|
d: "M2 12h20",
|
|
10591
10752
|
key: "9i4pu4"
|
|
10592
10753
|
}]];
|
|
10593
|
-
const Globe = createLucideIcon("globe", __iconNode$
|
|
10754
|
+
const Globe = createLucideIcon("globe", __iconNode$7);
|
|
10594
10755
|
|
|
10595
10756
|
/**
|
|
10596
10757
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -10599,11 +10760,11 @@
|
|
|
10599
10760
|
* See the LICENSE file in the root directory of this source tree.
|
|
10600
10761
|
*/
|
|
10601
10762
|
|
|
10602
|
-
const __iconNode$
|
|
10763
|
+
const __iconNode$6 = [["path", {
|
|
10603
10764
|
d: "M21 12a9 9 0 1 1-6.219-8.56",
|
|
10604
10765
|
key: "13zald"
|
|
10605
10766
|
}]];
|
|
10606
|
-
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$
|
|
10767
|
+
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$6);
|
|
10607
10768
|
|
|
10608
10769
|
/**
|
|
10609
10770
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -10612,11 +10773,11 @@
|
|
|
10612
10773
|
* See the LICENSE file in the root directory of this source tree.
|
|
10613
10774
|
*/
|
|
10614
10775
|
|
|
10615
|
-
const __iconNode$
|
|
10776
|
+
const __iconNode$5 = [["path", {
|
|
10616
10777
|
d: "M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",
|
|
10617
10778
|
key: "1sd12s"
|
|
10618
10779
|
}]];
|
|
10619
|
-
const MessageCircle = createLucideIcon("message-circle", __iconNode$
|
|
10780
|
+
const MessageCircle = createLucideIcon("message-circle", __iconNode$5);
|
|
10620
10781
|
|
|
10621
10782
|
/**
|
|
10622
10783
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -10625,14 +10786,27 @@
|
|
|
10625
10786
|
* See the LICENSE file in the root directory of this source tree.
|
|
10626
10787
|
*/
|
|
10627
10788
|
|
|
10628
|
-
const __iconNode$
|
|
10789
|
+
const __iconNode$4 = [["path", {
|
|
10629
10790
|
d: "M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",
|
|
10630
10791
|
key: "1ffxy3"
|
|
10631
10792
|
}], ["path", {
|
|
10632
10793
|
d: "m21.854 2.147-10.94 10.939",
|
|
10633
10794
|
key: "12cjpa"
|
|
10634
10795
|
}]];
|
|
10635
|
-
const Send = createLucideIcon("send", __iconNode$
|
|
10796
|
+
const Send = createLucideIcon("send", __iconNode$4);
|
|
10797
|
+
|
|
10798
|
+
/**
|
|
10799
|
+
* @license lucide-react v0.575.0 - ISC
|
|
10800
|
+
*
|
|
10801
|
+
* This source code is licensed under the ISC license.
|
|
10802
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
10803
|
+
*/
|
|
10804
|
+
|
|
10805
|
+
const __iconNode$3 = [["path", {
|
|
10806
|
+
d: "M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",
|
|
10807
|
+
key: "r04s7s"
|
|
10808
|
+
}]];
|
|
10809
|
+
const Star = createLucideIcon("star", __iconNode$3);
|
|
10636
10810
|
|
|
10637
10811
|
/**
|
|
10638
10812
|
* @license lucide-react v0.575.0 - ISC
|
|
@@ -60227,41 +60401,87 @@
|
|
|
60227
60401
|
hoverShadow
|
|
60228
60402
|
};
|
|
60229
60403
|
};
|
|
60230
|
-
const
|
|
60231
|
-
|
|
60404
|
+
const SCROLL_AMOUNT$1 = 150;
|
|
60405
|
+
const HorizontalQuickQuestions = _ref3 => {
|
|
60232
60406
|
let {
|
|
60233
|
-
questions
|
|
60234
|
-
isDark
|
|
60235
|
-
|
|
60407
|
+
questions,
|
|
60408
|
+
isDark,
|
|
60409
|
+
palette,
|
|
60410
|
+
resolvedTextColor,
|
|
60411
|
+
fontFamily,
|
|
60412
|
+
fontSize,
|
|
60413
|
+
isRtl,
|
|
60236
60414
|
onQuestionClick,
|
|
60237
|
-
|
|
60238
|
-
layout = "vertical",
|
|
60239
|
-
fontFamily = "Inter",
|
|
60240
|
-
fontSize = "14px",
|
|
60241
|
-
textColor,
|
|
60242
|
-
isRtl = false,
|
|
60243
|
-
questionTextColor,
|
|
60244
|
-
questionBoxColor
|
|
60415
|
+
applyHoverState
|
|
60245
60416
|
} = _ref3;
|
|
60246
|
-
|
|
60247
|
-
|
|
60248
|
-
|
|
60249
|
-
const
|
|
60250
|
-
|
|
60251
|
-
|
|
60252
|
-
|
|
60253
|
-
|
|
60254
|
-
|
|
60255
|
-
|
|
60256
|
-
|
|
60257
|
-
|
|
60258
|
-
|
|
60259
|
-
|
|
60260
|
-
|
|
60261
|
-
|
|
60262
|
-
|
|
60417
|
+
const scrollRef = reactExports.useRef(null);
|
|
60418
|
+
const [canScrollLeft, setCanScrollLeft] = reactExports.useState(false);
|
|
60419
|
+
const [canScrollRight, setCanScrollRight] = reactExports.useState(false);
|
|
60420
|
+
const updateScrollState = reactExports.useCallback(() => {
|
|
60421
|
+
const el = scrollRef.current;
|
|
60422
|
+
if (!el) return;
|
|
60423
|
+
const {
|
|
60424
|
+
scrollLeft,
|
|
60425
|
+
scrollWidth,
|
|
60426
|
+
clientWidth
|
|
60427
|
+
} = el;
|
|
60428
|
+
setCanScrollLeft(Math.abs(scrollLeft) > 1);
|
|
60429
|
+
setCanScrollRight(Math.abs(scrollLeft) + clientWidth < scrollWidth - 1);
|
|
60430
|
+
}, []);
|
|
60431
|
+
reactExports.useEffect(() => {
|
|
60432
|
+
updateScrollState();
|
|
60433
|
+
const el = scrollRef.current;
|
|
60434
|
+
if (!el) return;
|
|
60435
|
+
const observer = new ResizeObserver(updateScrollState);
|
|
60436
|
+
observer.observe(el);
|
|
60437
|
+
return () => observer.disconnect();
|
|
60438
|
+
}, [updateScrollState, questions]);
|
|
60439
|
+
const scroll = reactExports.useCallback(direction => {
|
|
60440
|
+
const el = scrollRef.current;
|
|
60441
|
+
if (!el) return;
|
|
60442
|
+
const amount = direction === "left" ? -SCROLL_AMOUNT$1 : SCROLL_AMOUNT$1;
|
|
60443
|
+
el.scrollBy({
|
|
60444
|
+
left: isRtl ? -amount : amount,
|
|
60445
|
+
behavior: "smooth"
|
|
60446
|
+
});
|
|
60447
|
+
}, [isRtl]);
|
|
60448
|
+
const arrowBg = isDark ? "rgba(31,41,55,0.85)" : "rgba(255,255,255,0.85)";
|
|
60449
|
+
const arrowColor = isDark ? "#e5e7eb" : "#374151";
|
|
60450
|
+
const arrowBorder = isDark ? "#4b5563" : "#d1d5db";
|
|
60451
|
+
const arrowDisabledOpacity = 0.35;
|
|
60452
|
+
return /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
|
|
60453
|
+
className: "px-4 py-4 border-t ".concat(isDark ? "border-gray-700/50" : "border-gray-200/60"),
|
|
60454
|
+
children: [/*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
60455
|
+
className: "text-xs mb-3 font-semibold tracking-wide uppercase ".concat(isDark ? "text-gray-400" : "text-gray-500"),
|
|
60456
|
+
children: "Quick questions:"
|
|
60457
|
+
}), /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
|
|
60458
|
+
className: "flex items-center gap-1.5",
|
|
60459
|
+
children: [/*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
60460
|
+
onClick: () => scroll("left"),
|
|
60461
|
+
disabled: !canScrollLeft,
|
|
60462
|
+
"aria-label": "Scroll left",
|
|
60463
|
+
className: "flex-shrink-0 flex items-center justify-center w-7 h-7 rounded-full shadow-sm transition-all duration-200 hover:shadow-md active:scale-95",
|
|
60464
|
+
style: {
|
|
60465
|
+
backgroundColor: arrowBg,
|
|
60466
|
+
border: "1px solid ".concat(arrowBorder),
|
|
60467
|
+
color: arrowColor,
|
|
60468
|
+
backdropFilter: "blur(4px)",
|
|
60469
|
+
opacity: canScrollLeft ? 1 : arrowDisabledOpacity,
|
|
60470
|
+
cursor: canScrollLeft ? "pointer" : "default"
|
|
60471
|
+
},
|
|
60472
|
+
children: /*#__PURE__*/jsxRuntimeExports.jsx(ChevronLeft, {
|
|
60473
|
+
size: 16
|
|
60474
|
+
})
|
|
60263
60475
|
}), /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
60264
|
-
|
|
60476
|
+
ref: scrollRef,
|
|
60477
|
+
onScroll: updateScrollState,
|
|
60478
|
+
className: "flex-1 flex gap-3 overflow-x-auto pb-2",
|
|
60479
|
+
style: {
|
|
60480
|
+
scrollBehavior: "smooth",
|
|
60481
|
+
WebkitOverflowScrolling: "touch",
|
|
60482
|
+
scrollbarWidth: "none",
|
|
60483
|
+
msOverflowStyle: "none"
|
|
60484
|
+
},
|
|
60265
60485
|
children: questions.map((question, index) => /*#__PURE__*/jsxRuntimeExports.jsxs("button", {
|
|
60266
60486
|
onClick: () => onQuestionClick === null || onQuestionClick === void 0 ? void 0 : onQuestionClick(question),
|
|
60267
60487
|
className: "group relative text-sm px-5 py-2.5 rounded-xl font-medium transition-all duration-300 hover:scale-105 active:scale-95 whitespace-nowrap flex-shrink-0 overflow-hidden backdrop-blur-sm ".concat(isRtl ? "text-right" : "text-left"),
|
|
@@ -60293,7 +60513,64 @@
|
|
|
60293
60513
|
children: question
|
|
60294
60514
|
})]
|
|
60295
60515
|
}, index))
|
|
60516
|
+
}), /*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
60517
|
+
onClick: () => scroll("right"),
|
|
60518
|
+
disabled: !canScrollRight,
|
|
60519
|
+
"aria-label": "Scroll right",
|
|
60520
|
+
className: "flex-shrink-0 flex items-center justify-center w-7 h-7 rounded-full shadow-sm transition-all duration-200 hover:shadow-md active:scale-95",
|
|
60521
|
+
style: {
|
|
60522
|
+
backgroundColor: arrowBg,
|
|
60523
|
+
border: "1px solid ".concat(arrowBorder),
|
|
60524
|
+
color: arrowColor,
|
|
60525
|
+
backdropFilter: "blur(4px)",
|
|
60526
|
+
opacity: canScrollRight ? 1 : arrowDisabledOpacity,
|
|
60527
|
+
cursor: canScrollRight ? "pointer" : "default"
|
|
60528
|
+
},
|
|
60529
|
+
children: /*#__PURE__*/jsxRuntimeExports.jsx(ChevronRight, {
|
|
60530
|
+
size: 16
|
|
60531
|
+
})
|
|
60296
60532
|
})]
|
|
60533
|
+
})]
|
|
60534
|
+
});
|
|
60535
|
+
};
|
|
60536
|
+
const QuickQuestions = _ref4 => {
|
|
60537
|
+
var _ref5;
|
|
60538
|
+
let {
|
|
60539
|
+
questions = [],
|
|
60540
|
+
isDark = false,
|
|
60541
|
+
primaryColor = "#2563eb",
|
|
60542
|
+
onQuestionClick,
|
|
60543
|
+
isTyping = false,
|
|
60544
|
+
layout = "vertical",
|
|
60545
|
+
fontFamily = "Inter",
|
|
60546
|
+
fontSize = "14px",
|
|
60547
|
+
textColor,
|
|
60548
|
+
isRtl = false,
|
|
60549
|
+
questionTextColor,
|
|
60550
|
+
questionBoxColor
|
|
60551
|
+
} = _ref4;
|
|
60552
|
+
if (!questions.length || isTyping) {
|
|
60553
|
+
return null;
|
|
60554
|
+
}
|
|
60555
|
+
const resolvedTextColor = (_ref5 = questionTextColor !== null && questionTextColor !== void 0 ? questionTextColor : textColor) !== null && _ref5 !== void 0 ? _ref5 : isDark ? "#f3f4f6" : "#111827";
|
|
60556
|
+
const resolvedQuestionBoxColor = questionBoxColor !== null && questionBoxColor !== void 0 ? questionBoxColor : isDark ? "#374151" : "#e5e7eb";
|
|
60557
|
+
const palette = reactExports.useMemo(() => getQuickQuestionPalette(resolvedTextColor, isDark), [resolvedTextColor, isDark]);
|
|
60558
|
+
const applyHoverState = (element, isHover) => {
|
|
60559
|
+
element.style.backgroundColor = isHover ? palette.hoverBackground : palette.background;
|
|
60560
|
+
element.style.borderColor = isHover ? palette.hoverBorder : palette.border;
|
|
60561
|
+
element.style.boxShadow = isHover ? palette.hoverShadow : palette.shadow;
|
|
60562
|
+
};
|
|
60563
|
+
if (layout === "horizontal") {
|
|
60564
|
+
return /*#__PURE__*/jsxRuntimeExports.jsx(HorizontalQuickQuestions, {
|
|
60565
|
+
questions: questions,
|
|
60566
|
+
isDark: isDark,
|
|
60567
|
+
palette: palette,
|
|
60568
|
+
resolvedTextColor: resolvedTextColor,
|
|
60569
|
+
fontFamily: fontFamily,
|
|
60570
|
+
fontSize: fontSize,
|
|
60571
|
+
isRtl: isRtl,
|
|
60572
|
+
onQuestionClick: onQuestionClick,
|
|
60573
|
+
applyHoverState: applyHoverState
|
|
60297
60574
|
});
|
|
60298
60575
|
}
|
|
60299
60576
|
|
|
@@ -60772,6 +61049,8 @@
|
|
|
60772
61049
|
voiceStatus = "idle",
|
|
60773
61050
|
messagesContainerRef,
|
|
60774
61051
|
companyLogo,
|
|
61052
|
+
chatbotAvatarEnabled,
|
|
61053
|
+
chatbotAvatar,
|
|
60775
61054
|
conciergeName,
|
|
60776
61055
|
companyName,
|
|
60777
61056
|
apiBaseUrl,
|
|
@@ -60900,7 +61179,7 @@
|
|
|
60900
61179
|
isRtl: isRtl,
|
|
60901
61180
|
onDecision: onDecision,
|
|
60902
61181
|
onPromptSuggestionClick: onPromptSuggestionClick,
|
|
60903
|
-
companyLogo: companyLogo,
|
|
61182
|
+
companyLogo: chatbotAvatarEnabled && chatbotAvatar ? chatbotAvatar : companyLogo,
|
|
60904
61183
|
conciergeName: conciergeName,
|
|
60905
61184
|
companyName: companyName,
|
|
60906
61185
|
apiBaseUrl: apiBaseUrl,
|
|
@@ -60928,7 +61207,7 @@
|
|
|
60928
61207
|
formatTime: formatTime,
|
|
60929
61208
|
isRtl: isRtl,
|
|
60930
61209
|
onDecision: onDecision,
|
|
60931
|
-
companyLogo: companyLogo,
|
|
61210
|
+
companyLogo: chatbotAvatarEnabled && chatbotAvatar ? chatbotAvatar : companyLogo,
|
|
60932
61211
|
conciergeName: conciergeName,
|
|
60933
61212
|
companyName: companyName,
|
|
60934
61213
|
apiBaseUrl: apiBaseUrl,
|
|
@@ -60990,7 +61269,119 @@
|
|
|
60990
61269
|
}
|
|
60991
61270
|
}
|
|
60992
61271
|
};
|
|
60993
|
-
const
|
|
61272
|
+
const SCROLL_AMOUNT = 150;
|
|
61273
|
+
const PromptSuggestionsRow = _ref => {
|
|
61274
|
+
let {
|
|
61275
|
+
suggestions,
|
|
61276
|
+
onSuggestionClick,
|
|
61277
|
+
promptPrimary,
|
|
61278
|
+
promptTextColor,
|
|
61279
|
+
promptFontFamily,
|
|
61280
|
+
promptFontSize,
|
|
61281
|
+
isDark,
|
|
61282
|
+
isRtl
|
|
61283
|
+
} = _ref;
|
|
61284
|
+
const scrollRef = reactExports.useRef(null);
|
|
61285
|
+
const [canScrollLeft, setCanScrollLeft] = reactExports.useState(false);
|
|
61286
|
+
const [canScrollRight, setCanScrollRight] = reactExports.useState(false);
|
|
61287
|
+
const updateScrollState = reactExports.useCallback(() => {
|
|
61288
|
+
const el = scrollRef.current;
|
|
61289
|
+
if (!el) return;
|
|
61290
|
+
const {
|
|
61291
|
+
scrollLeft,
|
|
61292
|
+
scrollWidth,
|
|
61293
|
+
clientWidth
|
|
61294
|
+
} = el;
|
|
61295
|
+
setCanScrollLeft(Math.abs(scrollLeft) > 1);
|
|
61296
|
+
setCanScrollRight(Math.abs(scrollLeft) + clientWidth < scrollWidth - 1);
|
|
61297
|
+
}, []);
|
|
61298
|
+
reactExports.useEffect(() => {
|
|
61299
|
+
updateScrollState();
|
|
61300
|
+
const el = scrollRef.current;
|
|
61301
|
+
if (!el) return;
|
|
61302
|
+
const observer = new ResizeObserver(updateScrollState);
|
|
61303
|
+
observer.observe(el);
|
|
61304
|
+
return () => observer.disconnect();
|
|
61305
|
+
}, [updateScrollState, suggestions]);
|
|
61306
|
+
const scroll = reactExports.useCallback(direction => {
|
|
61307
|
+
const el = scrollRef.current;
|
|
61308
|
+
if (!el) return;
|
|
61309
|
+
const amount = direction === "left" ? -SCROLL_AMOUNT : SCROLL_AMOUNT;
|
|
61310
|
+
el.scrollBy({
|
|
61311
|
+
left: isRtl ? -amount : amount,
|
|
61312
|
+
behavior: "smooth"
|
|
61313
|
+
});
|
|
61314
|
+
}, [isRtl]);
|
|
61315
|
+
const arrowBg = isDark ? "rgba(31,41,55,0.85)" : "rgba(255,255,255,0.85)";
|
|
61316
|
+
const arrowColor = isDark ? "#e5e7eb" : "#374151";
|
|
61317
|
+
const arrowBorder = isDark ? "#4b5563" : "#d1d5db";
|
|
61318
|
+
const arrowDisabledOpacity = 0.35;
|
|
61319
|
+
return /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
61320
|
+
className: "mb-2 px-5",
|
|
61321
|
+
children: /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
|
|
61322
|
+
className: "flex items-center gap-1.5",
|
|
61323
|
+
children: [/*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
61324
|
+
type: "button",
|
|
61325
|
+
onClick: () => scroll("left"),
|
|
61326
|
+
disabled: !canScrollLeft,
|
|
61327
|
+
"aria-label": "Scroll left",
|
|
61328
|
+
className: "flex-shrink-0 flex items-center justify-center w-7 h-7 rounded-full shadow-sm transition-all duration-200 hover:shadow-md active:scale-95",
|
|
61329
|
+
style: {
|
|
61330
|
+
backgroundColor: arrowBg,
|
|
61331
|
+
border: "1px solid ".concat(arrowBorder),
|
|
61332
|
+
color: arrowColor,
|
|
61333
|
+
backdropFilter: "blur(4px)",
|
|
61334
|
+
opacity: canScrollLeft ? 1 : arrowDisabledOpacity,
|
|
61335
|
+
cursor: canScrollLeft ? "pointer" : "default"
|
|
61336
|
+
},
|
|
61337
|
+
children: /*#__PURE__*/jsxRuntimeExports.jsx(ChevronLeft, {
|
|
61338
|
+
size: 16
|
|
61339
|
+
})
|
|
61340
|
+
}), /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
61341
|
+
ref: scrollRef,
|
|
61342
|
+
onScroll: updateScrollState,
|
|
61343
|
+
className: "flex-1 flex gap-2 overflow-x-auto pb-1",
|
|
61344
|
+
style: {
|
|
61345
|
+
scrollBehavior: "smooth",
|
|
61346
|
+
WebkitOverflowScrolling: "touch",
|
|
61347
|
+
scrollbarWidth: "none",
|
|
61348
|
+
msOverflowStyle: "none"
|
|
61349
|
+
},
|
|
61350
|
+
children: suggestions.map((p, index) => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
61351
|
+
type: "button",
|
|
61352
|
+
onClick: () => onSuggestionClick(p.text || p),
|
|
61353
|
+
dir: "auto",
|
|
61354
|
+
className: "inline-flex items-center rounded-full px-4 py-1.5 whitespace-nowrap flex-shrink-0 border-0 transition-transform duration-150 active:scale-95",
|
|
61355
|
+
style: {
|
|
61356
|
+
background: "linear-gradient(135deg, ".concat(promptPrimary, " 0%, ").concat(promptPrimary, "dd 100%)"),
|
|
61357
|
+
color: promptTextColor,
|
|
61358
|
+
fontFamily: promptFontFamily,
|
|
61359
|
+
fontSize: promptFontSize
|
|
61360
|
+
},
|
|
61361
|
+
children: p.text || p
|
|
61362
|
+
}, "".concat(p.text || p, "-").concat(index)))
|
|
61363
|
+
}), /*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
61364
|
+
type: "button",
|
|
61365
|
+
onClick: () => scroll("right"),
|
|
61366
|
+
disabled: !canScrollRight,
|
|
61367
|
+
"aria-label": "Scroll right",
|
|
61368
|
+
className: "flex-shrink-0 flex items-center justify-center w-7 h-7 rounded-full shadow-sm transition-all duration-200 hover:shadow-md active:scale-95",
|
|
61369
|
+
style: {
|
|
61370
|
+
backgroundColor: arrowBg,
|
|
61371
|
+
border: "1px solid ".concat(arrowBorder),
|
|
61372
|
+
color: arrowColor,
|
|
61373
|
+
backdropFilter: "blur(4px)",
|
|
61374
|
+
opacity: canScrollRight ? 1 : arrowDisabledOpacity,
|
|
61375
|
+
cursor: canScrollRight ? "pointer" : "default"
|
|
61376
|
+
},
|
|
61377
|
+
children: /*#__PURE__*/jsxRuntimeExports.jsx(ChevronRight, {
|
|
61378
|
+
size: 16
|
|
61379
|
+
})
|
|
61380
|
+
})]
|
|
61381
|
+
})
|
|
61382
|
+
});
|
|
61383
|
+
};
|
|
61384
|
+
const ChatInput = _ref2 => {
|
|
60994
61385
|
let {
|
|
60995
61386
|
inputValue,
|
|
60996
61387
|
setInputValue,
|
|
@@ -61025,8 +61416,10 @@
|
|
|
61025
61416
|
userMessageBoxColor,
|
|
61026
61417
|
userTextColor,
|
|
61027
61418
|
promptSuggestions,
|
|
61028
|
-
onPromptSuggestionClick
|
|
61029
|
-
|
|
61419
|
+
onPromptSuggestionClick,
|
|
61420
|
+
showResolveButton = false,
|
|
61421
|
+
onResolve
|
|
61422
|
+
} = _ref2;
|
|
61030
61423
|
const [isFocused, setIsFocused] = reactExports.useState(false);
|
|
61031
61424
|
const [showTooltip, setShowTooltip] = reactExports.useState(false);
|
|
61032
61425
|
const [tooltipPosition, setTooltipPosition] = reactExports.useState({
|
|
@@ -61222,24 +61615,25 @@
|
|
|
61222
61615
|
style: {
|
|
61223
61616
|
overflow: "visible"
|
|
61224
61617
|
},
|
|
61225
|
-
children: [
|
|
61226
|
-
className: "
|
|
61227
|
-
children: /*#__PURE__*/jsxRuntimeExports.jsx("
|
|
61228
|
-
|
|
61229
|
-
|
|
61230
|
-
|
|
61231
|
-
|
|
61232
|
-
|
|
61233
|
-
|
|
61234
|
-
style: {
|
|
61235
|
-
background: "linear-gradient(135deg, ".concat(promptPrimary, " 0%, ").concat(promptPrimary, "dd 100%)"),
|
|
61236
|
-
color: promptTextColor,
|
|
61237
|
-
fontFamily: promptFontFamily,
|
|
61238
|
-
fontSize: promptFontSize
|
|
61239
|
-
},
|
|
61240
|
-
children: p.text || p
|
|
61241
|
-
}, "".concat(p.text || p, "-").concat(index)))
|
|
61618
|
+
children: [showResolveButton && onResolve && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
61619
|
+
className: "flex justify-center py-2",
|
|
61620
|
+
children: /*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
61621
|
+
onClick: onResolve,
|
|
61622
|
+
className: cn("text-sm font-medium underline underline-offset-4 transition-colors bg-transparent border-0 cursor-pointer", isDark ? "text-gray-400 hover:text-gray-200" : "text-gray-500 hover:text-gray-700"),
|
|
61623
|
+
style: {
|
|
61624
|
+
fontFamily: fontFamily || "Inter"
|
|
61625
|
+
},
|
|
61626
|
+
children: "Resolve"
|
|
61242
61627
|
})
|
|
61628
|
+
}), promptSuggestions.length > 0 && onPromptSuggestionClick && /*#__PURE__*/jsxRuntimeExports.jsx(PromptSuggestionsRow, {
|
|
61629
|
+
suggestions: promptSuggestions,
|
|
61630
|
+
onSuggestionClick: onPromptSuggestionClick,
|
|
61631
|
+
promptPrimary: promptPrimary,
|
|
61632
|
+
promptTextColor: promptTextColor,
|
|
61633
|
+
promptFontFamily: promptFontFamily,
|
|
61634
|
+
promptFontSize: promptFontSize,
|
|
61635
|
+
isDark: isDark,
|
|
61636
|
+
isRtl: isRtl
|
|
61243
61637
|
}), /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
61244
61638
|
className: "my-4",
|
|
61245
61639
|
style: {
|
|
@@ -61423,7 +61817,7 @@
|
|
|
61423
61817
|
className: "no-underline",
|
|
61424
61818
|
children: /*#__PURE__*/jsxRuntimeExports.jsxs("span", {
|
|
61425
61819
|
dir: "ltr",
|
|
61426
|
-
className:
|
|
61820
|
+
className: "inline-flex items-center gap-1.5 py-1.5 px-3",
|
|
61427
61821
|
children: [/*#__PURE__*/jsxRuntimeExports.jsx("span", {
|
|
61428
61822
|
className: cn("font-sans text-[10px] font-medium", isDark ? "text-gray-400" : "text-gray-500"),
|
|
61429
61823
|
children: "Powered by"
|
|
@@ -62018,6 +62412,8 @@
|
|
|
62018
62412
|
conciergeName,
|
|
62019
62413
|
companyName,
|
|
62020
62414
|
companyLogo,
|
|
62415
|
+
chatbotAvatarEnabled,
|
|
62416
|
+
chatbotAvatar,
|
|
62021
62417
|
messages,
|
|
62022
62418
|
isLoading,
|
|
62023
62419
|
isConversationLoading = false,
|
|
@@ -62088,6 +62484,13 @@
|
|
|
62088
62484
|
}
|
|
62089
62485
|
});
|
|
62090
62486
|
|
|
62487
|
+
// Resolve / Feedback state
|
|
62488
|
+
const [showResolveForm, setShowResolveForm] = reactExports.useState(false);
|
|
62489
|
+
const [isConversationResolved, setIsConversationResolved] = reactExports.useState(false);
|
|
62490
|
+
const [resolveRating, setResolveRating] = reactExports.useState(0);
|
|
62491
|
+
const [resolveFeedbackText, setResolveFeedbackText] = reactExports.useState("");
|
|
62492
|
+
const [isSubmittingResolve, setIsSubmittingResolve] = reactExports.useState(false);
|
|
62493
|
+
|
|
62091
62494
|
// Sync csatSubmitted from session whenever the conversation changes
|
|
62092
62495
|
reactExports.useEffect(() => {
|
|
62093
62496
|
try {
|
|
@@ -62097,7 +62500,6 @@
|
|
|
62097
62500
|
if (submitted) setShowCsat(false);
|
|
62098
62501
|
} catch (_unused2) {}
|
|
62099
62502
|
}, [conversationId, organizationId]);
|
|
62100
|
-
// const [lastUserMessageTime, setLastUserMessageTime] = useState(null);
|
|
62101
62503
|
|
|
62102
62504
|
// Auto-scroll hook
|
|
62103
62505
|
useAutoScroll(messagesContainerRef, [messages, isLoading], {
|
|
@@ -62135,53 +62537,9 @@
|
|
|
62135
62537
|
}
|
|
62136
62538
|
return userMessageBoxColor || DEFAULT_USER_MESSAGE_COLOR;
|
|
62137
62539
|
}, [isDark, primaryColor, userMessageBoxColor]);
|
|
62138
|
-
const placeholder = isRtlLanguage ? "اكتب رسالتك
|
|
62540
|
+
const placeholder = isConversationResolved ? "Conversation resolved" : isRtlLanguage ? "اكتب رسالتك هنا..." : "Type your message...";
|
|
62139
62541
|
const hasUserMessages = messages === null || messages === void 0 || (_messages$some = messages.some) === null || _messages$some === void 0 ? void 0 : _messages$some.call(messages, msg => msg.role === "user");
|
|
62140
62542
|
const shouldShowQuickQuestions = !hasUserMessages && quickQuestions.length > 0 && quickQuestionsEnabled;
|
|
62141
|
-
|
|
62142
|
-
// Show CSAT when the last assistant message is marked as concluded (text/SSE path)
|
|
62143
|
-
reactExports.useEffect(() => {
|
|
62144
|
-
if (!csatEnabled) return;
|
|
62145
|
-
if (csatSubmitted) return;
|
|
62146
|
-
if (!messages || messages.length === 0) return;
|
|
62147
|
-
const lastMessage = messages[messages.length - 1];
|
|
62148
|
-
if (lastMessage && lastMessage.role === "assistant" && lastMessage.conclusionDetected && !showCsat && csatTriggerType === "ON_END") {
|
|
62149
|
-
setShowCsat(true);
|
|
62150
|
-
}
|
|
62151
|
-
}, [messages, csatEnabled, csatSubmitted, showCsat, csatTriggerType]);
|
|
62152
|
-
|
|
62153
|
-
// Show CSAT when voice conclusion was detected (backend sends conclusion_detected in event; no message flag)
|
|
62154
|
-
reactExports.useEffect(() => {
|
|
62155
|
-
if (!csatEnabled || csatSubmitted || showCsat) return;
|
|
62156
|
-
if (csatTriggerType !== "ON_END") return;
|
|
62157
|
-
if (voiceConclusionForCsat) {
|
|
62158
|
-
setShowCsat(true);
|
|
62159
|
-
}
|
|
62160
|
-
}, [voiceConclusionForCsat, csatEnabled, csatSubmitted, showCsat, csatTriggerType]);
|
|
62161
|
-
|
|
62162
|
-
// // Track time of the most recent user message
|
|
62163
|
-
// useEffect(() => {
|
|
62164
|
-
// if (!messages || messages.length === 0) return;
|
|
62165
|
-
// const lastMsg = messages[messages.length - 1];
|
|
62166
|
-
// if (lastMsg?.role === "user") {
|
|
62167
|
-
// setLastUserMessageTime(Date.now());
|
|
62168
|
-
// }
|
|
62169
|
-
// }, [messages]);
|
|
62170
|
-
|
|
62171
|
-
// // Trigger CSAT after 60 seconds of no new user message
|
|
62172
|
-
// useEffect(() => {
|
|
62173
|
-
// if (!csatEnabled) return;
|
|
62174
|
-
// if (csatSubmitted) return;
|
|
62175
|
-
// if (showCsat) return;
|
|
62176
|
-
// if (!lastUserMessageTime) return;
|
|
62177
|
-
|
|
62178
|
-
// const timer = setTimeout(() => {
|
|
62179
|
-
// setShowCsat(true);
|
|
62180
|
-
// }, 60 * 1000);
|
|
62181
|
-
|
|
62182
|
-
// return () => clearTimeout(timer);
|
|
62183
|
-
// }, [lastUserMessageTime, csatEnabled, csatSubmitted, showCsat]);
|
|
62184
|
-
|
|
62185
62543
|
const handleCsatRating = async (rating, format) => {
|
|
62186
62544
|
setCsatSubmitted(true); // optimistic UI
|
|
62187
62545
|
setShowCsat(false);
|
|
@@ -62215,6 +62573,77 @@
|
|
|
62215
62573
|
console.error("CSAT submission error:", error);
|
|
62216
62574
|
}
|
|
62217
62575
|
};
|
|
62576
|
+
|
|
62577
|
+
// Handle Resolve feedback submission
|
|
62578
|
+
const handleResolveSubmission = reactExports.useCallback(async () => {
|
|
62579
|
+
if (isSubmittingResolve || isConversationResolved) return;
|
|
62580
|
+
if (resolveRating === 0) return;
|
|
62581
|
+
setIsSubmittingResolve(true);
|
|
62582
|
+
try {
|
|
62583
|
+
const headers = {
|
|
62584
|
+
"Content-Type": "application/json"
|
|
62585
|
+
};
|
|
62586
|
+
if (organizationId) {
|
|
62587
|
+
headers["x-eshal-org"] = organizationId;
|
|
62588
|
+
}
|
|
62589
|
+
const ratingFormat = (() => {
|
|
62590
|
+
const fmt = csatFormat || "Emoji";
|
|
62591
|
+
if (fmt === "Emoji") return "EMOJI";
|
|
62592
|
+
if (fmt === "Thumbs") return "THUMBS";
|
|
62593
|
+
if (fmt === "Stars") return "STARS";
|
|
62594
|
+
return fmt.toUpperCase();
|
|
62595
|
+
})();
|
|
62596
|
+
const response = await fetch("".concat(apiBaseUrl.replace(/\/$/, ""), "/api/v1/support/csat"), {
|
|
62597
|
+
method: "POST",
|
|
62598
|
+
headers,
|
|
62599
|
+
credentials: "include",
|
|
62600
|
+
body: JSON.stringify({
|
|
62601
|
+
conversationId,
|
|
62602
|
+
rating: String(resolveRating),
|
|
62603
|
+
ratingFormat,
|
|
62604
|
+
organizationId,
|
|
62605
|
+
conciergeId,
|
|
62606
|
+
feedback: resolveFeedbackText || undefined
|
|
62607
|
+
})
|
|
62608
|
+
});
|
|
62609
|
+
if (response.ok) {
|
|
62610
|
+
setIsConversationResolved(true);
|
|
62611
|
+
setShowResolveForm(false);
|
|
62612
|
+
setCsatSubmitted(true);
|
|
62613
|
+
markCsatSubmitted(organizationId);
|
|
62614
|
+
|
|
62615
|
+
// Reset session and start new conversation
|
|
62616
|
+
setTimeout(() => {
|
|
62617
|
+
setIsConversationResolved(false);
|
|
62618
|
+
setCsatSubmitted(false);
|
|
62619
|
+
setShowResolveForm(false);
|
|
62620
|
+
setResolveRating(0);
|
|
62621
|
+
setResolveFeedbackText("");
|
|
62622
|
+
if (onResetConversation) {
|
|
62623
|
+
onResetConversation();
|
|
62624
|
+
}
|
|
62625
|
+
}, 1500);
|
|
62626
|
+
} else {
|
|
62627
|
+
console.error("Failed to submit resolve feedback:", await response.text());
|
|
62628
|
+
}
|
|
62629
|
+
} catch (error) {
|
|
62630
|
+
console.error("Error submitting resolve feedback:", error);
|
|
62631
|
+
} finally {
|
|
62632
|
+
setIsSubmittingResolve(false);
|
|
62633
|
+
}
|
|
62634
|
+
}, [isSubmittingResolve, isConversationResolved, resolveRating, resolveFeedbackText, conversationId, organizationId, conciergeId, apiBaseUrl, csatFormat, onResetConversation]);
|
|
62635
|
+
|
|
62636
|
+
// Handle X button: first click shows form, second click closes
|
|
62637
|
+
const handleCloseClick = reactExports.useCallback(() => {
|
|
62638
|
+
if (showResolveForm) {
|
|
62639
|
+
setShowResolveForm(false);
|
|
62640
|
+
onClose === null || onClose === void 0 || onClose();
|
|
62641
|
+
} else if (!isConversationResolved) {
|
|
62642
|
+
setShowResolveForm(true);
|
|
62643
|
+
} else {
|
|
62644
|
+
onClose === null || onClose === void 0 || onClose();
|
|
62645
|
+
}
|
|
62646
|
+
}, [showResolveForm, isConversationResolved, onClose]);
|
|
62218
62647
|
const latestPromptSuggestions = reactExports.useMemo(() => {
|
|
62219
62648
|
if (!messages || !Array.isArray(messages)) return [];
|
|
62220
62649
|
for (let i = messages.length - 1; i >= 0; i -= 1) {
|
|
@@ -62225,6 +62654,15 @@
|
|
|
62225
62654
|
}
|
|
62226
62655
|
return [];
|
|
62227
62656
|
}, [messages]);
|
|
62657
|
+
|
|
62658
|
+
// Keep last known suggestions stable — don't clear them while a response is streaming
|
|
62659
|
+
const stablePromptSuggestionsRef = reactExports.useRef([]);
|
|
62660
|
+
reactExports.useEffect(() => {
|
|
62661
|
+
if (latestPromptSuggestions.length > 0) {
|
|
62662
|
+
stablePromptSuggestionsRef.current = latestPromptSuggestions;
|
|
62663
|
+
}
|
|
62664
|
+
}, [latestPromptSuggestions]);
|
|
62665
|
+
const stablePromptSuggestions = latestPromptSuggestions.length > 0 ? latestPromptSuggestions : stablePromptSuggestionsRef.current;
|
|
62228
62666
|
reactExports.useEffect(() => {
|
|
62229
62667
|
if (!csatEnabled) return;
|
|
62230
62668
|
if (!showCsat) return;
|
|
@@ -62241,6 +62679,121 @@
|
|
|
62241
62679
|
window.cancelAnimationFrame(frame);
|
|
62242
62680
|
};
|
|
62243
62681
|
}, [showCsat, csatEnabled, csatSubmitted]);
|
|
62682
|
+
|
|
62683
|
+
// Render the dynamic rating input based on csatFormat
|
|
62684
|
+
const renderRatingInput = () => {
|
|
62685
|
+
const format = csatFormat || "Emoji";
|
|
62686
|
+
if (format === "Stars") {
|
|
62687
|
+
return /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
62688
|
+
className: "flex justify-center gap-2 mb-5",
|
|
62689
|
+
children: [1, 2, 3, 4, 5].map(star => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
62690
|
+
onClick: () => setResolveRating(star),
|
|
62691
|
+
className: "transition-all duration-150 hover:scale-110 active:scale-95 bg-transparent border-0 p-0 cursor-pointer",
|
|
62692
|
+
disabled: isSubmittingResolve,
|
|
62693
|
+
children: /*#__PURE__*/jsxRuntimeExports.jsx(Star, {
|
|
62694
|
+
className: cn("w-8 h-8 transition-colors", star <= resolveRating ? "text-yellow-400 drop-shadow-sm" : isDark ? "text-gray-600" : "text-gray-300"),
|
|
62695
|
+
fill: star <= resolveRating ? "#FBBF24" : "none"
|
|
62696
|
+
})
|
|
62697
|
+
}, star))
|
|
62698
|
+
});
|
|
62699
|
+
}
|
|
62700
|
+
if (format === "Thumbs") {
|
|
62701
|
+
return /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
62702
|
+
className: "flex gap-4 justify-center mb-5",
|
|
62703
|
+
children: [{
|
|
62704
|
+
value: 1,
|
|
62705
|
+
emoji: "👍"
|
|
62706
|
+
}, {
|
|
62707
|
+
value: 2,
|
|
62708
|
+
emoji: "👎"
|
|
62709
|
+
}].map(item => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
62710
|
+
onClick: () => setResolveRating(item.value),
|
|
62711
|
+
disabled: isSubmittingResolve,
|
|
62712
|
+
className: cn("w-12 h-12 rounded-xl border flex items-center justify-center text-2xl transition-all hover:scale-105 active:scale-95", resolveRating === item.value ? "ring-2 ring-blue-300 scale-110 shadow-lg" : "", isDark ? "bg-gray-700 border-gray-600 hover:bg-gray-600" : "bg-white border-gray-200 hover:bg-gray-50"),
|
|
62713
|
+
children: /*#__PURE__*/jsxRuntimeExports.jsx("span", {
|
|
62714
|
+
className: "drop-shadow-md",
|
|
62715
|
+
children: item.emoji
|
|
62716
|
+
})
|
|
62717
|
+
}, item.value))
|
|
62718
|
+
});
|
|
62719
|
+
}
|
|
62720
|
+
|
|
62721
|
+
// Default: Emoji format
|
|
62722
|
+
const emojis = [{
|
|
62723
|
+
value: 1,
|
|
62724
|
+
emoji: "😡"
|
|
62725
|
+
}, {
|
|
62726
|
+
value: 2,
|
|
62727
|
+
emoji: "😐"
|
|
62728
|
+
}, {
|
|
62729
|
+
value: 3,
|
|
62730
|
+
emoji: "🙂"
|
|
62731
|
+
}, {
|
|
62732
|
+
value: 4,
|
|
62733
|
+
emoji: "😀"
|
|
62734
|
+
}, {
|
|
62735
|
+
value: 5,
|
|
62736
|
+
emoji: "😍"
|
|
62737
|
+
}];
|
|
62738
|
+
return /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
62739
|
+
className: "flex gap-2 justify-center items-center mb-5",
|
|
62740
|
+
children: emojis.map(item => /*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
62741
|
+
onClick: () => setResolveRating(item.value),
|
|
62742
|
+
disabled: isSubmittingResolve,
|
|
62743
|
+
className: cn("rounded-full w-10 h-10 flex items-center justify-center text-xl transition-all hover:scale-110 active:scale-95 bg-transparent border-0 p-0 cursor-pointer", resolveRating === item.value ? "ring-2 ring-blue-100 scale-125 bg-gradient-to-b from-yellow-200 to-yellow-400 shadow-md" : "grayscale-[0.3] opacity-80 hover:grayscale-0"),
|
|
62744
|
+
children: /*#__PURE__*/jsxRuntimeExports.jsx("span", {
|
|
62745
|
+
role: "img",
|
|
62746
|
+
"aria-label": "emoji",
|
|
62747
|
+
className: "drop-shadow-sm filter",
|
|
62748
|
+
children: item.emoji
|
|
62749
|
+
})
|
|
62750
|
+
}, item.value))
|
|
62751
|
+
});
|
|
62752
|
+
};
|
|
62753
|
+
|
|
62754
|
+
// Render the feedback form
|
|
62755
|
+
const renderFeedbackForm = () => /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
62756
|
+
className: "animate-in slide-in-from-top-4 fade-in duration-300 mt-4 mx-2",
|
|
62757
|
+
children: /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
|
|
62758
|
+
className: cn("w-full rounded-3xl p-6 shadow-lg", isDark ? "bg-gray-800 shadow-black/20" : "bg-white shadow-gray-200/80"),
|
|
62759
|
+
children: [/*#__PURE__*/jsxRuntimeExports.jsx("p", {
|
|
62760
|
+
className: cn("text-sm font-medium text-center mb-5", isDark ? "text-gray-300" : "text-gray-500"),
|
|
62761
|
+
style: {
|
|
62762
|
+
fontFamily: fontFamily || "Inter"
|
|
62763
|
+
},
|
|
62764
|
+
children: csatPrompt || "Please rate our support to help us improve."
|
|
62765
|
+
}), renderRatingInput(), /*#__PURE__*/jsxRuntimeExports.jsx("textarea", {
|
|
62766
|
+
value: resolveFeedbackText,
|
|
62767
|
+
onChange: e => {
|
|
62768
|
+
if (e.target.value.length <= 1000) {
|
|
62769
|
+
setResolveFeedbackText(e.target.value);
|
|
62770
|
+
}
|
|
62771
|
+
},
|
|
62772
|
+
maxLength: 1000,
|
|
62773
|
+
placeholder: "Tell us more about your experience...",
|
|
62774
|
+
rows: 4,
|
|
62775
|
+
disabled: isSubmittingResolve,
|
|
62776
|
+
className: cn("w-full rounded-xl border px-4 py-3 text-sm resize-none outline-none transition-colors mb-5", isDark ? "bg-gray-700 border-gray-600 text-gray-100 placeholder-gray-400" : "bg-gray-50 border-gray-200 text-gray-900 placeholder-gray-400"),
|
|
62777
|
+
style: {
|
|
62778
|
+
fontFamily: fontFamily || "Inter"
|
|
62779
|
+
}
|
|
62780
|
+
}), /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
|
|
62781
|
+
className: "relative group",
|
|
62782
|
+
children: [/*#__PURE__*/jsxRuntimeExports.jsx("button", {
|
|
62783
|
+
onClick: handleResolveSubmission,
|
|
62784
|
+
disabled: resolveRating === 0 || isSubmittingResolve,
|
|
62785
|
+
className: cn("w-full py-3.5 rounded-xl text-sm font-semibold transition-all duration-200", "disabled:opacity-50 disabled:cursor-not-allowed", isDark ? "bg-gray-700 text-gray-100 hover:bg-gray-600" : "bg-gray-100 text-gray-700 hover:bg-gray-200"),
|
|
62786
|
+
style: {
|
|
62787
|
+
fontFamily: fontFamily || "Inter"
|
|
62788
|
+
},
|
|
62789
|
+
children: isSubmittingResolve ? "Submitting..." : "Submit Feedback"
|
|
62790
|
+
}), resolveRating === 0 && !isSubmittingResolve && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
62791
|
+
className: "absolute -top-8 left-1/2 -translate-x-1/2 whitespace-nowrap px-2 py-1 rounded-md text-xs bg-gray-800 text-white opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none",
|
|
62792
|
+
children: "Please select a rating first"
|
|
62793
|
+
})]
|
|
62794
|
+
})]
|
|
62795
|
+
})
|
|
62796
|
+
});
|
|
62244
62797
|
if (!isOpen) {
|
|
62245
62798
|
return null;
|
|
62246
62799
|
}
|
|
@@ -62259,14 +62812,14 @@
|
|
|
62259
62812
|
fontSize: fontSize,
|
|
62260
62813
|
onToggleTheme: onToggleTheme,
|
|
62261
62814
|
onMinimize: onMinimize,
|
|
62262
|
-
onClose:
|
|
62815
|
+
onClose: handleCloseClick,
|
|
62263
62816
|
headerTextBold: headerTextBold,
|
|
62264
62817
|
headerTextItalic: headerTextItalic
|
|
62265
62818
|
}), !isMinimized && /*#__PURE__*/jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, {
|
|
62266
|
-
children: [/*#__PURE__*/jsxRuntimeExports.
|
|
62819
|
+
children: [/*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
62267
62820
|
ref: messagesContainerRef,
|
|
62268
62821
|
className: "chat-messages flex-1 overflow-y-auto px-3 py-4 space-y-4 ".concat(isDark ? "bg-gray-900" : "bg-gradient-to-b from-gray-50/50 to-white", " break-words"),
|
|
62269
|
-
children:
|
|
62822
|
+
children: showResolveForm && !isConversationResolved ? renderFeedbackForm() : onboardingActive && !onboardingCompleted && onOnboardingFormSubmit ? /*#__PURE__*/jsxRuntimeExports.jsx(OnboardingForm, {
|
|
62270
62823
|
questions: onboardingQuestions,
|
|
62271
62824
|
onPromptSuggestionClick: onPromptSuggestionClick !== null && onPromptSuggestionClick !== void 0 ? onPromptSuggestionClick : text => onDirectSend === null || onDirectSend === void 0 ? void 0 : onDirectSend(text),
|
|
62272
62825
|
collapsiblePrompt: collectionPrompt,
|
|
@@ -62274,63 +62827,67 @@
|
|
|
62274
62827
|
primaryColor: primaryColor,
|
|
62275
62828
|
isRtl: isRtlLanguage,
|
|
62276
62829
|
isDark: isDark
|
|
62277
|
-
}) : /*#__PURE__*/jsxRuntimeExports.
|
|
62278
|
-
|
|
62279
|
-
|
|
62280
|
-
primaryColor: primaryColor,
|
|
62281
|
-
isLoading: isLoading,
|
|
62282
|
-
agentMessageBubbleColor: agentMessageBubbleColor,
|
|
62283
|
-
userMessageBoxColor: userMessageBoxColor,
|
|
62284
|
-
textColor: textColor,
|
|
62285
|
-
assistantTextColor: assistantTextColor,
|
|
62286
|
-
userTextColor: userTextColor,
|
|
62287
|
-
fontFamily: fontFamily,
|
|
62288
|
-
agentMessageBubbleFontFamily: agentMessageBubbleFontFamily,
|
|
62289
|
-
agentMessageBubbleFontSize: agentMessageBubbleFontSize,
|
|
62290
|
-
userMessageBubbleFontFamily: userMessageBubbleFontFamily,
|
|
62291
|
-
userMessageBubbleFontSize: userMessageBubbleFontSize,
|
|
62292
|
-
fontSize: fontSize,
|
|
62293
|
-
formatTime: formatTime,
|
|
62294
|
-
isRtl: isRtlLanguage,
|
|
62295
|
-
quickQuestions: quickQuestions,
|
|
62296
|
-
shouldShowQuickQuestions: shouldShowQuickQuestions,
|
|
62297
|
-
onQuickQuestion: onQuickQuestion !== null && onQuickQuestion !== void 0 ? onQuickQuestion : onDirectSend,
|
|
62298
|
-
quickQuestionsLayout: quickQuestionsLayout,
|
|
62299
|
-
onDecision: onDecision,
|
|
62300
|
-
disclaimerText: disclaimerText,
|
|
62301
|
-
disclaimerPosition: disclaimerPosition,
|
|
62302
|
-
resolvedAgentBubbleColor: resolvedAgentBubbleColor,
|
|
62303
|
-
resolvedUserMessageColor: resolvedUserMessageColor,
|
|
62304
|
-
resolvedTextColor: resolvedTextColor,
|
|
62305
|
-
isVoiceSessionActive: isVoiceSessionActive,
|
|
62306
|
-
voiceStatus: voiceStatus,
|
|
62307
|
-
messagesContainerRef: messagesContainerRef,
|
|
62308
|
-
companyLogo: companyLogo,
|
|
62309
|
-
conciergeName: conciergeName,
|
|
62310
|
-
companyName: companyName,
|
|
62311
|
-
apiBaseUrl: apiBaseUrl,
|
|
62312
|
-
organizationId: organizationId,
|
|
62313
|
-
conversationResetKey: conversationId
|
|
62314
|
-
}), showCsat && csatEnabled && !csatSubmitted && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
62315
|
-
className: "",
|
|
62316
|
-
children: /*#__PURE__*/jsxRuntimeExports.jsx(CSATWidget, {
|
|
62317
|
-
format: (() => {
|
|
62318
|
-
const fmt = csatFormat || "Emoji";
|
|
62319
|
-
if (fmt === "Emoji") return "EMOJI";
|
|
62320
|
-
if (fmt === "Thumbs") return "THUMBS";
|
|
62321
|
-
if (fmt === "Stars") return "STARS";
|
|
62322
|
-
if (fmt === "Numeric") return "NUMERIC";
|
|
62323
|
-
return (fmt || "EMOJI").toString().toUpperCase();
|
|
62324
|
-
})(),
|
|
62325
|
-
prompt: csatPrompt || "How was your experience?",
|
|
62326
|
-
onRating: handleCsatRating,
|
|
62327
|
-
disabled: false,
|
|
62830
|
+
}) : /*#__PURE__*/jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, {
|
|
62831
|
+
children: [/*#__PURE__*/jsxRuntimeExports.jsx(MessageList, {
|
|
62832
|
+
messages: messages,
|
|
62328
62833
|
isDark: isDark,
|
|
62329
62834
|
primaryColor: primaryColor,
|
|
62330
|
-
|
|
62331
|
-
|
|
62332
|
-
|
|
62333
|
-
|
|
62835
|
+
isLoading: isLoading,
|
|
62836
|
+
agentMessageBubbleColor: agentMessageBubbleColor,
|
|
62837
|
+
userMessageBoxColor: userMessageBoxColor,
|
|
62838
|
+
textColor: textColor,
|
|
62839
|
+
assistantTextColor: assistantTextColor,
|
|
62840
|
+
userTextColor: userTextColor,
|
|
62841
|
+
fontFamily: fontFamily,
|
|
62842
|
+
agentMessageBubbleFontFamily: agentMessageBubbleFontFamily,
|
|
62843
|
+
agentMessageBubbleFontSize: agentMessageBubbleFontSize,
|
|
62844
|
+
userMessageBubbleFontFamily: userMessageBubbleFontFamily,
|
|
62845
|
+
userMessageBubbleFontSize: userMessageBubbleFontSize,
|
|
62846
|
+
fontSize: fontSize,
|
|
62847
|
+
formatTime: formatTime,
|
|
62848
|
+
isRtl: isRtlLanguage,
|
|
62849
|
+
quickQuestions: quickQuestions,
|
|
62850
|
+
shouldShowQuickQuestions: shouldShowQuickQuestions,
|
|
62851
|
+
onQuickQuestion: onQuickQuestion !== null && onQuickQuestion !== void 0 ? onQuickQuestion : onDirectSend,
|
|
62852
|
+
quickQuestionsLayout: quickQuestionsLayout,
|
|
62853
|
+
onDecision: onDecision,
|
|
62854
|
+
disclaimerText: disclaimerText,
|
|
62855
|
+
disclaimerPosition: disclaimerPosition,
|
|
62856
|
+
resolvedAgentBubbleColor: resolvedAgentBubbleColor,
|
|
62857
|
+
resolvedUserMessageColor: resolvedUserMessageColor,
|
|
62858
|
+
resolvedTextColor: resolvedTextColor,
|
|
62859
|
+
isVoiceSessionActive: isVoiceSessionActive,
|
|
62860
|
+
voiceStatus: voiceStatus,
|
|
62861
|
+
messagesContainerRef: messagesContainerRef,
|
|
62862
|
+
companyLogo: companyLogo,
|
|
62863
|
+
chatbotAvatarEnabled: chatbotAvatarEnabled,
|
|
62864
|
+
chatbotAvatar: chatbotAvatar,
|
|
62865
|
+
conciergeName: conciergeName,
|
|
62866
|
+
companyName: companyName,
|
|
62867
|
+
apiBaseUrl: apiBaseUrl,
|
|
62868
|
+
organizationId: organizationId,
|
|
62869
|
+
conversationResetKey: conversationId
|
|
62870
|
+
}), showCsat && csatEnabled && !csatSubmitted && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
|
|
62871
|
+
className: "",
|
|
62872
|
+
children: /*#__PURE__*/jsxRuntimeExports.jsx(CSATWidget, {
|
|
62873
|
+
format: (() => {
|
|
62874
|
+
const fmt = csatFormat || "Emoji";
|
|
62875
|
+
if (fmt === "Emoji") return "EMOJI";
|
|
62876
|
+
if (fmt === "Thumbs") return "THUMBS";
|
|
62877
|
+
if (fmt === "Stars") return "STARS";
|
|
62878
|
+
if (fmt === "Numeric") return "NUMERIC";
|
|
62879
|
+
return (fmt || "EMOJI").toString().toUpperCase();
|
|
62880
|
+
})(),
|
|
62881
|
+
prompt: csatPrompt || "How was your experience?",
|
|
62882
|
+
onRating: handleCsatRating,
|
|
62883
|
+
disabled: false,
|
|
62884
|
+
isDark: isDark,
|
|
62885
|
+
primaryColor: primaryColor,
|
|
62886
|
+
agentMessageBubbleFontSize: agentMessageBubbleFontSize || fontSize,
|
|
62887
|
+
agentMessageBubbleFontFamily: agentMessageBubbleFontFamily || fontFamily
|
|
62888
|
+
})
|
|
62889
|
+
})]
|
|
62890
|
+
})
|
|
62334
62891
|
}), !(onboardingActive && !onboardingCompleted) && /*#__PURE__*/jsxRuntimeExports.jsx(ChatInput, {
|
|
62335
62892
|
inputValue: inputValue,
|
|
62336
62893
|
setInputValue: setInputValue,
|
|
@@ -62348,7 +62905,7 @@
|
|
|
62348
62905
|
userMessageBubbleFontSize: userMessageBubbleFontSize,
|
|
62349
62906
|
fontSize: fontSize,
|
|
62350
62907
|
isRtl: isRtlLanguage,
|
|
62351
|
-
csatVisible: showCsat && csatEnabled && !csatSubmitted,
|
|
62908
|
+
csatVisible: showCsat && csatEnabled && !csatSubmitted || showResolveForm || isConversationResolved,
|
|
62352
62909
|
enableVoiceInteraction: enableVoiceInteraction,
|
|
62353
62910
|
isVoiceSessionActive: isVoiceSessionActive,
|
|
62354
62911
|
voiceStatus: voiceStatus,
|
|
@@ -62364,8 +62921,10 @@
|
|
|
62364
62921
|
onboardingEnabled: onboardingEnabled,
|
|
62365
62922
|
userMessageBoxColor: userMessageBoxColor,
|
|
62366
62923
|
userTextColor: userTextColor,
|
|
62367
|
-
promptSuggestions:
|
|
62368
|
-
onPromptSuggestionClick: onPromptSuggestionClick !== null && onPromptSuggestionClick !== void 0 ? onPromptSuggestionClick : text => onDirectSend === null || onDirectSend === void 0 ? void 0 : onDirectSend(text)
|
|
62924
|
+
promptSuggestions: showResolveForm || isConversationResolved ? [] : stablePromptSuggestions,
|
|
62925
|
+
onPromptSuggestionClick: onPromptSuggestionClick !== null && onPromptSuggestionClick !== void 0 ? onPromptSuggestionClick : text => onDirectSend === null || onDirectSend === void 0 ? void 0 : onDirectSend(text),
|
|
62926
|
+
showResolveButton: hasUserMessages && !isConversationResolved && !showResolveForm && !showCsat,
|
|
62927
|
+
onResolve: () => setShowResolveForm(true)
|
|
62369
62928
|
})]
|
|
62370
62929
|
})]
|
|
62371
62930
|
});
|
|
@@ -62412,6 +62971,7 @@
|
|
|
62412
62971
|
// Required props for dynamic config
|
|
62413
62972
|
orgId,
|
|
62414
62973
|
apiBaseUrl,
|
|
62974
|
+
wsBaseUrl,
|
|
62415
62975
|
// Optional override props (will override fetched config if provided)
|
|
62416
62976
|
darkMode,
|
|
62417
62977
|
primaryColor,
|
|
@@ -62480,7 +63040,7 @@
|
|
|
62480
63040
|
|
|
62481
63041
|
// Map API response to widget props (use props as overrides if provided)
|
|
62482
63042
|
const widgetConfig = reactExports.useMemo(() => {
|
|
62483
|
-
var _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref0, _ref1, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17, _ref18, _ref19, _ref20, _ref21, _ref22, _ref23, _ref24, _agentConfig$inactivi, _agentConfig$inactivi2, _ref25, _ref26, _ref27, _ref28, _ref29, _ref30, _ref31, _ref32, _ref33, _ref34, _ref35, _ref36, _agentConfig$csatEnab, _agentConfig$csatForm, _agentConfig$csatProm, _agentConfig$csatTrig, _agentConfig$csatIdle, _agentConfig$csatFoll, _agentConfig$csatFoll2;
|
|
63043
|
+
var _ref2, _ref3, _ref4, _ref5, _agentConfig$chatbotA, _agentConfig$chatbotA2, _ref6, _ref7, _ref8, _ref9, _ref0, _ref1, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17, _ref18, _ref19, _ref20, _ref21, _ref22, _ref23, _ref24, _agentConfig$inactivi, _agentConfig$inactivi2, _ref25, _ref26, _ref27, _ref28, _ref29, _ref30, _ref31, _ref32, _ref33, _ref34, _ref35, _ref36, _agentConfig$csatEnab, _agentConfig$csatForm, _agentConfig$csatProm, _agentConfig$csatTrig, _agentConfig$csatIdle, _agentConfig$csatFoll, _agentConfig$csatFoll2;
|
|
62484
63044
|
if (!agentConfig) {
|
|
62485
63045
|
return null;
|
|
62486
63046
|
}
|
|
@@ -62491,6 +63051,8 @@
|
|
|
62491
63051
|
companyName: (_ref4 = companyName !== null && companyName !== void 0 ? companyName : agentConfig.companyName) !== null && _ref4 !== void 0 ? _ref4 : "Support Team",
|
|
62492
63052
|
conciergeName: conciergeName !== null && conciergeName !== void 0 ? conciergeName : agentConfig.conciergeName,
|
|
62493
63053
|
companyLogo: (_ref5 = companyLogo !== null && companyLogo !== void 0 ? companyLogo : agentConfig.avatar) !== null && _ref5 !== void 0 ? _ref5 : null,
|
|
63054
|
+
chatbotAvatarEnabled: (_agentConfig$chatbotA = agentConfig.chatbotAvatarEnabled) !== null && _agentConfig$chatbotA !== void 0 ? _agentConfig$chatbotA : false,
|
|
63055
|
+
chatbotAvatar: (_agentConfig$chatbotA2 = agentConfig.chatbotAvatar) !== null && _agentConfig$chatbotA2 !== void 0 ? _agentConfig$chatbotA2 : null,
|
|
62494
63056
|
welcomeMessage: (_ref6 = welcomeMessage !== null && welcomeMessage !== void 0 ? welcomeMessage : agentConfig.welcomeMessage) !== null && _ref6 !== void 0 ? _ref6 : "Hi! How can we help?",
|
|
62495
63057
|
quickQuestions: (_ref7 = quickQuestions !== null && quickQuestions !== void 0 ? quickQuestions : agentConfig.quickQuestions) !== null && _ref7 !== void 0 ? _ref7 : [],
|
|
62496
63058
|
quickQuestionsEnabled: quickQuestionsEnabled !== null && quickQuestionsEnabled !== void 0 ? quickQuestionsEnabled : agentConfig.quickQuestionsEnabled,
|
|
@@ -62547,6 +63109,7 @@
|
|
|
62547
63109
|
welcomeMessage: "Hi! How can we help?",
|
|
62548
63110
|
quickQuestions: [],
|
|
62549
63111
|
apiBaseUrl: apiBaseUrl || "",
|
|
63112
|
+
wsBaseUrl: agentConfig === null || agentConfig === void 0 ? void 0 : agentConfig.wsBaseUrl,
|
|
62550
63113
|
apiKey: apiKey || "",
|
|
62551
63114
|
organizationId: orgId || "",
|
|
62552
63115
|
autoOpen: false,
|
|
@@ -62556,7 +63119,7 @@
|
|
|
62556
63119
|
onboardingQuestions: [],
|
|
62557
63120
|
onboardingEnabled: false,
|
|
62558
63121
|
collectionPrompt: undefined
|
|
62559
|
-
}), [apiBaseUrl, apiKey, orgId]);
|
|
63122
|
+
}), [apiBaseUrl, wsBaseUrl, apiKey, orgId]);
|
|
62560
63123
|
|
|
62561
63124
|
// ALWAYS call hooks before any early returns (Rules of Hooks)
|
|
62562
63125
|
const {
|
|
@@ -62592,6 +63155,7 @@
|
|
|
62592
63155
|
welcomeMessage: widgetConfig.welcomeMessage,
|
|
62593
63156
|
quickQuestions: widgetConfig.quickQuestions,
|
|
62594
63157
|
apiBaseUrl,
|
|
63158
|
+
wsBaseUrl: agentConfig === null || agentConfig === void 0 ? void 0 : agentConfig.wsBaseUrl,
|
|
62595
63159
|
apiKey,
|
|
62596
63160
|
organizationId: widgetConfig.organizationId,
|
|
62597
63161
|
autoOpen,
|
|
@@ -62649,6 +63213,8 @@
|
|
|
62649
63213
|
companyName: widgetConfig.companyName,
|
|
62650
63214
|
conciergeName: widgetConfig.conciergeName,
|
|
62651
63215
|
companyLogo: widgetConfig.companyLogo,
|
|
63216
|
+
chatbotAvatarEnabled: widgetConfig.chatbotAvatarEnabled,
|
|
63217
|
+
chatbotAvatar: widgetConfig.chatbotAvatar,
|
|
62652
63218
|
messages: messages,
|
|
62653
63219
|
isLoading: isLoading,
|
|
62654
63220
|
inputValue: inputValue,
|
|
@@ -62741,6 +63307,7 @@
|
|
|
62741
63307
|
autoOpen: false,
|
|
62742
63308
|
openDelay: 0,
|
|
62743
63309
|
apiBaseUrl: null,
|
|
63310
|
+
wsBaseUrl: null,
|
|
62744
63311
|
apiKey: null,
|
|
62745
63312
|
organizationId: null,
|
|
62746
63313
|
sessionUrl: null,
|
|
@@ -62818,11 +63385,13 @@
|
|
|
62818
63385
|
// Render component
|
|
62819
63386
|
// If orgId and apiBaseUrl are provided, use dynamic config
|
|
62820
63387
|
// Otherwise, use the old static config approach for backward compatibility
|
|
62821
|
-
const widgetProps = config.orgId && config.apiBaseUrl ? _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
|
|
63388
|
+
const widgetProps = config.orgId && config.apiBaseUrl ? _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
|
|
62822
63389
|
// Required props
|
|
62823
63390
|
orgId: config.orgId,
|
|
62824
63391
|
apiBaseUrl: config.apiBaseUrl
|
|
62825
|
-
}, options.
|
|
63392
|
+
}, options.wsBaseUrl !== undefined && {
|
|
63393
|
+
wsBaseUrl: config.wsBaseUrl
|
|
63394
|
+
}), options.position !== undefined && {
|
|
62826
63395
|
position: config.position
|
|
62827
63396
|
}), options.quickQuestionsLayout !== undefined && {
|
|
62828
63397
|
quickQuestionsLayout: config.quickQuestionsLayout
|
|
@@ -62888,6 +63457,7 @@
|
|
|
62888
63457
|
className: config.className
|
|
62889
63458
|
}) : _objectSpread2(_objectSpread2({}, config), {}, {
|
|
62890
63459
|
apiBaseUrl: config.apiBaseUrl,
|
|
63460
|
+
wsBaseUrl: config.wsBaseUrl,
|
|
62891
63461
|
organizationId: config.organizationId
|
|
62892
63462
|
});
|
|
62893
63463
|
root.render(/*#__PURE__*/reactExports.createElement(ChatWidget, widgetProps));
|