@axlsdk/studio 0.14.0 → 0.16.0
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 +69 -10
- package/dist/chunk-RE6VPUXA.js +2213 -0
- package/dist/chunk-RE6VPUXA.js.map +1 -0
- package/dist/cli.cjs +1191 -143
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/client/assets/index-ClajLxib.js +288 -0
- package/dist/client/assets/index-DnHL_gtF.css +1 -0
- package/dist/client/index.html +2 -2
- package/dist/connection-manager-DAuqk9lM.d.cts +166 -0
- package/dist/connection-manager-DAuqk9lM.d.ts +166 -0
- package/dist/middleware.cjs +1222 -150
- package/dist/middleware.cjs.map +1 -1
- package/dist/middleware.d.cts +76 -6
- package/dist/middleware.d.ts +76 -6
- package/dist/middleware.js +32 -8
- package/dist/middleware.js.map +1 -1
- package/dist/server/index.cjs +1194 -142
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.cts +171 -28
- package/dist/server/index.d.ts +171 -28
- package/dist/server/index.js +7 -3
- package/package.json +13 -9
- package/dist/chunk-HUKUQDYL.js +0 -1163
- package/dist/chunk-HUKUQDYL.js.map +0 -1
- package/dist/client/assets/index-7aDhMztu.css +0 -1
- package/dist/client/assets/index-Bzr3vDPz.js +0 -255
- package/dist/connection-manager-B7AWpsCD.d.cts +0 -81
- package/dist/connection-manager-B7AWpsCD.d.ts +0 -81
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tailwindcss v4.2.0 | MIT License | https://tailwindcss.com */@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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction: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-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-duration:initial;--tw-ease:initial}}}@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-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-red-950:oklch(25.8% .092 26.042);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-amber-950:oklch(27.9% .077 45.635);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-100:oklch(96.2% .044 156.743);--color-green-300:oklch(87.1% .15 154.449);--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-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-green-950:oklch(26.6% .065 152.934);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-900:oklch(37.8% .077 168.94);--color-emerald-950:oklch(26.2% .051 172.552);--color-teal-400:oklch(77.7% .152 181.912);--color-teal-500:oklch(70.4% .14 182.503);--color-teal-600:oklch(60% .118 184.704);--color-sky-50:oklch(97.7% .013 236.62);--color-sky-100:oklch(95.1% .026 236.824);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-300:oklch(82.8% .111 230.318);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-700:oklch(50% .134 242.749);--color-sky-900:oklch(39.1% .09 240.876);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-900:oklch(37.9% .146 265.522);--color-blue-950:oklch(28.2% .091 267.935);--color-violet-100:oklch(94.3% .029 294.588);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-700:oklch(49.1% .27 292.581);--color-violet-900:oklch(38% .189 293.745);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-900:oklch(38.1% .176 304.987);--color-pink-400:oklch(71.8% .202 349.761);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-600:oklch(58.6% .253 17.585);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-gray-500:oklch(55.1% .027 264.364);--color-zinc-700:oklch(37% .013 285.805);--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--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-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--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%;-moz-tab-size:4;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;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]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.top-0{top:calc(var(--spacing) * 0)}.top-2{top:calc(var(--spacing) * 2)}.top-\[3px\]{top:3px}.top-\[calc\(100\%\+8px\)\]{top:calc(100% + 8px)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-\[3px\]{bottom:3px}.bottom-\[calc\(100\%\+8px\)\]{bottom:calc(100% + 8px)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.z-10{z-index:10}.z-50{z-index:50}.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\.5{margin:calc(var(--spacing) * -.5)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-1\.5{margin-inline:calc(var(--spacing) * 1.5)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mr-0\.5{margin-right:calc(var(--spacing) * .5)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-8{margin-right:calc(var(--spacing) * 8)}.-mb-px{margin-bottom:-1px}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-\[1px\]{margin-bottom:1px}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-8{margin-left:calc(var(--spacing) * 8)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.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-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-40{height:calc(var(--spacing) * 40)}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[340px\]{max-height:340px}.max-h-\[600px\]{max-height:600px}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[44px\]{min-height:44px}.min-h-\[68px\]{min-height:68px}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:calc(var(--spacing) * 1)}.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-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-full{width:100%}.w-px{width:1px}.max-w-3xl{max-width:var(--container-3xl)}.max-w-24{max-width:calc(var(--spacing) * 24)}.max-w-\[80\%\]{max-width:80%}.max-w-\[240px\]{max-width:240px}.max-w-\[320px\]{max-width:320px}.max-w-\[960px\]{max-width:960px}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[2\.5rem\]{min-width:2.5rem}.min-w-\[180px\]{min-width:180px}.min-w-\[240px\]{min-width:240px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-0{rotate:none}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.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{gap:calc(var(--spacing) * 0)}.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-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}: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-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * 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-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * 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)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\[hsl\(var\(--border\)\)\]>:not(:last-child)){border-color:hsl(var(--border))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-l-full{border-top-left-radius:3.40282e38px;border-bottom-left-radius:3.40282e38px}.rounded-r-full{border-top-right-radius:3.40282e38px;border-bottom-right-radius:3.40282e38px}.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-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.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-l-\[3px\]{border-left-style:var(--tw-border-style);border-left-width:3px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-\[hsl\(var\(--border\)\)\],.border-\[hsl\(var\(--border\)\)\]\/40{border-color:hsl(var(--border))}@supports (color:color-mix(in lab,red,red)){.border-\[hsl\(var\(--border\)\)\]\/40{border-color:color-mix(in oklab,hsl(var(--border)) 40%,transparent)}}.border-\[hsl\(var\(--border\)\)\]\/50{border-color:hsl(var(--border))}@supports (color:color-mix(in lab,red,red)){.border-\[hsl\(var\(--border\)\)\]\/50{border-color:color-mix(in oklab,hsl(var(--border)) 50%,transparent)}}.border-\[hsl\(var\(--foreground\)\)\]{border-color:hsl(var(--foreground))}.border-\[hsl\(var\(--input\)\)\]{border-color:hsl(var(--input))}.border-\[hsl\(var\(--primary\)\)\]{border-color:hsl(var(--primary))}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-400\/40{border-color:#fcbb0066}@supports (color:color-mix(in lab,red,red)){.border-amber-400\/40{border-color:color-mix(in oklab,var(--color-amber-400) 40%,transparent)}}.border-blue-400\/40{border-color:#54a2ff66}@supports (color:color-mix(in lab,red,red)){.border-blue-400\/40{border-color:color-mix(in oklab,var(--color-blue-400) 40%,transparent)}}.border-emerald-200{border-color:var(--color-emerald-200)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-400{border-color:var(--color-slate-400)}.border-transparent{border-color:#0000}.border-l-\[hsl\(var\(--foreground\)\)\]{border-left-color:hsl(var(--foreground))}.border-l-blue-500{border-left-color:var(--color-blue-500)}.border-l-emerald-500{border-left-color:var(--color-emerald-500)}.border-l-green-500{border-left-color:var(--color-green-500)}.border-l-red-500{border-left-color:var(--color-red-500)}.border-l-slate-400{border-left-color:var(--color-slate-400)}.border-l-transparent{border-left-color:#0000}.bg-\[hsl\(var\(--accent\)\)\],.bg-\[hsl\(var\(--accent\)\)\]\/30{background-color:hsl(var(--accent))}@supports (color:color-mix(in lab,red,red)){.bg-\[hsl\(var\(--accent\)\)\]\/30{background-color:color-mix(in oklab,hsl(var(--accent)) 30%,transparent)}}.bg-\[hsl\(var\(--accent\)\)\]\/40{background-color:hsl(var(--accent))}@supports (color:color-mix(in lab,red,red)){.bg-\[hsl\(var\(--accent\)\)\]\/40{background-color:color-mix(in oklab,hsl(var(--accent)) 40%,transparent)}}.bg-\[hsl\(var\(--background\)\)\]{background-color:hsl(var(--background))}.bg-\[hsl\(var\(--border\)\)\]{background-color:hsl(var(--border))}.bg-\[hsl\(var\(--card\)\)\]{background-color:hsl(var(--card))}.bg-\[hsl\(var\(--destructive\)\)\]{background-color:hsl(var(--destructive))}.bg-\[hsl\(var\(--foreground\)\)\]{background-color:hsl(var(--foreground))}.bg-\[hsl\(var\(--muted\)\)\],.bg-\[hsl\(var\(--muted\)\)\]\/30{background-color:hsl(var(--muted))}@supports (color:color-mix(in lab,red,red)){.bg-\[hsl\(var\(--muted\)\)\]\/30{background-color:color-mix(in oklab,hsl(var(--muted)) 30%,transparent)}}.bg-\[hsl\(var\(--muted\)\)\]\/40{background-color:hsl(var(--muted))}@supports (color:color-mix(in lab,red,red)){.bg-\[hsl\(var\(--muted\)\)\]\/40{background-color:color-mix(in oklab,hsl(var(--muted)) 40%,transparent)}}.bg-\[hsl\(var\(--muted\)\)\]\/50{background-color:hsl(var(--muted))}@supports (color:color-mix(in lab,red,red)){.bg-\[hsl\(var\(--muted\)\)\]\/50{background-color:color-mix(in oklab,hsl(var(--muted)) 50%,transparent)}}.bg-\[hsl\(var\(--muted-foreground\)\)\]{background-color:hsl(var(--muted-foreground))}.bg-\[hsl\(var\(--primary\)\)\]{background-color:hsl(var(--primary))}.bg-\[hsl\(var\(--primary\)\/0\.08\)\]{background-color:hsl(var(--primary)/.08)}.bg-\[hsl\(var\(--secondary\)\)\]{background-color:hsl(var(--secondary))}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-50\/60{background-color:#fffbeb99}@supports (color:color-mix(in lab,red,red)){.bg-amber-50\/60{background-color:color-mix(in oklab,var(--color-amber-50) 60%,transparent)}}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-100\/60{background-color:#fef3c699}@supports (color:color-mix(in lab,red,red)){.bg-amber-100\/60{background-color:color-mix(in oklab,var(--color-amber-100) 60%,transparent)}}.bg-amber-200{background-color:var(--color-amber-200)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-50\/30{background-color:#ecfdf54d}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/30{background-color:color-mix(in oklab,var(--color-emerald-50) 30%,transparent)}}.bg-emerald-50\/60{background-color:#ecfdf599}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/60{background-color:color-mix(in oklab,var(--color-emerald-50) 60%,transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-pink-400{background-color:var(--color-pink-400)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-400{background-color:var(--color-purple-400)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-50\/30{background-color:#fef2f24d}@supports (color:color-mix(in lab,red,red)){.bg-red-50\/30{background-color:color-mix(in oklab,var(--color-red-50) 30%,transparent)}}.bg-red-50\/60{background-color:#fef2f299}@supports (color:color-mix(in lab,red,red)){.bg-red-50\/60{background-color:color-mix(in oklab,var(--color-red-50) 60%,transparent)}}.bg-red-100{background-color:var(--color-red-100)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-sky-50{background-color:var(--color-sky-50)}.bg-sky-100{background-color:var(--color-sky-100)}.bg-sky-500{background-color:var(--color-sky-500)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-300{background-color:var(--color-slate-300)}.bg-slate-400{background-color:var(--color-slate-400)}.bg-teal-500{background-color:var(--color-teal-500)}.bg-transparent{background-color:#0000}.bg-violet-100{background-color:var(--color-violet-100)}.bg-violet-400{background-color:var(--color-violet-400)}.bg-violet-500{background-color:var(--color-violet-500)}.bg-white{background-color:var(--color-white)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-zinc-700{background-color:var(--color-zinc-700)}.fill-current{fill:currentColor}.fill-none{fill:none}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:calc(var(--spacing) * 1)}.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)}.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-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-3\.5{padding-left:calc(var(--spacing) * 3.5)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-\[22px\]{padding-left:22px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.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-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-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[hsl\(var\(--accent-foreground\)\)\]{color:hsl(var(--accent-foreground))}.text-\[hsl\(var\(--background\)\)\]{color:hsl(var(--background))}.text-\[hsl\(var\(--border\)\)\]{color:hsl(var(--border))}.text-\[hsl\(var\(--destructive-foreground\)\)\]{color:hsl(var(--destructive-foreground))}.text-\[hsl\(var\(--foreground\)\)\]{color:hsl(var(--foreground))}.text-\[hsl\(var\(--muted-foreground\)\)\]{color:hsl(var(--muted-foreground))}.text-\[hsl\(var\(--primary\)\)\]{color:hsl(var(--primary))}.text-\[hsl\(var\(--primary-foreground\)\)\]{color:hsl(var(--primary-foreground))}.text-\[hsl\(var\(--secondary-foreground\)\)\]{color:hsl(var(--secondary-foreground))}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-emerald-900{color:var(--color-emerald-900)}.text-gray-500{color:var(--color-gray-500)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-purple-600{color:var(--color-purple-600)}.text-purple-700{color:var(--color-purple-700)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-red-900{color:var(--color-red-900)}.text-rose-600{color:var(--color-rose-600)}.text-sky-900{color:var(--color-sky-900)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-teal-600{color:var(--color-teal-600)}.text-violet-700{color:var(--color-violet-700)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-65{opacity:.65}.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-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-md{--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)}.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)}.ring-1{--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)}.ring-\[hsl\(var\(--foreground\)\)\]{--tw-ring-color:hsl(var(--foreground))}.ring-\[hsl\(var\(--input\)\)\]{--tw-ring-color:hsl(var(--input))}.ring-amber-400\/40{--tw-ring-color:#fcbb0066}@supports (color:color-mix(in lab,red,red)){.ring-amber-400\/40{--tw-ring-color:color-mix(in oklab, var(--color-amber-400) 40%, transparent)}}.ring-sky-300{--tw-ring-color:var(--color-sky-300)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter: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,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{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-\[width\]{transition-property:width;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))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:text-\[hsl\(var\(--foreground\)\)\]:is(:where(.group):hover *){color:hsl(var(--foreground))}.group-hover\:opacity-60:is(:where(.group):hover *){opacity:.6}.group-hover\/json\:opacity-100:is(:where(.group\/json):hover *){opacity:1}.group-hover\/tip\:visible:is(:where(.group\/tip):hover *){visibility:visible}}.placeholder\:text-\[hsl\(var\(--muted-foreground\)\)\]::placeholder{color:hsl(var(--muted-foreground))}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.focus-within\:ring-\[hsl\(var\(--ring\)\)\]:focus-within{--tw-ring-color:hsl(var(--ring))}@media(hover:hover){.hover\:border-\[hsl\(var\(--foreground\)\)\/30\]:hover{border-color:hsl(var(--foreground))/30}.hover\:border-red-200:hover{border-color:var(--color-red-200)}.hover\:bg-\[hsl\(var\(--accent\)\)\]:hover,.hover\:bg-\[hsl\(var\(--accent\)\)\]\/40:hover{background-color:hsl(var(--accent))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[hsl\(var\(--accent\)\)\]\/40:hover{background-color:color-mix(in oklab,hsl(var(--accent)) 40%,transparent)}}.hover\:bg-\[hsl\(var\(--accent\)\)\]\/50:hover{background-color:hsl(var(--accent))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[hsl\(var\(--accent\)\)\]\/50:hover{background-color:color-mix(in oklab,hsl(var(--accent)) 50%,transparent)}}.hover\:bg-\[hsl\(var\(--destructive\)\)\]:hover{background-color:hsl(var(--destructive))}.hover\:bg-\[hsl\(var\(--muted\)\)\]:hover,.hover\:bg-\[hsl\(var\(--muted\)\)\]\/50:hover{background-color:hsl(var(--muted))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[hsl\(var\(--muted\)\)\]\/50:hover{background-color:color-mix(in oklab,hsl(var(--muted)) 50%,transparent)}}.hover\:bg-\[hsl\(var\(--ring\)\)\]:hover{background-color:hsl(var(--ring))}.hover\:bg-\[hsl\(var\(--secondary\)\)\]\/50:hover{background-color:hsl(var(--secondary))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[hsl\(var\(--secondary\)\)\]\/50:hover{background-color:color-mix(in oklab,hsl(var(--secondary)) 50%,transparent)}}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:text-\[hsl\(var\(--accent-foreground\)\)\]:hover{color:hsl(var(--accent-foreground))}.hover\:text-\[hsl\(var\(--destructive-foreground\)\)\]:hover{color:hsl(var(--destructive-foreground))}.hover\:text-\[hsl\(var\(--foreground\)\)\]:hover{color:hsl(var(--foreground))}.hover\:text-emerald-900:hover{color:var(--color-emerald-900)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-red-900:hover{color:var(--color-red-900)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:ring-\[hsl\(var\(--ring\)\)\]:hover{--tw-ring-color:hsl(var(--ring))}}.focus\:bg-\[hsl\(var\(--ring\)\)\]:focus{background-color:hsl(var(--ring))}.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-\[hsl\(var\(--ring\)\)\]:focus{--tw-ring-color:hsl(var(--ring))}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:bg-\[hsl\(var\(--muted\)\)\]:focus-visible{background-color:hsl(var(--muted))}.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-\[hsl\(var\(--foreground\)\)\]:focus-visible{--tw-ring-color:hsl(var(--foreground))}.focus-visible\:ring-\[hsl\(var\(--ring\)\)\]:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media(hover:hover){.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}.disabled\:hover\:text-\[hsl\(var\(--muted-foreground\)\)\]:disabled:hover{color:hsl(var(--muted-foreground))}}@media(min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:48rem){.md\:inline-flex{display:inline-flex}}@media(min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,1fr\)_360px\]{grid-template-columns:minmax(0,1fr) 360px}}@media(prefers-color-scheme:dark){.dark\:border-amber-900{border-color:var(--color-amber-900)}.dark\:border-emerald-900{border-color:var(--color-emerald-900)}.dark\:border-red-800{border-color:var(--color-red-800)}.dark\:border-red-900{border-color:var(--color-red-900)}.dark\:border-slate-600{border-color:var(--color-slate-600)}.dark\:border-slate-700{border-color:var(--color-slate-700)}.dark\:bg-amber-400{background-color:var(--color-amber-400)}.dark\:bg-amber-800{background-color:var(--color-amber-800)}.dark\:bg-amber-900{background-color:var(--color-amber-900)}.dark\:bg-amber-900\/30{background-color:#7b33064d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-900\/30{background-color:color-mix(in oklab,var(--color-amber-900) 30%,transparent)}}.dark\:bg-amber-900\/40{background-color:#7b330666}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-900\/40{background-color:color-mix(in oklab,var(--color-amber-900) 40%,transparent)}}.dark\:bg-amber-900\/50{background-color:#7b330680}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-900\/50{background-color:color-mix(in oklab,var(--color-amber-900) 50%,transparent)}}.dark\:bg-amber-950\/20{background-color:#46190133}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-950\/20{background-color:color-mix(in oklab,var(--color-amber-950) 20%,transparent)}}.dark\:bg-amber-950\/30{background-color:#4619014d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-950\/30{background-color:color-mix(in oklab,var(--color-amber-950) 30%,transparent)}}.dark\:bg-blue-900{background-color:var(--color-blue-900)}.dark\:bg-blue-900\/30{background-color:#1c398e4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-900\/30{background-color:color-mix(in oklab,var(--color-blue-900) 30%,transparent)}}.dark\:bg-blue-950\/20{background-color:#16245633}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-950\/20{background-color:color-mix(in oklab,var(--color-blue-950) 20%,transparent)}}.dark\:bg-emerald-400{background-color:var(--color-emerald-400)}.dark\:bg-emerald-900\/30{background-color:#004e3b4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-900\/30{background-color:color-mix(in oklab,var(--color-emerald-900) 30%,transparent)}}.dark\:bg-emerald-900\/40{background-color:#004e3b66}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-900\/40{background-color:color-mix(in oklab,var(--color-emerald-900) 40%,transparent)}}.dark\:bg-emerald-900\/50{background-color:#004e3b80}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-900\/50{background-color:color-mix(in oklab,var(--color-emerald-900) 50%,transparent)}}.dark\:bg-emerald-950\/5{background-color:#002c220d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-950\/5{background-color:color-mix(in oklab,var(--color-emerald-950) 5%,transparent)}}.dark\:bg-emerald-950\/20{background-color:#002c2233}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-950\/20{background-color:color-mix(in oklab,var(--color-emerald-950) 20%,transparent)}}.dark\:bg-emerald-950\/30{background-color:#002c224d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-950\/30{background-color:color-mix(in oklab,var(--color-emerald-950) 30%,transparent)}}.dark\:bg-green-900{background-color:var(--color-green-900)}.dark\:bg-green-950\/40{background-color:#032e1566}@supports (color:color-mix(in lab,red,red)){.dark\:bg-green-950\/40{background-color:color-mix(in oklab,var(--color-green-950) 40%,transparent)}}.dark\:bg-purple-900{background-color:var(--color-purple-900)}.dark\:bg-purple-900\/30{background-color:#59168b4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-purple-900\/30{background-color:color-mix(in oklab,var(--color-purple-900) 30%,transparent)}}.dark\:bg-red-400{background-color:var(--color-red-400)}.dark\:bg-red-700{background-color:var(--color-red-700)}.dark\:bg-red-900\/30{background-color:#82181a4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/30{background-color:color-mix(in oklab,var(--color-red-900) 30%,transparent)}}.dark\:bg-red-900\/40{background-color:#82181a66}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/40{background-color:color-mix(in oklab,var(--color-red-900) 40%,transparent)}}.dark\:bg-red-900\/50{background-color:#82181a80}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/50{background-color:color-mix(in oklab,var(--color-red-900) 50%,transparent)}}.dark\:bg-red-950{background-color:var(--color-red-950)}.dark\:bg-red-950\/5{background-color:#4608090d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-950\/5{background-color:color-mix(in oklab,var(--color-red-950) 5%,transparent)}}.dark\:bg-red-950\/20{background-color:#46080933}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-950\/20{background-color:color-mix(in oklab,var(--color-red-950) 20%,transparent)}}.dark\:bg-red-950\/30{background-color:#4608094d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-950\/30{background-color:color-mix(in oklab,var(--color-red-950) 30%,transparent)}}.dark\:bg-red-950\/40{background-color:#46080966}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-950\/40{background-color:color-mix(in oklab,var(--color-red-950) 40%,transparent)}}.dark\:bg-sky-900\/20{background-color:#024a7033}@supports (color:color-mix(in lab,red,red)){.dark\:bg-sky-900\/20{background-color:color-mix(in oklab,var(--color-sky-900) 20%,transparent)}}.dark\:bg-sky-900\/30{background-color:#024a704d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-sky-900\/30{background-color:color-mix(in oklab,var(--color-sky-900) 30%,transparent)}}.dark\:bg-slate-800{background-color:var(--color-slate-800)}.dark\:bg-slate-800\/40{background-color:#1d293d66}@supports (color:color-mix(in lab,red,red)){.dark\:bg-slate-800\/40{background-color:color-mix(in oklab,var(--color-slate-800) 40%,transparent)}}.dark\:bg-slate-900{background-color:var(--color-slate-900)}.dark\:bg-violet-900\/40{background-color:#4d179a66}@supports (color:color-mix(in lab,red,red)){.dark\:bg-violet-900\/40{background-color:color-mix(in oklab,var(--color-violet-900) 40%,transparent)}}.dark\:text-amber-100{color:var(--color-amber-100)}.dark\:text-amber-200{color:var(--color-amber-200)}.dark\:text-amber-300{color:var(--color-amber-300)}.dark\:text-amber-400{color:var(--color-amber-400)}.dark\:text-blue-300{color:var(--color-blue-300)}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-emerald-200{color:var(--color-emerald-200)}.dark\:text-emerald-300{color:var(--color-emerald-300)}.dark\:text-emerald-400{color:var(--color-emerald-400)}.dark\:text-green-300{color:var(--color-green-300)}.dark\:text-green-400{color:var(--color-green-400)}.dark\:text-purple-300{color:var(--color-purple-300)}.dark\:text-purple-400{color:var(--color-purple-400)}.dark\:text-red-200{color:var(--color-red-200)}.dark\:text-red-300{color:var(--color-red-300)}.dark\:text-red-400{color:var(--color-red-400)}.dark\:text-rose-400{color:var(--color-rose-400)}.dark\:text-sky-200{color:var(--color-sky-200)}.dark\:text-slate-200{color:var(--color-slate-200)}.dark\:text-slate-400{color:var(--color-slate-400)}.dark\:text-teal-400{color:var(--color-teal-400)}.dark\:text-violet-300{color:var(--color-violet-300)}.dark\:ring-sky-700{--tw-ring-color:var(--color-sky-700)}@media(hover:hover){.dark\:hover\:border-red-900:hover{border-color:var(--color-red-900)}.dark\:hover\:bg-red-800:hover{background-color:var(--color-red-800)}.dark\:hover\:bg-red-950:hover{background-color:var(--color-red-950)}.dark\:hover\:bg-red-950\/30:hover{background-color:#4608094d}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-red-950\/30:hover{background-color:color-mix(in oklab,var(--color-red-950) 30%,transparent)}}.dark\:hover\:bg-slate-800:hover{background-color:var(--color-slate-800)}.dark\:hover\:bg-slate-800\/50:hover{background-color:#1d293d80}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-slate-800\/50:hover{background-color:color-mix(in oklab,var(--color-slate-800) 50%,transparent)}}.dark\:hover\:text-emerald-200:hover{color:var(--color-emerald-200)}.dark\:hover\:text-red-200:hover{color:var(--color-red-200)}.dark\:hover\:text-red-400:hover{color:var(--color-red-400)}}}.\[\&\:\:-moz-range-thumb\]\:h-3\.5::-moz-range-thumb{height:calc(var(--spacing) * 3.5)}.\[\&\:\:-moz-range-thumb\]\:w-3\.5::-moz-range-thumb{width:calc(var(--spacing) * 3.5)}.\[\&\:\:-moz-range-thumb\]\:rounded-full::-moz-range-thumb{border-radius:3.40282e38px}.\[\&\:\:-moz-range-thumb\]\:border-0::-moz-range-thumb{border-style:var(--tw-border-style);border-width:0}.\[\&\:\:-moz-range-thumb\]\:bg-\[hsl\(var\(--primary\)\)\]::-moz-range-thumb{background-color:hsl(var(--primary))}.\[\&\:\:-webkit-slider-thumb\]\:h-3\.5::-webkit-slider-thumb{height:calc(var(--spacing) * 3.5)}.\[\&\:\:-webkit-slider-thumb\]\:w-3\.5::-webkit-slider-thumb{width:calc(var(--spacing) * 3.5)}.\[\&\:\:-webkit-slider-thumb\]\:appearance-none::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none}.\[\&\:\:-webkit-slider-thumb\]\:rounded-full::-webkit-slider-thumb{border-radius:3.40282e38px}.\[\&\:\:-webkit-slider-thumb\]\:bg-\[hsl\(var\(--primary\)\)\]::-webkit-slider-thumb{background-color:hsl(var(--primary))}.\[\&\:\:-webkit-slider-thumb\]\:shadow-sm::-webkit-slider-thumb{--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)}}:root{--background:0 0% 100%;--foreground:240 10% 3.9%;--card:0 0% 100%;--card-foreground:240 10% 3.9%;--popover:0 0% 100%;--popover-foreground:240 10% 3.9%;--primary:240 5.9% 10%;--primary-foreground:0 0% 98%;--secondary:240 4.8% 95.9%;--secondary-foreground:240 5.9% 10%;--muted:240 4.8% 95.9%;--muted-foreground:240 3.8% 46.1%;--accent:240 4.8% 95.9%;--accent-foreground:240 5.9% 10%;--destructive:0 84.2% 60.2%;--destructive-foreground:0 0% 98%;--border:240 5.9% 90%;--input:240 5.9% 90%;--ring:240 5.9% 10%;--radius:.5rem;--studio-green:142 71% 45%;--studio-blue:217 91% 60%;--studio-amber:38 92% 50%;--studio-red:0 84% 60%}.dark{--background:240 10% 3.9%;--foreground:0 0% 98%;--card:240 10% 3.9%;--card-foreground:0 0% 98%;--popover:240 10% 3.9%;--popover-foreground:0 0% 98%;--primary:0 0% 98%;--primary-foreground:240 5.9% 10%;--secondary:240 3.7% 15.9%;--secondary-foreground:0 0% 98%;--muted:240 3.7% 15.9%;--muted-foreground:240 5% 64.9%;--accent:240 3.7% 15.9%;--accent-foreground:0 0% 98%;--destructive:0 62.8% 30.6%;--destructive-foreground:0 0% 98%;--border:240 3.7% 15.9%;--input:240 3.7% 15.9%;--ring:240 4.9% 83.9%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));font-family:system-ui,-apple-system,sans-serif}@keyframes popover-enter{0%{opacity:0;transform:translateY(-4px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.popover-enter{transform-origin:100% 0;animation:.14s cubic-bezier(.16,1,.3,1) popover-enter}@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-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-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-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{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-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-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}
|
package/dist/client/index.html
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>Axl Studio</title>
|
|
7
|
-
<script type="module" crossorigin src="./assets/index-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
7
|
+
<script type="module" crossorigin src="./assets/index-ClajLxib.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="./assets/index-DnHL_gtF.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="root"></div>
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { AxlRuntime } from '@axlsdk/axl';
|
|
2
|
+
|
|
3
|
+
/** Cost aggregation data */
|
|
4
|
+
type CostData = {
|
|
5
|
+
totalCost: number;
|
|
6
|
+
totalTokens: {
|
|
7
|
+
input: number;
|
|
8
|
+
output: number;
|
|
9
|
+
reasoning: number;
|
|
10
|
+
};
|
|
11
|
+
byAgent: Record<string, {
|
|
12
|
+
cost: number;
|
|
13
|
+
calls: number;
|
|
14
|
+
}>;
|
|
15
|
+
byModel: Record<string, {
|
|
16
|
+
cost: number;
|
|
17
|
+
calls: number;
|
|
18
|
+
tokens: {
|
|
19
|
+
input: number;
|
|
20
|
+
output: number;
|
|
21
|
+
};
|
|
22
|
+
}>;
|
|
23
|
+
byWorkflow: Record<string, {
|
|
24
|
+
cost: number;
|
|
25
|
+
executions: number;
|
|
26
|
+
}>;
|
|
27
|
+
/**
|
|
28
|
+
* Cost decomposition by retry reason. `primary` accumulates cost from
|
|
29
|
+
* `agent_call` events WITHOUT a `retryReason` (first-attempt calls).
|
|
30
|
+
* The other buckets accumulate cost from retry calls — the extra money
|
|
31
|
+
* paid because a gate failed and the loop had to re-ask the LLM.
|
|
32
|
+
*
|
|
33
|
+
* Each bucket has a parallel `*Calls` counter so the UI can show exact
|
|
34
|
+
* call counts alongside cost. `retryCalls` is the sum across all retry
|
|
35
|
+
* reasons (not primary).
|
|
36
|
+
*/
|
|
37
|
+
retry: {
|
|
38
|
+
primary: number;
|
|
39
|
+
primaryCalls: number;
|
|
40
|
+
schema: number;
|
|
41
|
+
schemaCalls: number;
|
|
42
|
+
validate: number;
|
|
43
|
+
validateCalls: number;
|
|
44
|
+
guardrail: number;
|
|
45
|
+
guardrailCalls: number;
|
|
46
|
+
retryCalls: number;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Embedder cost from `ctx.remember({embed: true})` and semantic
|
|
50
|
+
* `ctx.recall({query})`. Keyed by embedder model (e.g.
|
|
51
|
+
* `text-embedding-3-small`), or `'unknown'` if the embedder didn't
|
|
52
|
+
* report a model name. Tokens are a flat count because embedding
|
|
53
|
+
* APIs don't differentiate input/output — it's just "tokens fed in".
|
|
54
|
+
*
|
|
55
|
+
* These costs are *also* counted in `totalCost` (embedder cost rides
|
|
56
|
+
* the same top-level `event.cost` rail as agent cost), so the retry
|
|
57
|
+
* and byAgent/byModel/byWorkflow buckets will always sum to ≤
|
|
58
|
+
* totalCost; the difference is the embedder spend.
|
|
59
|
+
*/
|
|
60
|
+
byEmbedder: Record<string, {
|
|
61
|
+
cost: number;
|
|
62
|
+
calls: number;
|
|
63
|
+
tokens: number;
|
|
64
|
+
}>;
|
|
65
|
+
};
|
|
66
|
+
/** Hono app environment bindings */
|
|
67
|
+
type StudioEnv = {
|
|
68
|
+
Variables: {
|
|
69
|
+
runtime: AxlRuntime;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Minimal interface for a connection that can receive broadcast messages.
|
|
75
|
+
* Satisfied by WSContext (Hono), ws.WebSocket (Node.js), and the middleware's
|
|
76
|
+
* adapted socket. Internal to ConnectionManager — not part of the public API.
|
|
77
|
+
*/
|
|
78
|
+
interface BroadcastTarget {
|
|
79
|
+
send(data: string): void;
|
|
80
|
+
close?(): void;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Operator-tunable replay-buffer resource limits. Exposed via
|
|
84
|
+
* `createStudioMiddleware({ bufferCaps })` and `createServer({ bufferCaps })`
|
|
85
|
+
* so production deployments can tighten or relax memory pressure
|
|
86
|
+
* without forking the package.
|
|
87
|
+
*
|
|
88
|
+
* All three fields are optional; omitted fields fall back to their
|
|
89
|
+
* documented defaults, so passing `{}` is a no-op.
|
|
90
|
+
*/
|
|
91
|
+
interface BufferCaps {
|
|
92
|
+
/** Per-channel buffered event count cap. Default: 1000. */
|
|
93
|
+
maxEventsPerBuffer?: number;
|
|
94
|
+
/** Per-channel buffered byte budget. Default: 4 MiB. */
|
|
95
|
+
maxBytesPerBuffer?: number;
|
|
96
|
+
/** Global concurrently-live buffer cap. Default: 256. */
|
|
97
|
+
maxActiveBuffers?: number;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Per-event, per-connection filter used by multi-tenant integrators to scope
|
|
101
|
+
* the trace firehose. Return `true` to deliver the event to this connection,
|
|
102
|
+
* `false` to skip it.
|
|
103
|
+
*
|
|
104
|
+
* `event` is the parsed payload (the same shape that was passed to `broadcast`);
|
|
105
|
+
* `metadata` is whatever the middleware attached via `setMetadata(ws, ...)`
|
|
106
|
+
* after a successful `verifyUpgrade` — typically `{ userId, tenantId }` or
|
|
107
|
+
* similar, sourced from the upgrade request's auth token.
|
|
108
|
+
*/
|
|
109
|
+
type BroadcastFilter = (event: unknown, metadata: unknown) => boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Manages WebSocket connections and channel subscriptions.
|
|
112
|
+
* Supports channel multiplexing: clients subscribe/unsubscribe to channels
|
|
113
|
+
* and receive events only for channels they're subscribed to.
|
|
114
|
+
*
|
|
115
|
+
* Execution channels (`execution:*`) are replay-buffered: events are stored
|
|
116
|
+
* so that late subscribers receive the full event history. Buffers are cleaned
|
|
117
|
+
* up shortly after the stream completes.
|
|
118
|
+
*
|
|
119
|
+
* Multi-tenant deployments can attach per-connection metadata via
|
|
120
|
+
* `setMetadata(ws, data)` and register a `BroadcastFilter` to scope the
|
|
121
|
+
* trace firehose to the authenticated user/tenant.
|
|
122
|
+
*/
|
|
123
|
+
declare class ConnectionManager {
|
|
124
|
+
/** channel -> set of WS connections */
|
|
125
|
+
private channels;
|
|
126
|
+
/** ws -> subscribed channels + optional integrator-supplied metadata */
|
|
127
|
+
private connections;
|
|
128
|
+
/** channel -> replay buffer for execution streams */
|
|
129
|
+
private buffers;
|
|
130
|
+
private maxConnections;
|
|
131
|
+
private filter?;
|
|
132
|
+
/** Resolved replay-buffer caps. Per-instance so embedders can dial them
|
|
133
|
+
* without monkey-patching module-level constants. */
|
|
134
|
+
private readonly maxEventsPerBuffer;
|
|
135
|
+
private readonly maxBytesPerBuffer;
|
|
136
|
+
private readonly maxActiveBuffers;
|
|
137
|
+
constructor(bufferCaps?: BufferCaps);
|
|
138
|
+
/**
|
|
139
|
+
* Register a broadcast filter. Called once at middleware construction.
|
|
140
|
+
* The filter runs on every outbound event and can drop or deliver based
|
|
141
|
+
* on the destination connection's metadata.
|
|
142
|
+
*/
|
|
143
|
+
setFilter(filter: BroadcastFilter | undefined): void;
|
|
144
|
+
/** Attach integrator-supplied metadata to an already-added connection. */
|
|
145
|
+
setMetadata(ws: BroadcastTarget, metadata: unknown): void;
|
|
146
|
+
/** Register a new WS connection. */
|
|
147
|
+
add(ws: BroadcastTarget): void;
|
|
148
|
+
/** Remove a WS connection and all its subscriptions. */
|
|
149
|
+
remove(ws: BroadcastTarget): void;
|
|
150
|
+
/** Subscribe a connection to a channel. Replays buffered events for execution channels. */
|
|
151
|
+
subscribe(ws: BroadcastTarget, channel: string): void;
|
|
152
|
+
/** Unsubscribe a connection from a channel. */
|
|
153
|
+
unsubscribe(ws: BroadcastTarget, channel: string): void;
|
|
154
|
+
/** Broadcast data to all subscribers of a channel. Buffers events for execution channels. */
|
|
155
|
+
broadcast(channel: string, data: unknown): void;
|
|
156
|
+
/** Broadcast to channel and all wildcard subscribers (e.g., trace:* matches trace:abc). */
|
|
157
|
+
broadcastWithWildcard(channel: string, data: unknown): void;
|
|
158
|
+
/** Close all connections, clear all state and buffers. Used during shutdown. */
|
|
159
|
+
closeAll(): void;
|
|
160
|
+
/** Get the number of active connections. */
|
|
161
|
+
get connectionCount(): number;
|
|
162
|
+
/** Check if any connections are subscribed to a channel. */
|
|
163
|
+
hasSubscribers(channel: string): boolean;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export { type BroadcastTarget as B, ConnectionManager as C, type StudioEnv as S, type BufferCaps as a, type CostData as b };
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { AxlRuntime } from '@axlsdk/axl';
|
|
2
|
+
|
|
3
|
+
/** Cost aggregation data */
|
|
4
|
+
type CostData = {
|
|
5
|
+
totalCost: number;
|
|
6
|
+
totalTokens: {
|
|
7
|
+
input: number;
|
|
8
|
+
output: number;
|
|
9
|
+
reasoning: number;
|
|
10
|
+
};
|
|
11
|
+
byAgent: Record<string, {
|
|
12
|
+
cost: number;
|
|
13
|
+
calls: number;
|
|
14
|
+
}>;
|
|
15
|
+
byModel: Record<string, {
|
|
16
|
+
cost: number;
|
|
17
|
+
calls: number;
|
|
18
|
+
tokens: {
|
|
19
|
+
input: number;
|
|
20
|
+
output: number;
|
|
21
|
+
};
|
|
22
|
+
}>;
|
|
23
|
+
byWorkflow: Record<string, {
|
|
24
|
+
cost: number;
|
|
25
|
+
executions: number;
|
|
26
|
+
}>;
|
|
27
|
+
/**
|
|
28
|
+
* Cost decomposition by retry reason. `primary` accumulates cost from
|
|
29
|
+
* `agent_call` events WITHOUT a `retryReason` (first-attempt calls).
|
|
30
|
+
* The other buckets accumulate cost from retry calls — the extra money
|
|
31
|
+
* paid because a gate failed and the loop had to re-ask the LLM.
|
|
32
|
+
*
|
|
33
|
+
* Each bucket has a parallel `*Calls` counter so the UI can show exact
|
|
34
|
+
* call counts alongside cost. `retryCalls` is the sum across all retry
|
|
35
|
+
* reasons (not primary).
|
|
36
|
+
*/
|
|
37
|
+
retry: {
|
|
38
|
+
primary: number;
|
|
39
|
+
primaryCalls: number;
|
|
40
|
+
schema: number;
|
|
41
|
+
schemaCalls: number;
|
|
42
|
+
validate: number;
|
|
43
|
+
validateCalls: number;
|
|
44
|
+
guardrail: number;
|
|
45
|
+
guardrailCalls: number;
|
|
46
|
+
retryCalls: number;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Embedder cost from `ctx.remember({embed: true})` and semantic
|
|
50
|
+
* `ctx.recall({query})`. Keyed by embedder model (e.g.
|
|
51
|
+
* `text-embedding-3-small`), or `'unknown'` if the embedder didn't
|
|
52
|
+
* report a model name. Tokens are a flat count because embedding
|
|
53
|
+
* APIs don't differentiate input/output — it's just "tokens fed in".
|
|
54
|
+
*
|
|
55
|
+
* These costs are *also* counted in `totalCost` (embedder cost rides
|
|
56
|
+
* the same top-level `event.cost` rail as agent cost), so the retry
|
|
57
|
+
* and byAgent/byModel/byWorkflow buckets will always sum to ≤
|
|
58
|
+
* totalCost; the difference is the embedder spend.
|
|
59
|
+
*/
|
|
60
|
+
byEmbedder: Record<string, {
|
|
61
|
+
cost: number;
|
|
62
|
+
calls: number;
|
|
63
|
+
tokens: number;
|
|
64
|
+
}>;
|
|
65
|
+
};
|
|
66
|
+
/** Hono app environment bindings */
|
|
67
|
+
type StudioEnv = {
|
|
68
|
+
Variables: {
|
|
69
|
+
runtime: AxlRuntime;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Minimal interface for a connection that can receive broadcast messages.
|
|
75
|
+
* Satisfied by WSContext (Hono), ws.WebSocket (Node.js), and the middleware's
|
|
76
|
+
* adapted socket. Internal to ConnectionManager — not part of the public API.
|
|
77
|
+
*/
|
|
78
|
+
interface BroadcastTarget {
|
|
79
|
+
send(data: string): void;
|
|
80
|
+
close?(): void;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Operator-tunable replay-buffer resource limits. Exposed via
|
|
84
|
+
* `createStudioMiddleware({ bufferCaps })` and `createServer({ bufferCaps })`
|
|
85
|
+
* so production deployments can tighten or relax memory pressure
|
|
86
|
+
* without forking the package.
|
|
87
|
+
*
|
|
88
|
+
* All three fields are optional; omitted fields fall back to their
|
|
89
|
+
* documented defaults, so passing `{}` is a no-op.
|
|
90
|
+
*/
|
|
91
|
+
interface BufferCaps {
|
|
92
|
+
/** Per-channel buffered event count cap. Default: 1000. */
|
|
93
|
+
maxEventsPerBuffer?: number;
|
|
94
|
+
/** Per-channel buffered byte budget. Default: 4 MiB. */
|
|
95
|
+
maxBytesPerBuffer?: number;
|
|
96
|
+
/** Global concurrently-live buffer cap. Default: 256. */
|
|
97
|
+
maxActiveBuffers?: number;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Per-event, per-connection filter used by multi-tenant integrators to scope
|
|
101
|
+
* the trace firehose. Return `true` to deliver the event to this connection,
|
|
102
|
+
* `false` to skip it.
|
|
103
|
+
*
|
|
104
|
+
* `event` is the parsed payload (the same shape that was passed to `broadcast`);
|
|
105
|
+
* `metadata` is whatever the middleware attached via `setMetadata(ws, ...)`
|
|
106
|
+
* after a successful `verifyUpgrade` — typically `{ userId, tenantId }` or
|
|
107
|
+
* similar, sourced from the upgrade request's auth token.
|
|
108
|
+
*/
|
|
109
|
+
type BroadcastFilter = (event: unknown, metadata: unknown) => boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Manages WebSocket connections and channel subscriptions.
|
|
112
|
+
* Supports channel multiplexing: clients subscribe/unsubscribe to channels
|
|
113
|
+
* and receive events only for channels they're subscribed to.
|
|
114
|
+
*
|
|
115
|
+
* Execution channels (`execution:*`) are replay-buffered: events are stored
|
|
116
|
+
* so that late subscribers receive the full event history. Buffers are cleaned
|
|
117
|
+
* up shortly after the stream completes.
|
|
118
|
+
*
|
|
119
|
+
* Multi-tenant deployments can attach per-connection metadata via
|
|
120
|
+
* `setMetadata(ws, data)` and register a `BroadcastFilter` to scope the
|
|
121
|
+
* trace firehose to the authenticated user/tenant.
|
|
122
|
+
*/
|
|
123
|
+
declare class ConnectionManager {
|
|
124
|
+
/** channel -> set of WS connections */
|
|
125
|
+
private channels;
|
|
126
|
+
/** ws -> subscribed channels + optional integrator-supplied metadata */
|
|
127
|
+
private connections;
|
|
128
|
+
/** channel -> replay buffer for execution streams */
|
|
129
|
+
private buffers;
|
|
130
|
+
private maxConnections;
|
|
131
|
+
private filter?;
|
|
132
|
+
/** Resolved replay-buffer caps. Per-instance so embedders can dial them
|
|
133
|
+
* without monkey-patching module-level constants. */
|
|
134
|
+
private readonly maxEventsPerBuffer;
|
|
135
|
+
private readonly maxBytesPerBuffer;
|
|
136
|
+
private readonly maxActiveBuffers;
|
|
137
|
+
constructor(bufferCaps?: BufferCaps);
|
|
138
|
+
/**
|
|
139
|
+
* Register a broadcast filter. Called once at middleware construction.
|
|
140
|
+
* The filter runs on every outbound event and can drop or deliver based
|
|
141
|
+
* on the destination connection's metadata.
|
|
142
|
+
*/
|
|
143
|
+
setFilter(filter: BroadcastFilter | undefined): void;
|
|
144
|
+
/** Attach integrator-supplied metadata to an already-added connection. */
|
|
145
|
+
setMetadata(ws: BroadcastTarget, metadata: unknown): void;
|
|
146
|
+
/** Register a new WS connection. */
|
|
147
|
+
add(ws: BroadcastTarget): void;
|
|
148
|
+
/** Remove a WS connection and all its subscriptions. */
|
|
149
|
+
remove(ws: BroadcastTarget): void;
|
|
150
|
+
/** Subscribe a connection to a channel. Replays buffered events for execution channels. */
|
|
151
|
+
subscribe(ws: BroadcastTarget, channel: string): void;
|
|
152
|
+
/** Unsubscribe a connection from a channel. */
|
|
153
|
+
unsubscribe(ws: BroadcastTarget, channel: string): void;
|
|
154
|
+
/** Broadcast data to all subscribers of a channel. Buffers events for execution channels. */
|
|
155
|
+
broadcast(channel: string, data: unknown): void;
|
|
156
|
+
/** Broadcast to channel and all wildcard subscribers (e.g., trace:* matches trace:abc). */
|
|
157
|
+
broadcastWithWildcard(channel: string, data: unknown): void;
|
|
158
|
+
/** Close all connections, clear all state and buffers. Used during shutdown. */
|
|
159
|
+
closeAll(): void;
|
|
160
|
+
/** Get the number of active connections. */
|
|
161
|
+
get connectionCount(): number;
|
|
162
|
+
/** Check if any connections are subscribed to a channel. */
|
|
163
|
+
hasSubscribers(channel: string): boolean;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export { type BroadcastTarget as B, ConnectionManager as C, type StudioEnv as S, type BufferCaps as a, type CostData as b };
|