@mcp-b/embedded-agent 0.0.1
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/README.md +29 -0
- package/dist/embed.iife.js +5 -0
- package/dist/index.d.ts +1153 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7030 -0
- package/dist/index.js.map +1 -0
- package/dist/styles/globals.css +2 -0
- package/dist/web-component-standalone.iife.js +6 -0
- package/dist/web-component.d.ts +56 -0
- package/dist/web-component.d.ts.map +1 -0
- package/dist/web-component.js +4741 -0
- package/dist/web-component.js.map +1 -0
- package/package.json +102 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-200:oklch(88.5% .062 18.334);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-amber-500:oklch(76.9% .188 70.08);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-emerald-500:oklch(69.6% .17 162.48);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wide:.025em;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--drop-shadow-xl:0 9px 7px #0000001a;--drop-shadow-2xl:0 25px 25px #00000026;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-md:12px;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--radius:.75rem;--background:oklch(100% 0 0);--foreground:oklch(14.1% .005 285.823);--card:oklch(100% 0 0);--card-foreground:oklch(14.1% .005 285.823);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.1% .005 285.823);--primary:oklch(21% .006 285.885);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(96.7% .001 286.375);--secondary-foreground:oklch(21% .006 285.885);--muted:oklch(96.7% .001 286.375);--muted-foreground:oklch(55.2% .016 285.938);--accent:oklch(96.7% .001 286.375);--accent-foreground:oklch(21% .006 285.885);--destructive:oklch(57.7% .245 27.325);--destructive-foreground:oklch(98.5% 0 0);--border:oklch(92% .004 286.32);--input:oklch(92% .004 286.32);--ring:oklch(70.5% .015 286.067)}.dark{--background:oklch(14.1% .005 285.823);--foreground:oklch(98.5% 0 0);--card:oklch(21% .006 285.885);--card-foreground:oklch(98.5% 0 0);--popover:oklch(21% .006 285.885);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92% .004 286.32);--primary-foreground:oklch(21% .006 285.885);--secondary:oklch(27.4% .006 286.033);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(27.4% .006 286.033);--muted-foreground:oklch(70.5% .015 286.067);--accent:oklch(27.4% .006 286.033);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--destructive-foreground:oklch(98.5% 0 0);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.2% .016 285.938)}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklch,var(--ring),transparent 50%)}}body{background-color:var(--background);color:var(--foreground)}}@layer components{.app-shell{z-index:0;background-color:var(--background);background-image:radial-gradient(80% 60% at -10% -10%,oklch(82% .15 270/.15),#0000),radial-gradient(60% 50% at 110% 10%,oklch(85% .1 220/.12),#0000),radial-gradient(50% 45% at 50% 120%,oklch(95% .02 250/.08),#0000);position:relative}.dark .app-shell{background-image:radial-gradient(80% 60% at -10% -10%,oklch(55% .14 270/.25),#0000),radial-gradient(60% 50% at 110% 15%,oklch(60% .12 220/.22),#0000),radial-gradient(50% 45% at 50% 120%,oklch(35% .04 250/.16),#0000)}.app-shell:before,.app-shell:after{content:"";pointer-events:none;filter:blur(32px);opacity:.6;z-index:-1;border-radius:9999px;position:absolute;inset:auto}.app-shell:before{background:radial-gradient(60% 60% at 40% 40%,oklch(80% .12 270/.3),#0000);width:260px;height:260px;top:-60px;left:-80px}.app-shell:after{background:radial-gradient(60% 60% at 60% 60%,oklch(84% .1 220/.25),#0000);width:300px;height:300px;bottom:-80px;right:-60px}.toolbar-surface{border-top:1px solid var(--border);background:linear-gradient(to right,var(--background),var(--background),var(--background))}@supports (color:color-mix(in lab, red, red)){.toolbar-surface{background:linear-gradient(to right,var(--background),color-mix(in oklch,var(--background),transparent 5%),var(--background))}}.toolbar-surface{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}@supports ((-webkit-backdrop-filter:blur(12px)) or (backdrop-filter:blur(12px))){.toolbar-surface{background:var(--background)}@supports (color:color-mix(in lab, red, red)){.toolbar-surface{background:color-mix(in oklch,var(--background),transparent 20%)}}}.toolbar-surface-top{border-bottom:1px solid var(--border);background:linear-gradient(to right,var(--background),var(--background),var(--background))}@supports (color:color-mix(in lab, red, red)){.toolbar-surface-top{background:linear-gradient(to right,var(--background),color-mix(in oklch,var(--background),transparent 5%),var(--background))}}.toolbar-surface-top{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}@supports ((-webkit-backdrop-filter:blur(12px)) or (backdrop-filter:blur(12px))){.toolbar-surface-top{background:var(--background)}@supports (color:color-mix(in lab, red, red)){.toolbar-surface-top{background:color-mix(in oklch,var(--background),transparent 20%)}}}.toolbar-inner{justify-content:space-between;align-items:center;padding:.5rem .75rem;display:flex}.toolbar-card{background:var(--card);justify-content:space-between;align-items:center;gap:.5rem;display:flex}@supports (color:color-mix(in lab, red, red)){.toolbar-card{background:color-mix(in oklch,var(--card),transparent 60%)}}.toolbar-card{border:1px solid var(--border);border-radius:.75rem;padding:.5rem .75rem}.toolbar-group{align-items:center;gap:.25rem;display:flex}.btn-toolbar-primary{background:linear-gradient(to right,var(--primary),var(--primary));border-radius:.75rem;align-items:center;gap:.5rem;height:2.25rem;padding:0 .75rem;display:flex}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-primary{background:linear-gradient(to right,color-mix(in oklch,var(--primary),transparent 95%),color-mix(in oklch,var(--primary),transparent 90%))}}.btn-toolbar-primary{border:1px solid var(--primary)}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-primary{border:1px solid color-mix(in oklch,var(--primary),transparent 80%)}}.btn-toolbar-primary{transition:all .2s}.btn-toolbar-primary:hover{background:linear-gradient(to right,var(--primary),var(--primary))}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-primary:hover{background:linear-gradient(to right,color-mix(in oklch,var(--primary),transparent 90%),color-mix(in oklch,var(--primary),transparent 80%))}}.btn-toolbar-icon-primary{background:linear-gradient(to bottom right,var(--primary),var(--primary));border-radius:9999px;width:2rem;height:2rem;padding:0}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-primary{background:linear-gradient(to bottom right,color-mix(in oklch,var(--primary),transparent 90%),color-mix(in oklch,var(--primary),transparent 80%))}}.btn-toolbar-icon-primary{border:1px solid var(--primary)}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-primary{border:1px solid color-mix(in oklch,var(--primary),transparent 70%)}}.btn-toolbar-icon-primary{transition:all .2s;box-shadow:0 1px 2px #0000000d}.btn-toolbar-icon-primary:hover{background:linear-gradient(to bottom right,var(--primary),var(--primary))}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-primary:hover{background:linear-gradient(to bottom right,color-mix(in oklch,var(--primary),transparent 80%),color-mix(in oklch,var(--primary),transparent 70%))}}.btn-toolbar-icon-secondary{background:linear-gradient(to bottom right,var(--secondary),var(--secondary));border-radius:9999px;width:2rem;height:2rem;padding:0}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-secondary{background:linear-gradient(to bottom right,color-mix(in oklch,var(--secondary),transparent 90%),color-mix(in oklch,var(--secondary),transparent 80%))}}.btn-toolbar-icon-secondary{border:1px solid var(--secondary)}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-secondary{border:1px solid color-mix(in oklch,var(--secondary),transparent 70%)}}.btn-toolbar-icon-secondary{transition:all .2s;box-shadow:0 1px 2px #0000000d}.btn-toolbar-icon-secondary:hover{background:linear-gradient(to bottom right,var(--secondary),var(--secondary))}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-secondary:hover{background:linear-gradient(to bottom right,color-mix(in oklch,var(--secondary),transparent 80%),color-mix(in oklch,var(--secondary),transparent 70%))}}.badge-compact{height:1.25rem;padding:0 .5rem;font-size:10px}.badge-mini{height:1rem;padding:0 .375rem;font-size:10px}@keyframes shimmer-bg{0%{background-position:-1000px 0}to{background-position:1000px 0}}.shimmer{background:linear-gradient(90deg,#0000,#ffffff1a,#0000) 0 0/1000px 100%;animation:3s linear infinite shimmer-bg}.animate-shimmer{animation:2s linear infinite shimmer}@keyframes pulse-glow{0%,to{box-shadow:0 0 20px rgba(var(--primary),.1)}50%{box-shadow:0 0 30px rgba(var(--primary),.2)}}.pulse-glow{animation:2s ease-in-out infinite pulse-glow}@keyframes gradient-x{0%,to{background-position:0%}50%{background-position:100%}}.animate-gradient-x{animation:8s ease-in-out infinite gradient-x}.gradient-text{background:linear-gradient(to right,var(--foreground),var(--foreground))}@supports (color:color-mix(in lab, red, red)){.gradient-text{background:linear-gradient(to right,var(--foreground),color-mix(in oklch,var(--foreground),transparent 30%))}}.gradient-text{-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.glass{background:var(--background)}@supports (color:color-mix(in lab, red, red)){.glass{background:color-mix(in oklch,var(--background),transparent 50%)}}.glass{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border)}@supports (color:color-mix(in lab, red, red)){.glass{border:1px solid color-mix(in oklch,var(--border),transparent 50%)}}.tool-card{transition:all .3s ease-out}.tool-card:hover{transform:scale(1.02);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.scrollbar-thin{scrollbar-width:thin}.scrollbar-thin::-webkit-scrollbar{width:6px;height:6px}.scrollbar-thin::-webkit-scrollbar-track{background:0 0}.scrollbar-thin::-webkit-scrollbar-thumb{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.scrollbar-thin::-webkit-scrollbar-thumb{background-color:color-mix(in oklch,var(--primary),transparent 80%)}}.scrollbar-thin::-webkit-scrollbar-thumb{border-radius:3px}.scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:color-mix(in oklch,var(--primary),transparent 70%)}}}@layer utilities{.\@container{container-type:inline-size}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.-top-12{top:calc(var(--spacing)*-12)}.top-1\.5{top:calc(var(--spacing)*1.5)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing)*4)}.top-\[50\%\]{top:50%}.right-0{right:calc(var(--spacing)*0)}.right-1\.5{right:calc(var(--spacing)*1.5)}.right-4{right:calc(var(--spacing)*4)}.right-6{right:calc(var(--spacing)*6)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-6{bottom:calc(var(--spacing)*6)}.left-0{left:calc(var(--spacing)*0)}.left-\[50\%\]{left:50%}.z-10{z-index:10}.z-50{z-index:50}.col-span-full{grid-column:1/-1}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.row-start-3{grid-row-start:3}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing)*0)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-3{margin-inline:calc(var(--spacing)*3)}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing)*2)}.my-auto{margin-block:auto}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.-mr-1{margin-right:calc(var(--spacing)*-1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.-ml-2{margin-left:calc(var(--spacing)*-2)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.aspect-square{aspect-ratio:1}.size-2\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.size-14{width:calc(var(--spacing)*14);height:calc(var(--spacing)*14)}.size-\[34px\]{width:34px;height:34px}.size-full{width:100%;height:100%}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-\[600px\]{height:600px}.h-auto{height:auto}.h-full{height:100%}.max-h-24{max-height:calc(var(--spacing)*24)}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-\[80dvh\]{max-height:80dvh}.max-h-\[80vh\]{max-height:80vh}.min-h-8{min-height:calc(var(--spacing)*8)}.min-h-\[60px\]{min-height:60px}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-16{width:calc(var(--spacing)*16)}.w-\[500px\]{width:500px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-7\/8{max-width:87.5%}.max-w-\[80\%\]{max-width:80%}.max-w-\[80px\]{max-width:80px}.max-w-\[85\%\]{max-width:85%}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-\[var\(--thread-max-width\)\]{max-width:var(--thread-max-width)}.max-w-full{max-width:100%}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x:calc(var(--spacing)*0);--tw-border-spacing-y:calc(var(--spacing)*0);border-spacing:var(--tw-border-spacing-x)var(--tw-border-spacing-y)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-45{rotate:45deg}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-none{resize:none}.scroll-m-20{scroll-margin:calc(var(--spacing)*20)}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.auto-rows-auto{grid-auto-rows:auto}.grid-cols-\[minmax\(72px\,1fr\)_auto\]{grid-template-columns:minmax(72px,1fr) auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}.gap-y-2{row-gap:calc(var(--spacing)*2)}.self-center{align-self:center}.self-end{align-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[2px\]{border-radius:2px}.rounded-\[14px\]{border-radius:14px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.\!rounded-t-none{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-t-3xl{border-top-left-radius:var(--radius-3xl);border-top-right-radius:var(--radius-3xl)}.rounded-t-lg{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.rounded-b-lg{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-blue-500\/40{border-color:#3080ff66}@supports (color:color-mix(in lab, red, red)){.border-blue-500\/40{border-color:color-mix(in oklab,var(--color-blue-500)40%,transparent)}}.border-blue-500\/60{border-color:#3080ff99}@supports (color:color-mix(in lab, red, red)){.border-blue-500\/60{border-color:color-mix(in oklab,var(--color-blue-500)60%,transparent)}}.border-border,.border-border\/20{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/20{border-color:color-mix(in oklab,var(--border)20%,transparent)}}.border-border\/40{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/40{border-color:color-mix(in oklab,var(--border)40%,transparent)}}.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/50{border-color:color-mix(in oklab,var(--border)50%,transparent)}}.border-destructive,.border-destructive\/60{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/60{border-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.border-foreground\/20{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-foreground\/20{border-color:color-mix(in oklab,var(--foreground)20%,transparent)}}.border-green-500\/40{border-color:#00c75866}@supports (color:color-mix(in lab, red, red)){.border-green-500\/40{border-color:color-mix(in oklab,var(--color-green-500)40%,transparent)}}.border-green-500\/60{border-color:#00c75899}@supports (color:color-mix(in lab, red, red)){.border-green-500\/60{border-color:color-mix(in oklab,var(--color-green-500)60%,transparent)}}.border-input{border-color:var(--input)}.border-muted-foreground\/20{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.border-muted-foreground\/20{border-color:color-mix(in oklab,var(--muted-foreground)20%,transparent)}}.border-primary\/60{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/60{border-color:color-mix(in oklab,var(--primary)60%,transparent)}}.border-red-500\/40{border-color:#fb2c3666}@supports (color:color-mix(in lab, red, red)){.border-red-500\/40{border-color:color-mix(in oklab,var(--color-red-500)40%,transparent)}}.border-red-500\/60{border-color:#fb2c3699}@supports (color:color-mix(in lab, red, red)){.border-red-500\/60{border-color:color-mix(in oklab,var(--color-red-500)60%,transparent)}}.border-transparent{border-color:#0000}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-\[color-mix\(in_oklab\,rgb\(var\(--background\)\)_20\%\,transparent\)\]{background-color:rgb(var(--background))}@supports (color:color-mix(in lab, red, red)){.bg-\[color-mix\(in_oklab\,rgb\(var\(--background\)\)_20\%\,transparent\)\]{background-color:color-mix(in oklab,rgb(var(--background))20%,transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.bg-background,.bg-background\/50{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/50{background-color:color-mix(in oklab,var(--background)50%,transparent)}}.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/80{background-color:color-mix(in oklab,var(--background)80%,transparent)}}.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/95{background-color:color-mix(in oklab,var(--background)95%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-500\/5{background-color:#3080ff0d}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\/5{background-color:color-mix(in oklab,var(--color-blue-500)5%,transparent)}}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500)10%,transparent)}}.bg-border{background-color:var(--border)}.bg-destructive,.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/5{background-color:#00c7580d}@supports (color:color-mix(in lab, red, red)){.bg-green-500\/5{background-color:color-mix(in oklab,var(--color-green-500)5%,transparent)}}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab, red, red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500)10%,transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\/15{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/15{background-color:color-mix(in oklab,var(--muted-foreground)15%,transparent)}}.bg-muted\/5{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/5{background-color:color-mix(in oklab,var(--muted)5%,transparent)}}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--muted)30%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-popover\/95{background-color:var(--popover)}@supports (color:color-mix(in lab, red, red)){.bg-popover\/95{background-color:color-mix(in oklab,var(--popover)95%,transparent)}}.bg-primary,.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--primary)10%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/5{background-color:#fb2c360d}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/5{background-color:color-mix(in oklab,var(--color-red-500)5%,transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-yellow-500{background-color:var(--color-yellow-500)}.fill-foreground{fill:var(--foreground)}.stroke-\[1\.5px\]{stroke-width:1.5px}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.pt-0\.5{padding-top:calc(var(--spacing)*.5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pr-2{padding-right:calc(var(--spacing)*2)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-4{padding-left:calc(var(--spacing)*4)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[17px\]{font-size:17px}.text-\[19px\]{font-size:19px}.text-\[21px\]{font-size:21px}.text-\[25px\]{font-size:25px}.leading-7{--tw-leading:calc(var(--spacing)*7);line-height:calc(var(--spacing)*7)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-background{color:var(--background)}.text-blue-600{color:var(--color-blue-600)}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-emerald-500{color:var(--color-emerald-500)}.text-foreground,.text-foreground\/80{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/80{color:color-mix(in oklab,var(--foreground)80%,transparent)}}.text-green-600{color:var(--color-green-600)}.text-muted-foreground,.text-muted-foreground\/65{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/65{color:color-mix(in oklab,var(--muted-foreground)65%,transparent)}}.text-muted-foreground\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/70{color:color-mix(in oklab,var(--muted-foreground)70%,transparent)}}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-70{opacity:.7}.opacity-100{opacity:1}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(34\,197\,94\,0\.3\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#22c55e4d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(59\,130\,246\,0\.3\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#3b82f64d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(239\,68\,68\,0\.3\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#ef44444d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_12px_24px_-16px_rgba\(37\,99\,235\,0\.55\)\]{--tw-shadow:0 12px 24px -16px var(--tw-shadow-color,#2563eb8c);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_12px_24px_-18px_rgba\(220\,38\,38\,0\.55\)\]{--tw-shadow:0 12px 24px -18px var(--tw-shadow-color,#dc26268c);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.\[box-shadow\:inset_0_1px_2px_0_rgba\(255\,255\,255\,0\.15\)\]{box-shadow:inset 0 1px 2px #ffffff26}.shadow-black\/20{--tw-shadow-color:#0003}@supports (color:color-mix(in lab, red, red)){.shadow-black\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)20%,transparent)var(--tw-shadow-alpha),transparent)}}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.drop-shadow-xl{--tw-drop-shadow-size:drop-shadow(0 9px 7px var(--tw-drop-shadow-color,#0000001a));--tw-drop-shadow:drop-shadow(var(--drop-shadow-xl));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,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.placeholder\:text-muted-foreground::placeholder,.placeholder\:text-muted-foreground\/70::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-muted-foreground\/70::placeholder{color:color-mix(in oklab,var(--muted-foreground)70%,transparent)}}.first\:mt-0:first-child{margin-top:calc(var(--spacing)*0)}.first\:mt-3:first-child{margin-top:calc(var(--spacing)*3)}.first\:mt-4:first-child{margin-top:calc(var(--spacing)*4)}.first\:rounded-tl-lg:first-child{border-top-left-radius:var(--radius)}.first\:border-t:first-child{border-top-style:var(--tw-border-style);border-top-width:1px}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing)*0)}.last\:mb-5:last-child{margin-bottom:calc(var(--spacing)*5)}.last\:mb-24:last-child{margin-bottom:calc(var(--spacing)*24)}.last\:rounded-tr-lg:last-child{border-top-right-radius:var(--radius)}.last\:border-r:last-child{border-right-style:var(--tw-border-style);border-right-width:1px}.empty\:hidden:empty{display:none}.focus-within\:border-ring\/50:focus-within{border-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-within\:border-ring\/50:focus-within{border-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-within\:border-white\/20:focus-within{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.focus-within\:border-white\/20:focus-within{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.focus-within\:shadow-2xl:focus-within{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:shadow-md:focus-within{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:shadow-black\/30:focus-within{--tw-shadow-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.focus-within\:shadow-black\/30:focus-within{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)30%,transparent)var(--tw-shadow-alpha),transparent)}}.focus-within\:ring-ring:focus-within{--tw-ring-color:var(--ring)}.focus-within\:ring-offset-2:focus-within{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}@media (hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:border-accent:hover{border-color:var(--accent)}.hover\:border-border\/60:hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.hover\:border-border\/60:hover{border-color:color-mix(in oklab,var(--border)60%,transparent)}}.hover\:border-white\/15:hover{border-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.hover\:border-white\/15:hover{border-color:color-mix(in oklab,var(--color-white)15%,transparent)}}.hover\:\!bg-white:hover{background-color:var(--color-white)!important}.hover\:bg-accent:hover,.hover\:bg-accent\/50:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/50:hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.hover\:bg-destructive\/10:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/10:hover{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.hover\:bg-destructive\/80:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/80:hover{background-color:color-mix(in oklab,var(--destructive)80%,transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-muted-foreground\/15:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted-foreground\/15:hover{background-color:color-mix(in oklab,var(--muted-foreground)15%,transparent)}}.hover\:bg-primary\/80:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab,var(--primary)80%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-75:hover{opacity:.75}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-2xl:hover{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_14px_24px_-14px_rgba\(37\,99\,235\,0\.6\)\]:hover{--tw-shadow:0 14px 24px -14px var(--tw-shadow-color,#2563eb99);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_14px_24px_-16px_rgba\(220\,38\,38\,0\.6\)\]:hover{--tw-shadow:0 14px 24px -16px var(--tw-shadow-color,#dc262699);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:drop-shadow-2xl:hover{--tw-drop-shadow-size:drop-shadow(0 25px 25px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-2xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-destructive\/40:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/40:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.focus-visible\:ring-primary\/40:focus-visible{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-primary\/40:focus-visible{--tw-ring-color:color-mix(in oklab,var(--primary)40%,transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:invisible:disabled{visibility:hidden}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-floating\:absolute[data-floating]{position:absolute}.data-floating\:rounded-md[data-floating]{border-radius:calc(var(--radius) - 2px)}.data-floating\:border[data-floating]{border-style:var(--tw-border-style);border-width:1px}.data-floating\:bg-background[data-floating]{background-color:var(--background)}.data-floating\:p-1[data-floating]{padding:calc(var(--spacing)*1)}.data-floating\:shadow-sm[data-floating]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[state\=closed\]\:scale-0[data-state=closed]{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.data-\[state\=closed\]\:scale-100[data-state=closed]{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.data-\[state\=closed\]\:-rotate-90[data-state=closed]{rotate:-90deg}.data-\[state\=closed\]\:rotate-0[data-state=closed]{rotate:none}.data-\[state\=open\]\:scale-0[data-state=open]{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.data-\[state\=open\]\:scale-100[data-state=open]{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.data-\[state\=open\]\:rotate-0[data-state=open]{rotate:none}.data-\[state\=open\]\:rotate-90[data-state=open]{rotate:90deg}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}@media (min-width:40rem){.sm\:max-w-3xl{max-width:var(--container-3xl)}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:text-left{text-align:left}}@media (min-width:48rem){.md\:pb-6{padding-bottom:calc(var(--spacing)*6)}}@container (min-width:28rem){.\@md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.\@md\:flex-col{flex-direction:column}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:border-muted-foreground\/15:is(.dark *){border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.dark\:border-muted-foreground\/15:is(.dark *){border-color:color-mix(in oklab,var(--muted-foreground)15%,transparent)}}.dark\:bg-background:is(.dark *){background-color:var(--background)}.dark\:bg-destructive\/5:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/5:is(.dark *){background-color:color-mix(in oklab,var(--destructive)5%,transparent)}}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:bg-muted-foreground\/20:is(.dark *){background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-muted-foreground\/20:is(.dark *){background-color:color-mix(in oklab,var(--muted-foreground)20%,transparent)}}.dark\:stroke-\[2\.5px\]:is(.dark *){stroke-width:2.5px}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\:text-red-200:is(.dark *){color:var(--color-red-200)}@media (hover:hover){.dark\:hover\:bg-accent:is(.dark *):hover,.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-accent\/60:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-accent\/60:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)60%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}.dark\:hover\:bg-muted-foreground\/30:is(.dark *):hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-muted-foreground\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--muted-foreground)30%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\]\:text-background svg{color:var(--background)}.\[\&_svg\]\:text-black svg{color:var(--color-black)}@media (hover:hover){.hover\:\[\&_svg\]\:text-destructive:hover svg{color:var(--destructive)}}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\:last-child\>td\:first-child\]\:rounded-bl-lg:last-child>td:first-child{border-bottom-left-radius:var(--radius)}.\[\&\:last-child\>td\:last-child\]\:rounded-br-lg:last-child>td:last-child{border-bottom-right-radius:var(--radius)}.\[\&\:nth-child\(n\+3\)\]\:hidden:nth-child(n+3){display:none}@container (min-width:28rem){.\@md\:\[\&\:nth-child\(n\+3\)\]\:block:nth-child(n+3){display:block}}.\[\&\:where\(\>\*\)\]\:col-start-2:where(){grid-column-start:2}.only\:\[\&\>\#attachment-tile\]\:size-24:only-child>#attachment-tile{width:calc(var(--spacing)*24);height:calc(var(--spacing)*24)}.\[\&\>\.aui-thread-root\]\:bg-inherit>.aui-thread-root{background-color:inherit}.\[\&\>a\]\:text-xs>a{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&\>a\]\:no-underline>a{text-decoration-line:none}.\[\&\>button\]\:rounded-full>button{border-radius:3.40282e38px}.\[\&\>button\]\:bg-foreground\/60>button{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.\[\&\>button\]\:bg-foreground\/60>button{background-color:color-mix(in oklab,var(--foreground)60%,transparent)}}.\[\&\>button\]\:p-1>button{padding:calc(var(--spacing)*1)}.\[\&\>button\]\:opacity-100>button{opacity:1}.\[\&\>button\]\:\!ring-0>button{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}@media (hover:hover){.\[\&\>button\]\:hover\:\[\&_svg\]\:text-destructive>button:hover svg{color:var(--destructive)}}.\[\&\>li\]\:mt-1>li{margin-top:calc(var(--spacing)*1)}.\[\&\>span\]\:text-xs>span{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&\[align\=center\]\]\:text-center[align=center]{text-align:center}.\[\&\[align\=right\]\]\:text-right[align=right]{text-align:right}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(200%)}}@keyframes subtle-pulse{0%,to{opacity:1}50%{opacity:.85}}@keyframes smooth-slide-down{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes gradient-shift{0%,to{transform:translate(0%)translateY(0%)}25%{transform:translate(100%)translateY(100%)}50%{transform:translate(100%)translateY(0%)}75%{transform:translate(0%)translateY(100%)}}@keyframes float{0%,to{transform:translateY(0)translate(0)}33%{transform:translateY(-30px)translate(20px)}66%{transform:translateY(20px)translate(-20px)}}@keyframes float-delayed{0%,to{transform:translateY(0)translate(0)}33%{transform:translateY(30px)translate(-30px)}66%{transform:translateY(-20px)translate(20px)}}.tool-card-transition{transition:all .4s cubic-bezier(.34,1.56,.64,1)}.tool-card-smooth{transition:all .35s cubic-bezier(.4,0,.2,1)}.animate-fadeInUp{opacity:0;animation:.5s ease-out forwards fadeInUp}.animate-gradient-shift{background-size:200% 200%;animation:20s ease-in-out infinite gradient-shift}.animate-float-slow{animation:20s ease-in-out infinite float}.animate-float-delayed{animation:25s ease-in-out 5s infinite float-delayed}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}@keyframes aui-pulse{50%{opacity:.5}}:where(.aui-md[data-status=running]):empty:after,:where(.aui-md[data-status=running])>:where(:not(ol):not(ul):not(pre)):last-child:after,:where(.aui-md[data-status=running])>pre:last-child code:after,:where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child:not(:has(*>li))):after,:where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child:not(:has(*>li))):after,:where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child):after{--aui-content:"●";content:var(--aui-content);margin-left:.25rem;margin-right:.25rem;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;animation:2s cubic-bezier(.4,0,.6,1) infinite aui-pulse}@property --tw-border-spacing-x{syntax:"<length>";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"<length>";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
var WebMCPAgent=(function(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T){var E=Object.create,D=Object.defineProperty,O=Object.getOwnPropertyDescriptor,k=Object.getOwnPropertyNames,A=Object.getPrototypeOf,j=Object.prototype.hasOwnProperty,M=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=k(t),a=0,o=i.length,s;a<o;a++)s=i[a],!j.call(e,s)&&s!==n&&D(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=O(t,s))||r.enumerable});return e},N=(e,t,n)=>(n=e==null?{}:E(A(e)),M(t||!e||!e.__esModule?D(n,`default`,{value:e,enumerable:!0}):n,e));i=N(i),s=N(s),l=N(l),m=N(m),h=N(h),g=N(g),b=N(b);function P(...e){return(0,d.twMerge)((0,u.clsx)(e))}typeof window<`u`&&window.__WEBMCP_DEBUG__;function F(e,t,n){typeof window<`u`&&window.__WEBMCP_DEBUG__===!0&&(n===void 0?console.log(`[${e}] ${t}`):console.log(`[${e}] ${t}`,n))}var I=class{audioContext=null;analyser=null;source=null;dataArray=null;animationId=null;async initialize(e){let t=e.getAudioTracks();F(`AudioAnalyzer`,`Initializing with stream`,{streamId:e.id,audioTracks:t.length,trackInfo:t.map(e=>({id:e.id,label:e.label,enabled:e.enabled,muted:e.muted,readyState:e.readyState}))}),this.audioContext=new AudioContext,F(`AudioAnalyzer`,`AudioContext created, initial state: ${this.audioContext.state}`);try{await this.audioContext.resume(),F(`AudioAnalyzer`,`AudioContext after resume: ${this.audioContext.state}`)}catch(e){console.warn(`[AudioAnalyzer] Failed to resume AudioContext:`,e)}this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=256,this.analyser.smoothingTimeConstant=.8,this.source=this.audioContext.createMediaStreamSource(e),this.source.connect(this.analyser);let n=this.analyser.frequencyBinCount;this.dataArray=new Uint8Array(new ArrayBuffer(n)),F(`AudioAnalyzer`,`Setup complete`,{sampleRate:this.audioContext.sampleRate,frequencyBinCount:n,contextState:this.audioContext.state})}getAudioLevel(){if(!this.analyser||!this.dataArray)return 0;this.analyser.getByteFrequencyData(this.dataArray);let e=0;for(let t=0;t<this.dataArray.length;t++)e+=this.dataArray[t];let t=e/this.dataArray.length;return Math.min(1,t/128)}getFrequencyData(e=16){if(!this.analyser||!this.dataArray)return Array(e).fill(0);this.analyser.getByteFrequencyData(this.dataArray);let t=[],n=Math.floor(this.dataArray.length/e);for(let r=0;r<e;r++){let e=0;for(let t=0;t<n;t++)e+=this.dataArray[r*n+t];t.push(Math.min(1,e/n/255))}return t}startAnalysis(e){let t=()=>{e(this.getAudioLevel(),this.getFrequencyData()),this.animationId=requestAnimationFrame(t)};t()}stopAnalysis(){this.animationId!==null&&(cancelAnimationFrame(this.animationId),this.animationId=null)}destroy(){this.stopAnalysis(),this.source&&=(this.source.disconnect(),null),this.analyser&&=(this.analyser.disconnect(),null),this.audioContext&&=(this.audioContext.close(),null),this.dataArray=null}},L=class{listeners=new Map;on(e,t){this.listeners.has(e)||this.listeners.set(e,new Set);let n=this.listeners.get(e);n&&n.add(t)}off(e,t){this.listeners.get(e)?.delete(t)}emit(e,t){this.listeners.get(e)?.forEach(n=>{try{n(t)}catch(t){console.error(`Error in event listener for ${e}:`,t)}})}removeAllListeners(e){e?this.listeners.delete(e):this.listeners.clear()}listenerCount(e){return this.listeners.get(e)?.size||0}};function R(e){return e.type===`function_call`&&e.status===`completed`&&typeof e.name==`string`&&typeof e.call_id==`string`}var z=class{isProcessingResponse=!1;pendingFunctionCalls=new Set;responseRequestTimer=null;hasRequestedResponse=!1;constructor(e,t){this.toolManager=e,this.eventEmitter=t}async handleMessage(e,t){let n;try{n=JSON.parse(e)}catch(e){console.error(`Failed to parse realtime message:`,e);return}switch(n.type){case`response.created`:this.handleResponseCreated(n);break;case`response.done`:await this.handleResponseDone(n,t);break;case`response.function_call_arguments.done`:this.handleFunctionCallArguments();break;case`input_audio_buffer.speech_started`:case`input_audio_buffer.speech_stopped`:this.handleSpeechEvents(n);break;case`response.output_audio.delta`:case`response.output_audio.done`:this.handleAudioEvents(n);break;case`response.output_audio_transcript.delta`:case`response.output_audio_transcript.done`:case`response.output_text.delta`:case`response.output_text.done`:this.handleTranscriptEvents(n);break;case`conversation.item.input_audio_transcription.completed`:this.handleUserTranscript(n);break;case`error`:this.handleError(n);break;case`session.created`:case`session.updated`:this.handleSessionEvents(n);break;case`conversation.item.created`:case`input_audio_buffer.committed`:break}}handleResponseCreated(e){this.isProcessingResponse=!0,this.hasRequestedResponse=!1}async handleResponseDone(e,t){let n=this.extractResponseOutput(e.response);if(n.some(R)||(this.isProcessingResponse=!1,this.hasRequestedResponse=!1),n.length>0){let e=n.filter(R).map(e=>({name:e.name,call_id:e.call_id,arguments:e.arguments??``}));for(let n of e)this.pendingFunctionCalls.has(n.call_id)?console.warn(`[MessageHandler] Skipping duplicate function call: ${n.name} (${n.call_id})`):(this.pendingFunctionCalls.add(n.call_id),await this.executeFunctionCall(n,t));e.length>0&&this.pendingFunctionCalls.size===0&&this.requestResponseIfNeeded(t)}}extractResponseOutput(e){if(!e||typeof e!=`object`)return[];let t=e;return Array.isArray(t.output)?t.output.filter(e=>typeof e==`object`&&!!e&&typeof e.type==`string`):[]}handleFunctionCallArguments(){}handleSpeechEvents(e){let t=e.type===`input_audio_buffer.speech_started`?`speech_started`:`speech_stopped`;this.eventEmitter.emit(t,e)}handleAudioEvents(e){let t=e.type===`response.output_audio.delta`?`audio_started`:`audio_stopped`;console.log(`[MessageHandler] Assistant ${t}`,{type:e.type,hasAudio:!!e.delta}),this.eventEmitter.emit(t,e)}handleTranscriptEvents(e){let t={"response.output_audio_transcript.delta":`assistant_transcript`,"response.output_audio_transcript.done":`assistant_transcript_done`,"response.output_text.delta":`text`,"response.output_text.done":`text_done`}[e.type];t&&this.eventEmitter.emit(t,e)}handleUserTranscript(e){this.eventEmitter.emit(`user_transcript_done`,{text:e.transcript})}handleSessionEvents(e){}handleError(e){console.error(`Realtime API error:`,e),this.eventEmitter.emit(`error`,e),this.isProcessingResponse=!1,this.hasRequestedResponse=!1,this.responseRequestTimer&&=(clearTimeout(this.responseRequestTimer),null)}async executeFunctionCall(e,t){let{name:n,call_id:r}=e;try{this.eventEmitter.emit(`tool_call_started`,{name:n});let i=await this.toolManager.executeToolCall(e);if(t.readyState!==`open`){console.error(`[MessageHandler] Cannot send tool result for ${n}: DataChannel is ${t.readyState}`),this.eventEmitter.emit(`tool_call_completed`,{name:n,error:`DataChannel closed during tool execution`});return}let a={type:`conversation.item.create`,item:{type:`function_call_output`,call_id:r,output:JSON.stringify(i.success?i.data:{error:i.error,success:!1})}};t.send(JSON.stringify(a)),this.eventEmitter.emit(`tool_call_completed`,{name:n,error:i.success?void 0:i.error})}catch(e){console.error(`[MessageHandler] Tool execution failed for ${n}:`,e),this.sendToolError(r,String(e),t)}finally{this.pendingFunctionCalls.delete(r),this.pendingFunctionCalls.size===0&&(this.isProcessingResponse=!1,this.hasRequestedResponse=!1,this.requestResponseIfNeeded(t))}}sendToolError(e,t,n){if(n.readyState!==`open`){console.error(`[MessageHandler] Cannot send tool error: DataChannel is ${n.readyState}`);return}let r={type:`conversation.item.create`,item:{type:`function_call_output`,call_id:e,output:JSON.stringify({error:t,success:!1})}};n.send(JSON.stringify(r))}requestResponseIfNeeded(e){this.responseRequestTimer&&=(clearTimeout(this.responseRequestTimer),null),this.responseRequestTimer=setTimeout(()=>{!this.isProcessingResponse&&!this.hasRequestedResponse&&e.readyState===`open`&&this.pendingFunctionCalls.size===0&&(this.hasRequestedResponse=!0,this.isProcessingResponse=!0,e.send(JSON.stringify({type:`response.create`}))),this.responseRequestTimer=null},150)}reset(){this.isProcessingResponse=!1,this.hasRequestedResponse=!1,this.pendingFunctionCalls.clear(),this.responseRequestTimer&&=(clearTimeout(this.responseRequestTimer),null)}},B=class{tools=[];executor=null;lastSentToolSignature=``;setTools(e){this.tools=e}setExecutor(e){this.executor=e}resetSession(){console.log(`[ToolManager] resetSession called (lastSentToolSignature preserved)`)}getToolSignature(e){return e.map(e=>e.name).sort().join(`|`)}hasToolsChanged(){return this.getToolSignature(this.tools)!==this.lastSentToolSignature}markToolsSent(){this.lastSentToolSignature=this.getToolSignature(this.tools)}formatToolsForOpenAI(){let e=[{type:`function`,name:`list_available_tools`,description:`List all currently available tools that can be called. Use this when you need to know what tools are available or when the user asks about available capabilities.`,parameters:{type:`object`,properties:{},required:[]}}],t=this.tools.map(e=>({type:`function`,name:e.name,description:e.description||`Execute ${e.name} action`,parameters:this.validateToolSchema(e.inputSchema)}));return[...e,...t]}validateToolSchema(e){if(!e)return{type:`object`,properties:{},required:[]};let t={type:`object`,...e};return t.type===`object`&&(t.properties=t.properties||{},!t.required&&t.properties&&(t.required=Object.entries(t.properties).filter(([,e])=>{if(e&&typeof e==`object`){let t=e;return!t.optional&&!t.nullable&&t.type!==`null`}return!1}).map(([e])=>e))),t}async executeToolCall(e){let{name:t,arguments:n}=e;if(t===`list_available_tools`)return this.executeListTools();if(!this.executor)return{success:!1,error:`Tool executor not configured`};if(!this.tools.find(e=>e.name===t))return console.error(`[ToolManager] Tool not found: ${t}`),{success:!1,error:`Tool not found: ${t}`};let r;try{r=n?JSON.parse(n):{}}catch(e){return console.error(`[ToolManager] Failed to parse arguments:`,e),{success:!1,error:`Invalid arguments format`}}try{return{success:!0,data:await this.executor(t,r)}}catch(e){return console.error(`[ToolManager] Tool execution error for ${t}:`,e),{success:!1,error:String(e)}}}executeListTools(){let e=this.tools.map(e=>({name:e.name,description:e.description||`No description available`,parameters:e.inputSchema||{}}));return{success:!0,data:{tools:e,count:e.length,message:e.length>0?`Found ${e.length} available tools`:`No tools currently available`}}}getChangesSummary(){if(!this.hasToolsChanged())return null;let e=this.lastSentToolSignature.split(`|`).filter(Boolean),t=this.tools.map(e=>e.name),n=new Set(e),r=new Set(t);return{added:t.filter(e=>!n.has(e)),removed:e.filter(e=>!r.has(e)),total:this.tools.length}}};function V(e){return!e||typeof e!=`object`?!1:typeof e.client_secret?.value==`string`}var H=class{tokenEndpoint;constructor(e){this.tokenEndpoint=e}async createSession(e={}){let t=e.model||`gpt-4o-realtime-preview-2024-12-17`,n=e.voice||`verse`,r=e.apiUrl||`https://api.openai.com/v1/realtime`,i=await this.getEphemeralToken(t,n),a=new RTCPeerConnection,o=this.createAudioElement(),s=null;a.ontrack=e=>{s=e.streams[0],o.srcObject=s,F(`WebRTC`,`Remote audio stream received and connected to audio element`,{streamId:s.id,tracks:s.getTracks().length})};let c=await this.getUserMedia();F(`WebRTC`,`Local microphone stream acquired`,{streamId:c.id,tracks:c.getTracks().map(e=>({kind:e.kind,enabled:e.enabled,muted:e.muted,readyState:e.readyState}))}),c.getTracks().forEach(e=>{a.addTrack(e,c)});let l=a.createDataChannel(`oai-events`),u=await a.createOffer();if(await a.setLocalDescription(u),!u.sdp)throw Error(`Failed to create offer SDP`);let d=await this.connectToOpenAI(r,t,u.sdp,i);return await a.setRemoteDescription(d),{pc:a,dataChannel:l,audioElement:o,localStream:c,remoteStream:s,cleanup:()=>{c.getTracks().forEach(e=>{e.stop()}),o.remove(),l.close(),a.close()}}}async getEphemeralToken(e,t){let n=await fetch(this.tokenEndpoint,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({model:e,voice:t})});if(!n.ok){let e=await n.text();throw console.error(`Failed to get ephemeral token:`,e),Error(`Failed to get ephemeral token: ${n.statusText}`)}let r=await n.json();if(!V(r))throw Error(`Invalid token response format`);return r.client_secret.value}createAudioElement(){let e=document.createElement(`audio`);return e.autoplay=!0,e.style.display=`none`,document.body.appendChild(e),e}async getUserMedia(){try{return await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0}})}catch(e){throw Error(`Failed to access microphone: ${e}`)}}async connectToOpenAI(e,t,n,r){let i=await fetch(`${e}?model=${t}`,{method:`POST`,body:n,headers:{Authorization:`Bearer ${r}`,"Content-Type":`application/sdp`}});if(!i.ok)throw Error(`Failed to establish WebRTC connection: ${i.statusText}`);return{type:`answer`,sdp:await i.text()}}};let U=Object.freeze(Array(32).fill(0)),W=()=>[...U];var ee=class{session=null;webrtcManager;toolManager;messageHandler;eventEmitter;muted=!1;lastState=`disconnected`;localAnalyzer=null;remoteAnalyzer=null;visualizationInterval=null;sessionStartTime=null;onToolsChangedCallback=null;constructor(e){this.webrtcManager=new H(e),this.toolManager=new B,this.eventEmitter=new L,this.messageHandler=new z(this.toolManager,this.eventEmitter)}setTools(e){this.toolManager.setTools(e),this.isSessionActive()&&this.updateSessionTools()}setToolExecutor(e){this.toolManager.setExecutor(e)}onToolsChanged(e){this.onToolsChangedCallback=e}async startSession(e={}){try{this.session&&this.stopSession(),this.muted=!1,this.sessionStartTime=Date.now(),this.emitSessionState(`connecting`),this.session=await this.webrtcManager.createSession(e),this.setupDataChannel(this.session.dataChannel),this.setupPeerConnectionMonitoring(this.session.pc),this.session.localStream&&await this.initializeLocalAnalyzer(this.session.localStream),this.session.remoteStream&&this.initializeRemoteAnalyzer(this.session.remoteStream);let t=this.session.pc.ontrack,n=this.session;return this.session.pc.ontrack=e=>{t&&t.call(n.pc,e),this.session&&(this.session.remoteStream=e.streams[0]);let r=e.streams[0];if(!r){console.warn(`[OpenAIRealtimeService] Received ontrack event without stream`);return}this.initializeRemoteAnalyzer(r)},this.session}catch(e){throw this.handleSessionError(e),e}}stopSession(){let e=0;this.sessionStartTime&&(e=Math.floor((Date.now()-this.sessionStartTime)/1e3)),this.visualizationInterval&&=(clearInterval(this.visualizationInterval),null),this.localAnalyzer&&=(this.localAnalyzer.destroy(),null),this.remoteAnalyzer&&=(this.remoteAnalyzer.destroy(),null),this.session&&=(this.session.cleanup(),null),this.messageHandler.reset(),this.toolManager.resetSession(),this.muted=!1,this.emitSessionState(`disconnected`,{durationSeconds:e}),this.sessionStartTime=null}sendUserMessage(e){if(!this.isSessionActive())throw Error(`No active session`);let t={type:`conversation.item.create`,item:{type:`message`,role:`user`,content:[{type:`input_text`,text:e}]}};if(!this.session)throw Error(`Session is not active`);this.session.dataChannel.send(JSON.stringify(t)),this.session.dataChannel.send(JSON.stringify({type:`response.create`}))}isSessionActive(){return this.session!==null&&this.session.dataChannel.readyState===`open`}getLocalStream(){return this.session?.localStream||null}getRemoteStream(){return this.session?.remoteStream||null}toggleMute(e){this.session?.audioElement&&(this.session.audioElement.muted=e),this.muted=e,this.emitSessionState(this.lastState,{isMuted:this.muted})}on(e,t){this.eventEmitter.on(e,t)}off(e,t){this.eventEmitter.off(e,t)}getSessionStatus(){return{state:this.lastState,isActive:this.lastState===`connected`,isMuted:this.muted}}setupDataChannel(e){e.addEventListener(`open`,()=>{this.configureSession(e),this.muted=!1,this.emitSessionState(`connected`)}),e.addEventListener(`message`,t=>{(async()=>{try{await this.messageHandler.handleMessage(t.data,e)}catch(e){console.error(`Error handling message:`,e)}})()}),e.addEventListener(`error`,e=>{console.error(`DataChannel error:`,e),this.eventEmitter.emit(`error`,{type:`datachannel_error`,error:e})}),e.addEventListener(`close`,()=>{this.messageHandler.reset(),this.eventEmitter.emit(`session_closed`,{})})}setupPeerConnectionMonitoring(e){e.addEventListener(`connectionstatechange`,()=>{(e.connectionState===`failed`||e.connectionState===`disconnected`)&&(console.error(`Peer connection failed or disconnected`),this.messageHandler.reset(),this.eventEmitter.emit(`error`,{type:`connection_error`,message:`Connection ${e.connectionState}`}))}),e.addEventListener(`iceconnectionstatechange`,()=>{(e.iceConnectionState===`failed`||e.iceConnectionState===`disconnected`)&&console.error(`ICE connection failed or disconnected`)}),e.addEventListener(`signalingstatechange`,()=>{})}configureSession(e){this.toolManager.resetSession();let t=this.toolManager.formatToolsForOpenAI();this.toolManager.markToolsSent();let n={type:`session.update`,session:{modalities:[`text`,`audio`],instructions:this.getSessionInstructions(),voice:`verse`,tools:t,tool_choice:`auto`,turn_detection:{type:`server_vad`,threshold:.5,prefix_padding_ms:300,silence_duration_ms:500},input_audio_transcription:{model:`whisper-1`}}};e.send(JSON.stringify(n))}updateSessionTools(){if(!this.session){console.warn(`[OpenAIRealtimeService] Cannot update tools: no active session`);return}if(this.session.dataChannel.readyState!==`open`){console.warn(`[OpenAIRealtimeService] Cannot update tools: DataChannel is ${this.session.dataChannel.readyState}`);return}let e=this.toolManager.getChangesSummary();if(!e)return;let t=this.toolManager.formatToolsForOpenAI();console.log(`[OpenAIRealtimeService] Sending tool update to OpenAI:`,`${e.total} total tools,`,e.added.length>0?`+${e.added.length} added (${e.added.slice(0,3).join(`, `)}${e.added.length>3?`...`:``})`:``,e.removed.length>0?`-${e.removed.length} removed`:``),this.toolManager.markToolsSent();let n={type:`session.update`,session:{tools:t,tool_choice:`auto`}};this.session.dataChannel.send(JSON.stringify(n))}getSessionInstructions(){return`You are a helpful assistant with access to tools.
|
|
2
|
+
Use the available tools to help users with their tasks.
|
|
3
|
+
You can use the list_available_tools function to see what tools are currently available.
|
|
4
|
+
Be concise and helpful in your responses.`}handleSessionError(e){console.error(`Session error:`,e),this.emitSessionState(`error`,{type:`session_error`,error:String(e)}),this.stopSession()}async initializeLocalAnalyzer(e){this.localAnalyzer&&this.localAnalyzer.destroy(),this.localAnalyzer=new I;try{let t=new MediaStream(e.getAudioTracks().map(e=>e.clone()));await this.localAnalyzer.initialize(t),this.startAudioVisualization()}catch(e){console.error(`[OpenAIRealtimeService] Failed to initialize local audio analyzer`,e),this.localAnalyzer&&=(this.localAnalyzer.destroy(),null)}}async initializeRemoteAnalyzer(e){this.remoteAnalyzer&&this.remoteAnalyzer.destroy(),this.remoteAnalyzer=new I;try{let t=new MediaStream(e.getAudioTracks().map(e=>e.clone()));await this.remoteAnalyzer.initialize(t),this.startAudioVisualization()}catch(e){console.error(`[OpenAIRealtimeService] Failed to initialize remote audio analyzer`,e),this.remoteAnalyzer&&=(this.remoteAnalyzer.destroy(),null)}}startAudioVisualization(){if(!this.localAnalyzer&&!this.remoteAnalyzer){F(`OpenAIRealtimeService`,`Audio visualization not started: no analyzers ready`);return}this.visualizationInterval&&clearInterval(this.visualizationInterval);let e=0;this.visualizationInterval=setInterval(()=>{let t=this.localAnalyzer?.getAudioLevel()??0,n=this.localAnalyzer?.getFrequencyData(32)??W(),r=this.remoteAnalyzer?.getAudioLevel()??0,i=this.remoteAnalyzer?.getFrequencyData(32)??W();e++,e%60==0&&F(`OpenAIRealtimeService`,`Audio levels`,{mic:t.toFixed(3),speaker:r.toFixed(3)}),this.eventEmitter.emit(`audio_level`,{micLevel:t,micFrequency:n,speakerLevel:r,speakerFrequency:i})},16)}emitSessionState(e,t={}){this.lastState=e;let n={state:e,isActive:e===`connected`,isMuted:this.muted,...t};switch(this.eventEmitter.emit(`session_state`,n),e){case`connecting`:this.eventEmitter.emit(`session_connecting`,n);break;case`connected`:this.eventEmitter.emit(`session_connected`,n);break;case`disconnected`:this.eventEmitter.emit(`session_closed`,n);break;case`error`:this.eventEmitter.emit(`error`,n);break;default:break}}};function te(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.state==`string`&&[`connecting`,`connected`,`disconnected`,`error`].includes(t.state)&&typeof t.isActive==`boolean`&&typeof t.isMuted==`boolean`}function ne(e){return!e||typeof e!=`object`?!1:typeof e.text==`string`}function G(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.delta===void 0||typeof t.delta==`string`}function re(e){return!e||typeof e!=`object`?!1:typeof e.name==`string`}function ie(e){return!e||typeof e!=`object`?!1:typeof e.name==`string`}function K(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.error==`string`||typeof t.message==`string`||typeof t.type==`string`}function q(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.micLevel==`number`&&Array.isArray(t.micFrequency)&&typeof t.speakerLevel==`number`&&Array.isArray(t.speakerFrequency)}function J(e){let n=(0,t.c)(43),{tokenEndpoint:r,tools:i,toolExecutor:a,onConnect:o,onDisconnect:c,onError:l,onUserTranscript:u,onAssistantTranscript:d}=e,[f,p]=(0,s.useState)(!1),[m,h]=(0,s.useState)(!1),[g,_]=(0,s.useState)(!1),[v,y]=(0,s.useState)(!1),[b,x]=(0,s.useState)(`disconnected`),[S,C]=(0,s.useState)(),[w,T]=(0,s.useState)(),[E,D]=(0,s.useState)(),[O,k]=(0,s.useState)(),A=(0,s.useRef)(null),j=(0,s.useRef)(o),M=(0,s.useRef)(c),N=(0,s.useRef)(l),P=(0,s.useRef)(u),F=(0,s.useRef)(d),I,L;n[0]!==d||n[1]!==o||n[2]!==c||n[3]!==l||n[4]!==u?(I=()=>{j.current=o,M.current=c,N.current=l,P.current=u,F.current=d},L=[o,c,l,u,d],n[0]=d,n[1]=o,n[2]=c,n[3]=l,n[4]=u,n[5]=I,n[6]=L):(I=n[5],L=n[6]),(0,s.useEffect)(I,L);let R;n[7]===r?R=n[8]:(R=()=>(A.current||=new ee(r),A.current),n[7]=r,n[8]=R);let z=R,B,V;n[9]!==z||n[10]!==i?(B=()=>{i&&z().setTools(i)},V=[i,z],n[9]=z,n[10]=i,n[11]=B,n[12]=V):(B=n[11],V=n[12]),(0,s.useEffect)(B,V);let H,U;n[13]!==z||n[14]!==a?(H=()=>{a&&z().setToolExecutor(a)},U=[a,z],n[13]=z,n[14]=a,n[15]=H,n[16]=U):(H=n[15],U=n[16]),(0,s.useEffect)(H,U);let W,J;n[17]===z?(W=n[18],J=n[19]):(W=()=>{let e=z(),t=e=>{if(!te(e)){console.warn(`[useVoiceMode] Invalid session state event data:`,e);return}x(e.state),p(e.isActive),_(e.isMuted),h(e.state===`connecting`),y(e.state===`error`),e.state===`connected`?j.current?.():e.state===`disconnected`&&M.current?.(e.durationSeconds??0)},n=e=>{q(e)&&C(e)},r=e=>{if(!ne(e)){console.warn(`[useVoiceMode] Invalid user transcript event data:`,e);return}T({type:`user`,text:e.text,isDone:!0}),P.current?.(e.text)},i=e=>{if(!G(e))return;let t=e.delta||e.transcript||``;T(e=>({type:`assistant`,text:e?.type===`assistant`?e.text+t:t,isDone:!1}))},a=e=>{if(!G(e))return;let t=e.transcript||``;T({type:`assistant`,text:t,isDone:!0}),F.current?.(t)},o=e=>{if(!re(e)){console.warn(`[useVoiceMode] Invalid tool call started event data:`,e);return}D({status:`started`,toolName:e.name})},s=e=>{if(!ie(e)){console.warn(`[useVoiceMode] Invalid tool call completed event data:`,e);return}D({status:`completed`,toolName:e.name,error:e.error}),setTimeout(()=>{D(void 0)},e.error?3e3:1500)},c=e=>{if(!K(e)){k(`Unknown error`),y(!0),N.current?.(`Unknown error`);return}let t=e.error||e.message||`Unknown error`;k(t),y(!0),N.current?.(t)};return e.on(`session_state`,t),e.on(`audio_level`,n),e.on(`user_transcript_done`,r),e.on(`assistant_transcript`,i),e.on(`assistant_transcript_done`,a),e.on(`tool_call_started`,o),e.on(`tool_call_completed`,s),e.on(`error`,c),()=>{e.off(`session_state`,t),e.off(`audio_level`,n),e.off(`user_transcript_done`,r),e.off(`assistant_transcript`,i),e.off(`assistant_transcript_done`,a),e.off(`tool_call_started`,o),e.off(`tool_call_completed`,s),e.off(`error`,c)}},J=[z],n[17]=z,n[18]=W,n[19]=J),(0,s.useEffect)(W,J);let Y;n[20]===z?Y=n[21]:(Y=async e=>{try{h(!0),y(!1),k(void 0),await z().startSession(e)}catch(e){let t=e;h(!1),y(!0);let n=t instanceof Error?t.message:`Failed to start session`;k(n),N.current?.(n)}},n[20]=z,n[21]=Y);let X=Y,Z;n[22]===z?Z=n[23]:(Z=()=>{z().stopSession(),C(void 0),T(void 0),D(void 0)},n[22]=z,n[23]=Z);let ae=Z,oe;n[24]!==z||n[25]!==g?(oe=e=>{let t=z(),n=e===void 0?!g:e;t.toggleMute(n),_(n)},n[24]=z,n[25]=g,n[26]=oe):oe=n[26];let se=oe,ce;n[27]===z?ce=n[28]:(ce=e=>{let t=z();t.isSessionActive()&&t.sendUserMessage(e)},n[27]=z,n[28]=ce);let le=ce,ue;return n[29]!==S||n[30]!==b||n[31]!==O||n[32]!==f||n[33]!==m||n[34]!==v||n[35]!==g||n[36]!==le||n[37]!==X||n[38]!==ae||n[39]!==se||n[40]!==E||n[41]!==w?(ue={isActive:f,isConnecting:m,isMuted:g,isError:v,connectionState:b,audioLevel:S,transcript:w,toolCall:E,error:O,startSession:X,stopSession:ae,toggleMute:se,sendMessage:le},n[29]=S,n[30]=b,n[31]=O,n[32]=f,n[33]=m,n[34]=v,n[35]=g,n[36]=le,n[37]=X,n[38]=ae,n[39]=se,n[40]=E,n[41]=w,n[42]=ue):ue=n[42],ue}let Y=(0,s.createContext)(null);function X(){return!!(typeof window<`u`&&window.RTCPeerConnection&&navigator.mediaDevices?.getUserMedia)}function Z(e){let n=(0,t.c)(15),{children:r,tokenEndpoint:i,tools:a,toolExecutor:o,onConnect:s,onDisconnect:c,onError:l,onUserTranscript:u,onAssistantTranscript:d}=e,p;n[0]!==d||n[1]!==s||n[2]!==c||n[3]!==l||n[4]!==u||n[5]!==i||n[6]!==o||n[7]!==a?(p={tokenEndpoint:i,tools:a,toolExecutor:o,onConnect:s,onDisconnect:c,onError:l,onUserTranscript:u,onAssistantTranscript:d},n[0]=d,n[1]=s,n[2]=c,n[3]=l,n[4]=u,n[5]=i,n[6]=o,n[7]=a,n[8]=p):p=n[8];let m=J(p),h;n[9]===Symbol.for(`react.memo_cache_sentinel`)?(h=X(),n[9]=h):h=n[9];let g=h,_;n[10]===m?_=n[11]:(_={...m,isSupported:g},n[10]=m,n[11]=_);let v=_,y;return n[12]!==r||n[13]!==v?(y=(0,f.jsx)(Y.Provider,{value:v,children:r}),n[12]=r,n[13]=v,n[14]=y):y=n[14],y}function ae(){return(0,s.useContext)(Y)}function oe(e){let n=(0,t.c)(8),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let a;n[3]===r?a=n[4]:(a=P(`relative flex size-8 shrink-0 overflow-hidden rounded-full`,r),n[3]=r,n[4]=a);let o;return n[5]!==i||n[6]!==a?(o=(0,f.jsx)(m.Root,{"data-slot":`avatar`,className:a,...i}),n[5]=i,n[6]=a,n[7]=o):o=n[7],o}function se(e){let n=(0,t.c)(8),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let a;n[3]===r?a=n[4]:(a=P(`aspect-square size-full`,r),n[3]=r,n[4]=a);let o;return n[5]!==i||n[6]!==a?(o=(0,f.jsx)(m.Image,{"data-slot":`avatar-image`,className:a,...i}),n[5]=i,n[6]=a,n[7]=o):o=n[7],o}function ce(e){let n=(0,t.c)(8),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let a;n[3]===r?a=n[4]:(a=P(`bg-muted flex size-full items-center justify-center rounded-full`,r),n[3]=r,n[4]=a);let o;return n[5]!==i||n[6]!==a?(o=(0,f.jsx)(m.Fallback,{"data-slot":`avatar-fallback`,className:a,...i}),n[5]=i,n[6]=a,n[7]=o):o=n[7],o}function le(e){let n=(0,t.c)(4),r;n[0]===e?r=n[1]:({...r}=e,n[0]=e,n[1]=r);let i;return n[2]===r?i=n[3]:(i=(0,f.jsx)(h.Root,{"data-slot":`dialog`,...r}),n[2]=r,n[3]=i),i}function ue(e){let n=(0,t.c)(4),r;n[0]===e?r=n[1]:({...r}=e,n[0]=e,n[1]=r);let i;return n[2]===r?i=n[3]:(i=(0,f.jsx)(h.Trigger,{"data-slot":`dialog-trigger`,...r}),n[2]=r,n[3]=i),i}function de(e){let n=(0,t.c)(4),r;n[0]===e?r=n[1]:({...r}=e,n[0]=e,n[1]=r);let i;return n[2]===r?i=n[3]:(i=(0,f.jsx)(h.Portal,{"data-slot":`dialog-portal`,...r}),n[2]=r,n[3]=i),i}function fe(e){let n=(0,t.c)(8),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let a;n[3]===r?a=n[4]:(a=P(`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50`,r),n[3]=r,n[4]=a);let o;return n[5]!==i||n[6]!==a?(o=(0,f.jsx)(h.Overlay,{"data-slot":`dialog-overlay`,className:a,...i}),n[5]=i,n[6]=a,n[7]=o):o=n[7],o}function pe(e){let n=(0,t.c)(15),r,i,a,s;n[0]===e?(r=n[1],i=n[2],a=n[3],s=n[4]):({className:i,children:r,showCloseButton:s,...a}=e,n[0]=e,n[1]=r,n[2]=i,n[3]=a,n[4]=s);let c=s===void 0?!0:s,l;n[5]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,f.jsx)(fe,{}),n[5]=l):l=n[5];let u;n[6]===i?u=n[7]:(u=P(`bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg`,i),n[6]=i,n[7]=u);let d;n[8]===c?d=n[9]:(d=c&&(0,f.jsxs)(h.Close,{"data-slot":`dialog-close`,className:`ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,children:[(0,f.jsx)(o.XIcon,{}),(0,f.jsx)(`span`,{className:`sr-only`,children:`Close`})]}),n[8]=c,n[9]=d);let p;return n[10]!==r||n[11]!==a||n[12]!==u||n[13]!==d?(p=(0,f.jsxs)(de,{"data-slot":`dialog-portal`,children:[l,(0,f.jsxs)(h.Content,{"data-slot":`dialog-content`,className:u,...a,children:[r,d]})]}),n[10]=r,n[11]=a,n[12]=u,n[13]=d,n[14]=p):p=n[14],p}function me(e){let n=(0,t.c)(8),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let a;n[3]===r?a=n[4]:(a=P(`flex flex-col gap-2 text-center sm:text-left`,r),n[3]=r,n[4]=a);let o;return n[5]!==i||n[6]!==a?(o=(0,f.jsx)(`div`,{"data-slot":`dialog-header`,className:a,...i}),n[5]=i,n[6]=a,n[7]=o):o=n[7],o}function he(e){let n=(0,t.c)(8),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let a;n[3]===r?a=n[4]:(a=P(`text-lg leading-none font-semibold`,r),n[3]=r,n[4]=a);let o;return n[5]!==i||n[6]!==a?(o=(0,f.jsx)(h.Title,{"data-slot":`dialog-title`,className:a,...i}),n[5]=i,n[6]=a,n[7]=o):o=n[7],o}function ge(e){let n=(0,t.c)(8),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let a;n[3]===r?a=n[4]:(a=P(`text-muted-foreground text-sm`,r),n[3]=r,n[4]=a);let o;return n[5]!==i||n[6]!==a?(o=(0,f.jsx)(h.Description,{"data-slot":`dialog-description`,className:a,...i}),n[5]=i,n[6]=a,n[7]=o):o=n[7],o}function _e(e){let n=(0,t.c)(6),r,i;n[0]===e?(r=n[1],i=n[2]):({delayDuration:i,...r}=e,n[0]=e,n[1]=r,n[2]=i);let a=i===void 0?0:i,o;return n[3]!==a||n[4]!==r?(o=(0,f.jsx)(g.Provider,{"data-slot":`tooltip-provider`,delayDuration:a,...r}),n[3]=a,n[4]=r,n[5]=o):o=n[5],o}function ve(e){let n=(0,t.c)(4),r;n[0]===e?r=n[1]:({...r}=e,n[0]=e,n[1]=r);let i;return n[2]===r?i=n[3]:(i=(0,f.jsx)(_e,{children:(0,f.jsx)(g.Root,{"data-slot":`tooltip`,...r})}),n[2]=r,n[3]=i),i}function ye(e){let n=(0,t.c)(4),r;n[0]===e?r=n[1]:({...r}=e,n[0]=e,n[1]=r);let i;return n[2]===r?i=n[3]:(i=(0,f.jsx)(g.Trigger,{"data-slot":`tooltip-trigger`,...r}),n[2]=r,n[3]=i),i}function be(e){let n=(0,t.c)(13),r,i,a,o;n[0]===e?(r=n[1],i=n[2],a=n[3],o=n[4]):({className:i,sideOffset:o,children:r,...a}=e,n[0]=e,n[1]=r,n[2]=i,n[3]=a,n[4]=o);let s=o===void 0?0:o,c;n[5]===i?c=n[6]:(c=P(`bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance`,i),n[5]=i,n[6]=c);let l;n[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,f.jsx)(g.Arrow,{className:`bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]`}),n[7]=l):l=n[7];let u;return n[8]!==r||n[9]!==a||n[10]!==s||n[11]!==c?(u=(0,f.jsx)(g.Portal,{children:(0,f.jsxs)(g.Content,{"data-slot":`tooltip-content`,sideOffset:s,className:c,...a,children:[r,l]})}),n[8]=r,n[9]=a,n[10]=s,n[11]=c,n[12]=u):u=n[12],u}let xe=(0,v.cva)(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,sm:`h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}});function Q(e){let n=(0,t.c)(14),r,i,a,o,s;n[0]===e?(r=n[1],i=n[2],a=n[3],o=n[4],s=n[5]):({className:r,variant:s,size:a,asChild:o,...i}=e,n[0]=e,n[1]=r,n[2]=i,n[3]=a,n[4]=o,n[5]=s);let c=o!==void 0&&o?_.Slot:`button`,l;n[6]!==r||n[7]!==a||n[8]!==s?(l=P(xe({variant:s,size:a,className:r})),n[6]=r,n[7]=a,n[8]=s,n[9]=l):l=n[9];let u;return n[10]!==c||n[11]!==i||n[12]!==l?(u=(0,f.jsx)(c,{"data-slot":`button`,className:l,...i}),n[10]=c,n[11]=i,n[12]=l,n[13]=u):u=n[13],u}let $=(0,s.forwardRef)((e,n)=>{let r=(0,t.c)(24),i,a,o,s,c;r[0]===e?(i=r[1],a=r[2],o=r[3],s=r[4],c=r[5]):({children:i,tooltip:c,side:s,className:a,...o}=e,r[0]=e,r[1]=i,r[2]=a,r[3]=o,r[4]=s,r[5]=c);let l=s===void 0?`bottom`:s,u;r[6]===a?u=r[7]:(u=P(`aui-button-icon size-6 p-1`,a),r[6]=a,r[7]=u);let d;r[8]===i?d=r[9]:(d=(0,f.jsx)(_.Slottable,{children:i}),r[8]=i,r[9]=d);let p;r[10]===c?p=r[11]:(p=(0,f.jsx)(`span`,{className:`aui-sr-only sr-only`,children:c}),r[10]=c,r[11]=p);let m;r[12]!==n||r[13]!==o||r[14]!==u||r[15]!==d||r[16]!==p?(m=(0,f.jsx)(ye,{asChild:!0,children:(0,f.jsxs)(Q,{variant:`ghost`,size:`icon`,...o,className:u,ref:n,children:[d,p]})}),r[12]=n,r[13]=o,r[14]=u,r[15]=d,r[16]=p,r[17]=m):m=r[17];let h;r[18]!==l||r[19]!==c?(h=(0,f.jsx)(be,{side:l,children:c}),r[18]=l,r[19]=c,r[20]=h):h=r[20];let g;return r[21]!==m||r[22]!==h?(g=(0,f.jsxs)(ve,{children:[m,h]}),r[21]=m,r[22]=h,r[23]=g):g=r[23],g});$.displayName=`TooltipIconButton`;let Se=e=>{let n=(0,t.c)(3),[r,i]=(0,s.useState)(void 0),a,o;return n[0]===e?(a=n[1],o=n[2]):(a=()=>{if(!e){i(void 0);return}let t=URL.createObjectURL(e);return i(t),()=>{URL.revokeObjectURL(t)}},o=[e],n[0]=e,n[1]=a,n[2]=o),(0,s.useEffect)(a,o),r},Ce=()=>{let{file:e,src:t}=(0,n.useAssistantState)((0,p.useShallow)(Ne));return Se(e)??t},we=e=>{let n=(0,t.c)(2),{src:r}=e,i;return n[0]===r?i=n[1]:(i=(0,f.jsx)(`img`,{src:r,alt:`Image Preview`,width:1,height:1,className:`aui-attachment-preview-image-loaded block h-auto max-h-[80vh] w-auto max-w-full object-contain`}),n[0]=r,n[1]=i),i},Te=e=>{let n=(0,t.c)(8),{children:r}=e,i=Ce();if(!i)return r;let a;n[0]===r?a=n[1]:(a=(0,f.jsx)(ue,{className:`aui-attachment-preview-trigger cursor-pointer transition-colors hover:bg-accent/50`,asChild:!0,children:r}),n[0]=r,n[1]=a);let o;n[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,f.jsx)(he,{className:`aui-sr-only sr-only`,children:`Image Attachment Preview`}),n[2]=o):o=n[2];let s;n[3]===i?s=n[4]:(s=(0,f.jsxs)(pe,{className:`aui-attachment-preview-dialog-content p-2 sm:max-w-3xl [&_svg]:text-background [&>button]:rounded-full [&>button]:bg-foreground/60 [&>button]:p-1 [&>button]:opacity-100 [&>button]:!ring-0 [&>button]:hover:[&_svg]:text-destructive`,children:[o,(0,f.jsx)(`div`,{className:`aui-attachment-preview relative mx-auto flex max-h-[80dvh] w-full items-center justify-center overflow-hidden bg-background`,children:(0,f.jsx)(we,{src:i})})]}),n[3]=i,n[4]=s);let c;return n[5]!==a||n[6]!==s?(c=(0,f.jsxs)(le,{children:[a,s]}),n[5]=a,n[6]=s,n[7]=c):c=n[7],c},Ee=()=>{let e=(0,t.c)(8),r=(0,n.useAssistantState)(Pe),i=Ce(),a;e[0]===i?a=e[1]:(a=(0,f.jsx)(se,{src:i,alt:`Attachment preview`,className:`aui-attachment-tile-image object-cover`}),e[0]=i,e[1]=a);let s=r?200:0,c;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,f.jsx)(o.FileText,{className:`aui-attachment-tile-fallback-icon size-8 text-muted-foreground`}),e[2]=c):c=e[2];let l;e[3]===s?l=e[4]:(l=(0,f.jsx)(ce,{delayMs:s,children:c}),e[3]=s,e[4]=l);let u;return e[5]!==a||e[6]!==l?(u=(0,f.jsxs)(oe,{className:`aui-attachment-tile-avatar h-full w-full rounded-none`,children:[a,l]}),e[5]=a,e[6]=l,e[7]=u):u=e[7],u},De=()=>{let e=(0,t.c)(17),r=(0,n.useAssistantApi)().attachment.source===`composer`,i=(0,n.useAssistantState)(Fe),a=(0,n.useAssistantState)(Ie),o=i&&`aui-attachment-root-composer only:[&>#attachment-tile]:size-24`,s;e[0]===o?s=e[1]:(s=P(`aui-attachment-root relative`,o),e[0]=o,e[1]=s);let c=r&&`aui-attachment-tile-composer border-foreground/20`,l;e[2]===c?l=e[3]:(l=P(`aui-attachment-tile size-14 cursor-pointer overflow-hidden rounded-[14px] border bg-muted transition-opacity hover:opacity-75`,c),e[2]=c,e[3]=l);let u=`${a} attachment`,d;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,f.jsx)(Ee,{}),e[4]=d):d=e[4];let p;e[5]!==l||e[6]!==u?(p=(0,f.jsx)(Te,{children:(0,f.jsx)(ye,{asChild:!0,children:(0,f.jsx)(`div`,{className:l,role:`button`,id:`attachment-tile`,"aria-label":u,children:d})})}),e[5]=l,e[6]=u,e[7]=p):p=e[7];let m;e[8]===r?m=e[9]:(m=r&&(0,f.jsx)(Oe,{}),e[8]=r,e[9]=m);let h;e[10]!==s||e[11]!==p||e[12]!==m?(h=(0,f.jsxs)(n.AttachmentPrimitive.Root,{className:s,children:[p,m]}),e[10]=s,e[11]=p,e[12]=m,e[13]=h):h=e[13];let g;e[14]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,f.jsx)(be,{side:`top`,children:(0,f.jsx)(n.AttachmentPrimitive.Name,{})}),e[14]=g):g=e[14];let _;return e[15]===h?_=e[16]:(_=(0,f.jsxs)(ve,{children:[h,g]}),e[15]=h,e[16]=_),_},Oe=()=>{let e=(0,t.c)(1),r;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,f.jsx)(n.AttachmentPrimitive.Remove,{asChild:!0,children:(0,f.jsx)($,{tooltip:`Remove file`,className:`aui-attachment-tile-remove absolute top-1.5 right-1.5 size-3.5 rounded-full bg-white text-muted-foreground opacity-100 shadow-sm hover:!bg-white [&_svg]:text-black hover:[&_svg]:text-destructive`,side:`top`,children:(0,f.jsx)(o.XIcon,{className:`aui-attachment-remove-icon size-3 dark:stroke-[2.5px]`})})}),e[0]=r):r=e[0],r},ke=()=>{let e=(0,t.c)(1),r;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,f.jsx)(`div`,{className:`aui-user-message-attachments-end col-span-full col-start-1 row-start-1 flex w-full flex-row justify-end gap-2`,children:(0,f.jsx)(n.MessagePrimitive.Attachments,{components:{Attachment:De}})}),e[0]=r):r=e[0],r},Ae=()=>{let e=(0,t.c)(1),r;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,f.jsx)(`div`,{className:`aui-composer-attachments mb-2 flex w-full flex-row items-center gap-2 overflow-x-auto px-1.5 pt-0.5 pb-1 empty:hidden`,children:(0,f.jsx)(n.ComposerPrimitive.Attachments,{components:{Attachment:De}})}),e[0]=r):r=e[0],r},je=()=>{let e=(0,t.c)(1),r;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,f.jsx)(n.ComposerPrimitive.AddAttachment,{asChild:!0,children:(0,f.jsx)($,{tooltip:`Add Attachment`,side:`bottom`,variant:`ghost`,size:`icon`,className:`aui-composer-add-attachment size-[34px] rounded-full p-1 text-xs font-semibold hover:bg-muted-foreground/15 dark:border-muted-foreground/15 dark:hover:bg-muted-foreground/30`,"aria-label":`Add Attachment`,children:(0,f.jsx)(o.PlusIcon,{className:`aui-attachment-add-icon size-5 stroke-[1.5px]`})})}),e[0]=r):r=e[0],r};function Me(e){return e.type===`image`}function Ne(e){let{attachment:t}=e;if(t.type!==`image`)return{};if(t.file)return{file:t.file};let n=t.content?.filter(Me)[0]?.image;return n?{src:n}:{}}function Pe(e){let{attachment:t}=e;return t.type===`image`}function Fe(e){let{attachment:t}=e;return t.type===`image`}function Ie(e){let{attachment:t}=e,n=t.type;switch(n){case`image`:return`Image`;case`document`:return`Document`;case`file`:return`File`;default:{let e=n;throw Error(`Unknown attachment type: ${e}`)}}}let Le=(0,s.memo)(()=>{let e=(0,t.c)(1),n;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,f.jsx)(y.MarkdownTextPrimitive,{remarkPlugins:[b.default],className:`aui-md`,components:Be}),e[0]=n):n=e[0],n}),Re=e=>{let n=(0,t.c)(17),{language:r,code:i}=e,{isCopied:a,copyToClipboard:s}=ze(),c;n[0]!==i||n[1]!==s||n[2]!==a?(c=()=>{!i||a||s(i)},n[0]=i,n[1]=s,n[2]=a,n[3]=c):c=n[3];let l=c,u;n[4]===r?u=n[5]:(u=(0,f.jsx)(`span`,{className:`aui-code-header-language lowercase [&>span]:text-xs`,children:r}),n[4]=r,n[5]=u);let d;n[6]===a?d=n[7]:(d=!a&&(0,f.jsx)(o.CopyIcon,{}),n[6]=a,n[7]=d);let p;n[8]===a?p=n[9]:(p=a&&(0,f.jsx)(o.CheckIcon,{}),n[8]=a,n[9]=p);let m;n[10]!==l||n[11]!==d||n[12]!==p?(m=(0,f.jsxs)($,{tooltip:`Copy`,onClick:l,children:[d,p]}),n[10]=l,n[11]=d,n[12]=p,n[13]=m):m=n[13];let h;return n[14]!==u||n[15]!==m?(h=(0,f.jsxs)(`div`,{className:`aui-code-header-root mt-2 flex items-center justify-between gap-2 rounded-t-lg bg-muted-foreground/15 px-2 py-1 text-sm font-semibold text-foreground dark:bg-muted-foreground/20`,children:[u,m]}),n[14]=u,n[15]=m,n[16]=h):h=n[16],h},ze=e=>{let n=(0,t.c)(7),r;n[0]===e?r=n[1]:(r=e===void 0?{}:e,n[0]=e,n[1]=r);let{copiedDuration:i}=r,a=i===void 0?3e3:i,[o,c]=(0,s.useState)(!1),l;n[2]===a?l=n[3]:(l=e=>{e&&navigator.clipboard.writeText(e).then(()=>{c(!0),setTimeout(()=>c(!1),a)})},n[2]=a,n[3]=l);let u=l,d;return n[4]!==u||n[5]!==o?(d={isCopied:o,copyToClipboard:u},n[4]=u,n[5]=o,n[6]=d):d=n[6],d},Be=(0,y.unstable_memoizeMarkdownComponents)({h1:({className:e,...t})=>(0,f.jsx)(`h1`,{className:P(`aui-md-h1 mb-4 scroll-m-20 text-[25px] font-extrabold tracking-tight last:mb-0`,e),...t}),h2:({className:e,...t})=>(0,f.jsx)(`h2`,{className:P(`aui-md-h2 mt-4 mb-2 scroll-m-20 text-[21px] font-semibold tracking-tight first:mt-0 last:mb-0`,e),...t}),h3:({className:e,...t})=>(0,f.jsx)(`h3`,{className:P(`aui-md-h3 mt-3 mb-2 scroll-m-20 text-[19px] font-semibold tracking-tight first:mt-0 last:mb-0`,e),...t}),h4:({className:e,...t})=>(0,f.jsx)(`h4`,{className:P(`aui-md-h4 mt-3 mb-2 scroll-m-20 text-[17px] font-semibold tracking-tight first:mt-0 last:mb-0`,e),...t}),h5:({className:e,...t})=>(0,f.jsx)(`h5`,{className:P(`aui-md-h5 my-2 text-[15px] font-semibold first:mt-0 last:mb-0`,e),...t}),h6:({className:e,...t})=>(0,f.jsx)(`h6`,{className:P(`aui-md-h6 my-2 text-[15px] font-semibold first:mt-0 last:mb-0`,e),...t}),p:({className:e,...t})=>(0,f.jsx)(`p`,{className:P(`aui-md-p mt-2 mb-2 text-[13px] leading-relaxed first:mt-0 last:mb-0`,e),...t}),a:({className:e,...t})=>(0,f.jsx)(`a`,{className:P(`aui-md-a text-[13px] font-medium text-primary underline underline-offset-4`,e),...t}),blockquote:({className:e,...t})=>(0,f.jsx)(`blockquote`,{className:P(`aui-md-blockquote text-[13px] border-l-2 pl-3 italic`,e),...t}),ul:({className:e,...t})=>(0,f.jsx)(`ul`,{className:P(`aui-md-ul text-[13px] my-2 ml-4 list-disc [&>li]:mt-1`,e),...t}),ol:({className:e,...t})=>(0,f.jsx)(`ol`,{className:P(`aui-md-ol text-[13px] my-2 ml-4 list-decimal [&>li]:mt-1`,e),...t}),hr:({className:e,...t})=>(0,f.jsx)(`hr`,{className:P(`aui-md-hr my-2 border-b`,e),...t}),table:({className:e,...t})=>(0,f.jsx)(`table`,{className:P(`aui-md-table text-[13px] my-2 w-full border-separate border-spacing-0 overflow-y-auto`,e),...t}),th:({className:e,...t})=>(0,f.jsx)(`th`,{className:P(`aui-md-th bg-muted px-2 py-1 text-left font-bold first:rounded-tl-lg last:rounded-tr-lg [&[align=center]]:text-center [&[align=right]]:text-right`,e),...t}),td:({className:e,...t})=>(0,f.jsx)(`td`,{className:P(`aui-md-td border-b border-l px-2 py-1 text-left last:border-r [&[align=center]]:text-center [&[align=right]]:text-right`,e),...t}),tr:({className:e,...t})=>(0,f.jsx)(`tr`,{className:P(`aui-md-tr m-0 border-b p-0 first:border-t [&:last-child>td:first-child]:rounded-bl-lg [&:last-child>td:last-child]:rounded-br-lg`,e),...t}),sup:({className:e,...t})=>(0,f.jsx)(`sup`,{className:P(`aui-md-sup [&>a]:text-xs [&>a]:no-underline`,e),...t}),pre:({className:e,...t})=>(0,f.jsx)(`pre`,{className:P(`aui-md-pre text-[13px] overflow-x-auto !rounded-t-none rounded-b-lg bg-black p-2 text-white`,e),...t}),code:function({className:e,...t}){return(0,f.jsx)(`code`,{className:P(!(0,y.useIsMarkdownCodeBlock)()&&`aui-md-inline-code text-[13px] rounded border bg-muted font-semibold`,e),...t})},CodeHeader:Re});function Ve(e,t=`http`){if(e.type===`tab`)return new C.TabClientTransport({targetOrigin:e.targetOrigin??window.location.origin,channelId:e.channelId??`mcp-default`});let n=new URL(e.url),r={Accept:`application/json, text/event-stream`,...e.customHeaders??{}};e.authToken&&(r.Authorization=`Bearer ${e.authToken}`);let i={requestInit:{headers:r}};return t===`sse`?new w.SSEClientTransport(n,i):new T.StreamableHTTPClientTransport(n,i)}let He=(0,s.createContext)(null);function Ue({children:e,autoConnectLocal:t=!0,onToolsChange:n}){let r=(0,s.useRef)(new Map),[,i]=(0,s.useState)({}),[a,o]=(0,s.useState)([]),c=(0,s.useCallback)(()=>{let e=[];r.current.forEach(t=>{t.tools.forEach(n=>{e.push({...n,_sourceId:t.id})})}),o(e)},[]),l=(0,s.useCallback)(e=>({id:e.id,config:e.config,state:e.state,error:e.error,tools:e.tools,resources:e.resources,resourceTemplates:e.resourceTemplates,prompts:e.prompts}),[]),u=(0,s.useCallback)(async(e,t)=>{r.current.has(e)&&await d(e);let n={id:e,config:t,state:`connecting`,error:null,tools:[],resources:[],resourceTemplates:[],prompts:[],client:null,transport:null};r.current.set(e,n),i({});try{let r=new x.Client({name:`MCP-Source-${e}`,version:`1.0.0`}),a=Ve(t);await r.connect(a),n.client=r,n.transport=a;let{tools:o}=await r.listTools();n.tools=o,n.state=`connected`,r.setNotificationHandler(S.ToolListChangedNotificationSchema,async()=>{try{n.tools=(await r.listTools()).tools,c(),i({})}catch(t){console.error(`[MCPToolsProvider:${e}] Failed to update tools:`,t)}}),c(),i({})}catch(t){let r=t instanceof Error?t:Error(String(t));console.error(`[MCPToolsProvider:${e}] Connection failed:`,r),n.state=`error`,n.error=r,i({})}},[c]),d=(0,s.useCallback)(async e=>{let t=r.current.get(e);if(t){if(t.client)try{await t.client.close()}catch(t){console.error(`[MCPToolsProvider:${e}] Error closing client:`,t)}if(t.transport)try{await t.transport.close()}catch(t){console.error(`[MCPToolsProvider:${e}] Error closing transport:`,t)}r.current.delete(e),c(),i({})}},[c]),p=(0,s.useCallback)(e=>{let t=r.current.get(e);return t?l(t):void 0},[l]),m=(0,s.useCallback)(e=>r.current.get(e)?.state===`connected`,[]),h=(0,s.useCallback)(async(e,t,n)=>{let i=r.current.get(e);if(!i?.client)throw Error(`Source '${e}' not connected`);return await i.client.callTool({name:t,arguments:n})},[]),g=(0,s.useCallback)(async(e,t)=>{let n=a.find(t=>t.name===e);if(!n)throw Error(`Tool '${e}' not found`);return h(n._sourceId,e,t)},[a,h]),_=(0,s.useMemo)(()=>{let e=new Map;return r.current.forEach(t=>{e.set(t.id,l(t))}),e},[a,l]);(0,s.useEffect)(()=>{if(t){let e=setTimeout(()=>{u(`local`,{type:`tab`})},100);return()=>clearTimeout(e)}},[t,u]),(0,s.useEffect)(()=>{n?.(a)},[a,n]),(0,s.useEffect)(()=>{let e=r;return()=>{e.current.forEach(e=>{e.client&&e.client.close().catch(console.error),e.transport&&e.transport.close().catch(console.error)}),e.current.clear()}},[]);let v=(0,s.useMemo)(()=>({tools:a,sources:_,addSource:u,removeSource:d,getSource:p,isConnected:m,callTool:g,callToolOnSource:h}),[a,_,u,d,p,m,g,h]);return(0,f.jsx)(He.Provider,{value:v,children:e})}function We(){let e=(0,s.useContext)(He);if(!e)throw Error(`useMCPTools must be used within an MCPToolsProvider`);return e}let Ge=()=>{let{sources:e,addSource:t,removeSource:n}=We(),[r,i]=(0,s.useState)(!1),[a,c]=(0,s.useState)(``),[l,u]=(0,s.useState)(!1),[d,p]=(0,s.useState)(null),m=[];e.forEach((e,t)=>{e.config.type===`http`&&t!==`local`&&m.push({id:t,url:e.config.url})});let h=(0,s.useCallback)(async()=>{if(!a.trim()){p(`Please enter a URL`);return}try{new URL(a)}catch{p(`Please enter a valid URL`);return}u(!0),p(null);try{await t(m.length===0?`remote`:`remote-${Date.now()}`,{type:`http`,url:a}),c(``)}catch(e){p(e instanceof Error?e.message:`Failed to connect`)}finally{u(!1)}},[a,t,m.length]),g=(0,s.useCallback)(async e=>{await n(e)},[n]),_=(0,s.useCallback)(e=>{e.key===`Enter`&&!l&&h()},[h,l]),v=m.filter(t=>e.get(t.id)?.state===`connected`).length;return(0,f.jsxs)(le,{open:r,onOpenChange:i,children:[(0,f.jsx)(ue,{asChild:!0,children:(0,f.jsxs)($,{tooltip:`Connect MCP Server`,variant:`ghost`,size:`sm`,className:P(`gap-2 rounded-full text-muted-foreground hover:text-foreground`,v>0&&`text-green-600 dark:text-green-400`),children:[(0,f.jsx)(o.Plug,{className:`h-4 w-4`}),v>0&&(0,f.jsx)(`span`,{className:`text-xs`,children:v})]})}),(0,f.jsxs)(pe,{className:`sm:max-w-md`,children:[(0,f.jsxs)(me,{children:[(0,f.jsx)(he,{children:`Remote MCP Servers`}),(0,f.jsx)(ge,{children:`Connect to remote MCP servers to access their tools, resources, and prompts.`})]}),(0,f.jsxs)(`div`,{className:`space-y-4`,children:[(0,f.jsxs)(`div`,{className:`space-y-2`,children:[(0,f.jsx)(`label`,{htmlFor:`mcp-url`,className:`text-sm font-medium`,children:`Server URL`}),(0,f.jsxs)(`div`,{className:`flex gap-2`,children:[(0,f.jsx)(`input`,{id:`mcp-url`,type:`url`,value:a,onChange:e=>c(e.target.value),onKeyDown:_,placeholder:`https://mcp.example.com/sse`,disabled:l,className:P(`flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors`,`placeholder:text-muted-foreground`,`focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,`disabled:cursor-not-allowed disabled:opacity-50`)}),(0,f.jsx)(Q,{onClick:()=>void h(),disabled:l||!a.trim(),size:`sm`,className:`shrink-0`,children:l?(0,f.jsx)(o.Loader2,{className:`h-4 w-4 animate-spin`}):(0,f.jsx)(o.Plus,{className:`h-4 w-4`})})]}),d&&(0,f.jsx)(`p`,{className:`text-xs text-destructive`,children:d})]}),m.length>0&&(0,f.jsxs)(`div`,{className:`space-y-2`,children:[(0,f.jsx)(`label`,{className:`text-sm font-medium`,children:`Connected Servers`}),(0,f.jsx)(`div`,{className:`space-y-2`,children:m.map(t=>{let n=e.get(t.id),r=n?.state===`connected`,i=n?.state===`connecting`;return(0,f.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border border-border bg-muted/50 px-3 py-2`,children:[(0,f.jsx)(`div`,{className:P(`h-2 w-2 shrink-0 rounded-full`,r&&`bg-green-500`,i&&`bg-yellow-500 animate-pulse`,n?.state===`error`&&`bg-red-500`)}),(0,f.jsx)(`span`,{className:`flex-1 truncate text-xs text-muted-foreground`,children:t.url}),r&&n&&(0,f.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[n.tools.length,` tools`]}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>void g(t.id),className:`shrink-0 rounded p-1 text-muted-foreground hover:bg-destructive/10 hover:text-destructive`,"aria-label":`Disconnect server`,children:i?(0,f.jsx)(o.Loader2,{className:`h-3 w-3 animate-spin`}):(0,f.jsx)(o.X,{className:`h-3 w-3`})})]},t.id)})})]}),(0,f.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Enter the URL of an MCP server that supports the Streamable HTTP transport (SSE).`})]})]})]})},Ke=e=>{let n=(0,t.c)(15),{toolName:r,argsText:i,result:a}=e,[c,l]=(0,s.useState)(!0),u;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,f.jsx)(o.CheckIcon,{className:`aui-tool-fallback-icon size-3.5 text-emerald-500`}),n[0]=u):u=n[0];let d;n[1]===r?d=n[2]:(d=(0,f.jsx)(`p`,{className:`aui-tool-fallback-title flex-grow text-sm font-medium`,children:r}),n[1]=r,n[2]=d);let p;n[3]===c?p=n[4]:(p=(0,f.jsx)(Q,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0`,onClick:()=>l(!c),children:c?(0,f.jsx)(o.ChevronUpIcon,{className:`size-3.5`}):(0,f.jsx)(o.ChevronDownIcon,{className:`size-3.5`})}),n[3]=c,n[4]=p);let m;n[5]!==d||n[6]!==p?(m=(0,f.jsxs)(`div`,{className:`aui-tool-fallback-header flex items-center gap-2 px-3`,children:[u,d,p]}),n[5]=d,n[6]=p,n[7]=m):m=n[7];let h;n[8]!==i||n[9]!==c||n[10]!==a?(h=!c&&(0,f.jsxs)(`div`,{className:`aui-tool-fallback-content flex flex-col gap-2 border-t border-border/20 pt-2`,children:[(0,f.jsxs)(`div`,{className:`aui-tool-fallback-args-root px-3`,children:[(0,f.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-muted-foreground/70`,children:`Input`}),(0,f.jsx)(`pre`,{className:`aui-tool-fallback-args-value mt-1 max-h-40 overflow-auto rounded-lg bg-muted/30 px-2 py-1.5 font-mono text-[11px] leading-relaxed text-foreground/80 whitespace-pre-wrap`,children:i})]}),a!==void 0&&(0,f.jsxs)(`div`,{className:`aui-tool-fallback-result-root border-t border-dashed border-border/20 px-3 pt-2`,children:[(0,f.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-muted-foreground/70`,children:`Output`}),(0,f.jsx)(`pre`,{className:`aui-tool-fallback-result-content mt-1 max-h-60 overflow-auto rounded-lg bg-muted/30 px-2 py-1.5 font-mono text-[11px] leading-relaxed text-foreground/80 whitespace-pre-wrap`,children:typeof a==`string`?a:JSON.stringify(a,null,2)})]})]}),n[8]=i,n[9]=c,n[10]=a,n[11]=h):h=n[11];let g;return n[12]!==m||n[13]!==h?(g=(0,f.jsxs)(`div`,{className:`aui-tool-fallback-root mb-3 flex w-full flex-col gap-2 rounded-xl border border-border/20 bg-muted/5 py-2`,children:[m,h]}),n[12]=m,n[13]=h,n[14]=g):g=n[14],g},qe=e=>{let n=(0,t.c)(54),r,i,a,o,c,l,u,d,p,m,h,g,_,v;n[0]===e?(r=n[1],i=n[2],a=n[3],o=n[4],c=n[5],l=n[6],u=n[7],d=n[8],p=n[9],m=n[10],h=n[11],g=n[12],_=n[13],v=n[14]):({active:c,processing:u,barWidth:d,barGap:p,barRadius:m,barColor:r,fadeEdges:h,fadeWidth:g,height:_,sensitivity:v,mode:l,manualAudioLevel:a,className:i,...o}=e,n[0]=e,n[1]=r,n[2]=i,n[3]=a,n[4]=o,n[5]=c,n[6]=l,n[7]=u,n[8]=d,n[9]=p,n[10]=m,n[11]=h,n[12]=g,n[13]=_,n[14]=v);let y=c===void 0?!1:c,b=u===void 0?!1:u,x=d===void 0?3:d,S=p===void 0?1:p,C=m===void 0?1.5:m,w=h===void 0?!0:h,T=g===void 0?24:g,E=_===void 0?64:_,D=v===void 0?1:v,O=l===void 0?`static`:l,k=(0,s.useRef)(null),A=(0,s.useRef)(null),j;n[15]===Symbol.for(`react.memo_cache_sentinel`)?(j=[],n[15]=j):j=n[15];let M=(0,s.useRef)(j);(0,s.useRef)(0);let N=(0,s.useRef)(0),F=(0,s.useRef)(null),I;n[16]===Symbol.for(`react.memo_cache_sentinel`)?(I=[],n[16]=I):I=n[16];let L=(0,s.useRef)(I),R=(0,s.useRef)(0),z;n[17]===Symbol.for(`react.memo_cache_sentinel`)?(z=[],n[17]=z):z=n[17];let B=(0,s.useRef)(z),V=(0,s.useRef)(!0),H=(0,s.useRef)(null),U=(0,s.useRef)(0),W=typeof E==`number`?`${E}px`:E,ee,te;n[18]===Symbol.for(`react.memo_cache_sentinel`)?(ee=()=>{let e=k.current,t=A.current;if(!e||!t)return;let n=new ResizeObserver(()=>{let n=t.getBoundingClientRect(),r=window.devicePixelRatio||1;e.width=n.width*r,e.height=n.height*r,e.style.width=`${n.width}px`,e.style.height=`${n.height}px`;let i=e.getContext(`2d`);i&&i.scale(r,r),H.current=null,U.current=n.width,V.current=!0});return n.observe(t),()=>n.disconnect()},te=[],n[18]=ee,n[19]=te):(ee=n[18],te=n[19]),(0,s.useEffect)(ee,te);let ne,G;n[20]!==y||n[21]!==S||n[22]!==x||n[23]!==O||n[24]!==b?(ne=()=>{if(b&&!y){let e=0;R.current=0;let t=()=>{e+=.03,R.current=Math.min(1,R.current+.02);let n=[],r=Math.floor((A.current?.getBoundingClientRect().width||200)/(x+S));if(O===`static`){let t=Math.floor(r/2);for(let i=0;i<r;i++){let r=(i-t)/t,a=1-Math.abs(r)*.4,o=Math.sin(e*1.5+r*3)*.25,s=Math.sin(e*.8-r*2)*.2,c=Math.cos(e*2+r)*.15,l=(.2+(o+s+c))*a,u=l;if(L.current.length>0&&R.current<1){let e=Math.min(i,L.current.length-1);u=(L.current[e]||0)*(1-R.current)+l*R.current}n.push(Math.max(.05,Math.min(1,u)))}}else for(let t=0;t<r;t++){let i=(t-r/2)/(r/2),a=1-Math.abs(i)*.4,o=Math.sin(e*1.5+t*.15)*.25,s=Math.sin(e*.8-t*.1)*.2,c=Math.cos(e*2+t*.05)*.15,l=(.2+(o+s+c))*a,u=l;if(L.current.length>0&&R.current<1){let e=Math.floor(t/r*L.current.length);u=(L.current[e]||0)*(1-R.current)+l*R.current}n.push(Math.max(.05,Math.min(1,u)))}O===`static`?B.current=n:M.current=n,V.current=!0,F.current=requestAnimationFrame(t)};return t(),()=>{F.current&&cancelAnimationFrame(F.current)}}if(!y&&!b&&(O===`static`?B.current.length>0:M.current.length>0)){let e=0,t=()=>{e+=.03,e<1?(O===`static`?B.current=B.current.map(t=>t*(1-e)):M.current=M.current.map(t=>t*(1-e)),V.current=!0,requestAnimationFrame(t)):O===`static`?B.current=[]:M.current=[]};t()}},G=[b,y,x,S,O],n[20]=y,n[21]=S,n[22]=x,n[23]=O,n[24]=b,n[25]=ne,n[26]=G):(ne=n[25],G=n[26]),(0,s.useEffect)(ne,G);let re,ie;n[27]!==y||n[28]!==r||n[29]!==S||n[30]!==C||n[31]!==x||n[32]!==w||n[33]!==T||n[34]!==a||n[35]!==O||n[36]!==b||n[37]!==D?(re=()=>{let e=k.current;if(!e)return;let t=e.getContext(`2d`);if(!t)return;let n,i=o=>{let s=e.getBoundingClientRect();if(y&&o-N.current>30&&(N.current=o,a!==void 0)){let e=Math.max(.05,Math.min(1,a*D));if(O===`static`){let t=Math.floor(s.width/(x+S)),n=Math.floor(t/2),r=[];for(let t=n-1;t>=0;t--){let i=e*(1-Math.abs(t-n/2)/(n/2)*.3);r.push(Math.max(.05,i))}for(let t=0;t<n;t++){let i=e*(1-Math.abs(t-n/2)/(n/2)*.3);r.push(Math.max(.05,i))}B.current=r,L.current=r}else M.current.push(e),L.current=[...M.current],M.current.length>60&&M.current.shift();V.current=!0}if(!V.current&&!y){n=requestAnimationFrame(i);return}V.current=y,t.clearRect(0,0,s.width,s.height);let c=r||(()=>getComputedStyle(e).color||`#000`)(),l=x+S,u=Math.floor(s.width/l),d=s.height/2;if(O===`static`){let e=b||y||B.current.length>0?B.current:[];for(let n=0;n<u&&n<e.length;n++){let r=e[n]||.1,i=n*l,a=Math.max(4,r*s.height*.8),o=d-a/2;t.fillStyle=c,t.globalAlpha=.4+r*.6,C>0?(t.beginPath(),t.roundRect(i,o,x,a,C),t.fill()):t.fillRect(i,o,x,a)}}else for(let e=0;e<u&&e<M.current.length;e++){let n=M.current.length-1-e,r=M.current[n]||.1,i=s.width-(e+1)*l,a=Math.max(4,r*s.height*.8),o=d-a/2;t.fillStyle=c,t.globalAlpha=.4+r*.6,C>0?(t.beginPath(),t.roundRect(i,o,x,a,C),t.fill()):t.fillRect(i,o,x,a)}if(w&&T>0&&s.width>0){if(!H.current||U.current!==s.width){let e=t.createLinearGradient(0,0,s.width,0),n=Math.min(.3,T/s.width);e.addColorStop(0,`rgba(255,255,255,1)`),e.addColorStop(n,`rgba(255,255,255,0)`),e.addColorStop(1-n,`rgba(255,255,255,0)`),e.addColorStop(1,`rgba(255,255,255,1)`),H.current=e,U.current=s.width}t.globalCompositeOperation=`destination-out`,t.fillStyle=H.current,t.fillRect(0,0,s.width,s.height),t.globalCompositeOperation=`source-over`}t.globalAlpha=1,n=requestAnimationFrame(i)};return n=requestAnimationFrame(i),()=>{n&&cancelAnimationFrame(n)}},ie=[y,b,D,x,S,C,r,w,T,O,a,60,30],n[27]=y,n[28]=r,n[29]=S,n[30]=C,n[31]=x,n[32]=w,n[33]=T,n[34]=a,n[35]=O,n[36]=b,n[37]=D,n[38]=re,n[39]=ie):(re=n[38],ie=n[39]),(0,s.useEffect)(re,ie);let K;n[40]===i?K=n[41]:(K=P(`relative h-full w-full`,i),n[40]=i,n[41]=K);let q;n[42]===W?q=n[43]:(q={height:W},n[42]=W,n[43]=q);let J=y?`Live audio waveform`:b?`Processing audio`:`Audio waveform idle`,Y;n[44]!==y||n[45]!==b?(Y=!y&&!b&&(0,f.jsx)(`div`,{className:`border-muted-foreground/20 absolute top-1/2 right-0 left-0 -translate-y-1/2 border-t-2 border-dotted`}),n[44]=y,n[45]=b,n[46]=Y):Y=n[46];let X;n[47]===Symbol.for(`react.memo_cache_sentinel`)?(X=(0,f.jsx)(`canvas`,{className:`block h-full w-full`,ref:k}),n[47]=X):X=n[47];let Z;return n[48]!==o||n[49]!==K||n[50]!==q||n[51]!==J||n[52]!==Y?(Z=(0,f.jsxs)(`div`,{className:K,ref:A,style:q,"aria-label":J,role:`img`,...o,children:[Y,X]}),n[48]=o,n[49]=K,n[50]=q,n[51]=J,n[52]=Y,n[53]=Z):Z=n[53],Z};function Je(e){let n=(0,t.c)(65),{isActive:r,isConnecting:i,isMuted:a,audioLevel:s,toolCall:c,onStart:l,onStop:u,onToggleMute:d,className:p}=e,m=s?.micLevel??0,h=s?.speakerLevel??0,g=c?.status===`started`?`calling`:c?.status===`completed`?c.error?`error`:`success`:`idle`,_;n[0]===g?_=n[1]:(_=()=>{switch(g){case`calling`:return`border-blue-500/60 shadow-[0_0_12px_rgba(59,130,246,0.3)]`;case`success`:return`border-green-500/60 shadow-[0_0_12px_rgba(34,197,94,0.3)]`;case`error`:return`border-red-500/60 shadow-[0_0_12px_rgba(239,68,68,0.3)]`;default:return`border-border`}},n[0]=g,n[1]=_);let v=_;if(!r&&!i){let e;n[2]===p?e=n[3]:(e=P(`flex items-center`,p),n[2]=p,n[3]=e);let t,r;n[4]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,f.jsx)(o.Phone,{className:`h-4 w-4`}),r=(0,f.jsx)(`span`,{className:`text-xs`,children:`Voice`}),n[4]=t,n[5]=r):(t=n[4],r=n[5]);let i;n[6]===l?i=n[7]:(i=(0,f.jsxs)(Q,{variant:`outline`,size:`sm`,onClick:l,className:`gap-2 rounded-full`,"aria-label":`Start voice session`,children:[t,r]}),n[6]=l,n[7]=i);let a;return n[8]!==e||n[9]!==i?(a=(0,f.jsx)(`div`,{className:e,children:i}),n[8]=e,n[9]=i,n[10]=a):a=n[10],a}let y;n[11]!==p||n[12]!==v?(y=P(`flex items-center gap-3 rounded-full border bg-background/95 px-3 py-2 backdrop-blur-sm transition-all duration-300`,v(),p),n[11]=p,n[12]=v,n[13]=y):y=n[13];let b=a?`bg-muted text-muted-foreground`:`bg-primary/10 text-primary`,x;n[14]===b?x=n[15]:(x=P(`flex h-8 w-8 items-center justify-center rounded-full transition-colors`,b),n[14]=b,n[15]=x);let S;n[16]===a?S=n[17]:(S=a?(0,f.jsx)(o.MicOff,{className:`h-4 w-4`}):(0,f.jsx)(o.Mic,{className:`h-4 w-4`}),n[16]=a,n[17]=S);let C;n[18]!==x||n[19]!==S?(C=(0,f.jsx)(`div`,{className:x,children:S}),n[18]=x,n[19]=S,n[20]=C):C=n[20];let w=r&&!a,T;n[21]!==i||n[22]!==m||n[23]!==w?(T=(0,f.jsx)(`div`,{className:`h-6 w-16`,children:(0,f.jsx)(qe,{active:w,processing:i,manualAudioLevel:m,barWidth:2,barGap:1,barRadius:2,barColor:`hsl(var(--primary))`,height:24,mode:`static`,sensitivity:2,fadeEdges:!1})}),n[21]=i,n[22]=m,n[23]=w,n[24]=T):T=n[24];let E;n[25]!==C||n[26]!==T?(E=(0,f.jsxs)(`div`,{className:`flex items-center gap-2`,children:[C,T]}),n[25]=C,n[26]=T,n[27]=E):E=n[27];let D;n[28]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,f.jsx)(`div`,{className:`h-6 w-px bg-border`}),n[28]=D):D=n[28];let O;n[29]!==r||n[30]!==i||n[31]!==h?(O=(0,f.jsx)(`div`,{className:`h-6 w-16`,children:(0,f.jsx)(qe,{active:r,processing:i,manualAudioLevel:h,barWidth:2,barGap:1,barRadius:2,barColor:`hsl(var(--muted-foreground))`,height:24,mode:`static`,sensitivity:2,fadeEdges:!1})}),n[29]=r,n[30]=i,n[31]=h,n[32]=O):O=n[32];let k;n[33]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,f.jsx)(`div`,{className:P(`flex h-8 w-8 items-center justify-center rounded-full bg-muted text-muted-foreground`),children:(0,f.jsx)(o.Volume2,{className:`h-4 w-4`})}),n[33]=k):k=n[33];let A;n[34]===O?A=n[35]:(A=(0,f.jsxs)(`div`,{className:`flex items-center gap-2`,children:[O,k]}),n[34]=O,n[35]=A);let j;n[36]===Symbol.for(`react.memo_cache_sentinel`)?(j=(0,f.jsx)(`div`,{className:`h-6 w-px bg-border`}),n[36]=j):j=n[36];let M=!r,N=a&&`text-destructive hover:text-destructive`,F;n[37]===N?F=n[38]:(F=P(`h-8 w-8 rounded-full`,N),n[37]=N,n[38]=F);let I=a?`Unmute microphone`:`Mute microphone`,L;n[39]===a?L=n[40]:(L=a?(0,f.jsx)(o.MicOff,{className:`h-4 w-4`}):(0,f.jsx)(o.Mic,{className:`h-4 w-4`}),n[39]=a,n[40]=L);let R;n[41]!==d||n[42]!==M||n[43]!==F||n[44]!==I||n[45]!==L?(R=(0,f.jsx)(Q,{variant:`ghost`,size:`icon`,onClick:d,disabled:M,className:F,"aria-label":I,children:L}),n[41]=d,n[42]=M,n[43]=F,n[44]=I,n[45]=L,n[46]=R):R=n[46];let z;n[47]===Symbol.for(`react.memo_cache_sentinel`)?(z=(0,f.jsx)(o.PhoneOff,{className:`h-4 w-4`}),n[47]=z):z=n[47];let B;n[48]===u?B=n[49]:(B=(0,f.jsx)(Q,{variant:`ghost`,size:`icon`,onClick:u,className:`h-8 w-8 rounded-full text-destructive hover:bg-destructive/10 hover:text-destructive`,"aria-label":`End voice session`,children:z}),n[48]=u,n[49]=B);let V;n[50]!==R||n[51]!==B?(V=(0,f.jsxs)(`div`,{className:`flex items-center gap-1`,children:[R,B]}),n[50]=R,n[51]=B,n[52]=V):V=n[52];let H;n[53]!==c||n[54]!==g?(H=c&&g!==`idle`&&(0,f.jsxs)(`div`,{className:P(`ml-1 flex items-center gap-1 rounded-full px-2 py-0.5 text-xs`,g===`calling`&&`bg-blue-500/10 text-blue-600`,g===`success`&&`bg-green-500/10 text-green-600`,g===`error`&&`bg-red-500/10 text-red-600`),children:[(0,f.jsx)(`span`,{className:P(`h-1.5 w-1.5 rounded-full`,g===`calling`&&`animate-pulse bg-blue-500`,g===`success`&&`bg-green-500`,g===`error`&&`bg-red-500`)}),(0,f.jsx)(`span`,{className:`max-w-[80px] truncate`,children:c.toolName})]}),n[53]=c,n[54]=g,n[55]=H):H=n[55];let U;n[56]===i?U=n[57]:(U=i&&(0,f.jsxs)(`div`,{className:`ml-1 flex items-center gap-1 text-xs text-muted-foreground`,children:[(0,f.jsx)(`span`,{className:`h-1.5 w-1.5 animate-pulse rounded-full bg-amber-500`}),(0,f.jsx)(`span`,{children:`Connecting...`})]}),n[56]=i,n[57]=U);let W;return n[58]!==A||n[59]!==y||n[60]!==V||n[61]!==H||n[62]!==U||n[63]!==E?(W=(0,f.jsxs)(`div`,{className:y,children:[E,D,A,j,V,H,U]}),n[58]=A,n[59]=y,n[60]=V,n[61]=H,n[62]=U,n[63]=E,n[64]=W):W=n[64],W}let Ye=()=>(0,f.jsx)(c.LazyMotion,{features:c.domAnimation,children:(0,f.jsx)(c.MotionConfig,{reducedMotion:`user`,children:(0,f.jsx)(n.ThreadPrimitive.Root,{className:`aui-root aui-thread-root app-shell @container relative flex h-full flex-col bg-background/50`,style:{"--thread-max-width":`100%`},children:(0,f.jsxs)(n.ThreadPrimitive.Viewport,{className:`aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll px-4`,children:[(0,f.jsx)(n.ThreadPrimitive.If,{empty:!0,children:(0,f.jsx)($e,{})}),(0,f.jsx)(n.ThreadPrimitive.Messages,{components:{UserMessage:it,EditComposer:ot,AssistantMessage:nt}}),(0,f.jsx)(n.ThreadPrimitive.If,{empty:!1,children:(0,f.jsx)(`div`,{className:`aui-thread-viewport-spacer min-h-8 grow`})}),(0,f.jsx)(Xe,{})]})})})}),Xe=()=>{let e=(0,t.c)(8),n=ae(),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,f.jsx)(Qe,{}),e[0]=r):r=e[0];let i;e[1]===n?i=e[2]:(i=n?.isSupported&&(n.isActive||n.isConnecting)&&(0,f.jsx)(l.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},className:`flex justify-center`,children:(0,f.jsx)(Je,{isActive:n.isActive,isConnecting:n.isConnecting,isMuted:n.isMuted,audioLevel:n.audioLevel,toolCall:n.toolCall,onStart:n.startSession,onStop:n.stopSession,onToggleMute:()=>n.toggleMute()})}),e[1]=n,e[2]=i);let a;e[3]===i?a=e[4]:(a=(0,f.jsx)(c.AnimatePresence,{children:i}),e[3]=i,e[4]=a);let o;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,f.jsx)(Ze,{}),e[5]=o):o=e[5];let s;return e[6]===a?s=e[7]:(s=(0,f.jsxs)(`div`,{className:`aui-composer-wrapper sticky bottom-0 mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 overflow-visible rounded-t-3xl pb-4 md:pb-6`,children:[r,a,o]}),e[6]=a,e[7]=s),s},Ze=()=>{let e=(0,t.c)(13),r=ae(),i,a,s;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=P(`aui-composer-root group/composer flex w-full flex-col overflow-hidden rounded-2xl px-3 py-2`,`border border-border/40 shadow-sm backdrop-blur-md`,`bg-background/80`,`transition-all duration-200`,`focus-within:border-ring/50 focus-within:shadow-md`,`hover:border-border/60`),a=(0,f.jsx)(Ae,{}),s=(0,f.jsx)(n.ComposerPrimitive.Input,{placeholder:`Send a message...`,className:`aui-composer-input mt-2 max-h-24 w-full resize-none bg-transparent px-0 py-2 text-sm leading-relaxed text-foreground placeholder:text-muted-foreground/70 focus-visible:outline-none focus-visible:ring-0`,rows:1,autoFocus:!0,"aria-label":`Message input`}),e[0]=i,e[1]=a,e[2]=s):(i=e[0],a=e[1],s=e[2]);let c,l;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,f.jsx)(je,{}),l=(0,f.jsx)(Ge,{}),e[3]=c,e[4]=l):(c=e[3],l=e[4]);let u;e[5]===r?u=e[6]:(u=r?.isSupported&&(0,f.jsxs)(Q,{variant:`ghost`,size:`sm`,onClick:()=>r.startSession(),className:`gap-2 rounded-full text-muted-foreground hover:text-foreground`,"aria-label":`Start voice session`,children:[(0,f.jsx)(o.Phone,{className:`h-4 w-4`}),(0,f.jsx)(`span`,{className:`text-xs`,children:`Voice`})]}),e[5]=r,e[6]=u);let d;e[7]===u?d=e[8]:(d=(0,f.jsxs)(`div`,{className:`flex items-center gap-2`,children:[c,l,u]}),e[7]=u,e[8]=d);let p;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,f.jsx)(n.ThreadPrimitive.If,{running:!1,children:(0,f.jsx)(n.ComposerPrimitive.Send,{asChild:!0,children:(0,f.jsx)($,{tooltip:`Send message`,side:`top`,type:`submit`,variant:`ghost`,size:`icon`,className:`aui-composer-send size-8 shrink-0 rounded-full border border-primary/60 bg-primary px-0 text-primary-foreground shadow-[0_12px_24px_-16px_rgba(37,99,235,0.55)] transition-shadow hover:shadow-[0_14px_24px_-14px_rgba(37,99,235,0.6)] focus-visible:ring-2 focus-visible:ring-primary/40`,"aria-label":`Send message`,children:(0,f.jsx)(o.ArrowUpIcon,{className:`aui-composer-send-icon size-4`})})})}),e[9]=p):p=e[9];let m;e[10]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,f.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[p,(0,f.jsx)(n.ThreadPrimitive.If,{running:!0,children:(0,f.jsx)(n.ComposerPrimitive.Cancel,{asChild:!0,children:(0,f.jsx)($,{tooltip:`Stop generating`,side:`top`,type:`button`,variant:`ghost`,size:`icon`,className:`aui-composer-cancel size-8 shrink-0 rounded-full border border-destructive/60 bg-destructive px-0 text-destructive-foreground shadow-[0_12px_24px_-18px_rgba(220,38,38,0.55)] transition-shadow hover:shadow-[0_14px_24px_-16px_rgba(220,38,38,0.6)] focus-visible:ring-2 focus-visible:ring-destructive/40`,"aria-label":`Stop generating`,children:(0,f.jsx)(o.Square,{className:`aui-composer-cancel-icon size-3.5`})})})})]}),e[10]=m):m=e[10];let h;return e[11]===d?h=e[12]:(h=(0,f.jsxs)(n.ComposerPrimitive.Root,{className:i,children:[a,s,(0,f.jsxs)(`div`,{className:`aui-composer-action-wrapper mt-2 flex items-center justify-between text-muted-foreground`,children:[d,m]})]}),e[11]=d,e[12]=h),h},Qe=()=>{let e=(0,t.c)(1),r;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,f.jsx)(n.ThreadPrimitive.ScrollToBottom,{asChild:!0,children:(0,f.jsx)($,{tooltip:`Scroll to bottom`,variant:`outline`,className:`aui-thread-scroll-to-bottom absolute -top-12 z-10 self-center rounded-full p-4 disabled:invisible dark:bg-background dark:hover:bg-accent`,children:(0,f.jsx)(o.ArrowDownIcon,{})})}),e[0]=r):r=e[0],r},$e=()=>{let e=(0,t.c)(2),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,f.jsx)(l.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:10},className:`aui-thread-welcome-message-motion-1 text-3xl font-bold tracking-tight`,children:`Hello there!`}),e[0]=n):n=e[0];let r;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,f.jsxs)(`div`,{className:`aui-thread-welcome-root mx-auto my-auto flex w-full max-w-[var(--thread-max-width)] flex-grow flex-col`,children:[(0,f.jsx)(`div`,{className:`aui-thread-welcome-center flex w-full flex-grow flex-col items-center justify-center`,children:(0,f.jsxs)(`div`,{className:`aui-thread-welcome-message flex size-full flex-col justify-center px-8`,children:[n,(0,f.jsx)(l.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:10},transition:{delay:.1},className:`aui-thread-welcome-message-motion-2 mt-2 text-lg text-muted-foreground`,children:`How can I help you today?`})]})}),(0,f.jsx)(et,{})]}),e[1]=r):r=e[1],r},et=()=>{let e=(0,t.c)(1),n;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,f.jsx)(`div`,{className:`aui-thread-welcome-suggestions grid w-full gap-2 pb-4 @md:grid-cols-2`,children:[{title:`What's the weather`,label:`in San Francisco?`,action:`What's the weather in San Francisco?`},{title:`Explain React hooks`,label:`like useState and useEffect`,action:`Explain React hooks like useState and useEffect`},{title:`Write a SQL query`,label:`to find top customers`,action:`Write a SQL query to find top customers`},{title:`Create a meal plan`,label:`for healthy weight loss`,action:`Create a meal plan for healthy weight loss`}].map(ct)}),e[0]=n):n=e[0],n},tt=()=>{let e=(0,t.c)(1),r;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,f.jsx)(n.MessagePrimitive.Error,{children:(0,f.jsx)(n.ErrorPrimitive.Root,{className:`aui-message-error-root mt-2 rounded-md border border-destructive bg-destructive/10 p-3 text-sm text-destructive dark:bg-destructive/5 dark:text-red-200`,children:(0,f.jsx)(n.ErrorPrimitive.Message,{className:`aui-message-error-message line-clamp-2`})})}),e[0]=r):r=e[0],r},nt=()=>{let e=(0,t.c)(2),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,f.jsxs)(`div`,{className:`aui-assistant-message-content mx-2 leading-7 break-words text-foreground`,children:[(0,f.jsx)(n.MessagePrimitive.Parts,{components:{Text:Le,tools:{Fallback:Ke}}}),(0,f.jsx)(tt,{})]}),e[0]=r):r=e[0];let i;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,f.jsx)(n.MessagePrimitive.Root,{asChild:!0,children:(0,f.jsxs)(`div`,{className:`aui-assistant-message-root relative mx-auto w-full max-w-[var(--thread-max-width)] animate-in py-4 duration-200 fade-in slide-in-from-bottom-1 last:mb-24`,"data-role":`assistant`,children:[r,(0,f.jsxs)(`div`,{className:`aui-assistant-message-footer mt-2 ml-2 flex`,children:[(0,f.jsx)(st,{}),(0,f.jsx)(rt,{})]})]})}),e[1]=i):i=e[1],i},rt=()=>{let e=(0,t.c)(3),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,f.jsx)(n.MessagePrimitive.If,{copied:!0,children:(0,f.jsx)(o.CheckIcon,{})}),e[0]=r):r=e[0];let i;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,f.jsx)(n.ActionBarPrimitive.Copy,{asChild:!0,children:(0,f.jsxs)($,{tooltip:`Copy`,children:[r,(0,f.jsx)(n.MessagePrimitive.If,{copied:!1,children:(0,f.jsx)(o.CopyIcon,{})})]})}),e[1]=i):i=e[1];let a;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,f.jsxs)(n.ActionBarPrimitive.Root,{hideWhenRunning:!0,autohide:`not-last`,autohideFloat:`single-branch`,className:`aui-assistant-action-bar-root col-start-3 row-start-2 -ml-1 flex gap-1 text-muted-foreground data-floating:absolute data-floating:rounded-md data-floating:border data-floating:bg-background data-floating:p-1 data-floating:shadow-sm`,children:[i,(0,f.jsx)(n.ActionBarPrimitive.Reload,{asChild:!0,children:(0,f.jsx)($,{tooltip:`Refresh`,children:(0,f.jsx)(o.RefreshCwIcon,{})})})]}),e[2]=a):a=e[2],a},it=()=>{let e=(0,t.c)(3),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,f.jsx)(ke,{}),e[0]=r):r=e[0];let i;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,f.jsx)(`div`,{className:`aui-user-message-content rounded-2xl rounded-tr-sm bg-primary text-primary-foreground px-4 py-3 text-sm leading-relaxed shadow-sm`,children:(0,f.jsx)(n.MessagePrimitive.Parts,{})}),e[1]=i):i=e[1];let a;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,f.jsx)(n.MessagePrimitive.Root,{asChild:!0,children:(0,f.jsxs)(`div`,{className:`aui-user-message-root mx-auto grid w-full max-w-[var(--thread-max-width)] animate-in auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] gap-y-2 px-2 py-4 duration-200 fade-in slide-in-from-bottom-1 first:mt-3 last:mb-5 [&:where(>*)]:col-start-2`,"data-role":`user`,children:[r,(0,f.jsxs)(`div`,{className:`aui-user-message-content-wrapper relative col-start-2 min-w-0 max-w-[85%]`,children:[i,(0,f.jsx)(`div`,{className:`aui-user-action-bar-wrapper absolute top-1/2 left-0 -translate-x-full -translate-y-1/2 pr-2`,children:(0,f.jsx)(at,{})})]}),(0,f.jsx)(st,{className:`aui-user-branch-picker col-span-full col-start-1 row-start-3 -mr-1 justify-end`})]})}),e[2]=a):a=e[2],a},at=()=>{let e=(0,t.c)(1),r;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,f.jsx)(n.ActionBarPrimitive.Root,{hideWhenRunning:!0,autohide:`not-last`,className:`aui-user-action-bar-root flex flex-col items-end`,children:(0,f.jsx)(n.ActionBarPrimitive.Edit,{asChild:!0,children:(0,f.jsx)($,{tooltip:`Edit`,className:`aui-user-action-edit p-4`,children:(0,f.jsx)(o.PencilIcon,{})})})}),e[0]=r):r=e[0],r},ot=()=>{let e=(0,t.c)(3),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,f.jsx)(n.ComposerPrimitive.Input,{className:`aui-edit-composer-input flex min-h-[60px] w-full resize-none bg-transparent p-4 text-foreground outline-none`,autoFocus:!0}),e[0]=r):r=e[0];let i;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,f.jsx)(n.ComposerPrimitive.Cancel,{asChild:!0,children:(0,f.jsx)(Q,{variant:`ghost`,size:`sm`,"aria-label":`Cancel edit`,children:`Cancel`})}),e[1]=i):i=e[1];let a;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,f.jsx)(`div`,{className:`aui-edit-composer-wrapper mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 px-2 first:mt-4`,children:(0,f.jsxs)(n.ComposerPrimitive.Root,{className:`aui-edit-composer-root ml-auto flex w-full max-w-7/8 flex-col rounded-xl bg-muted`,children:[r,(0,f.jsxs)(`div`,{className:`aui-edit-composer-footer mx-3 mb-3 flex items-center justify-center gap-2 self-end`,children:[i,(0,f.jsx)(n.ComposerPrimitive.Send,{asChild:!0,children:(0,f.jsx)(Q,{size:`sm`,"aria-label":`Update message`,children:`Update`})})]})]})}),e[2]=a):a=e[2],a},st=e=>{let r=(0,t.c)(12),i,a;r[0]===e?(i=r[1],a=r[2]):({className:i,...a}=e,r[0]=e,r[1]=i,r[2]=a);let s;r[3]===i?s=r[4]:(s=P(`aui-branch-picker-root mr-2 -ml-2 inline-flex items-center text-xs text-muted-foreground`,i),r[3]=i,r[4]=s);let c;r[5]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,f.jsx)(n.BranchPickerPrimitive.Previous,{asChild:!0,children:(0,f.jsx)($,{tooltip:`Previous`,children:(0,f.jsx)(o.ChevronLeftIcon,{})})}),r[5]=c):c=r[5];let l;r[6]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,f.jsx)(n.BranchPickerPrimitive.Number,{}),r[6]=l):l=r[6];let u;r[7]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,f.jsxs)(`span`,{className:`aui-branch-picker-state font-medium`,children:[l,` / `,(0,f.jsx)(n.BranchPickerPrimitive.Count,{})]}),r[7]=u):u=r[7];let d;r[8]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,f.jsx)(n.BranchPickerPrimitive.Next,{asChild:!0,children:(0,f.jsx)($,{tooltip:`Next`,children:(0,f.jsx)(o.ChevronRightIcon,{})})}),r[8]=d):d=r[8];let p;return r[9]!==a||r[10]!==s?(p=(0,f.jsxs)(n.BranchPickerPrimitive.Root,{hideWhenSingleBranch:!0,className:s,...a,children:[c,u,d]}),r[9]=a,r[10]=s,r[11]=p):p=r[11],p};function ct(e,t){return(0,f.jsx)(l.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:20},transition:{delay:.05*t},className:`aui-thread-welcome-suggestion-display [&:nth-child(n+3)]:hidden @md:[&:nth-child(n+3)]:block`,children:(0,f.jsx)(n.ThreadPrimitive.Suggestion,{prompt:e.action,send:!0,asChild:!0,children:(0,f.jsxs)(Q,{variant:`outline`,className:`aui-thread-welcome-suggestion h-auto w-full flex-1 flex-wrap items-start justify-start gap-1 rounded-xl border-border/50 bg-background/50 px-4 py-3 text-left text-sm transition-colors hover:bg-accent/50 hover:border-accent @md:flex-col`,"aria-label":e.action,children:[(0,f.jsx)(`span`,{className:`aui-thread-welcome-suggestion-text-1 font-medium text-foreground`,children:e.title}),(0,f.jsx)(`span`,{className:`aui-thread-welcome-suggestion-text-2 text-muted-foreground text-xs`,children:e.label})]})})},`suggested-action-${e.title}-${t}`)}let lt=()=>{let e=(0,t.c)(2),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,f.jsx)(n.AssistantModalPrimitive.Anchor,{className:`aui-root aui-modal-anchor fixed right-6 bottom-6 size-14`,children:(0,f.jsx)(n.AssistantModalPrimitive.Trigger,{asChild:!0,children:(0,f.jsx)(ut,{})})}),e[0]=r):r=e[0];let i;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,f.jsxs)(n.AssistantModalPrimitive.Root,{children:[r,(0,f.jsx)(n.AssistantModalPrimitive.Content,{sideOffset:16,className:`aui-root aui-modal-content z-50 h-[600px] w-[500px] overflow-clip overscroll-contain rounded-2xl border border-border/50 bg-popover/95 backdrop-blur-xl p-0 text-popover-foreground shadow-2xl outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-bottom-1/2 data-[state=closed]:slide-out-to-right-1/2 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:slide-in-from-bottom-1/2 data-[state=open]:slide-in-from-right-1/2 data-[state=open]:zoom-in-95 [&>.aui-thread-root]:bg-inherit`,children:(0,f.jsx)(Ye,{})})]}),e[1]=i):i=e[1],i},ut=(0,s.forwardRef)((e,n)=>{let r=(0,t.c)(15),i,a;r[0]===e?(i=r[1],a=r[2]):({"data-state":a,...i}=e,r[0]=e,r[1]=i,r[2]=a);let s=a===`open`?`Close Assistant`:`Open Assistant`,c,l;r[3]===a?(c=r[4],l=r[5]):(c=(0,f.jsx)(`img`,{src:`/logo.png`,alt:`Assistant`,"data-state":a,className:`aui-modal-button-closed-icon absolute size-full object-contain drop-shadow-xl transition-all duration-300 ease-in-out hover:drop-shadow-2xl data-[state=closed]:scale-100 data-[state=closed]:rotate-0 data-[state=open]:scale-0 data-[state=open]:rotate-90`}),l=(0,f.jsx)(o.ChevronDownIcon,{"data-state":a,className:`aui-modal-button-open-icon absolute size-full rounded-full bg-primary p-3 text-primary-foreground shadow-xl transition-all duration-300 ease-in-out hover:shadow-2xl data-[state=closed]:scale-0 data-[state=closed]:-rotate-90 data-[state=open]:scale-100 data-[state=open]:rotate-0`}),r[3]=a,r[4]=c,r[5]=l);let u;r[6]===s?u=r[7]:(u=(0,f.jsx)(`span`,{className:`aui-sr-only sr-only`,children:s}),r[6]=s,r[7]=u);let d;return r[8]!==n||r[9]!==i||r[10]!==c||r[11]!==l||r[12]!==u||r[13]!==s?(d=(0,f.jsxs)($,{variant:`ghost`,tooltip:s,side:`left`,...i,className:`aui-modal-button size-full rounded-full transition-all hover:scale-105 hover:bg-transparent active:scale-95`,ref:n,children:[c,l,u]}),r[8]=n,r[9]=i,r[10]=c,r[11]=l,r[12]=u,r[13]=s,r[14]=d):d=r[14],d});ut.displayName=`AssistantModalButton`;let dt=({tool:e,callTool:t})=>((0,n.useAssistantTool)({toolName:e.name,description:e.description??``,parameters:e.inputSchema??{},execute:async n=>{try{return(await t(e.name,n)).content.map(e=>`text`in e&&typeof e.text==`string`?e.text:JSON.stringify(e)).join(`
|
|
5
|
+
`)||`Tool executed successfully`}catch(t){throw console.error(`[ToolBridge] Tool '${e.name}' execution failed:`,t),t}}}),null),ft=()=>{let e=(0,t.c)(7),{tools:n,callTool:r}=We(),i;if(e[0]!==r||e[1]!==n){let t;e[3]===r?t=e[4]:(t=e=>(0,f.jsx)(dt,{tool:e,callTool:r},`${e._sourceId}-${e.name}`),e[3]=r,e[4]=t),i=n.map(t),e[0]=r,e[1]=n,e[2]=i}else i=e[2];let a;return e[5]===i?a=e[6]:(a=(0,f.jsx)(f.Fragment,{children:i}),e[5]=i,e[6]=a),a};function pt(){if(typeof document>`u`)return;let e=`webmcp-agent-styles`;if(document.getElementById(e))return;let t=document.createElement(`style`);t.id=e,t.textContent=`/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
|
|
6
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-200:oklch(88.5% .062 18.334);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-amber-500:oklch(76.9% .188 70.08);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-emerald-500:oklch(69.6% .17 162.48);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wide:.025em;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--drop-shadow-xl:0 9px 7px #0000001a;--drop-shadow-2xl:0 25px 25px #00000026;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-md:12px;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--radius:.75rem;--background:oklch(100% 0 0);--foreground:oklch(14.1% .005 285.823);--card:oklch(100% 0 0);--card-foreground:oklch(14.1% .005 285.823);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.1% .005 285.823);--primary:oklch(21% .006 285.885);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(96.7% .001 286.375);--secondary-foreground:oklch(21% .006 285.885);--muted:oklch(96.7% .001 286.375);--muted-foreground:oklch(55.2% .016 285.938);--accent:oklch(96.7% .001 286.375);--accent-foreground:oklch(21% .006 285.885);--destructive:oklch(57.7% .245 27.325);--destructive-foreground:oklch(98.5% 0 0);--border:oklch(92% .004 286.32);--input:oklch(92% .004 286.32);--ring:oklch(70.5% .015 286.067)}.dark{--background:oklch(14.1% .005 285.823);--foreground:oklch(98.5% 0 0);--card:oklch(21% .006 285.885);--card-foreground:oklch(98.5% 0 0);--popover:oklch(21% .006 285.885);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92% .004 286.32);--primary-foreground:oklch(21% .006 285.885);--secondary:oklch(27.4% .006 286.033);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(27.4% .006 286.033);--muted-foreground:oklch(70.5% .015 286.067);--accent:oklch(27.4% .006 286.033);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--destructive-foreground:oklch(98.5% 0 0);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.2% .016 285.938)}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklch,var(--ring),transparent 50%)}}body{background-color:var(--background);color:var(--foreground)}}@layer components{.app-shell{z-index:0;background-color:var(--background);background-image:radial-gradient(80% 60% at -10% -10%,oklch(82% .15 270/.15),#0000),radial-gradient(60% 50% at 110% 10%,oklch(85% .1 220/.12),#0000),radial-gradient(50% 45% at 50% 120%,oklch(95% .02 250/.08),#0000);position:relative}.dark .app-shell{background-image:radial-gradient(80% 60% at -10% -10%,oklch(55% .14 270/.25),#0000),radial-gradient(60% 50% at 110% 15%,oklch(60% .12 220/.22),#0000),radial-gradient(50% 45% at 50% 120%,oklch(35% .04 250/.16),#0000)}.app-shell:before,.app-shell:after{content:"";pointer-events:none;filter:blur(32px);opacity:.6;z-index:-1;border-radius:9999px;position:absolute;inset:auto}.app-shell:before{background:radial-gradient(60% 60% at 40% 40%,oklch(80% .12 270/.3),#0000);width:260px;height:260px;top:-60px;left:-80px}.app-shell:after{background:radial-gradient(60% 60% at 60% 60%,oklch(84% .1 220/.25),#0000);width:300px;height:300px;bottom:-80px;right:-60px}.toolbar-surface{border-top:1px solid var(--border);background:linear-gradient(to right,var(--background),var(--background),var(--background))}@supports (color:color-mix(in lab, red, red)){.toolbar-surface{background:linear-gradient(to right,var(--background),color-mix(in oklch,var(--background),transparent 5%),var(--background))}}.toolbar-surface{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}@supports ((-webkit-backdrop-filter:blur(12px)) or (backdrop-filter:blur(12px))){.toolbar-surface{background:var(--background)}@supports (color:color-mix(in lab, red, red)){.toolbar-surface{background:color-mix(in oklch,var(--background),transparent 20%)}}}.toolbar-surface-top{border-bottom:1px solid var(--border);background:linear-gradient(to right,var(--background),var(--background),var(--background))}@supports (color:color-mix(in lab, red, red)){.toolbar-surface-top{background:linear-gradient(to right,var(--background),color-mix(in oklch,var(--background),transparent 5%),var(--background))}}.toolbar-surface-top{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}@supports ((-webkit-backdrop-filter:blur(12px)) or (backdrop-filter:blur(12px))){.toolbar-surface-top{background:var(--background)}@supports (color:color-mix(in lab, red, red)){.toolbar-surface-top{background:color-mix(in oklch,var(--background),transparent 20%)}}}.toolbar-inner{justify-content:space-between;align-items:center;padding:.5rem .75rem;display:flex}.toolbar-card{background:var(--card);justify-content:space-between;align-items:center;gap:.5rem;display:flex}@supports (color:color-mix(in lab, red, red)){.toolbar-card{background:color-mix(in oklch,var(--card),transparent 60%)}}.toolbar-card{border:1px solid var(--border);border-radius:.75rem;padding:.5rem .75rem}.toolbar-group{align-items:center;gap:.25rem;display:flex}.btn-toolbar-primary{background:linear-gradient(to right,var(--primary),var(--primary));border-radius:.75rem;align-items:center;gap:.5rem;height:2.25rem;padding:0 .75rem;display:flex}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-primary{background:linear-gradient(to right,color-mix(in oklch,var(--primary),transparent 95%),color-mix(in oklch,var(--primary),transparent 90%))}}.btn-toolbar-primary{border:1px solid var(--primary)}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-primary{border:1px solid color-mix(in oklch,var(--primary),transparent 80%)}}.btn-toolbar-primary{transition:all .2s}.btn-toolbar-primary:hover{background:linear-gradient(to right,var(--primary),var(--primary))}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-primary:hover{background:linear-gradient(to right,color-mix(in oklch,var(--primary),transparent 90%),color-mix(in oklch,var(--primary),transparent 80%))}}.btn-toolbar-icon-primary{background:linear-gradient(to bottom right,var(--primary),var(--primary));border-radius:9999px;width:2rem;height:2rem;padding:0}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-primary{background:linear-gradient(to bottom right,color-mix(in oklch,var(--primary),transparent 90%),color-mix(in oklch,var(--primary),transparent 80%))}}.btn-toolbar-icon-primary{border:1px solid var(--primary)}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-primary{border:1px solid color-mix(in oklch,var(--primary),transparent 70%)}}.btn-toolbar-icon-primary{transition:all .2s;box-shadow:0 1px 2px #0000000d}.btn-toolbar-icon-primary:hover{background:linear-gradient(to bottom right,var(--primary),var(--primary))}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-primary:hover{background:linear-gradient(to bottom right,color-mix(in oklch,var(--primary),transparent 80%),color-mix(in oklch,var(--primary),transparent 70%))}}.btn-toolbar-icon-secondary{background:linear-gradient(to bottom right,var(--secondary),var(--secondary));border-radius:9999px;width:2rem;height:2rem;padding:0}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-secondary{background:linear-gradient(to bottom right,color-mix(in oklch,var(--secondary),transparent 90%),color-mix(in oklch,var(--secondary),transparent 80%))}}.btn-toolbar-icon-secondary{border:1px solid var(--secondary)}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-secondary{border:1px solid color-mix(in oklch,var(--secondary),transparent 70%)}}.btn-toolbar-icon-secondary{transition:all .2s;box-shadow:0 1px 2px #0000000d}.btn-toolbar-icon-secondary:hover{background:linear-gradient(to bottom right,var(--secondary),var(--secondary))}@supports (color:color-mix(in lab, red, red)){.btn-toolbar-icon-secondary:hover{background:linear-gradient(to bottom right,color-mix(in oklch,var(--secondary),transparent 80%),color-mix(in oklch,var(--secondary),transparent 70%))}}.badge-compact{height:1.25rem;padding:0 .5rem;font-size:10px}.badge-mini{height:1rem;padding:0 .375rem;font-size:10px}@keyframes shimmer-bg{0%{background-position:-1000px 0}to{background-position:1000px 0}}.shimmer{background:linear-gradient(90deg,#0000,#ffffff1a,#0000) 0 0/1000px 100%;animation:3s linear infinite shimmer-bg}.animate-shimmer{animation:2s linear infinite shimmer}@keyframes pulse-glow{0%,to{box-shadow:0 0 20px rgba(var(--primary),.1)}50%{box-shadow:0 0 30px rgba(var(--primary),.2)}}.pulse-glow{animation:2s ease-in-out infinite pulse-glow}@keyframes gradient-x{0%,to{background-position:0%}50%{background-position:100%}}.animate-gradient-x{animation:8s ease-in-out infinite gradient-x}.gradient-text{background:linear-gradient(to right,var(--foreground),var(--foreground))}@supports (color:color-mix(in lab, red, red)){.gradient-text{background:linear-gradient(to right,var(--foreground),color-mix(in oklch,var(--foreground),transparent 30%))}}.gradient-text{-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.glass{background:var(--background)}@supports (color:color-mix(in lab, red, red)){.glass{background:color-mix(in oklch,var(--background),transparent 50%)}}.glass{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border)}@supports (color:color-mix(in lab, red, red)){.glass{border:1px solid color-mix(in oklch,var(--border),transparent 50%)}}.tool-card{transition:all .3s ease-out}.tool-card:hover{transform:scale(1.02);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.scrollbar-thin{scrollbar-width:thin}.scrollbar-thin::-webkit-scrollbar{width:6px;height:6px}.scrollbar-thin::-webkit-scrollbar-track{background:0 0}.scrollbar-thin::-webkit-scrollbar-thumb{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.scrollbar-thin::-webkit-scrollbar-thumb{background-color:color-mix(in oklch,var(--primary),transparent 80%)}}.scrollbar-thin::-webkit-scrollbar-thumb{border-radius:3px}.scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:color-mix(in oklch,var(--primary),transparent 70%)}}}@layer utilities{.\\@container{container-type:inline-size}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.-top-12{top:calc(var(--spacing)*-12)}.top-1\\.5{top:calc(var(--spacing)*1.5)}.top-1\\/2{top:50%}.top-4{top:calc(var(--spacing)*4)}.top-\\[50\\%\\]{top:50%}.right-0{right:calc(var(--spacing)*0)}.right-1\\.5{right:calc(var(--spacing)*1.5)}.right-4{right:calc(var(--spacing)*4)}.right-6{right:calc(var(--spacing)*6)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-6{bottom:calc(var(--spacing)*6)}.left-0{left:calc(var(--spacing)*0)}.left-\\[50\\%\\]{left:50%}.z-10{z-index:10}.z-50{z-index:50}.col-span-full{grid-column:1/-1}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.row-start-3{grid-row-start:3}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing)*0)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-3{margin-inline:calc(var(--spacing)*3)}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing)*2)}.my-auto{margin-block:auto}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.-mr-1{margin-right:calc(var(--spacing)*-1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.-ml-2{margin-left:calc(var(--spacing)*-2)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.aspect-square{aspect-ratio:1}.size-2\\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-3\\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.size-14{width:calc(var(--spacing)*14);height:calc(var(--spacing)*14)}.size-\\[34px\\]{width:34px;height:34px}.size-full{width:100%;height:100%}.h-1\\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-\\[600px\\]{height:600px}.h-auto{height:auto}.h-full{height:100%}.max-h-24{max-height:calc(var(--spacing)*24)}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-\\[80dvh\\]{max-height:80dvh}.max-h-\\[80vh\\]{max-height:80vh}.min-h-8{min-height:calc(var(--spacing)*8)}.min-h-\\[60px\\]{min-height:60px}.w-1\\.5{width:calc(var(--spacing)*1.5)}.w-2{width:calc(var(--spacing)*2)}.w-2\\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-16{width:calc(var(--spacing)*16)}.w-\\[500px\\]{width:500px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-7\\/8{max-width:87.5%}.max-w-\\[80\\%\\]{max-width:80%}.max-w-\\[80px\\]{max-width:80px}.max-w-\\[85\\%\\]{max-width:85%}.max-w-\\[calc\\(100\\%-2rem\\)\\]{max-width:calc(100% - 2rem)}.max-w-\\[var\\(--thread-max-width\\)\\]{max-width:var(--thread-max-width)}.max-w-full{max-width:100%}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x:calc(var(--spacing)*0);--tw-border-spacing-y:calc(var(--spacing)*0);border-spacing:var(--tw-border-spacing-x)var(--tw-border-spacing-y)}.origin-\\(--radix-tooltip-content-transform-origin\\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\\[-50\\%\\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\\[-50\\%\\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\\[calc\\(-50\\%_-_2px\\)\\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-45{rotate:45deg}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-none{resize:none}.scroll-m-20{scroll-margin:calc(var(--spacing)*20)}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.auto-rows-auto{grid-auto-rows:auto}.grid-cols-\\[minmax\\(72px\\,1fr\\)_auto\\]{grid-template-columns:minmax(72px,1fr) auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}.gap-y-2{row-gap:calc(var(--spacing)*2)}.self-center{align-self:center}.self-end{align-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\\[2px\\]{border-radius:2px}.rounded-\\[14px\\]{border-radius:14px}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.\\!rounded-t-none{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-t-3xl{border-top-left-radius:var(--radius-3xl);border-top-right-radius:var(--radius-3xl)}.rounded-t-lg{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.rounded-b-lg{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-blue-500\\/40{border-color:#3080ff66}@supports (color:color-mix(in lab, red, red)){.border-blue-500\\/40{border-color:color-mix(in oklab,var(--color-blue-500)40%,transparent)}}.border-blue-500\\/60{border-color:#3080ff99}@supports (color:color-mix(in lab, red, red)){.border-blue-500\\/60{border-color:color-mix(in oklab,var(--color-blue-500)60%,transparent)}}.border-border,.border-border\\/20{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\\/20{border-color:color-mix(in oklab,var(--border)20%,transparent)}}.border-border\\/40{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\\/40{border-color:color-mix(in oklab,var(--border)40%,transparent)}}.border-border\\/50{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\\/50{border-color:color-mix(in oklab,var(--border)50%,transparent)}}.border-destructive,.border-destructive\\/60{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\\/60{border-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.border-foreground\\/20{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-foreground\\/20{border-color:color-mix(in oklab,var(--foreground)20%,transparent)}}.border-green-500\\/40{border-color:#00c75866}@supports (color:color-mix(in lab, red, red)){.border-green-500\\/40{border-color:color-mix(in oklab,var(--color-green-500)40%,transparent)}}.border-green-500\\/60{border-color:#00c75899}@supports (color:color-mix(in lab, red, red)){.border-green-500\\/60{border-color:color-mix(in oklab,var(--color-green-500)60%,transparent)}}.border-input{border-color:var(--input)}.border-muted-foreground\\/20{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.border-muted-foreground\\/20{border-color:color-mix(in oklab,var(--muted-foreground)20%,transparent)}}.border-primary\\/60{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\\/60{border-color:color-mix(in oklab,var(--primary)60%,transparent)}}.border-red-500\\/40{border-color:#fb2c3666}@supports (color:color-mix(in lab, red, red)){.border-red-500\\/40{border-color:color-mix(in oklab,var(--color-red-500)40%,transparent)}}.border-red-500\\/60{border-color:#fb2c3699}@supports (color:color-mix(in lab, red, red)){.border-red-500\\/60{border-color:color-mix(in oklab,var(--color-red-500)60%,transparent)}}.border-transparent{border-color:#0000}.border-white\\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.border-white\\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-\\[color-mix\\(in_oklab\\,rgb\\(var\\(--background\\)\\)_20\\%\\,transparent\\)\\]{background-color:rgb(var(--background))}@supports (color:color-mix(in lab, red, red)){.bg-\\[color-mix\\(in_oklab\\,rgb\\(var\\(--background\\)\\)_20\\%\\,transparent\\)\\]{background-color:color-mix(in oklab,rgb(var(--background))20%,transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.bg-background,.bg-background\\/50{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\\/50{background-color:color-mix(in oklab,var(--background)50%,transparent)}}.bg-background\\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\\/80{background-color:color-mix(in oklab,var(--background)80%,transparent)}}.bg-background\\/95{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\\/95{background-color:color-mix(in oklab,var(--background)95%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-black\\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-500\\/5{background-color:#3080ff0d}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\\/5{background-color:color-mix(in oklab,var(--color-blue-500)5%,transparent)}}.bg-blue-500\\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\\/10{background-color:color-mix(in oklab,var(--color-blue-500)10%,transparent)}}.bg-border{background-color:var(--border)}.bg-destructive,.bg-destructive\\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\\/10{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\\/5{background-color:#00c7580d}@supports (color:color-mix(in lab, red, red)){.bg-green-500\\/5{background-color:color-mix(in oklab,var(--color-green-500)5%,transparent)}}.bg-green-500\\/10{background-color:#00c7581a}@supports (color:color-mix(in lab, red, red)){.bg-green-500\\/10{background-color:color-mix(in oklab,var(--color-green-500)10%,transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\\/15{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\\/15{background-color:color-mix(in oklab,var(--muted-foreground)15%,transparent)}}.bg-muted\\/5{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\\/5{background-color:color-mix(in oklab,var(--muted)5%,transparent)}}.bg-muted\\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\\/30{background-color:color-mix(in oklab,var(--muted)30%,transparent)}}.bg-muted\\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-popover\\/95{background-color:var(--popover)}@supports (color:color-mix(in lab, red, red)){.bg-popover\\/95{background-color:color-mix(in oklab,var(--popover)95%,transparent)}}.bg-primary,.bg-primary\\/10{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/10{background-color:color-mix(in oklab,var(--primary)10%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\\/5{background-color:#fb2c360d}@supports (color:color-mix(in lab, red, red)){.bg-red-500\\/5{background-color:color-mix(in oklab,var(--color-red-500)5%,transparent)}}.bg-red-500\\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.bg-red-500\\/10{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-yellow-500{background-color:var(--color-yellow-500)}.fill-foreground{fill:var(--foreground)}.stroke-\\[1\\.5px\\]{stroke-width:1.5px}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1\\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.pt-0\\.5{padding-top:calc(var(--spacing)*.5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pr-2{padding-right:calc(var(--spacing)*2)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-4{padding-left:calc(var(--spacing)*4)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[13px\\]{font-size:13px}.text-\\[15px\\]{font-size:15px}.text-\\[17px\\]{font-size:17px}.text-\\[19px\\]{font-size:19px}.text-\\[21px\\]{font-size:21px}.text-\\[25px\\]{font-size:25px}.leading-7{--tw-leading:calc(var(--spacing)*7);line-height:calc(var(--spacing)*7)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-background{color:var(--background)}.text-blue-600{color:var(--color-blue-600)}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-emerald-500{color:var(--color-emerald-500)}.text-foreground,.text-foreground\\/80{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\\/80{color:color-mix(in oklab,var(--foreground)80%,transparent)}}.text-green-600{color:var(--color-green-600)}.text-muted-foreground,.text-muted-foreground\\/65{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\\/65{color:color-mix(in oklab,var(--muted-foreground)65%,transparent)}}.text-muted-foreground\\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\\/70{color:color-mix(in oklab,var(--muted-foreground)70%,transparent)}}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-70{opacity:.7}.opacity-100{opacity:1}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_12px_rgba\\(34\\,197\\,94\\,0\\.3\\)\\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#22c55e4d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_12px_rgba\\(59\\,130\\,246\\,0\\.3\\)\\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#3b82f64d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_12px_rgba\\(239\\,68\\,68\\,0\\.3\\)\\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#ef44444d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_12px_24px_-16px_rgba\\(37\\,99\\,235\\,0\\.55\\)\\]{--tw-shadow:0 12px 24px -16px var(--tw-shadow-color,#2563eb8c);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_12px_24px_-18px_rgba\\(220\\,38\\,38\\,0\\.55\\)\\]{--tw-shadow:0 12px 24px -18px var(--tw-shadow-color,#dc26268c);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.\\[box-shadow\\:inset_0_1px_2px_0_rgba\\(255\\,255\\,255\\,0\\.15\\)\\]{box-shadow:inset 0 1px 2px #ffffff26}.shadow-black\\/20{--tw-shadow-color:#0003}@supports (color:color-mix(in lab, red, red)){.shadow-black\\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)20%,transparent)var(--tw-shadow-alpha),transparent)}}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.drop-shadow-xl{--tw-drop-shadow-size:drop-shadow(0 9px 7px var(--tw-drop-shadow-color,#0000001a));--tw-drop-shadow:drop-shadow(var(--drop-shadow-xl));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,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[color\\,box-shadow\\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.placeholder\\:text-muted-foreground::placeholder,.placeholder\\:text-muted-foreground\\/70::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.placeholder\\:text-muted-foreground\\/70::placeholder{color:color-mix(in oklab,var(--muted-foreground)70%,transparent)}}.first\\:mt-0:first-child{margin-top:calc(var(--spacing)*0)}.first\\:mt-3:first-child{margin-top:calc(var(--spacing)*3)}.first\\:mt-4:first-child{margin-top:calc(var(--spacing)*4)}.first\\:rounded-tl-lg:first-child{border-top-left-radius:var(--radius)}.first\\:border-t:first-child{border-top-style:var(--tw-border-style);border-top-width:1px}.last\\:mb-0:last-child{margin-bottom:calc(var(--spacing)*0)}.last\\:mb-5:last-child{margin-bottom:calc(var(--spacing)*5)}.last\\:mb-24:last-child{margin-bottom:calc(var(--spacing)*24)}.last\\:rounded-tr-lg:last-child{border-top-right-radius:var(--radius)}.last\\:border-r:last-child{border-right-style:var(--tw-border-style);border-right-width:1px}.empty\\:hidden:empty{display:none}.focus-within\\:border-ring\\/50:focus-within{border-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-within\\:border-ring\\/50:focus-within{border-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-within\\:border-white\\/20:focus-within{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.focus-within\\:border-white\\/20:focus-within{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.focus-within\\:shadow-2xl:focus-within{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\\:shadow-md:focus-within{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\\:shadow-black\\/30:focus-within{--tw-shadow-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.focus-within\\:shadow-black\\/30:focus-within{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)30%,transparent)var(--tw-shadow-alpha),transparent)}}.focus-within\\:ring-ring:focus-within{--tw-ring-color:var(--ring)}.focus-within\\:ring-offset-2:focus-within{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}@media (hover:hover){.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:border-accent:hover{border-color:var(--accent)}.hover\\:border-border\\/60:hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.hover\\:border-border\\/60:hover{border-color:color-mix(in oklab,var(--border)60%,transparent)}}.hover\\:border-white\\/15:hover{border-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.hover\\:border-white\\/15:hover{border-color:color-mix(in oklab,var(--color-white)15%,transparent)}}.hover\\:\\!bg-white:hover{background-color:var(--color-white)!important}.hover\\:bg-accent:hover,.hover\\:bg-accent\\/50:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/50:hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.hover\\:bg-destructive\\/10:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-destructive\\/10:hover{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.hover\\:bg-destructive\\/80:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-destructive\\/80:hover{background-color:color-mix(in oklab,var(--destructive)80%,transparent)}}.hover\\:bg-destructive\\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-destructive\\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\\:bg-muted-foreground\\/15:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-muted-foreground\\/15:hover{background-color:color-mix(in oklab,var(--muted-foreground)15%,transparent)}}.hover\\:bg-primary\\/80:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/80:hover{background-color:color-mix(in oklab,var(--primary)80%,transparent)}}.hover\\:bg-primary\\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\\:bg-secondary\\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-secondary\\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\\:bg-transparent:hover{background-color:#0000}.hover\\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\\:text-destructive:hover{color:var(--destructive)}.hover\\:text-foreground:hover{color:var(--foreground)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-75:hover{opacity:.75}.hover\\:opacity-100:hover{opacity:1}.hover\\:shadow-2xl:hover{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\\:shadow-\\[0_14px_24px_-14px_rgba\\(37\\,99\\,235\\,0\\.6\\)\\]:hover{--tw-shadow:0 14px 24px -14px var(--tw-shadow-color,#2563eb99);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\\:shadow-\\[0_14px_24px_-16px_rgba\\(220\\,38\\,38\\,0\\.6\\)\\]:hover{--tw-shadow:0 14px 24px -16px var(--tw-shadow-color,#dc262699);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\\:drop-shadow-2xl:hover{--tw-drop-shadow-size:drop-shadow(0 25px 25px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-2xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-\\[3px\\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-destructive\\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-destructive\\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\\:ring-destructive\\/40:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-destructive\\/40:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.focus-visible\\:ring-primary\\/40:focus-visible{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-primary\\/40:focus-visible{--tw-ring-color:color-mix(in oklab,var(--primary)40%,transparent)}}.focus-visible\\:ring-ring:focus-visible,.focus-visible\\:ring-ring\\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-ring\\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-visible\\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:invisible:disabled{visibility:hidden}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}.has-\\[\\>svg\\]\\:px-2\\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\\[\\>svg\\]\\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\\[\\>svg\\]\\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-invalid\\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-floating\\:absolute[data-floating]{position:absolute}.data-floating\\:rounded-md[data-floating]{border-radius:calc(var(--radius) - 2px)}.data-floating\\:border[data-floating]{border-style:var(--tw-border-style);border-width:1px}.data-floating\\:bg-background[data-floating]{background-color:var(--background)}.data-floating\\:p-1[data-floating]{padding:calc(var(--spacing)*1)}.data-floating\\:shadow-sm[data-floating]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\\[orientation\\=horizontal\\]\\:h-px[data-orientation=horizontal]{height:1px}.data-\\[orientation\\=horizontal\\]\\:w-full[data-orientation=horizontal]{width:100%}.data-\\[orientation\\=vertical\\]\\:h-full[data-orientation=vertical]{height:100%}.data-\\[orientation\\=vertical\\]\\:w-px[data-orientation=vertical]{width:1px}.data-\\[state\\=closed\\]\\:scale-0[data-state=closed]{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.data-\\[state\\=closed\\]\\:scale-100[data-state=closed]{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.data-\\[state\\=closed\\]\\:-rotate-90[data-state=closed]{rotate:-90deg}.data-\\[state\\=closed\\]\\:rotate-0[data-state=closed]{rotate:none}.data-\\[state\\=open\\]\\:scale-0[data-state=open]{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.data-\\[state\\=open\\]\\:scale-100[data-state=open]{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.data-\\[state\\=open\\]\\:rotate-0[data-state=open]{rotate:none}.data-\\[state\\=open\\]\\:rotate-90[data-state=open]{rotate:90deg}.data-\\[state\\=open\\]\\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}@media (min-width:40rem){.sm\\:max-w-3xl{max-width:var(--container-3xl)}.sm\\:max-w-lg{max-width:var(--container-lg)}.sm\\:max-w-md{max-width:var(--container-md)}.sm\\:flex-row{flex-direction:row}.sm\\:justify-end{justify-content:flex-end}.sm\\:text-left{text-align:left}}@media (min-width:48rem){.md\\:pb-6{padding-bottom:calc(var(--spacing)*6)}}@container (min-width:28rem){.\\@md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.\\@md\\:flex-col{flex-direction:column}}.dark\\:border-input:is(.dark *){border-color:var(--input)}.dark\\:border-muted-foreground\\/15:is(.dark *){border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.dark\\:border-muted-foreground\\/15:is(.dark *){border-color:color-mix(in oklab,var(--muted-foreground)15%,transparent)}}.dark\\:bg-background:is(.dark *){background-color:var(--background)}.dark\\:bg-destructive\\/5:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-destructive\\/5:is(.dark *){background-color:color-mix(in oklab,var(--destructive)5%,transparent)}}.dark\\:bg-destructive\\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-destructive\\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\\:bg-input\\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-input\\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\\:bg-muted-foreground\\/20:is(.dark *){background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-muted-foreground\\/20:is(.dark *){background-color:color-mix(in oklab,var(--muted-foreground)20%,transparent)}}.dark\\:stroke-\\[2\\.5px\\]:is(.dark *){stroke-width:2.5px}.dark\\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\\:text-red-200:is(.dark *){color:var(--color-red-200)}@media (hover:hover){.dark\\:hover\\:bg-accent:is(.dark *):hover,.dark\\:hover\\:bg-accent\\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\\:hover\\:bg-accent\\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\\:hover\\:bg-accent\\/60:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\\:hover\\:bg-accent\\/60:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)60%,transparent)}}.dark\\:hover\\:bg-input\\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\\:hover\\:bg-input\\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}.dark\\:hover\\:bg-muted-foreground\\/30:is(.dark *):hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.dark\\:hover\\:bg-muted-foreground\\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--muted-foreground)30%,transparent)}}}.dark\\:focus-visible\\:ring-destructive\\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\\:focus-visible\\:ring-destructive\\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\\:aria-invalid\\:ring-destructive\\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\\:aria-invalid\\:ring-destructive\\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.\\[\\&_svg\\]\\:pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:shrink-0 svg{flex-shrink:0}.\\[\\&_svg\\]\\:text-background svg{color:var(--background)}.\\[\\&_svg\\]\\:text-black svg{color:var(--color-black)}@media (hover:hover){.hover\\:\\[\\&_svg\\]\\:text-destructive:hover svg{color:var(--destructive)}}.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\\[\\&\\:last-child\\>td\\:first-child\\]\\:rounded-bl-lg:last-child>td:first-child{border-bottom-left-radius:var(--radius)}.\\[\\&\\:last-child\\>td\\:last-child\\]\\:rounded-br-lg:last-child>td:last-child{border-bottom-right-radius:var(--radius)}.\\[\\&\\:nth-child\\(n\\+3\\)\\]\\:hidden:nth-child(n+3){display:none}@container (min-width:28rem){.\\@md\\:\\[\\&\\:nth-child\\(n\\+3\\)\\]\\:block:nth-child(n+3){display:block}}.\\[\\&\\:where\\(\\>\\*\\)\\]\\:col-start-2:where(){grid-column-start:2}.only\\:\\[\\&\\>\\#attachment-tile\\]\\:size-24:only-child>#attachment-tile{width:calc(var(--spacing)*24);height:calc(var(--spacing)*24)}.\\[\\&\\>\\.aui-thread-root\\]\\:bg-inherit>.aui-thread-root{background-color:inherit}.\\[\\&\\>a\\]\\:text-xs>a{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\\[\\&\\>a\\]\\:no-underline>a{text-decoration-line:none}.\\[\\&\\>button\\]\\:rounded-full>button{border-radius:3.40282e38px}.\\[\\&\\>button\\]\\:bg-foreground\\/60>button{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.\\[\\&\\>button\\]\\:bg-foreground\\/60>button{background-color:color-mix(in oklab,var(--foreground)60%,transparent)}}.\\[\\&\\>button\\]\\:p-1>button{padding:calc(var(--spacing)*1)}.\\[\\&\\>button\\]\\:opacity-100>button{opacity:1}.\\[\\&\\>button\\]\\:\\!ring-0>button{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}@media (hover:hover){.\\[\\&\\>button\\]\\:hover\\:\\[\\&_svg\\]\\:text-destructive>button:hover svg{color:var(--destructive)}}.\\[\\&\\>li\\]\\:mt-1>li{margin-top:calc(var(--spacing)*1)}.\\[\\&\\>span\\]\\:text-xs>span{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\\[\\&\\[align\\=center\\]\\]\\:text-center[align=center]{text-align:center}.\\[\\&\\[align\\=right\\]\\]\\:text-right[align=right]{text-align:right}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(200%)}}@keyframes subtle-pulse{0%,to{opacity:1}50%{opacity:.85}}@keyframes smooth-slide-down{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes gradient-shift{0%,to{transform:translate(0%)translateY(0%)}25%{transform:translate(100%)translateY(100%)}50%{transform:translate(100%)translateY(0%)}75%{transform:translate(0%)translateY(100%)}}@keyframes float{0%,to{transform:translateY(0)translate(0)}33%{transform:translateY(-30px)translate(20px)}66%{transform:translateY(20px)translate(-20px)}}@keyframes float-delayed{0%,to{transform:translateY(0)translate(0)}33%{transform:translateY(30px)translate(-30px)}66%{transform:translateY(-20px)translate(20px)}}.tool-card-transition{transition:all .4s cubic-bezier(.34,1.56,.64,1)}.tool-card-smooth{transition:all .35s cubic-bezier(.4,0,.2,1)}.animate-fadeInUp{opacity:0;animation:.5s ease-out forwards fadeInUp}.animate-gradient-shift{background-size:200% 200%;animation:20s ease-in-out infinite gradient-shift}.animate-float-slow{animation:20s ease-in-out infinite float}.animate-float-delayed{animation:25s ease-in-out 5s infinite float-delayed}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}@keyframes aui-pulse{50%{opacity:.5}}:where(.aui-md[data-status=running]):empty:after,:where(.aui-md[data-status=running])>:where(:not(ol):not(ul):not(pre)):last-child:after,:where(.aui-md[data-status=running])>pre:last-child code:after,:where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child:not(:has(*>li))):after,:where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child:not(:has(*>li))):after,:where(.aui-md[data-status=running])>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child)>:where(:is(ol,ul):last-child)>:where(li:last-child):after{--aui-content:"●";content:var(--aui-content);margin-left:.25rem;margin-right:.25rem;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;animation:2s cubic-bezier(.4,0,.6,1) infinite aui-pulse}@property --tw-border-spacing-x{syntax:"<length>";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"<length>";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}`,document.head.appendChild(t)}let mt=e=>{let i=(0,t.c)(11),{appId:a,apiBase:o,tokenEndpoint:s,autoConnectLocal:c,onToolsChange:l,onVoiceError:u,onVoiceConnect:d,onVoiceDisconnect:p}=e,m=c===void 0?!0:c,h;i[0]===Symbol.for(`react.memo_cache_sentinel`)?(h={sendAutomaticallyWhen:_t},i[0]=h):h=i[0];let g=(0,r.useChatRuntime)(h),_=s||(o?`${o}/api/realtime/session`:void 0);a&&typeof window<`u`&&console.debug(`[WebMCP] Initialized with app_id:`,a);let v;i[1]!==d||i[2]!==p||i[3]!==u||i[4]!==_||i[5]!==g?(v=_?(0,f.jsx)(Z,{tokenEndpoint:_,onError:u,onConnect:d,onDisconnect:p,children:(0,f.jsxs)(n.AssistantRuntimeProvider,{runtime:g,children:[(0,f.jsx)(ft,{}),(0,f.jsx)(lt,{})]})}):(0,f.jsxs)(n.AssistantRuntimeProvider,{runtime:g,children:[(0,f.jsx)(ft,{}),(0,f.jsx)(lt,{})]}),i[1]=d,i[2]=p,i[3]=u,i[4]=_,i[5]=g,i[6]=v):v=i[6];let y;return i[7]!==m||i[8]!==l||i[9]!==v?(y=(0,f.jsx)(Ue,{autoConnectLocal:m,onToolsChange:l,children:v}),i[7]=m,i[8]=l,i[9]=v,i[10]=y):y=i[10],y},ht=(0,i.default)(mt,{props:{appId:`string`,apiBase:`string`,tokenEndpoint:`string`,autoConnectLocal:`boolean`}});function gt(e=`webmcp-agent`){typeof window>`u`||(pt(),customElements.get(e)||customElements.define(e,ht))}gt();function _t(e){return(0,a.lastAssistantMessageIsCompleteWithToolCalls)(e)}return e.EmbeddedAgent=mt,e.WebMCPAgentElement=ht,e.registerWebMCPAgent=gt,e})({},react_compiler_runtime,__assistant_ui_react,__assistant_ui_react_ai_sdk,__r2wc_react_to_web_component,ai,lucide_react,react,motion_react,motion_react_m,clsx,tailwind_merge,react_jsx_runtime,zustand_shallow,__radix_ui_react_avatar,__radix_ui_react_dialog,__radix_ui_react_tooltip,__radix_ui_react_slot,class_variance_authority,__assistant_ui_react_markdown,remark_gfm,__modelcontextprotocol_sdk_client_index_js,__modelcontextprotocol_sdk_types_js,__mcp_b_transports,__modelcontextprotocol_sdk_client_sse_js,__modelcontextprotocol_sdk_client_streamableHttp_js);
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { FC } from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/web-component.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Props for the EmbeddedAgent React component
|
|
7
|
+
*
|
|
8
|
+
* These props map to HTML attributes in kebab-case when used as a web component:
|
|
9
|
+
* - appId -> app-id
|
|
10
|
+
* - apiBase -> api-base
|
|
11
|
+
* - tokenEndpoint -> token-endpoint
|
|
12
|
+
* - autoConnectLocal -> auto-connect-local
|
|
13
|
+
*/
|
|
14
|
+
interface EmbeddedAgentProps {
|
|
15
|
+
/** Your app/workspace ID */
|
|
16
|
+
appId: string;
|
|
17
|
+
/** API base URL for your WebMCP worker */
|
|
18
|
+
apiBase?: string;
|
|
19
|
+
/** Voice mode token endpoint (defaults to {apiBase}/api/realtime/session) */
|
|
20
|
+
tokenEndpoint?: string;
|
|
21
|
+
/** Auto-connect to local MCP source (default: true) */
|
|
22
|
+
autoConnectLocal?: boolean;
|
|
23
|
+
/** Callback when tools are updated */
|
|
24
|
+
onToolsChange?: (tools: unknown[]) => void;
|
|
25
|
+
/** Callback when voice mode errors */
|
|
26
|
+
onVoiceError?: (error: string) => void;
|
|
27
|
+
/** Callback when voice mode connects */
|
|
28
|
+
onVoiceConnect?: () => void;
|
|
29
|
+
/** Callback when voice mode disconnects */
|
|
30
|
+
onVoiceDisconnect?: (duration: number) => void;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* EmbeddedAgent React Component
|
|
34
|
+
*
|
|
35
|
+
* A fully self-contained chat widget with MCP tool support and optional voice mode.
|
|
36
|
+
* Can be used as a React component or converted to a web component.
|
|
37
|
+
*/
|
|
38
|
+
declare const EmbeddedAgent: FC<EmbeddedAgentProps>;
|
|
39
|
+
/**
|
|
40
|
+
* Web Component Definition
|
|
41
|
+
*
|
|
42
|
+
* Converts EmbeddedAgent to a custom element that can be used in any HTML page.
|
|
43
|
+
* Attributes are automatically converted from kebab-case to camelCase props.
|
|
44
|
+
*/
|
|
45
|
+
declare const WebMCPAgentElement: CustomElementConstructor;
|
|
46
|
+
/**
|
|
47
|
+
* Register the custom element
|
|
48
|
+
*
|
|
49
|
+
* Call this function to register the <webmcp-agent> custom element.
|
|
50
|
+
* This is automatically called when importing the web-component entry point.
|
|
51
|
+
* Styles are automatically injected into the document head.
|
|
52
|
+
*/
|
|
53
|
+
declare function registerWebMCPAgent(tagName?: string): void;
|
|
54
|
+
//#endregion
|
|
55
|
+
export { EmbeddedAgent, EmbeddedAgentProps, WebMCPAgentElement, registerWebMCPAgent };
|
|
56
|
+
//# sourceMappingURL=web-component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-component.d.ts","names":[],"sources":["../src/web-component.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;UAqDiB,kBAAA;;;;;;;;;;;;;;;;;;;;;;;;cAyBJ,eAAe,GAAG;;;;;;;cA0DlB,oBAAkB;;;;;;;;iBAgBf,mBAAA"}
|