@smartspace/chat-ui 1.14.4-pr.453.668909 → 1.14.4-pr.453.d6dd83a
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/index.css +1 -1
- package/dist/index.d.ts +28 -38
- package/dist/index.js +61 -58
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.css
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
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: }
|
|
2
2
|
|
|
3
|
-
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:hsl(var(--border))}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:2rem;padding-left:2rem}@media (min-width:1400px){.container{max-width:1400px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.inset-x-0{left:0;right:0}.-right-2{right:-.5rem}.-top-2{top:-.5rem}.bottom-1{bottom:.25rem}.right-1{right:.25rem}.right-2{right:.5rem}.top-1{top:.25rem}.top-2{top:.5rem}.z-50{z-index:50}.m-0{margin:0}.-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-6{margin-bottom:1.5rem}.mb-auto{margin-bottom:auto}.ml-1{margin-left:.25rem}.ml-auto{margin-left:auto}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.h-1{height:.25rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[58px\]{height:58px}.h-full{height:100%}.max-h-60{max-height:15rem}.max-h-72{max-height:18rem}.max-h-\[400px\]{max-height:400px}.max-h-\[60\%\]{max-height:60%}.min-h-0{min-height:0}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[180px\]{width:180px}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[16px\]{min-width:16px}.min-w-\[180px\]{min-width:180px}.max-w-2xl{max-width:42rem}.max-w-\[9rem\]{max-width:9rem}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-5{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))}.translate-x-5{--tw-translate-x:1.25rem}.rotate-180{--tw-rotate:180deg}.rotate-180,.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 ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-y{resize:vertical}.resize{resize:both}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.rounded{border-radius:.25rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-border{border-color:hsl(var(--border))}.border-border\/60{border-color:hsl(var(--border)/.6)}.border-border\/70{border-color:hsl(var(--border)/.7)}.border-destructive{border-color:hsl(var(--destructive))}.border-destructive\/30{border-color:hsl(var(--destructive)/.3)}.border-emerald-200{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-input{border-color:hsl(var(--input))}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground)/.3)}.border-primary\/30{border-color:hsl(var(--primary)/.3)}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.border-l-transparent{border-left-color:transparent}.border-t-current{border-top-color:currentColor}.border-t-foreground\/60{border-top-color:hsl(var(--foreground)/.6)}.bg-amber-500\/10{background-color:rgba(245,158,11,.1)}.bg-background{background-color:hsl(var(--background))}.bg-background\/90{background-color:hsl(var(--background)/.9)}.bg-border{background-color:hsl(var(--border))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/10{background-color:hsl(var(--destructive)/.1)}.bg-destructive\/30{background-color:hsl(var(--destructive)/.3)}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.bg-input{background-color:hsl(var(--input))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/10{background-color:hsl(var(--muted)/.1)}.bg-muted\/20{background-color:hsl(var(--muted)/.2)}.bg-muted\/30{background-color:hsl(var(--muted)/.3)}.bg-muted\/5{background-color:hsl(var(--muted)/.05)}.bg-muted\/60{background-color:hsl(var(--muted)/.6)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary)/.1)}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/60{background-color:hsl(var(--secondary)/.6)}.bg-transparent{background-color:transparent}.via-blue-500\/5{--tw-gradient-to:rgba(59,130,246,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgba(59,130,246,.05) var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-emerald-500\/5{--tw-gradient-to:rgba(16,185,129,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgba(16,185,129,.05) var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-primary\/5{--tw-gradient-to:hsl(var(--primary)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsl(var(--primary)/0.05) var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-red-500\/5{--tw-gradient-to:rgba(239,68,68,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgba(239,68,68,.05) var(--tw-gradient-via-position),var(--tw-gradient-to)}.to-blue-500\/10{--tw-gradient-to:rgba(59,130,246,.1) var(--tw-gradient-to-position)}.to-emerald-500\/10{--tw-gradient-to:rgba(16,185,129,.1) var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to:hsl(var(--primary)/0.1) var(--tw-gradient-to-position)}.to-red-500\/10{--tw-gradient-to:rgba(239,68,68,.1) var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-\[1px\]{padding:1px}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-px{padding-top:1px;padding-bottom:1px}.pb-1{padding-bottom:.25rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.font-sans{font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-4{line-height:1rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity,1))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/80{color:hsl(var(--foreground)/.8)}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/70{color:hsl(var(--muted-foreground)/.7)}.text-muted-foreground\/80{color:hsl(var(--muted-foreground)/.8)}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.no-underline{text-decoration-line:none}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--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)}.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)}.ring-ring{--tw-ring-color:hsl(var(--ring))}.ring-offset-2{--tw-ring-offset-width:2px}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.blur{--tw-blur:blur(8px)}.blur,.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)}.invert{--tw-invert:invert(100%)}.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)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.running{animation-play-state:running}.paused{animation-play-state:paused}@layer chat-ui-defaults{:root{--background:30 25% 99%;--foreground:222 47% 11%;--card:0 0% 100%;--card-foreground:222 47% 11%;--popover:0 0% 100%;--popover-foreground:222 47% 11%;--brand-accent:194.25 90.91% 34.51%;--primary:var(--brand-accent);--primary-foreground:0 0% 100%;--secondary:30 15% 95%;--secondary-foreground:222 47% 11%;--muted:30 15% 95%;--muted-foreground:215 16% 47%;--accent:var(--brand-accent);--accent-foreground:0 0% 100%;--destructive:0 84% 60%;--destructive-foreground:0 0% 100%;--border:30 15% 90%;--input:30 15% 90%;--ring:var(--brand-accent);--radius:0.75rem;--chat-area-bg:30 25% 99%;--surface-raised:0 0% 100%;--surface-hairline:30 15% 88%;--bubble-user-bg:30 15% 95%;--bubble-user-fg:222 47% 18%;--composer-shadow:0 8px 24px hsla(30,15%,70%,.18),0 1px 2px hsla(30,15%,70%,.1);--scrollbar-thumb:30 10% 78%;--star:40 90% 55%;--notification:0 80% 55%;--sidebar-background:220 43% 7%;--sidebar-foreground:0 0% 98%;--sidebar-primary:189 81% 49%;--sidebar-primary-foreground:0 0% 100%;--sidebar-accent:232 17% 18%;--sidebar-accent-foreground:0 0% 98%;--sidebar-border:232 17% 20%;--sidebar-ring:189 81% 49%}.dark{--background:222 35% 7%;--foreground:210 20% 92%;--card:224 30% 12%;--card-foreground:210 20% 92%;--popover:224 30% 12%;--popover-foreground:210 20% 92%;--brand-accent:189 81% 49%;--primary:var(--brand-accent);--primary-foreground:0 0% 100%;--secondary:224 30% 12%;--secondary-foreground:210 20% 92%;--muted:222 25% 10%;--muted-foreground:215 16% 60%;--accent:var(--brand-accent);--accent-foreground:0 0% 100%;--destructive:0 63% 31%;--destructive-foreground:210 40% 98%;--border:222 20% 22%;--input:222 20% 22%;--ring:var(--brand-accent);--radius:0.75rem;--chat-area-bg:222 35% 7%;--surface-raised:224 30% 12%;--surface-hairline:222 20% 25%;--bubble-user-bg:224 30% 12%;--bubble-user-fg:210 20% 88%;--composer-shadow:0 8px 24px rgba(0,0,0,.35);--scrollbar-thumb:222 20% 26%}}.chat-main{background-color:hsl(var(--chat-area-bg))}.chat-scroll{mask-image:linear-gradient(180deg,transparent 0,#000 32px,#000 calc(100% - 12px),transparent);-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 32px,#000 calc(100% - 12px),transparent)}.chat-column{max-width:48rem;margin-left:auto;margin-right:auto}.chat-turns>*+*{margin-top:1.75rem}.chat-bubble-user{background-color:hsl(var(--bubble-user-bg));border:1px solid hsl(var(--surface-hairline));border-radius:1rem;border-top-right-radius:.25rem;box-shadow:0 1px 2px hsla(30,15%,80%,.25);color:hsl(var(--bubble-user-fg));padding:.875rem 1.25rem}.dark .chat-bubble-user{box-shadow:0 1px 2px rgba(0,0,0,.3)}.chat-composer{background-color:hsl(var(--surface-raised));border:1px solid hsl(var(--surface-hairline));border-radius:1rem;box-shadow:var(--composer-shadow);transition:border-color .15s ease-out,box-shadow .15s ease-out}.chat-composer:focus-within{border-color:hsl(var(--brand-accent)/.5);box-shadow:0 8px 24px hsl(var(--brand-accent)/.1),0 0 0 4px hsl(var(--brand-accent)/.08)}.dark .chat-composer:focus-within{box-shadow:0 8px 24px rgba(0,0,0,.4),0 0 0 4px hsl(var(--brand-accent)/.12)}.chat-send{background-color:hsl(var(--brand-accent));color:#fff;box-shadow:0 2px 8px hsl(var(--brand-accent)/.35)}.chat-send:disabled{background-color:hsl(var(--muted));color:hsl(var(--muted-foreground));box-shadow:none}.ss-composer__actions .jsonforms-compact .ss-jsonforms-grid{gap:4px;align-items:center}.ss-composer__actions .jsonforms-compact .compact-field,.ss-composer__actions .jsonforms-compact .ss-jsonforms-textarea{width:auto;flex:0 0 auto;min-width:0}.ss-composer__actions .jsonforms-compact .w-full{width:auto}.ss-composer__actions .jsonforms-compact .justify-center{justify-content:flex-start}.ss-variables-panel .jsonforms-compact .ss-jsonforms-grid{flex-direction:column;align-items:stretch;gap:12px}.ss-variables-panel .jsonforms-compact .compact-field,.ss-variables-panel .jsonforms-compact .ss-jsonforms-cell{width:100%}.chat-prose{font-size:.875rem;line-height:1.65;color:hsl(var(--foreground));overflow-wrap:break-word;word-break:break-word}.chat-prose>*+*{margin-top:.75rem}.chat-prose p{margin:0}.chat-prose strong{color:hsl(var(--foreground));font-weight:600}.chat-prose p:has(>strong:only-child){margin-top:1.1rem;margin-bottom:.15rem}.chat-prose p:has(>strong:only-child)>strong{display:inline-block;font-size:.875rem;font-weight:600;letter-spacing:-.005em}.chat-prose h1,.chat-prose h2,.chat-prose h3,.chat-prose h4{font-size:.875rem;font-weight:600;letter-spacing:-.005em;color:hsl(var(--foreground));margin-top:1.1rem;margin-bottom:.15rem;line-height:1.4}.chat-prose ol,.chat-prose ul{margin:.35rem 0 0;padding-left:0;list-style:none}.chat-prose ol+*,.chat-prose ul+*{margin-top:.85rem}.chat-prose li{position:relative;padding-left:1.5rem;margin-top:.2rem;line-height:1.5}.chat-prose li:first-child{margin-top:0}.chat-prose ul>li:before{content:"";position:absolute;left:.5rem;top:.6em;width:3px;height:3px;border-radius:50%;background:hsl(var(--muted-foreground))}.chat-prose ol{counter-reset:chat-ol}.chat-prose ol>li{counter-increment:chat-ol}.chat-prose ol>li:before{content:counter(chat-ol) ".";position:absolute;left:0;top:0;font-size:.875rem;font-weight:500;font-variant-numeric:tabular-nums;color:hsl(var(--muted-foreground));width:1.1rem;text-align:right;line-height:1.5}.chat-prose li>ol,.chat-prose li>ul{margin-top:.2rem}.chat-prose-table-wrap{margin:1rem 0;border-radius:12px;border:1px solid hsl(var(--border));background:hsl(var(--card));overflow-x:auto;max-width:100%;box-shadow:0 1px 2px hsla(30,15%,80%,.18)}.chat-prose table{width:100%;border-collapse:collapse;font-size:.8125rem}.chat-prose th{background:hsl(var(--brand-accent)/.07);font-weight:600;text-align:left;border-bottom:1px solid hsl(var(--border));letter-spacing:-.005em}.chat-prose td,.chat-prose th{color:hsl(var(--foreground));padding:.625rem .875rem}.chat-prose td{border-bottom:1px solid hsl(var(--border)/.6)}.chat-prose tr:last-child td{border-bottom:none}.chat-prose tr:hover td{background:hsl(var(--brand-accent)/.03)}.dark .chat-prose-table-wrap{box-shadow:0 1px 2px rgba(0,0,0,.35)}.chat-prose :not(pre)>code{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8125em;padding:.125rem .375rem;border-radius:4px;background:hsl(var(--brand-accent)/.08);color:hsl(var(--brand-accent));border:1px solid hsl(var(--brand-accent)/.15)}.chat-prose pre{margin:1rem 0;padding:1rem 1.125rem;border-radius:12px;background:#0c0f18;border:1px solid #2d3443;overflow-x:auto;max-width:100%;font-size:.8125rem;line-height:1.6}.chat-prose pre code{background:none;border:none;padding:0;color:#dae0e7;font-size:inherit;white-space:pre}.chat-prose a{color:hsl(var(--brand-accent));text-decoration:none;border-bottom:1px solid hsl(var(--brand-accent)/.3);transition:border-color .15s ease-out}.chat-prose a:hover{border-bottom-color:hsl(var(--brand-accent))}.chat-prose blockquote{margin:1rem 0;padding:.5rem 0 .5rem 1rem;border-left:2px solid hsl(var(--brand-accent)/.4);color:hsl(var(--muted-foreground));font-style:italic}.chat-prose hr{border:none;border-top:1px solid hsl(var(--border));margin:1.5rem 0}@keyframes chat-stream-clip{0%{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0 0 0 0)}}.chat-streaming{animation:chat-stream-clip 1.8s cubic-bezier(.22,1,.36,1) forwards;-webkit-mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 28px),rgba(0,0,0,.4) calc(100% - 8px),transparent);mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 28px),rgba(0,0,0,.4) calc(100% - 8px),transparent)}@keyframes chat-caret-blink{0%,49%{opacity:1}50%,to{opacity:.15}}.chat-streaming>:last-child:after{content:"";display:inline-block;width:7px;height:1em;margin-left:4px;vertical-align:-2px;background:hsl(var(--brand-accent));border-radius:1px;animation:chat-caret-blink .85s steps(2,start) infinite;box-shadow:0 0 6px hsl(var(--brand-accent)/.55)}.chat-streaming>.chat-prose-table-wrap:last-child:after{display:block;margin:.5rem 0 0 2px}@keyframes chat-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.chat-thinking-shimmer{background-image:linear-gradient(90deg,hsl(var(--muted-foreground)) 0,hsl(var(--muted-foreground)) 35%,hsl(var(--brand-accent)) 50%,hsl(var(--muted-foreground)) 65%,hsl(var(--muted-foreground)) 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:chat-shimmer 2.2s linear infinite;letter-spacing:-.005em}@keyframes chat-dot-wave{0%,60%,to{transform:translateY(0);opacity:.35}30%{transform:translateY(-3px);opacity:1}}.chat-thinking-dots{display:inline-flex;align-items:flex-end;gap:3px}.chat-thinking-dots>span{width:4px;height:4px;border-radius:50%;background:hsl(var(--brand-accent));animation:chat-dot-wave 1.1s ease-in-out infinite}.chat-thinking-dots>span:nth-child(2){animation-delay:.15s}.chat-thinking-dots>span:nth-child(3){animation-delay:.3s}@media (prefers-reduced-motion:reduce){.chat-streaming,.chat-thinking-dots>span,.chat-thinking-shimmer{animation:none!important}.chat-streaming{clip-path:none;mask-image:none;-webkit-mask-image:none}}.jsonforms-compact .ss-jsonforms-grid{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start}.jsonforms-compact .ss-jsonforms-cell{flex:0 0 auto;min-width:0}.jsonforms-compact .ss-jsonforms-textarea{flex:1 1 100%}.jsonforms-compact .compact-field{width:280px;max-width:100%}@media (max-width:480px){.jsonforms-compact .compact-field{width:100%}}.md-editor,.ss-attach{position:relative}.ss-attach{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;border-radius:8px;background:hsl(var(--muted,0 0% 96%));border:1px solid hsl(var(--border,0 0% 89%));overflow:hidden;min-width:32px;min-height:32px}.ss-attach--image{padding:2px}.ss-attach__img{display:block;-o-object-fit:contain;object-fit:contain;border-radius:6px}.ss-attach__spinner{position:absolute;top:50%;left:50%;width:22px;height:22px;margin:-11px 0 0 -11px;border-radius:50%;border:2px solid hsl(var(--muted-foreground,0 0% 40%)/.25);border-top-color:hsl(var(--foreground,0 0% 10%));animation:ss-attach-spin .7s linear infinite;pointer-events:none;z-index:1;box-sizing:border-box}@keyframes ss-attach-spin{to{transform:rotate(1turn)}}.ss-attach__remove{position:absolute;top:4px;right:4px;width:20px;height:20px;padding:0;border-radius:50%;border:1px solid hsl(var(--border,0 0% 89%));background:hsla(0,0%,100%,.95);color:hsl(var(--muted-foreground,0 0% 40%));cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;font:inherit;opacity:0;transition:opacity .15s ease,color .15s ease,background .15s ease;z-index:2;box-shadow:0 1px 2px rgba(0,0,0,.08)}.ss-attach:hover .ss-attach__remove,.ss-attach__remove:focus-visible{opacity:1}.ss-attach__remove:hover{color:#dc2626;background:#fff}.ss-attach__remove svg{width:12px;height:12px;display:block}.md-editor .ProseMirror{min-height:var(--md-min-height,1.6em);max-height:var(--md-max-height,none);overflow:auto;--md-pad-v:12px;--md-pad-h:14px;padding:var(--md-pad-v) var(--md-pad-h);border:1px solid #e3e3e3;border-radius:10px;line-height:1.6;outline:none}.md-editor .ProseMirror:focus{border-color:#b9d6ff;box-shadow:0 0 0 3px rgba(70,128,255,.15)}.md-editor.md-editor--readonly .ProseMirror{border:none;padding:0;box-shadow:none}.md-editor.md-editor--bare .ProseMirror{border:none;padding:0;box-shadow:none;--md-pad-v:0px;--md-pad-h:0px}.md-editor .ProseMirror a{color:#2563eb;text-decoration:underline;cursor:pointer}.ss-markdown .ss-attach__img[data-error]{background:rgba(220,38,38,.08)}.file-tag{display:inline-block;padding:0 6px;border-radius:6px;border:1px solid #a7b7e9;background:#eef2ff;font-size:.9em;color:#2b3a8a;-webkit-user-select:text;-moz-user-select:text;user-select:text;white-space:nowrap}.md-editor__ghost{position:absolute;top:var(--md-pad-v);left:var(--md-pad-h);right:var(--md-pad-h);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.md-editor__dictation-ghost,.md-editor__ghost{color:#9aa2af;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;font:inherit;line-height:inherit}.md-editor__dictation-ghost{white-space:pre-wrap}.md-editor__dictation-dots{display:inline-flex;align-items:center;gap:3px;margin-left:4px;line-height:0;vertical-align:middle}.md-editor__dictation-dots>span{width:4px;height:4px;border-radius:50%;background:currentColor;animation:chat-dot-wave 1.1s ease-in-out infinite}.md-editor__dictation-dots>span:nth-child(2){animation-delay:.15s}.md-editor__dictation-dots>span:nth-child(3){animation-delay:.3s}.md-editor .ProseMirror>:first-child{margin-top:0}.mention{background:#f0f9ff;border:1px solid #bae6fd;border-radius:6px;padding:0 6px;color:#0369a1}.md-editor .ss-code-block,.ss-markdown .ss-code-block{border:1px solid var(--border,#e5e7eb);border-radius:8px;background:#0b1020;color:#e6edf3;margin:.75em 0;overflow:hidden}.md-editor .ss-code-block__header,.ss-markdown .ss-code-block__header{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:hsla(0,0%,100%,.06);border-bottom:1px solid hsla(0,0%,100%,.08);font-size:12px;line-height:1}.md-editor .ss-code-block__lang,.ss-markdown .ss-code-block__lang{text-transform:uppercase;letter-spacing:.04em;color:#9ba3af;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.md-editor .ss-code-block__actions,.ss-markdown .ss-code-block__actions{display:flex;align-items:center;gap:6px}.md-editor .ss-code-block__copy,.md-editor .ss-code-block__toggle,.ss-markdown .ss-code-block__copy,.ss-markdown .ss-code-block__toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:hsla(0,0%,100%,.1);color:#e6edf3;border:1px solid hsla(0,0%,100%,.15);border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer;font-family:inherit;line-height:1}.md-editor .ss-code-block__copy:hover,.md-editor .ss-code-block__toggle:hover,.ss-markdown .ss-code-block__copy:hover,.ss-markdown .ss-code-block__toggle:hover{background:hsla(0,0%,100%,.18)}.md-editor .ss-code-block pre,.ss-markdown .ss-code-block pre{margin:0;padding:12px 14px;background:transparent;color:inherit;overflow-x:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.5;white-space:pre}.md-editor .ss-code-block pre code,.ss-markdown .ss-code-block pre code{background:transparent;color:inherit;padding:0;font:inherit}.md-editor .ss-code-block__iframe,.ss-markdown .ss-code-block__iframe{display:block;width:100%;height:500px;border:0;background:#fff;vertical-align:top;transition:opacity .2s ease}.ss-markdown .ss-code-block__preview{position:relative}.ss-markdown .ss-code-block__loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;z-index:1;color:#6b7280;font-size:12px;letter-spacing:.02em;background-color:#fff;background-image:linear-gradient(100deg,transparent 30%,rgba(0,0,0,.05) 50%,transparent 70%);background-size:200% 100%;animation:ss-code-block-shimmer 1.4s ease-in-out infinite}.ss-markdown .ss-code-block__spinner{width:22px;height:22px;border:2.5px solid rgba(0,0,0,.12);border-top-color:rgba(0,0,0,.5);border-radius:50%;animation:ss-code-block-spin .8s linear infinite}@keyframes ss-code-block-spin{to{transform:rotate(1turn)}}@keyframes ss-code-block-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.ss-markdown .ss-code-block__loading{animation:none}.ss-markdown .ss-code-block__spinner{animation-duration:1.6s}.ss-markdown .ss-code-block__iframe{transition:none}}.ss-markdown :not(pre)>code{background:hsla(44,6%,50%,.15);color:#c7254e;padding:1px 5px;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.ss-markdown a{color:#2563eb;text-decoration:underline}.ss-markdown details{margin:.75em 0}.ss-markdown summary{cursor:pointer;font-weight:600}.md-editor .ProseMirror :not(pre)>code{background:hsla(44,6%,50%,.15);color:#c7254e;padding:1px 5px;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.md-mention-menu{background:hsl(var(--background,0 0% 100%));color:var(--foreground,#111);border:1px solid var(--border,#e5e7eb);border-radius:8px;box-shadow:0 10px 30px rgba(0,0,0,.12);min-width:220px;max-width:320px;overflow:hidden;z-index:1000}.md-editor__has-dictation-ghost br.ProseMirror-trailingBreak{display:none}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.first\:mt-0:first-child{margin-top:0}.hover\:border-border:hover{border-color:hsl(var(--border))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive)/.9)}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/40:hover{background-color:hsl(var(--muted)/.4)}.hover\:bg-muted\/60:hover{background-color:hsl(var(--muted)/.6)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary)/.9)}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/60:hover{background-color:hsl(var(--secondary)/.6)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary)/.8)}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:underline:hover{text-decoration-line:underline}.focus\:border-primary\/40:focus{border-color:hsl(var(--primary)/.4)}.focus-visible\:opacity-100:focus-visible{opacity:1}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.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)}.focus-visible\:ring-primary:focus-visible{--tw-ring-color:hsl(var(--primary))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:hsl(var(--background))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.group:hover .group-hover\:opacity-100{opacity:1}.dark\:via-emerald-400\/10:is(.dark *){--tw-gradient-to:rgba(52,211,153,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgba(52,211,153,.1) var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-primary\/10:is(.dark *){--tw-gradient-to:hsl(var(--primary)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsl(var(--primary)/0.1) var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-red-400\/10:is(.dark *){--tw-gradient-to:hsla(0,91%,71%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsla(0,91%,71%,.1) var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:to-emerald-400\/20:is(.dark *){--tw-gradient-to:rgba(52,211,153,.2) var(--tw-gradient-to-position)}.dark\:to-primary\/20:is(.dark *){--tw-gradient-to:hsl(var(--primary)/0.2) var(--tw-gradient-to-position)}.dark\:to-red-400\/20:is(.dark *){--tw-gradient-to:hsla(0,91%,71%,.2) var(--tw-gradient-to-position)}.dark\:text-amber-400:is(.dark *){--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}@media not all and (min-width:640px){.max-sm\:hidden{display:none}.max-sm\:max-w-\[180px\]{max-width:180px}}@media (min-width:640px){.sm\:inline{display:inline}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:768px){.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\[\&\>button\]\:h-6>button{height:1.5rem}.\[\&\>button\]\:w-6>button{width:1.5rem}.\[\&\>div\]\:\!block>div{display:block!important}@media(hover:hover){.\[\@media\(hover\:hover\)\]\:opacity-0{opacity:0}.group:hover .\[\@media\(hover\:hover\)\]\:group-hover\:opacity-100{opacity:1}}
|
|
3
|
+
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:hsl(var(--border))}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:2rem;padding-left:2rem}@media (min-width:1400px){.container{max-width:1400px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.inset-x-0{left:0;right:0}.-right-2{right:-.5rem}.-top-2{top:-.5rem}.bottom-1{bottom:.25rem}.right-1{right:.25rem}.right-2{right:.5rem}.top-1{top:.25rem}.top-2{top:.5rem}.z-50{z-index:50}.m-0{margin:0}.-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-6{margin-bottom:1.5rem}.mb-auto{margin-bottom:auto}.ml-1{margin-left:.25rem}.ml-auto{margin-left:auto}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.h-1{height:.25rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[58px\]{height:58px}.h-full{height:100%}.max-h-60{max-height:15rem}.max-h-72{max-height:18rem}.max-h-\[400px\]{max-height:400px}.max-h-\[60\%\]{max-height:60%}.min-h-0{min-height:0}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[180px\]{width:180px}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[16px\]{min-width:16px}.min-w-\[180px\]{min-width:180px}.max-w-2xl{max-width:42rem}.max-w-\[9rem\]{max-width:9rem}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-5{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))}.translate-x-5{--tw-translate-x:1.25rem}.rotate-180{--tw-rotate:180deg}.rotate-180,.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 ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-y{resize:vertical}.resize{resize:both}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.rounded{border-radius:.25rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-border{border-color:hsl(var(--border))}.border-border\/60{border-color:hsl(var(--border)/.6)}.border-border\/70{border-color:hsl(var(--border)/.7)}.border-destructive{border-color:hsl(var(--destructive))}.border-destructive\/30{border-color:hsl(var(--destructive)/.3)}.border-emerald-200{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-input{border-color:hsl(var(--input))}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground)/.3)}.border-primary\/30{border-color:hsl(var(--primary)/.3)}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.border-l-transparent{border-left-color:transparent}.border-t-current{border-top-color:currentColor}.border-t-foreground\/60{border-top-color:hsl(var(--foreground)/.6)}.bg-amber-500\/10{background-color:rgba(245,158,11,.1)}.bg-background{background-color:hsl(var(--background))}.bg-background\/90{background-color:hsl(var(--background)/.9)}.bg-border{background-color:hsl(var(--border))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/10{background-color:hsl(var(--destructive)/.1)}.bg-destructive\/30{background-color:hsl(var(--destructive)/.3)}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.bg-input{background-color:hsl(var(--input))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/10{background-color:hsl(var(--muted)/.1)}.bg-muted\/20{background-color:hsl(var(--muted)/.2)}.bg-muted\/30{background-color:hsl(var(--muted)/.3)}.bg-muted\/5{background-color:hsl(var(--muted)/.05)}.bg-muted\/60{background-color:hsl(var(--muted)/.6)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary)/.1)}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/60{background-color:hsl(var(--secondary)/.6)}.bg-transparent{background-color:transparent}.via-blue-500\/5{--tw-gradient-to:rgba(59,130,246,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgba(59,130,246,.05) var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-emerald-500\/5{--tw-gradient-to:rgba(16,185,129,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgba(16,185,129,.05) var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-primary\/5{--tw-gradient-to:hsl(var(--primary)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsl(var(--primary)/0.05) var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-red-500\/5{--tw-gradient-to:rgba(239,68,68,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgba(239,68,68,.05) var(--tw-gradient-via-position),var(--tw-gradient-to)}.to-blue-500\/10{--tw-gradient-to:rgba(59,130,246,.1) var(--tw-gradient-to-position)}.to-emerald-500\/10{--tw-gradient-to:rgba(16,185,129,.1) var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to:hsl(var(--primary)/0.1) var(--tw-gradient-to-position)}.to-red-500\/10{--tw-gradient-to:rgba(239,68,68,.1) var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-\[1px\]{padding:1px}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-px{padding-top:1px;padding-bottom:1px}.pb-1{padding-bottom:.25rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.font-sans{font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-4{line-height:1rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity,1))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/80{color:hsl(var(--foreground)/.8)}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/70{color:hsl(var(--muted-foreground)/.7)}.text-muted-foreground\/80{color:hsl(var(--muted-foreground)/.8)}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.no-underline{text-decoration-line:none}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--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)}.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)}.ring-ring{--tw-ring-color:hsl(var(--ring))}.ring-offset-2{--tw-ring-offset-width:2px}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.blur{--tw-blur:blur(8px)}.blur,.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)}.invert{--tw-invert:invert(100%)}.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)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.running{animation-play-state:running}.paused{animation-play-state:paused}@layer chat-ui-defaults{:root{--background:30 25% 99%;--foreground:222 47% 11%;--card:0 0% 100%;--card-foreground:222 47% 11%;--popover:0 0% 100%;--popover-foreground:222 47% 11%;--brand-accent:194.25 90.91% 34.51%;--primary:var(--brand-accent);--primary-foreground:0 0% 100%;--secondary:30 15% 95%;--secondary-foreground:222 47% 11%;--muted:30 15% 95%;--muted-foreground:215 16% 47%;--accent:var(--brand-accent);--accent-foreground:0 0% 100%;--destructive:0 84% 60%;--destructive-foreground:0 0% 100%;--border:30 15% 90%;--input:30 15% 90%;--ring:var(--brand-accent);--radius:0.75rem;--chat-area-bg:30 25% 99%;--surface-raised:0 0% 100%;--surface-hairline:30 15% 88%;--bubble-user-bg:30 15% 95%;--bubble-user-fg:222 47% 18%;--composer-shadow:0 8px 24px hsla(30,15%,70%,.18),0 1px 2px hsla(30,15%,70%,.1);--scrollbar-thumb:30 10% 78%;--star:40 90% 55%;--notification:0 80% 55%;--sidebar-background:220 43% 7%;--sidebar-foreground:0 0% 98%;--sidebar-primary:189 81% 49%;--sidebar-primary-foreground:0 0% 100%;--sidebar-accent:232 17% 18%;--sidebar-accent-foreground:0 0% 98%;--sidebar-border:232 17% 20%;--sidebar-ring:189 81% 49%}.dark{--background:222 35% 7%;--foreground:210 20% 92%;--card:224 30% 12%;--card-foreground:210 20% 92%;--popover:224 30% 12%;--popover-foreground:210 20% 92%;--brand-accent:189 81% 49%;--primary:var(--brand-accent);--primary-foreground:0 0% 100%;--secondary:224 30% 12%;--secondary-foreground:210 20% 92%;--muted:222 25% 10%;--muted-foreground:215 16% 60%;--accent:var(--brand-accent);--accent-foreground:0 0% 100%;--destructive:0 63% 31%;--destructive-foreground:210 40% 98%;--border:222 20% 22%;--input:222 20% 22%;--ring:var(--brand-accent);--radius:0.75rem;--chat-area-bg:222 35% 7%;--surface-raised:224 30% 12%;--surface-hairline:222 20% 25%;--bubble-user-bg:224 30% 12%;--bubble-user-fg:210 20% 88%;--composer-shadow:0 8px 24px rgba(0,0,0,.35);--scrollbar-thumb:222 20% 26%}}.chat-main{background-color:hsl(var(--chat-area-bg))}.chat-scroll{mask-image:linear-gradient(180deg,transparent 0,#000 32px,#000 calc(100% - 12px),transparent);-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 32px,#000 calc(100% - 12px),transparent)}.chat-column{max-width:48rem;margin-left:auto;margin-right:auto}.chat-turns>*+*{margin-top:1.75rem}.chat-bubble-user{background-color:hsl(var(--bubble-user-bg));border:1px solid hsl(var(--surface-hairline));border-radius:1rem;border-top-right-radius:.25rem;box-shadow:0 1px 2px hsla(30,15%,80%,.25);color:hsl(var(--bubble-user-fg));padding:.875rem 1.25rem}.dark .chat-bubble-user{box-shadow:0 1px 2px rgba(0,0,0,.3)}.chat-composer{background-color:hsl(var(--surface-raised));border:1px solid hsl(var(--surface-hairline));border-radius:1rem;box-shadow:var(--composer-shadow);transition:border-color .15s ease-out,box-shadow .15s ease-out}.chat-composer:focus-within{border-color:hsl(var(--brand-accent)/.5);box-shadow:0 8px 24px hsl(var(--brand-accent)/.1),0 0 0 4px hsl(var(--brand-accent)/.08)}.dark .chat-composer:focus-within{box-shadow:0 8px 24px rgba(0,0,0,.4),0 0 0 4px hsl(var(--brand-accent)/.12)}.chat-send{background-color:hsl(var(--brand-accent));color:#fff;box-shadow:0 2px 8px hsl(var(--brand-accent)/.35)}.chat-send:disabled{background-color:hsl(var(--muted));color:hsl(var(--muted-foreground));box-shadow:none}.ss-composer__actions .jsonforms-compact .ss-jsonforms-grid{gap:4px;align-items:center}.ss-composer__actions .jsonforms-compact .compact-field,.ss-composer__actions .jsonforms-compact .ss-jsonforms-textarea{width:auto;flex:0 0 auto;min-width:0}.ss-composer__actions .jsonforms-compact .w-full{width:auto}.ss-composer__actions .jsonforms-compact .justify-center{justify-content:flex-start}.ss-variables-panel .jsonforms-compact .ss-jsonforms-grid{flex-direction:column;align-items:stretch;gap:12px}.ss-variables-panel .jsonforms-compact .compact-field,.ss-variables-panel .jsonforms-compact .ss-jsonforms-cell{width:100%}.control.root input,.control.root select,.control.root textarea{display:block;width:100%;padding:.5rem .75rem;font-size:.875rem;color:hsl(var(--foreground));background-color:hsl(var(--background));border:1px solid hsl(var(--input));border-radius:.5rem;outline:none;transition:border-color .15s ease-out,box-shadow .15s ease-out}.control.root input:focus,.control.root select:focus,.control.root textarea:focus{border-color:hsl(var(--brand-accent)/.5);box-shadow:0 0 0 3px hsl(var(--brand-accent)/.12)}.control.root input:disabled,.control.root select:disabled,.control.root textarea:disabled{opacity:.6;cursor:not-allowed}.control.root input.invalid,.control.root select.invalid,.control.root textarea.invalid{border-color:hsl(var(--destructive))}.control.root .validation.input-description{margin-top:.25rem;font-size:.75rem;color:hsl(var(--muted-foreground))}.chat-prose{font-size:.875rem;line-height:1.65;color:hsl(var(--foreground));overflow-wrap:break-word;word-break:break-word}.chat-prose>*+*{margin-top:.75rem}.chat-prose p{margin:0}.chat-prose strong{color:hsl(var(--foreground));font-weight:600}.chat-prose p:has(>strong:only-child){margin-top:1.1rem;margin-bottom:.15rem}.chat-prose p:has(>strong:only-child)>strong{display:inline-block;font-size:.875rem;font-weight:600;letter-spacing:-.005em}.chat-prose h1,.chat-prose h2,.chat-prose h3,.chat-prose h4{font-size:.875rem;font-weight:600;letter-spacing:-.005em;color:hsl(var(--foreground));margin-top:1.1rem;margin-bottom:.15rem;line-height:1.4}.chat-prose ol,.chat-prose ul{margin:.35rem 0 0;padding-left:0;list-style:none}.chat-prose ol+*,.chat-prose ul+*{margin-top:.85rem}.chat-prose li{position:relative;padding-left:1.5rem;margin-top:.2rem;line-height:1.5}.chat-prose li:first-child{margin-top:0}.chat-prose ul>li:before{content:"";position:absolute;left:.5rem;top:.6em;width:3px;height:3px;border-radius:50%;background:hsl(var(--muted-foreground))}.chat-prose ol{counter-reset:chat-ol}.chat-prose ol>li{counter-increment:chat-ol}.chat-prose ol>li:before{content:counter(chat-ol) ".";position:absolute;left:0;top:0;font-size:.875rem;font-weight:500;font-variant-numeric:tabular-nums;color:hsl(var(--muted-foreground));width:1.1rem;text-align:right;line-height:1.5}.chat-prose li>ol,.chat-prose li>ul{margin-top:.2rem}.chat-prose-table-wrap{margin:1rem 0;border-radius:12px;border:1px solid hsl(var(--border));background:hsl(var(--card));overflow-x:auto;max-width:100%;box-shadow:0 1px 2px hsla(30,15%,80%,.18)}.chat-prose table{width:100%;border-collapse:collapse;font-size:.8125rem}.chat-prose th{background:hsl(var(--brand-accent)/.07);font-weight:600;text-align:left;border-bottom:1px solid hsl(var(--border));letter-spacing:-.005em}.chat-prose td,.chat-prose th{color:hsl(var(--foreground));padding:.625rem .875rem}.chat-prose td{border-bottom:1px solid hsl(var(--border)/.6)}.chat-prose tr:last-child td{border-bottom:none}.chat-prose tr:hover td{background:hsl(var(--brand-accent)/.03)}.dark .chat-prose-table-wrap{box-shadow:0 1px 2px rgba(0,0,0,.35)}.chat-prose :not(pre)>code{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8125em;padding:.125rem .375rem;border-radius:4px;background:hsl(var(--brand-accent)/.08);color:hsl(var(--brand-accent));border:1px solid hsl(var(--brand-accent)/.15)}.chat-prose pre{margin:1rem 0;padding:1rem 1.125rem;border-radius:12px;background:#0c0f18;border:1px solid #2d3443;overflow-x:auto;max-width:100%;font-size:.8125rem;line-height:1.6}.chat-prose pre code{background:none;border:none;padding:0;color:#dae0e7;font-size:inherit;white-space:pre}.chat-prose a{color:hsl(var(--brand-accent));text-decoration:none;border-bottom:1px solid hsl(var(--brand-accent)/.3);transition:border-color .15s ease-out}.chat-prose a:hover{border-bottom-color:hsl(var(--brand-accent))}.chat-prose blockquote{margin:1rem 0;padding:.5rem 0 .5rem 1rem;border-left:2px solid hsl(var(--brand-accent)/.4);color:hsl(var(--muted-foreground));font-style:italic}.chat-prose hr{border:none;border-top:1px solid hsl(var(--border));margin:1.5rem 0}@keyframes chat-stream-clip{0%{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0 0 0 0)}}.chat-streaming{animation:chat-stream-clip 1.8s cubic-bezier(.22,1,.36,1) forwards;-webkit-mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 28px),rgba(0,0,0,.4) calc(100% - 8px),transparent);mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 28px),rgba(0,0,0,.4) calc(100% - 8px),transparent)}@keyframes chat-caret-blink{0%,49%{opacity:1}50%,to{opacity:.15}}.chat-streaming>:last-child:after{content:"";display:inline-block;width:7px;height:1em;margin-left:4px;vertical-align:-2px;background:hsl(var(--brand-accent));border-radius:1px;animation:chat-caret-blink .85s steps(2,start) infinite;box-shadow:0 0 6px hsl(var(--brand-accent)/.55)}.chat-streaming>.chat-prose-table-wrap:last-child:after{display:block;margin:.5rem 0 0 2px}@keyframes chat-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.chat-thinking-shimmer{background-image:linear-gradient(90deg,hsl(var(--muted-foreground)) 0,hsl(var(--muted-foreground)) 35%,hsl(var(--brand-accent)) 50%,hsl(var(--muted-foreground)) 65%,hsl(var(--muted-foreground)) 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:chat-shimmer 2.2s linear infinite;letter-spacing:-.005em}@keyframes chat-dot-wave{0%,60%,to{transform:translateY(0);opacity:.35}30%{transform:translateY(-3px);opacity:1}}.chat-thinking-dots{display:inline-flex;align-items:flex-end;gap:3px}.chat-thinking-dots>span{width:4px;height:4px;border-radius:50%;background:hsl(var(--brand-accent));animation:chat-dot-wave 1.1s ease-in-out infinite}.chat-thinking-dots>span:nth-child(2){animation-delay:.15s}.chat-thinking-dots>span:nth-child(3){animation-delay:.3s}@media (prefers-reduced-motion:reduce){.chat-streaming,.chat-thinking-dots>span,.chat-thinking-shimmer{animation:none!important}.chat-streaming{clip-path:none;mask-image:none;-webkit-mask-image:none}}.jsonforms-compact .ss-jsonforms-grid{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start}.jsonforms-compact .ss-jsonforms-cell{flex:0 0 auto;min-width:0}.jsonforms-compact .ss-jsonforms-textarea{flex:1 1 100%}.jsonforms-compact .compact-field{width:280px;max-width:100%}@media (max-width:480px){.jsonforms-compact .compact-field{width:100%}}.md-editor,.ss-attach{position:relative}.ss-attach{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;border-radius:8px;background:hsl(var(--muted,0 0% 96%));border:1px solid hsl(var(--border,0 0% 89%));overflow:hidden;min-width:32px;min-height:32px}.ss-attach--image{padding:2px}.ss-attach__img{display:block;-o-object-fit:contain;object-fit:contain;border-radius:6px}.ss-attach__spinner{position:absolute;top:50%;left:50%;width:22px;height:22px;margin:-11px 0 0 -11px;border-radius:50%;border:2px solid hsl(var(--muted-foreground,0 0% 40%)/.25);border-top-color:hsl(var(--foreground,0 0% 10%));animation:ss-attach-spin .7s linear infinite;pointer-events:none;z-index:1;box-sizing:border-box}@keyframes ss-attach-spin{to{transform:rotate(1turn)}}.ss-attach__remove{position:absolute;top:4px;right:4px;width:20px;height:20px;padding:0;border-radius:50%;border:1px solid hsl(var(--border,0 0% 89%));background:hsla(0,0%,100%,.95);color:hsl(var(--muted-foreground,0 0% 40%));cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;font:inherit;opacity:0;transition:opacity .15s ease,color .15s ease,background .15s ease;z-index:2;box-shadow:0 1px 2px rgba(0,0,0,.08)}.ss-attach:hover .ss-attach__remove,.ss-attach__remove:focus-visible{opacity:1}.ss-attach__remove:hover{color:#dc2626;background:#fff}.ss-attach__remove svg{width:12px;height:12px;display:block}.md-editor .ProseMirror{min-height:var(--md-min-height,1.6em);max-height:var(--md-max-height,none);overflow:auto;--md-pad-v:12px;--md-pad-h:14px;padding:var(--md-pad-v) var(--md-pad-h);border:1px solid #e3e3e3;border-radius:10px;line-height:1.6;outline:none}.md-editor .ProseMirror:focus{border-color:#b9d6ff;box-shadow:0 0 0 3px rgba(70,128,255,.15)}.md-editor.md-editor--readonly .ProseMirror{border:none;padding:0;box-shadow:none}.md-editor.md-editor--bare .ProseMirror{border:none;padding:0;box-shadow:none;--md-pad-v:0px;--md-pad-h:0px}.md-editor .ProseMirror a{color:#2563eb;text-decoration:underline;cursor:pointer}.ss-markdown .ss-attach__img[data-error]{background:rgba(220,38,38,.08)}.file-tag{display:inline-block;padding:0 6px;border-radius:6px;border:1px solid #a7b7e9;background:#eef2ff;font-size:.9em;color:#2b3a8a;-webkit-user-select:text;-moz-user-select:text;user-select:text;white-space:nowrap}.md-editor__ghost{position:absolute;top:var(--md-pad-v);left:var(--md-pad-h);right:var(--md-pad-h);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.md-editor__dictation-ghost,.md-editor__ghost{color:#9aa2af;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;font:inherit;line-height:inherit}.md-editor__dictation-ghost{white-space:pre-wrap}.md-editor__dictation-dots{display:inline-flex;align-items:center;gap:3px;margin-left:4px;line-height:0;vertical-align:middle}.md-editor__dictation-dots>span{width:4px;height:4px;border-radius:50%;background:currentColor;animation:chat-dot-wave 1.1s ease-in-out infinite}.md-editor__dictation-dots>span:nth-child(2){animation-delay:.15s}.md-editor__dictation-dots>span:nth-child(3){animation-delay:.3s}.md-editor .ProseMirror>:first-child{margin-top:0}.mention{background:#f0f9ff;border:1px solid #bae6fd;border-radius:6px;padding:0 6px;color:#0369a1}.md-editor .ss-code-block,.ss-markdown .ss-code-block{border:1px solid var(--border,#e5e7eb);border-radius:8px;background:#0b1020;color:#e6edf3;margin:.75em 0;overflow:hidden}.md-editor .ss-code-block__header,.ss-markdown .ss-code-block__header{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:hsla(0,0%,100%,.06);border-bottom:1px solid hsla(0,0%,100%,.08);font-size:12px;line-height:1}.md-editor .ss-code-block__lang,.ss-markdown .ss-code-block__lang{text-transform:uppercase;letter-spacing:.04em;color:#9ba3af;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.md-editor .ss-code-block__actions,.ss-markdown .ss-code-block__actions{display:flex;align-items:center;gap:6px}.md-editor .ss-code-block__copy,.md-editor .ss-code-block__toggle,.ss-markdown .ss-code-block__copy,.ss-markdown .ss-code-block__toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:hsla(0,0%,100%,.1);color:#e6edf3;border:1px solid hsla(0,0%,100%,.15);border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer;font-family:inherit;line-height:1}.md-editor .ss-code-block__copy:hover,.md-editor .ss-code-block__toggle:hover,.ss-markdown .ss-code-block__copy:hover,.ss-markdown .ss-code-block__toggle:hover{background:hsla(0,0%,100%,.18)}.md-editor .ss-code-block pre,.ss-markdown .ss-code-block pre{margin:0;padding:12px 14px;background:transparent;color:inherit;overflow-x:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.5;white-space:pre}.md-editor .ss-code-block pre code,.ss-markdown .ss-code-block pre code{background:transparent;color:inherit;padding:0;font:inherit}.md-editor .ss-code-block__iframe,.ss-markdown .ss-code-block__iframe{display:block;width:100%;height:500px;border:0;background:#fff;vertical-align:top;transition:opacity .2s ease}.ss-markdown .ss-code-block__preview{position:relative}.ss-markdown .ss-code-block__loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;z-index:1;color:#6b7280;font-size:12px;letter-spacing:.02em;background-color:#fff;background-image:linear-gradient(100deg,transparent 30%,rgba(0,0,0,.05) 50%,transparent 70%);background-size:200% 100%;animation:ss-code-block-shimmer 1.4s ease-in-out infinite}.ss-markdown .ss-code-block__spinner{width:22px;height:22px;border:2.5px solid rgba(0,0,0,.12);border-top-color:rgba(0,0,0,.5);border-radius:50%;animation:ss-code-block-spin .8s linear infinite}@keyframes ss-code-block-spin{to{transform:rotate(1turn)}}@keyframes ss-code-block-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.ss-markdown .ss-code-block__loading{animation:none}.ss-markdown .ss-code-block__spinner{animation-duration:1.6s}.ss-markdown .ss-code-block__iframe{transition:none}}.ss-markdown :not(pre)>code{background:hsla(44,6%,50%,.15);color:#c7254e;padding:1px 5px;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.ss-markdown a{color:#2563eb;text-decoration:underline}.ss-markdown details{margin:.75em 0}.ss-markdown summary{cursor:pointer;font-weight:600}.md-editor .ProseMirror :not(pre)>code{background:hsla(44,6%,50%,.15);color:#c7254e;padding:1px 5px;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.md-mention-menu{background:hsl(var(--background,0 0% 100%));color:var(--foreground,#111);border:1px solid var(--border,#e5e7eb);border-radius:8px;box-shadow:0 10px 30px rgba(0,0,0,.12);min-width:220px;max-width:320px;overflow:hidden;z-index:1000}.md-editor__has-dictation-ghost br.ProseMirror-trailingBreak{display:none}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.first\:mt-0:first-child{margin-top:0}.hover\:border-border:hover{border-color:hsl(var(--border))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive)/.9)}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/40:hover{background-color:hsl(var(--muted)/.4)}.hover\:bg-muted\/60:hover{background-color:hsl(var(--muted)/.6)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary)/.9)}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/60:hover{background-color:hsl(var(--secondary)/.6)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary)/.8)}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:underline:hover{text-decoration-line:underline}.focus\:border-primary\/40:focus{border-color:hsl(var(--primary)/.4)}.focus-visible\:opacity-100:focus-visible{opacity:1}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.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)}.focus-visible\:ring-primary:focus-visible{--tw-ring-color:hsl(var(--primary))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:hsl(var(--background))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.group:hover .group-hover\:opacity-100{opacity:1}.dark\:via-emerald-400\/10:is(.dark *){--tw-gradient-to:rgba(52,211,153,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgba(52,211,153,.1) var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-primary\/10:is(.dark *){--tw-gradient-to:hsl(var(--primary)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsl(var(--primary)/0.1) var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-red-400\/10:is(.dark *){--tw-gradient-to:hsla(0,91%,71%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsla(0,91%,71%,.1) var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:to-emerald-400\/20:is(.dark *){--tw-gradient-to:rgba(52,211,153,.2) var(--tw-gradient-to-position)}.dark\:to-primary\/20:is(.dark *){--tw-gradient-to:hsl(var(--primary)/0.2) var(--tw-gradient-to-position)}.dark\:to-red-400\/20:is(.dark *){--tw-gradient-to:hsla(0,91%,71%,.2) var(--tw-gradient-to-position)}.dark\:text-amber-400:is(.dark *){--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}@media not all and (min-width:640px){.max-sm\:hidden{display:none}.max-sm\:max-w-\[180px\]{max-width:180px}}@media (min-width:640px){.sm\:inline{display:inline}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:768px){.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\[\&\>button\]\:h-6>button{height:1.5rem}.\[\&\>button\]\:w-6>button{width:1.5rem}.\[\&\>div\]\:\!block>div{display:block!important}@media(hover:hover){.\[\@media\(hover\:hover\)\]\:opacity-0{opacity:0}.group:hover .\[\@media\(hover\:hover\)\]\:group-hover\:opacity-100{opacity:1}}
|
package/dist/index.d.ts
CHANGED
|
@@ -82,17 +82,20 @@ declare const ChatVariablesForm: React.ForwardRefExoticComponent<ChatVariablesFo
|
|
|
82
82
|
|
|
83
83
|
/**
|
|
84
84
|
* What the backend tells the composer about speech-to-text (dictation).
|
|
85
|
-
* `
|
|
86
|
-
*
|
|
85
|
+
* `region` is the Azure region of the Speech resource, e.g. `australiaeast`.
|
|
86
|
+
* The SDK needs the region rather than the account's custom-domain URL: the
|
|
87
|
+
* recognition path only exists on the regional host, and that is what the
|
|
88
|
+
* issued token is scoped to. Absent when speech isn't configured.
|
|
87
89
|
*/
|
|
88
90
|
type SpeechConfig = {
|
|
89
91
|
enabled: boolean;
|
|
90
|
-
|
|
92
|
+
region?: string | null;
|
|
91
93
|
/** BCP-47 locale to recognise when the client doesn't ask for one. */
|
|
92
94
|
defaultLocale: string;
|
|
93
95
|
};
|
|
94
96
|
/**
|
|
95
|
-
* A short-lived
|
|
97
|
+
* A short-lived token from the Speech resource's own token service, scoped to
|
|
98
|
+
* recognition in one region and good for about ten minutes. Handed to the SDK
|
|
96
99
|
* as-is; the backend owns how it is minted.
|
|
97
100
|
*/
|
|
98
101
|
type SpeechToken = {
|
|
@@ -108,8 +111,8 @@ type DictationError = 'permission-denied' | 'no-microphone' | 'network'
|
|
|
108
111
|
/** Don't keep asking: this install can't do dictation. */
|
|
109
112
|
| 'unavailable' | 'unknown';
|
|
110
113
|
type UseDictationOptions = {
|
|
111
|
-
/**
|
|
112
|
-
|
|
114
|
+
/** Azure region from `SpeechConfig`; dictation is unavailable without it. */
|
|
115
|
+
region?: string | null;
|
|
113
116
|
/** BCP-47 recognition locale (server default unless the user chose one). */
|
|
114
117
|
locale: string;
|
|
115
118
|
/** From the ChatService; dictation is unavailable without it. */
|
|
@@ -122,19 +125,23 @@ type UseDictationOptions = {
|
|
|
122
125
|
* in state would re-render the whole composer on every partial result.
|
|
123
126
|
*/
|
|
124
127
|
onInterim?: (text: string) => void;
|
|
125
|
-
/**
|
|
128
|
+
/**
|
|
129
|
+
* Hard stop, so a forgotten mic can't run for an hour. Keep it under the
|
|
130
|
+
* token's ~10 minute life: the token is never refreshed once the session is
|
|
131
|
+
* running, so a longer cap would end the session on an auth failure.
|
|
132
|
+
*/
|
|
126
133
|
maxDurationMs?: number;
|
|
127
134
|
/** Stop after this long without any speech. */
|
|
128
135
|
idleTimeoutMs?: number;
|
|
129
136
|
};
|
|
130
137
|
/**
|
|
131
138
|
* Streams microphone audio to Azure AI Speech and hands back recognised
|
|
132
|
-
* phrases. Owns the whole session: mic permission + stream,
|
|
139
|
+
* phrases. Owns the whole session: mic permission + stream, SDK loading,
|
|
133
140
|
* recogniser lifecycle, idle/max timers, and teardown on stop or unmount.
|
|
134
141
|
* Interim (not yet final) text goes to `onInterim` for display only; only final
|
|
135
142
|
* phrases reach `onPhrase`.
|
|
136
143
|
*/
|
|
137
|
-
declare function useDictation({
|
|
144
|
+
declare function useDictation({ region, locale, getToken, onPhrase, onInterim, maxDurationMs, idleTimeoutMs, }: UseDictationOptions): {
|
|
138
145
|
supported: boolean;
|
|
139
146
|
available: boolean;
|
|
140
147
|
state: DictationState;
|
|
@@ -161,31 +168,6 @@ type DictationButtonProps = {
|
|
|
161
168
|
*/
|
|
162
169
|
declare function DictationButton({ state, error, disabled, onToggle, size, }: DictationButtonProps): react_jsx_runtime.JSX.Element;
|
|
163
170
|
|
|
164
|
-
/**
|
|
165
|
-
* Structural stand-in for `@azure/core-auth`'s `TokenCredential` — what
|
|
166
|
-
* `SpeechConfig.fromEndpoint(url, credential)` accepts. Declared here rather
|
|
167
|
-
* than imported so this package doesn't take a type dependency on a transitive
|
|
168
|
-
* package of the SDK.
|
|
169
|
-
*/
|
|
170
|
-
type SpeechTokenCredential = {
|
|
171
|
-
getToken: (scopes: string | string[]) => Promise<{
|
|
172
|
-
token: string;
|
|
173
|
-
expiresOnTimestamp: number;
|
|
174
|
-
}>;
|
|
175
|
-
};
|
|
176
|
-
/**
|
|
177
|
-
* Adapts the app's authenticated token fetch to the shape the Speech SDK wants.
|
|
178
|
-
* The SDK calls `getToken` when it connects and again as the token nears expiry;
|
|
179
|
-
* caching means a long dictation doesn't re-hit the API on every reconnect, and
|
|
180
|
-
* concurrent callers share one in-flight request.
|
|
181
|
-
*
|
|
182
|
-
* `seed` is the token the caller already fetched to start the session. Passing it
|
|
183
|
-
* keeps the SDK's first connect off the network, and — more importantly — means a
|
|
184
|
-
* failed fetch surfaces to the caller with its own error rather than reaching us
|
|
185
|
-
* inside SDK internals, where it would only ever resurface as a generic cancel.
|
|
186
|
-
*/
|
|
187
|
-
declare function createSpeechTokenCredential(fetchToken: () => Promise<SpeechToken>, seed?: SpeechToken): SpeechTokenCredential;
|
|
188
|
-
|
|
189
171
|
type MentionUserLike = {
|
|
190
172
|
id: string;
|
|
191
173
|
displayName: string;
|
|
@@ -499,9 +481,12 @@ interface ChatService {
|
|
|
499
481
|
* Speech-to-text (composer dictation). Both are optional so existing
|
|
500
482
|
* service implementations keep compiling — the composer renders a
|
|
501
483
|
* microphone only when both are provided AND the config says enabled.
|
|
502
|
-
* `getSpeechConfig` is read once per session
|
|
503
|
-
*
|
|
504
|
-
*
|
|
484
|
+
* `getSpeechConfig` is read once per session. `getSpeechToken` is called
|
|
485
|
+
* when a dictation session starts (in parallel with the mic permission
|
|
486
|
+
* prompt — and again if that token aged out while the prompt sat open). The
|
|
487
|
+
* token is handed to the SDK as-is and never refreshed mid-session, so a
|
|
488
|
+
* session is capped to stay inside its life. No caching wanted: a stale
|
|
489
|
+
* token cannot be renewed.
|
|
505
490
|
*/
|
|
506
491
|
getSpeechConfig?(): Promise<SpeechConfig>;
|
|
507
492
|
getSpeechToken?(): Promise<SpeechToken>;
|
|
@@ -569,6 +554,7 @@ declare const messagesResponseSchema: z.ZodObject<{
|
|
|
569
554
|
value: z.ZodOptional<z.ZodNullable<z.ZodAny>>;
|
|
570
555
|
}, z.core.$strip>>;
|
|
571
556
|
}, z.core.$strip>>;
|
|
557
|
+
scoped: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
572
558
|
total: z.ZodNumber;
|
|
573
559
|
}, z.core.$strip>;
|
|
574
560
|
type MessagesResponseDto = z.infer<typeof messagesResponseSchema>;
|
|
@@ -681,6 +667,7 @@ declare const threadsListResponseSchema: z.ZodObject<{
|
|
|
681
667
|
totalMessages: z.ZodNumber;
|
|
682
668
|
workSpaceId: z.ZodString;
|
|
683
669
|
}, z.core.$strip>>;
|
|
670
|
+
scoped: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
684
671
|
total: z.ZodNumber;
|
|
685
672
|
}, z.core.$strip>;
|
|
686
673
|
declare const threadResponseSchema: z.ZodObject<{
|
|
@@ -795,6 +782,7 @@ declare const workspaceResponseSchema: z.ZodObject<{
|
|
|
795
782
|
path: z.ZodString;
|
|
796
783
|
}, z.core.$strip>;
|
|
797
784
|
flowId: z.ZodString;
|
|
785
|
+
honourSourceDeletes: z.ZodBoolean;
|
|
798
786
|
id: z.ZodString;
|
|
799
787
|
inputName: z.ZodString;
|
|
800
788
|
type: z.ZodEnum<{
|
|
@@ -1037,6 +1025,7 @@ declare const workspacesListResponseSchema: z.ZodObject<{
|
|
|
1037
1025
|
path: z.ZodString;
|
|
1038
1026
|
}, z.core.$strip>;
|
|
1039
1027
|
flowId: z.ZodString;
|
|
1028
|
+
honourSourceDeletes: z.ZodBoolean;
|
|
1040
1029
|
id: z.ZodString;
|
|
1041
1030
|
inputName: z.ZodString;
|
|
1042
1031
|
type: z.ZodEnum<{
|
|
@@ -1184,6 +1173,7 @@ declare const workspacesListResponseSchema: z.ZodObject<{
|
|
|
1184
1173
|
schema: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
1185
1174
|
}, z.core.$strip>>;
|
|
1186
1175
|
}, z.core.$strip>>;
|
|
1176
|
+
scoped: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
1187
1177
|
total: z.ZodNumber;
|
|
1188
1178
|
}, z.core.$strip>;
|
|
1189
1179
|
type WorkspaceDto = z.infer<typeof workspaceResponseSchema>;
|
|
@@ -1568,4 +1558,4 @@ declare function useModels({ search, take, skip, }?: {
|
|
|
1568
1558
|
*/
|
|
1569
1559
|
declare function useSpeechConfig(): _tanstack_react_query.UseQueryResult<SpeechConfig, Error>;
|
|
1570
1560
|
|
|
1571
|
-
export { type ChatContextIds, type ChatIdentity, ChatProvider, type ChatProviderProps, type ChatService, ChatVariablesForm, DRAFT_THREAD_PREFIX, DateFromApi, DictationButton, type DictationButtonProps, type DictationError, type DictationState, type FileInfo$1 as FileInfo, type FileScope, type FlowRunVariables, MarkdownEditor, type MarkdownEditorHandle, type MentionUser, type Message, MessageComposer, type MessageComposerProps, type MessageContentItem, type MessageError, type MessageErrorLike, MessageList, type MessageListProps, MessageListSkeleton, MessageMarkdown, type MessageThread, type MessageValue, MessageValueType, type Model, type ModelProperty, NEW_THREAD_ID, type RetryStatus, type SpeechConfig, type SpeechToken,
|
|
1561
|
+
export { type ChatContextIds, type ChatIdentity, ChatProvider, type ChatProviderProps, type ChatService, ChatVariablesForm, DRAFT_THREAD_PREFIX, DateFromApi, DictationButton, type DictationButtonProps, type DictationError, type DictationState, type FileInfo$1 as FileInfo, type FileScope, type FlowRunVariables, MarkdownEditor, type MarkdownEditorHandle, type MentionUser, type Message, MessageComposer, type MessageComposerProps, type MessageContentItem, type MessageError, type MessageErrorLike, MessageList, type MessageListProps, MessageListSkeleton, MessageMarkdown, type MessageThread, type MessageValue, MessageValueType, type Model, type ModelProperty, NEW_THREAD_ID, type RetryStatus, type SpeechConfig, type SpeechToken, THREAD_LIST_PAGE_SIZE, type ThreadsResponse, type UseDictationOptions, type Variables, type Workspace, applyDeltaToMessage, applyThreadToCache, createDraftThreadId, createThreadId, downloadFileBlobOptions, filesKeys, flowRunsKeys, getMessageErrorText, getModelIcon, getRetryStatusText, getThreadPlaceholderFromListCache, getUserPhotoUrl, invalidateWorkspaceThreadLists, isDraftThreadId, mapFileInfoDtoToModel, mapMentionUserDtoToModel, mapMessageDtoToModel, mapMessageErrorDtoToModel, mapMessageValueDtoToModel, mapMessagesDtoToModels, mapSignalRThreadSummaryToModel, mapThreadDtoToModel, mapThreadsResponseDtoToModel, mapWorkspaceDtoToModel, mapWorkspacesDtoToModels, markDraftThreadId, messagesKeys, messagesListOptions, messagesMutationsKeys, modelsKeys, parseDateTime, parseDateTimeHuman, parseRetryStatus, randomUUID, setThreadOptimisticRunning, setThreadRunningInLists, speechKeys, taggableUsersOptions, threadDetailOptions, threadsKeys, unmarkDraftThreadId, useAddInputToMessage, useChatContext, useChatIdentity, useChatService, useDictation, useDownloadFileBlobQuery, useFileMutations, useFlowRunVariables, useIsDraftThreadId, useMessages, useModels, useSendMessage, useSpeechConfig, useTaggableWorkspaceUsers, useThread, useThreadIsRunning, useUpdateFlowRunVariable, useWorkspace, utcDate, workspaceDetailOptions, workspaceKeys };
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import * as React9 from 'react';
|
|
|
5
5
|
import React9__default, { createContext, forwardRef, useImperativeHandle, useRef, useState, useEffect, useMemo, useCallback, useContext, useSyncExternalStore } from 'react';
|
|
6
6
|
import { createPortal } from 'react-dom';
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
|
-
import { useQuery, queryOptions, useQueryClient, useMutation
|
|
8
|
+
import { useQuery, queryOptions, useQueryClient, useMutation } from '@tanstack/react-query';
|
|
9
9
|
import { toast } from 'sonner';
|
|
10
10
|
import { ChatZod } from '@smartspace/api-client';
|
|
11
11
|
import { z } from 'zod';
|
|
@@ -600,9 +600,14 @@ var useThread = ({
|
|
|
600
600
|
};
|
|
601
601
|
var useThreadIsRunning = (workspaceId, threadId) => {
|
|
602
602
|
const queryClient = useQueryClient();
|
|
603
|
+
const service = useChatService();
|
|
603
604
|
const { data: detailThread } = useQuery({
|
|
604
|
-
|
|
605
|
-
|
|
605
|
+
...threadDetailOptions({
|
|
606
|
+
service,
|
|
607
|
+
workspaceId: workspaceId ?? "",
|
|
608
|
+
threadId: threadId ?? ""
|
|
609
|
+
}),
|
|
610
|
+
enabled: false
|
|
606
611
|
});
|
|
607
612
|
const listThread = workspaceId && threadId ? getThreadPlaceholderFromListCache(queryClient, workspaceId, threadId) : void 0;
|
|
608
613
|
const { data: optimistic } = useQuery({
|
|
@@ -2551,41 +2556,18 @@ var MarkdownEditor = forwardRef((props, ref) => {
|
|
|
2551
2556
|
return /* @__PURE__ */ jsx(MilkdownProvider, { children: /* @__PURE__ */ jsx(EditorInner, { ...props, editorHandleRef: ref }) });
|
|
2552
2557
|
});
|
|
2553
2558
|
MarkdownEditor.displayName = "MarkdownEditor";
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
};
|
|
2566
|
-
};
|
|
2567
|
-
function createSpeechTokenCredential(fetchToken, seed) {
|
|
2568
|
-
let cached = seed ? toAccessToken(seed) : null;
|
|
2569
|
-
let inflight = null;
|
|
2570
|
-
return {
|
|
2571
|
-
getToken: async () => {
|
|
2572
|
-
if (cached && cached.expiresOnTimestamp - Date.now() > REFRESH_SKEW_MS) {
|
|
2573
|
-
return cached;
|
|
2574
|
-
}
|
|
2575
|
-
if (!inflight) {
|
|
2576
|
-
inflight = fetchToken().then((t) => {
|
|
2577
|
-
cached = toAccessToken(t);
|
|
2578
|
-
return cached;
|
|
2579
|
-
}).finally(() => {
|
|
2580
|
-
inflight = null;
|
|
2581
|
-
});
|
|
2582
|
-
}
|
|
2583
|
-
return inflight;
|
|
2584
|
-
}
|
|
2585
|
-
};
|
|
2559
|
+
var TOKEN_EXPIRY_MARGIN_MS = 15e3;
|
|
2560
|
+
var STALE_TOKEN_FLOOR_MS = 6e4;
|
|
2561
|
+
function kickOff(fn) {
|
|
2562
|
+
let promise;
|
|
2563
|
+
try {
|
|
2564
|
+
promise = Promise.resolve(fn());
|
|
2565
|
+
} catch (e) {
|
|
2566
|
+
promise = Promise.reject(e);
|
|
2567
|
+
}
|
|
2568
|
+
promise.catch(() => void 0);
|
|
2569
|
+
return promise;
|
|
2586
2570
|
}
|
|
2587
|
-
|
|
2588
|
-
// src/shared/speech/useDictation.ts
|
|
2589
2571
|
var isSupported = () => typeof window !== "undefined" && window.isSecureContext && !!navigator.mediaDevices?.getUserMedia;
|
|
2590
2572
|
function classifyTokenFailure(error) {
|
|
2591
2573
|
const code3 = error?.code;
|
|
@@ -2596,7 +2578,7 @@ function classifyTokenFailure(error) {
|
|
|
2596
2578
|
return "unavailable-temporarily";
|
|
2597
2579
|
}
|
|
2598
2580
|
function useDictation({
|
|
2599
|
-
|
|
2581
|
+
region,
|
|
2600
2582
|
locale,
|
|
2601
2583
|
getToken,
|
|
2602
2584
|
onPhrase,
|
|
@@ -2616,7 +2598,19 @@ function useDictation({
|
|
|
2616
2598
|
});
|
|
2617
2599
|
const clearInterim = useCallback(() => onInterimRef.current?.(""), []);
|
|
2618
2600
|
const supported = isSupported();
|
|
2619
|
-
const available = supported && !!
|
|
2601
|
+
const available = supported && !!region && !!getToken;
|
|
2602
|
+
useEffect(() => {
|
|
2603
|
+
if (!available) return;
|
|
2604
|
+
const nav = navigator;
|
|
2605
|
+
if (nav.connection?.saveData) return;
|
|
2606
|
+
const warm = () => void kickOff(() => import('microsoft-cognitiveservices-speech-sdk'));
|
|
2607
|
+
if (typeof window.requestIdleCallback === "function") {
|
|
2608
|
+
const id2 = window.requestIdleCallback(warm, { timeout: 2e3 });
|
|
2609
|
+
return () => window.cancelIdleCallback(id2);
|
|
2610
|
+
}
|
|
2611
|
+
const id = window.setTimeout(warm, 1500);
|
|
2612
|
+
return () => window.clearTimeout(id);
|
|
2613
|
+
}, [available]);
|
|
2620
2614
|
const stop = useCallback(() => {
|
|
2621
2615
|
generationRef.current += 1;
|
|
2622
2616
|
const session = sessionRef.current;
|
|
@@ -2638,15 +2632,22 @@ function useDictation({
|
|
|
2638
2632
|
const superseded = () => generationRef.current !== generation;
|
|
2639
2633
|
setError(null);
|
|
2640
2634
|
setState("starting");
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
stream = await navigator.mediaDevices.getUserMedia({
|
|
2635
|
+
const streamPromise = kickOff(
|
|
2636
|
+
() => navigator.mediaDevices.getUserMedia({
|
|
2644
2637
|
audio: {
|
|
2645
2638
|
echoCancellation: true,
|
|
2646
2639
|
noiseSuppression: true,
|
|
2647
2640
|
autoGainControl: true
|
|
2648
2641
|
}
|
|
2649
|
-
})
|
|
2642
|
+
})
|
|
2643
|
+
);
|
|
2644
|
+
const tokenPromise = kickOff(getToken);
|
|
2645
|
+
const sdkPromise = kickOff(
|
|
2646
|
+
() => import('microsoft-cognitiveservices-speech-sdk')
|
|
2647
|
+
);
|
|
2648
|
+
let stream;
|
|
2649
|
+
try {
|
|
2650
|
+
stream = await streamPromise;
|
|
2650
2651
|
} catch (e) {
|
|
2651
2652
|
if (superseded()) return;
|
|
2652
2653
|
const name = e?.name;
|
|
@@ -2662,7 +2663,10 @@ function useDictation({
|
|
|
2662
2663
|
}
|
|
2663
2664
|
let token;
|
|
2664
2665
|
try {
|
|
2665
|
-
token = await
|
|
2666
|
+
token = await tokenPromise;
|
|
2667
|
+
if (Date.parse(token.expiresOn) - Date.now() < STALE_TOKEN_FLOOR_MS) {
|
|
2668
|
+
token = await getToken();
|
|
2669
|
+
}
|
|
2666
2670
|
} catch (e) {
|
|
2667
2671
|
stream.getTracks().forEach((t) => t.stop());
|
|
2668
2672
|
if (superseded()) return;
|
|
@@ -2677,17 +2681,14 @@ function useDictation({
|
|
|
2677
2681
|
let recognizer = null;
|
|
2678
2682
|
let published = null;
|
|
2679
2683
|
try {
|
|
2680
|
-
const sdk = await
|
|
2684
|
+
const sdk = await sdkPromise;
|
|
2681
2685
|
if (superseded()) {
|
|
2682
2686
|
stream.getTracks().forEach((t) => t.stop());
|
|
2683
2687
|
return;
|
|
2684
2688
|
}
|
|
2685
|
-
const speechConfig = sdk.SpeechConfig.
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
getToken,
|
|
2689
|
-
token
|
|
2690
|
-
)
|
|
2689
|
+
const speechConfig = sdk.SpeechConfig.fromAuthorizationToken(
|
|
2690
|
+
token.token,
|
|
2691
|
+
region
|
|
2691
2692
|
);
|
|
2692
2693
|
speechConfig.speechRecognitionLanguage = locale;
|
|
2693
2694
|
speechConfig.setProfanity(sdk.ProfanityOption.Raw);
|
|
@@ -2699,6 +2700,8 @@ function useDictation({
|
|
|
2699
2700
|
speechConfig,
|
|
2700
2701
|
sdk.AudioConfig.fromStreamInput(stream)
|
|
2701
2702
|
);
|
|
2703
|
+
const untilExpiry = Date.parse(token.expiresOn) - Date.now() - TOKEN_EXPIRY_MARGIN_MS;
|
|
2704
|
+
const sessionCapMs = Number.isFinite(untilExpiry) && untilExpiry > 0 ? Math.min(maxDurationMs, untilExpiry) : maxDurationMs;
|
|
2702
2705
|
const session = { recognizer, stream, timers: {} };
|
|
2703
2706
|
const armIdle = () => {
|
|
2704
2707
|
window.clearTimeout(session.timers.idle);
|
|
@@ -2709,7 +2712,7 @@ function useDictation({
|
|
|
2709
2712
|
published = session;
|
|
2710
2713
|
const goLive = () => {
|
|
2711
2714
|
if (!isLive()) return;
|
|
2712
|
-
session.timers.max ??= window.setTimeout(stop,
|
|
2715
|
+
session.timers.max ??= window.setTimeout(stop, sessionCapMs);
|
|
2713
2716
|
armIdle();
|
|
2714
2717
|
setState("listening");
|
|
2715
2718
|
};
|
|
@@ -2770,11 +2773,11 @@ function useDictation({
|
|
|
2770
2773
|
}, [
|
|
2771
2774
|
available,
|
|
2772
2775
|
clearInterim,
|
|
2773
|
-
endpoint,
|
|
2774
2776
|
getToken,
|
|
2775
2777
|
idleTimeoutMs,
|
|
2776
2778
|
locale,
|
|
2777
2779
|
maxDurationMs,
|
|
2780
|
+
region,
|
|
2778
2781
|
stop
|
|
2779
2782
|
]);
|
|
2780
2783
|
useEffect(() => stop, [stop]);
|
|
@@ -4388,7 +4391,7 @@ function MessageComposer(_props = {}) {
|
|
|
4388
4391
|
[chatService]
|
|
4389
4392
|
);
|
|
4390
4393
|
const dictation = useDictation({
|
|
4391
|
-
|
|
4394
|
+
region: speechConfig?.enabled ? speechConfig.region : null,
|
|
4392
4395
|
locale: speechConfig?.defaultLocale ?? "en-US",
|
|
4393
4396
|
getToken: getSpeechToken,
|
|
4394
4397
|
// Final phrases become real text; provisional ones render as greyed ghost
|
|
@@ -20509,14 +20512,14 @@ var MessageItem = ({
|
|
|
20509
20512
|
const { data: workspace } = useWorkspace(workspaceId);
|
|
20510
20513
|
const chatbotName = getChatbotName(workspace?.name);
|
|
20511
20514
|
const { addInputToMessageMutation } = useAddInputToMessage();
|
|
20512
|
-
const onSubmitUserForm = (messageId) => (name, value) => {
|
|
20515
|
+
const onSubmitUserForm = (messageId, channels = {}) => (name, value) => {
|
|
20513
20516
|
if (!threadId || !messageId) return;
|
|
20514
20517
|
addInputToMessageMutation.mutate({
|
|
20515
20518
|
threadId,
|
|
20516
20519
|
messageId,
|
|
20517
20520
|
name,
|
|
20518
20521
|
value,
|
|
20519
|
-
channels
|
|
20522
|
+
channels
|
|
20520
20523
|
});
|
|
20521
20524
|
};
|
|
20522
20525
|
const safeTime = (d) => {
|
|
@@ -20647,7 +20650,7 @@ var MessageItem = ({
|
|
|
20647
20650
|
userOutput: v.value && typeof v.value === "object" ? v.value : null,
|
|
20648
20651
|
chatbotName,
|
|
20649
20652
|
userInput: userInput?.value,
|
|
20650
|
-
onSubmitUserForm: onSubmitUserForm(message.id ?? "")
|
|
20653
|
+
onSubmitUserForm: onSubmitUserForm(message.id ?? "", v.channels)
|
|
20651
20654
|
},
|
|
20652
20655
|
`user-${message.id ?? "msg"}-${keyCounter++}`
|
|
20653
20656
|
)
|
|
@@ -21155,6 +21158,6 @@ function getUserPhotoUrl(userId) {
|
|
|
21155
21158
|
return `${base2}/users/${userId}/photo`;
|
|
21156
21159
|
}
|
|
21157
21160
|
|
|
21158
|
-
export { ChatProvider, ChatVariablesForm, DRAFT_THREAD_PREFIX, DateFromApi, DictationButton, MarkdownEditor, MessageComposer, MessageList, MessageListSkeleton, MessageMarkdown, MessageValueType, NEW_THREAD_ID, THREAD_LIST_PAGE_SIZE, applyDeltaToMessage, applyThreadToCache, createDraftThreadId,
|
|
21161
|
+
export { ChatProvider, ChatVariablesForm, DRAFT_THREAD_PREFIX, DateFromApi, DictationButton, MarkdownEditor, MessageComposer, MessageList, MessageListSkeleton, MessageMarkdown, MessageValueType, NEW_THREAD_ID, THREAD_LIST_PAGE_SIZE, applyDeltaToMessage, applyThreadToCache, createDraftThreadId, createThreadId, downloadFileBlobOptions, filesKeys, flowRunsKeys, getMessageErrorText, getModelIcon, getRetryStatusText, getThreadPlaceholderFromListCache, getUserPhotoUrl, invalidateWorkspaceThreadLists, isDraftThreadId, mapFileInfoDtoToModel, mapMentionUserDtoToModel, mapMessageDtoToModel, mapMessageErrorDtoToModel, mapMessageValueDtoToModel, mapMessagesDtoToModels, mapSignalRThreadSummaryToModel, mapThreadDtoToModel, mapThreadsResponseDtoToModel, mapWorkspaceDtoToModel, mapWorkspacesDtoToModels, markDraftThreadId, messagesKeys, messagesListOptions, messagesMutationsKeys, modelsKeys, parseDateTime, parseDateTimeHuman, parseRetryStatus, randomUUID, setThreadOptimisticRunning, setThreadRunningInLists, speechKeys, taggableUsersOptions, threadDetailOptions, threadsKeys, unmarkDraftThreadId, useAddInputToMessage, useChatContext, useChatIdentity, useChatService, useDictation, useDownloadFileBlobQuery, useFileMutations, useFlowRunVariables, useIsDraftThreadId, useMessages, useModels, useSendMessage, useSpeechConfig, useTaggableWorkspaceUsers, useThread, useThreadIsRunning, useUpdateFlowRunVariable, useWorkspace, utcDate, workspaceDetailOptions, workspaceKeys };
|
|
21159
21162
|
//# sourceMappingURL=index.js.map
|
|
21160
21163
|
//# sourceMappingURL=index.js.map
|