@auersperg/flare 0.3.5 → 0.3.7

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.
Files changed (25) hide show
  1. package/dist/cli/flare.js +1 -1
  2. package/dist/platform/admin.js +21 -7
  3. package/dist/platform/dashboard/_astro/{auth-view.UTGGCEHc.js → auth-view.DxyBDw7Z.js} +1 -1
  4. package/dist/platform/dashboard/_astro/cli-approval.C4-RBXQh.js +1 -0
  5. package/dist/platform/dashboard/_astro/common.D6YHScsr.js +1 -0
  6. package/dist/platform/dashboard/_astro/data-view.B2afgdXn.js +1 -0
  7. package/dist/platform/dashboard/_astro/functions-view.B0jPBNNy.js +1 -0
  8. package/dist/platform/dashboard/_astro/index.BPQdjJ4j.css +2 -0
  9. package/dist/platform/dashboard/_astro/index.astro_astro_type_script_index_0_lang.BQ7pqT75.js +3 -0
  10. package/dist/platform/dashboard/_astro/{input-group.CJxPRHej.js → input-group.BziAwKdZ.js} +1 -1
  11. package/dist/platform/dashboard/_astro/{sdk-view.COmbEZrF.js → sdk-view.DAd5aPbd.js} +1 -1
  12. package/dist/platform/dashboard/_astro/services-view.BvkS7FHr.js +1 -0
  13. package/dist/platform/dashboard/_astro/settings-view.BXt0dexJ.js +3 -0
  14. package/dist/platform/dashboard/index.html +1 -1
  15. package/dist/platform/manifest.json +37 -37
  16. package/dist/platform/runtime.js +29 -6
  17. package/package.json +1 -1
  18. package/dist/platform/dashboard/_astro/cli-approval.BZAWmpiR.js +0 -1
  19. package/dist/platform/dashboard/_astro/common.DPoFQu44.js +0 -1
  20. package/dist/platform/dashboard/_astro/data-view.BgYyTCMN.js +0 -1
  21. package/dist/platform/dashboard/_astro/functions-view.PUkng3T1.js +0 -1
  22. package/dist/platform/dashboard/_astro/index.astro_astro_type_script_index_0_lang.BEuO3H0E.js +0 -4
  23. package/dist/platform/dashboard/_astro/index.lobU7uK5.css +0 -2
  24. package/dist/platform/dashboard/_astro/services-view.C34dy0dk.js +0 -1
  25. package/dist/platform/dashboard/_astro/settings-view.IuD2r5JW.js +0 -3
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.3.3 | 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)))){:root,:host{--shimmer-angle:20deg}*,:before,:after,::backdrop{--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-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-duration:initial;--tw-content:"";--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-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;--scroll-fade-t:0px;--scroll-fade-b:0px;--scroll-fade-s:0px;--scroll-fade-e:0px;--scroll-fade-mask:initial;--shimmer-image:initial;--shimmer-text-fill:initial;--tw-tracking:initial}}}@layer theme{:root,:host{--font-sans:"Geist Variable", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-900:oklch(41.4% .112 45.904);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-900:oklch(42.1% .095 57.708);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-900:oklch(37.8% .077 168.94);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-400:oklch(70.7% .165 254.624);--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-purple-100:oklch(94.6% .033 307.174);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-900:oklch(38.1% .176 304.987);--color-black:#000;--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--container-xl:36rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--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;--tracking-tight:-.025em;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Geist Variable", sans-serif;--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,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, 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]){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:where(:not(iframe)){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}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}body{background-color:var(--background);color:var(--foreground)}html{font-family:Geist Variable,sans-serif}body{margin:0}button,summary{cursor:pointer}}@layer components{.page-title{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.section-title{align-items:center;gap:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);display:flex}.explorer-sidebar{width:calc(var(--spacing) * 40);border-right-style:var(--tw-border-style);background-color:var(--sidebar);border-right-width:1px;flex-shrink:0}@supports (color:color-mix(in lab, red, red)){.explorer-sidebar{background-color:color-mix(in oklab, var(--sidebar) 40%, transparent)}}@media (width>=48rem){.explorer-sidebar{width:calc(var(--spacing) * 60)}}.detail-header{justify-content:space-between;align-items:center;gap:calc(var(--spacing) * 2);border-bottom-style:var(--tw-border-style);padding:calc(var(--spacing) * 4);border-bottom-width:1px;flex-wrap:wrap;display:flex}.code-block{border-style:var(--tw-border-style);background-color:var(--muted);border-width:1px;min-width:0;max-width:100%;overflow:auto}@supports (color:color-mix(in lab, red, red)){.code-block{background-color:color-mix(in oklab, var(--muted) 30%, transparent)}}.code-block{padding:calc(var(--spacing) * 4);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);white-space:pre}}@layer utilities{.\@container\/card-header{container:card-header/inline-size}.\@container\/field-group{container:field-group/inline-size}.pointer-events-none{pointer-events:none}.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}.sticky{position:sticky}.inset-0{inset:0}.top-0{top:0}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-\[calc\(--spacing\(1\.25\)\)\]{top:calc(calc(var(--spacing) * 1.25))}.right-2{right:calc(var(--spacing) * 2)}.right-\[calc\(--spacing\(1\.25\)\)\]{right:calc(calc(var(--spacing) * 1.25))}.bottom-0{bottom:0}.left-1\/2{left:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.order-first{order:-9999}.order-last{order:9999}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.-my-2{margin-block:calc(var(--spacing) * -2)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-auto{margin-top:auto}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-4{margin-left:calc(var(--spacing) * 4)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-14{height:calc(var(--spacing) * 14)}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-\(--available-height\){max-height:var(--available-height)}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.min-h-0{min-height:0}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-full{min-height:100%}.w-\(--anchor-width\){width:var(--anchor-width)}.w-12{width:calc(var(--spacing) * 12)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-48{max-width:calc(var(--spacing) * 48)}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.min-w-36{min-width:calc(var(--spacing) * 36)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.origin-\(--transform-origin\){transform-origin:var(--transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);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)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize-none{resize:none}.scroll-my-1{scroll-margin-block:var(--spacing)}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-\[minmax\(80px\,auto\)_1fr\]{grid-template-columns:minmax(80px,auto) 1fr}.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-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-\(--card-spacing\){gap:var(--card-spacing)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.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)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * 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)))}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius)}.rounded-none{border-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.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-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-600\/20{border-color:#dd740033}@supports (color:color-mix(in lab, red, red)){.border-amber-600\/20{border-color:color-mix(in oklab, var(--color-amber-600) 20%, transparent)}}.border-blue-600\/20{border-color:#155dfc33}@supports (color:color-mix(in lab, red, red)){.border-blue-600\/20{border-color:color-mix(in oklab, var(--color-blue-600) 20%, transparent)}}.border-border{border-color:var(--border)}.border-emerald-600\/20{border-color:#00976733}@supports (color:color-mix(in lab, red, red)){.border-emerald-600\/20{border-color:color-mix(in oklab, var(--color-emerald-600) 20%, transparent)}}.border-input{border-color:var(--input)}.border-transparent{border-color:#0000}.bg-accent{background-color:var(--accent)}.bg-amber-100\/50{background-color:#fef3c680}@supports (color:color-mix(in lab, red, red)){.bg-amber-100\/50{background-color:color-mix(in oklab, var(--color-amber-100) 50%, transparent)}}.bg-background{background-color:var(--background)}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.bg-black\/10{background-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.bg-blue-100\/50{background-color:#dbeafe80}@supports (color:color-mix(in lab, red, red)){.bg-blue-100\/50{background-color:color-mix(in oklab, var(--color-blue-100) 50%, transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.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-emerald-100\/50{background-color:#d0fae580}@supports (color:color-mix(in lab, red, red)){.bg-emerald-100\/50{background-color:color-mix(in oklab, var(--color-emerald-100) 50%, transparent)}}.bg-muted,.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{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-purple-100\/50{background-color:#f3e8ff80}@supports (color:color-mix(in lab, red, red)){.bg-purple-100\/50{background-color:color-mix(in oklab, var(--color-purple-100) 50%, transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-accent{background-color:var(--sidebar-accent)}.bg-transparent{background-color:#0000}.bg-yellow-100\/50{background-color:#fef9c280}@supports (color:color-mix(in lab, red, red)){.bg-yellow-100\/50{background-color:color-mix(in oklab, var(--color-yellow-100) 50%, transparent)}}.bg-clip-padding{background-clip:padding-box}.p-\(--card-spacing\){padding:var(--card-spacing)}.p-0{padding:0}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-\[3px\]{padding:3px}.px-\(--card-spacing\){padding-inline:var(--card-spacing)}.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-4{padding-inline:calc(var(--spacing) * 4)}.py-\(--card-spacing\){padding-block:var(--card-spacing)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.pt-0{padding-top:0}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.font-heading{font-family:var(--font-sans)}.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-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-xs\/relaxed{font-size:var(--text-xs);line-height:var(--leading-relaxed)}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.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)}.text-balance{text-wrap:balance}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.text-amber-700{color:var(--color-amber-700)}.text-blue-700{color:var(--color-blue-700)}.text-card-foreground{color:var(--card-foreground)}.text-destructive{color:var(--destructive)}.text-emerald-700{color:var(--color-emerald-700)}.text-foreground,.text-foreground\/60{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/60{color:color-mix(in oklab, var(--foreground) 60%, transparent)}}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-700{color:var(--color-purple-700)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-accent-foreground{color:var(--sidebar-accent-foreground)}.text-yellow-700{color:var(--color-yellow-700)}.underline-offset-4{text-underline-offset:4px}.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-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--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)}.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-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.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))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.\[--card-spacing\:--spacing\(4\)\]{--card-spacing:calc(var(--spacing) * 4)}.paused{animation-play-state:paused}.running{animation-play-state:running}:is(.\*\:w-full>*){width:100%}.group-has-data-horizontal\/field\:text-balance:is(:where(.group\/field):has(:where([data-orientation=horizontal])) *){text-wrap:balance}.group-has-\[\>input\]\/input-group\:pt-2:is(:where(.group\/input-group):has(>input) *){padding-top:calc(var(--spacing) * 2)}.group-has-\[\>input\]\/input-group\:pb-2:is(:where(.group\/input-group):has(>input) *){padding-bottom:calc(var(--spacing) * 2)}.group-has-\[\>svg\]\/alert\:col-start-2:is(:where(.group\/alert):has(>svg) *){grid-column-start:2}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *),.group-data-\[disabled\=true\]\/field\:opacity-50:is(:where(.group\/field)[data-disabled=true] *),.group-data-\[disabled\=true\]\/input-group\:opacity-50:is(:where(.group\/input-group)[data-disabled=true] *){opacity:.5}.group-data-\[size\=sm\]\/card\:text-sm:is(:where(.group\/card)[data-size=sm] *){font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.group-data-\[variant\=line\]\/tabs-list\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *){background-color:#0000}.group-data-\[variant\=outline\]\/field-group\:-mb-2:is(:where(.group\/field-group)[data-variant=outline] *){margin-bottom:calc(var(--spacing) * -2)}.group-data-horizontal\/tabs\:h-8:is(:where(.group\/tabs):where([data-orientation=horizontal]) *){height:calc(var(--spacing) * 8)}.group-data-vertical\/tabs\:h-fit:is(:where(.group\/tabs):where([data-orientation=vertical]) *){height:fit-content}.group-data-vertical\/tabs\:w-full:is(:where(.group\/tabs):where([data-orientation=vertical]) *){width:100%}.group-data-vertical\/tabs\:flex-col:is(:where(.group\/tabs):where([data-orientation=vertical]) *){flex-direction:column}.group-data-vertical\/tabs\:justify-start:is(:where(.group\/tabs):where([data-orientation=vertical]) *){justify-content:flex-start}.group-data-vertical\/tabs\:py-\[calc\(--spacing\(1\.25\)\)\]:is(:where(.group\/tabs):where([data-orientation=vertical]) *){padding-block:calc(calc(var(--spacing) * 1.25))}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-6::file-selector-button{height:calc(var(--spacing) * 6)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-xs::file-selector-button{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:bg-foreground:after{content:var(--tw-content);background-color:var(--foreground)}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.after\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.group-data-horizontal\/tabs\:after\:inset-x-0:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);inset-inline:0}.group-data-horizontal\/tabs\:after\:bottom-\[-5px\]:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);bottom:-5px}.group-data-horizontal\/tabs\:after\:h-0\.5:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.group-data-vertical\/tabs\:after\:inset-y-0:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);inset-block:0}.group-data-vertical\/tabs\:after\:-right-1:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);right:calc(var(--spacing) * -1)}.group-data-vertical\/tabs\:after\:w-0\.5:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);width:calc(var(--spacing) * .5)}.last\:mt-0:last-child{margin-top:0}@media (hover:hover){.hover\:bg-\[color-mix\(in_oklch\,var\(--secondary\)\,var\(--foreground\)_5\%\)\]:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[color-mix\(in_oklch\,var\(--secondary\)\,var\(--foreground\)_5\%\)\]:hover{background-color:color-mix(in oklch,var(--secondary),var(--foreground) 5%)}}.hover\:bg-destructive\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.hover\:bg-muted:hover,.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab, var(--muted) 50%, 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\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus,:is(.not-data-\[variant\=destructive\]\:focus\:\*\*\:text-accent-foreground:not([data-variant=destructive]):focus *){color:var(--accent-foreground)}.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.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-\[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-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-ring:focus-visible{outline-color:var(--ring)}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-input\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.disabled\:bg-transparent:disabled{background-color:#0000}.disabled\:opacity-50:disabled{opacity:.5}:where([data-slot=combobox-content]) .in-data-\[slot\=combobox-content\]\:focus-within\:border-inherit:focus-within{border-color:inherit}:where([data-slot=combobox-content]) .in-data-\[slot\=combobox-content\]\:focus-within\:ring-0:focus-within{--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)}.has-disabled\:bg-input\/50:has(:disabled){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.has-disabled\:bg-input\/50:has(:disabled){background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.has-disabled\:opacity-50:has(:disabled){opacity:.5}.has-aria-expanded\:bg-muted\/50:has([aria-expanded=true]){background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.has-aria-expanded\:bg-muted\/50:has([aria-expanded=true]){background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.has-data-\[icon\=inline-end\]\:pr-1:has([data-icon=inline-end]){padding-right:var(--spacing)}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-start\]\:pl-1:has([data-icon=inline-start]){padding-left:var(--spacing)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.has-data-\[slot\=alert-action\]\:relative:has([data-slot=alert-action]){position:relative}.has-data-\[slot\=alert-action\]\:pr-18:has([data-slot=alert-action]){padding-right:calc(var(--spacing) * 18)}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[slot\=card-description\]\:grid-rows-\[auto_auto\]:has([data-slot=card-description]){grid-template-rows:auto auto}.has-data-\[slot\=card-footer\]\:pb-0:has([data-slot=card-footer]){padding-bottom:0}.has-data-checked\:border-primary\/30:has(:where([data-state=checked]),:where([data-checked]:not([data-checked=false]))){border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.has-data-checked\:border-primary\/30:has(:where([data-state=checked]),:where([data-checked]:not([data-checked=false]))){border-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.has-data-checked\:bg-primary\/5:has(:where([data-state=checked]),:where([data-checked]:not([data-checked=false]))){background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.has-data-checked\:bg-primary\/5:has(:where([data-state=checked]),:where([data-checked]:not([data-checked=false]))){background-color:color-mix(in oklab, var(--primary) 5%, transparent)}}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:var(--ring)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-1:has([data-slot=input-group-control]: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)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:border-destructive:has([data-slot][aria-invalid=true]){border-color:var(--destructive)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-1:has([data-slot][aria-invalid=true]){--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)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>\[data-slot\=checkbox-group\]\]\:gap-3:has(>[data-slot=checkbox-group]){gap:calc(var(--spacing) * 3)}.has-\[\>\[data-slot\=field-content\]\]\:items-start:has(>[data-slot=field-content]){align-items:flex-start}.has-\[\>\[data-slot\=field\]\]\:w-full:has(>[data-slot=field]){width:100%}.has-\[\>\[data-slot\=field\]\]\:flex-col:has(>[data-slot=field]){flex-direction:column}.has-\[\>\[data-slot\=field\]\]\:rounded-none:has(>[data-slot=field]){border-radius:0}.has-\[\>\[data-slot\=field\]\]\:border:has(>[data-slot=field]){border-style:var(--tw-border-style);border-width:1px}@media (hover:hover){.has-\[\>\[data-slot\=field\]\]\:not-has-\[\:disabled\,\[data-disabled\]\]\:hover\:bg-muted\/50:has(>[data-slot=field]):not(:has(:is(:disabled,[data-disabled]))):hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.has-\[\>\[data-slot\=field\]\]\:not-has-\[\:disabled\,\[data-disabled\]\]\:hover\:bg-muted\/50:has(>[data-slot=field]):not(:has(:is(:disabled,[data-disabled]))):hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}}.has-\[\>\[data-slot\=field\]\]\:has-\[\:focus-visible\]\:border-ring:has(>[data-slot=field]):has(:focus-visible){border-color:var(--ring)}.has-\[\>\[data-slot\=field\]\]\:has-\[\:focus-visible\]\:ring-1:has(>[data-slot=field]):has(: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)}.has-\[\>\[data-slot\=field\]\]\:has-\[\:focus-visible\]\:ring-ring\/50:has(>[data-slot=field]):has(:focus-visible){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.has-\[\>\[data-slot\=field\]\]\:has-\[\:focus-visible\]\:ring-ring\/50:has(>[data-slot=field]):has(:focus-visible){--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.has-\[\>\[data-slot\=radio-group\]\]\:gap-3:has(>[data-slot=radio-group]){gap:calc(var(--spacing) * 3)}.has-\[\>button\]\:mr-\[-0\.3rem\]:has(>button){margin-right:-.3rem}.has-\[\>button\]\:ml-\[-0\.3rem\]:has(>button){margin-left:-.3rem}.has-\[\>img\:first-child\]\:pt-0:has(>img:first-child){padding-top:0}.has-\[\>kbd\]\:mr-\[-0\.15rem\]:has(>kbd){margin-right:-.15rem}.has-\[\>kbd\]\:ml-\[-0\.15rem\]:has(>kbd){margin-left:-.15rem}.has-\[\>svg\]\:grid-cols-\[auto_1fr\]:has(>svg){grid-template-columns:auto 1fr}.has-\[\>svg\]\:gap-x-2:has(>svg){column-gap:calc(var(--spacing) * 2)}.has-\[\>svg\]\:p-0:has(>svg){padding:0}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-0[aria-invalid=true]{--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)}.aria-invalid\:ring-1[aria-invalid=true]{--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)}.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-placeholder\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[align-trigger\=true\]\:animate-none[data-align-trigger=true]{animation:none}.data-\[invalid\=true\]\:text-destructive[data-invalid=true]{color:var(--destructive)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=inline-end\]\:slide-in-from-left-2[data-side=inline-end]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=inline-start\]\:slide-in-from-right-2[data-side=inline-start],.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-8[data-size=default]{height:calc(var(--spacing) * 8)}.data-\[size\=sm\]\:h-7[data-size=sm]{height:calc(var(--spacing) * 7)}.data-\[size\=sm\]\:rounded-none[data-size=sm]{border-radius:0}.data-\[size\=sm\]\:\[--card-spacing\:--spacing\(3\)\][data-size=sm]{--card-spacing:calc(var(--spacing) * 3)}.data-\[size\=sm\]\:has-data-\[slot\=card-footer\]\:pb-0[data-size=sm]:has([data-slot=card-footer]){padding-bottom:0}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.data-\[slot\=checkbox-group\]\:gap-3[data-slot=checkbox-group]{gap:calc(var(--spacing) * 3)}:is(.\*\:data-\[slot\=field\]\:p-2>*)[data-slot=field]{padding:calc(var(--spacing) * 2)}:is(.\*\:data-\[slot\=field-group\]\:gap-4>*)[data-slot=field-group]{gap:calc(var(--spacing) * 4)}:is(.\*\:data-\[slot\=field-label\]\:flex-auto>*)[data-slot=field-label]{flex:auto}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-1\.5>*)[data-slot=select-value]{gap:calc(var(--spacing) * 1.5)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[variant\=label\]\:text-xs[data-variant=label]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.data-\[variant\=legend\]\:text-sm[data-variant=legend]{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.data-\[variant\=line\]\:rounded-none[data-variant=line]{border-radius:0}.nth-last-2\:-mt-1:nth-last-child(2){margin-top:calc(var(--spacing) * -1)}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-backdrop-filter\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));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,)}}@media (width>=40rem){.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}}@media (width>=48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.md\:text-pretty{text-wrap:pretty}}@media (width>=64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.lg\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}@container field-group (width>=28rem){.\@md\/field-group\:flex-row{flex-direction:row}.\@md\/field-group\:items-center{align-items:center}:is(.\@md\/field-group\:\*\:w-auto>*){width:auto}.\@md\/field-group\:has-\[\>\[data-slot\=field-content\]\]\:items-start:has(>[data-slot=field-content]){align-items:flex-start}:is(.\@md\/field-group\:\*\:data-\[slot\=field-label\]\:flex-auto>*)[data-slot=field-label]{flex:auto}}.dark\:border-amber-400\/20:is(.dark *){border-color:#fcbb0033}@supports (color:color-mix(in lab, red, red)){.dark\:border-amber-400\/20:is(.dark *){border-color:color-mix(in oklab, var(--color-amber-400) 20%, transparent)}}.dark\:border-blue-400\/20:is(.dark *){border-color:#54a2ff33}@supports (color:color-mix(in lab, red, red)){.dark\:border-blue-400\/20:is(.dark *){border-color:color-mix(in oklab, var(--color-blue-400) 20%, transparent)}}.dark\:border-emerald-400\/20:is(.dark *){border-color:#00d29433}@supports (color:color-mix(in lab, red, red)){.dark\:border-emerald-400\/20:is(.dark *){border-color:color-mix(in oklab, var(--color-emerald-400) 20%, transparent)}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-amber-900\/50:is(.dark *){background-color:#7b330680}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-900\/50:is(.dark *){background-color:color-mix(in oklab, var(--color-amber-900) 50%, transparent)}}.dark\:bg-blue-900\/50:is(.dark *){background-color:#1c398e80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-900\/50:is(.dark *){background-color:color-mix(in oklab, var(--color-blue-900) 50%, transparent)}}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.dark\:bg-emerald-900\/50:is(.dark *){background-color:#004e3b80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-900\/50:is(.dark *){background-color:color-mix(in oklab, var(--color-emerald-900) 50%, 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-purple-900\/50:is(.dark *){background-color:#59168b80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-purple-900\/50:is(.dark *){background-color:color-mix(in oklab, var(--color-purple-900) 50%, transparent)}}.dark\:bg-transparent:is(.dark *){background-color:#0000}.dark\:bg-yellow-900\/50:is(.dark *){background-color:#733e0a80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-yellow-900\/50:is(.dark *){background-color:color-mix(in oklab, var(--color-yellow-900) 50%, transparent)}}.dark\:text-amber-200:is(.dark *){color:var(--color-amber-200)}.dark\:text-blue-200:is(.dark *){color:var(--color-blue-200)}.dark\:text-emerald-200:is(.dark *){color:var(--color-emerald-200)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:text-purple-200:is(.dark *){color:var(--color-purple-200)}.dark\:text-yellow-200:is(.dark *){color:var(--color-yellow-200)}@media (hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab, var(--destructive) 30%, 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\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.dark\:hover\:text-foreground:is(.dark *):hover{color:var(--foreground)}}.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\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:color-mix(in oklab, var(--input) 80%, transparent)}}.dark\:disabled\:bg-transparent:is(.dark *):disabled{background-color:#0000}.dark\:has-disabled\:bg-input\/80:is(.dark *):has(:disabled){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:has-disabled\:bg-input\/80:is(.dark *):has(:disabled){background-color:color-mix(in oklab, var(--input) 80%, transparent)}}.dark\:has-data-checked\:border-primary\/20:is(.dark *):has(:where([data-state=checked]),:where([data-checked]:not([data-checked=false]))){border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.dark\:has-data-checked\:border-primary\/20:is(.dark *):has(:where([data-state=checked]),:where([data-checked]:not([data-checked=false]))){border-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.dark\:has-data-checked\:bg-primary\/10:is(.dark *):has(:where([data-state=checked]),:where([data-checked]:not([data-checked=false]))){background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.dark\:has-data-checked\:bg-primary\/10:is(.dark *):has(:where([data-state=checked]),:where([data-checked]:not([data-checked=false]))){background-color:color-mix(in oklab, var(--primary) 10%, transparent)}}.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:is(.dark *):has([data-slot][aria-invalid=true]){--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:is(.dark *):has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab, var(--destructive) 50%, 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)}}.data-open\:animate-in:where([data-state=open]),.data-open\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0:where([data-state=open]),.data-open\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-state=open]),.data-open\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}.data-closed\:animate-out:where([data-state=closed]),.data-closed\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-state=closed]),.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.data-closed\:zoom-out-95:where([data-state=closed]),.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.data-disabled\:pointer-events-none:where([data-disabled=true]),.data-disabled\:pointer-events-none:where([data-disabled]:not([data-disabled=false])){pointer-events:none}.data-disabled\:opacity-50:where([data-disabled=true]),.data-disabled\:opacity-50:where([data-disabled]:not([data-disabled=false])){opacity:.5}.data-active\:bg-background:where([data-state=active]),.data-active\:bg-background:where([data-active]:not([data-active=false])){background-color:var(--background)}.data-active\:text-foreground:where([data-state=active]),.data-active\:text-foreground:where([data-active]:not([data-active=false])){color:var(--foreground)}.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}:is(.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false]))):after{content:var(--tw-content);opacity:1}.dark\:data-active\:border-input:is(.dark *):where([data-state=active]),.dark\:data-active\:border-input:is(.dark *):where([data-active]:not([data-active=false])){border-color:var(--input)}.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:data-active\:text-foreground:is(.dark *):where([data-state=active]),.dark\:data-active\:text-foreground:is(.dark *):where([data-active]:not([data-active=false])){color:var(--foreground)}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){border-color:#0000}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}.data-horizontal\:h-px:where([data-orientation=horizontal]){height:1px}.data-horizontal\:w-full:where([data-orientation=horizontal]){width:100%}.data-horizontal\:flex-col:where([data-orientation=horizontal]){flex-direction:column}.data-vertical\:w-px:where([data-orientation=vertical]){width:1px}.data-vertical\:self-stretch:where([data-orientation=vertical]){align-self:stretch}.\[\&_a\]\:underline a{text-decoration-line:underline}.\[\&_a\]\:underline-offset-3 a{text-underline-offset:3px}@media (hover:hover){.\[\&_a\]\:hover\:text-foreground a:hover{color:var(--foreground)}}.\[\&_p\:not\(\:last-child\)\]\:mb-2 p:not(:last-child){margin-bottom:calc(var(--spacing) * 2)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\.border-b\]\:pb-\(--card-spacing\).border-b{padding-bottom:var(--card-spacing)}.\[\.border-b\]\:pb-2.border-b{padding-bottom:calc(var(--spacing) * 2)}.\[\.border-t\]\:pt-2.border-t{padding-top:calc(var(--spacing) * 2)}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media (hover:hover){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.\[a\]\:hover\:bg-muted:is(a):hover{background-color:var(--muted)}.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:color-mix(in oklab, var(--primary) 80%, transparent)}}.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.\[a\]\:hover\:text-muted-foreground:is(a):hover{color:var(--muted-foreground)}:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--foreground)}}:is(.\*\:\[img\:first-child\]\:rounded-none>*):is(img:first-child),:is(.\*\:\[img\:last-child\]\:rounded-none>*):is(img:last-child){border-radius:0}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}:is(.\*\:\[svg\]\:row-span-2>*):is(svg){grid-row:span 2/span 2}:is(.\*\:\[svg\]\:translate-y-0>*):is(svg){--tw-translate-y:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}:is(.\*\:\[svg\]\:text-current>*):is(svg){color:currentColor}:is(.\*\:\[svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>*):is(svg:not([class*=size-])){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>\.sr-only\]\:w-auto>.sr-only{width:auto}.has-\[\>\[data-slot\=field-content\]\]\:\[\&\>\[role\=checkbox\]\,\[role\=radio\]\]\:mt-px:has(>[data-slot=field-content])>[role=checkbox],.has-\[\>\[data-slot\=field-content\]\]\:\[\&\>\[role\=checkbox\]\,\[role\=radio\]\]\:mt-px:has(>[data-slot=field-content]) [role=radio]{margin-top:1px}@container field-group (width>=28rem){.\@md\/field-group\:has-\[\>\[data-slot\=field-content\]\]\:\[\&\>\[role\=checkbox\]\,\[role\=radio\]\]\:mt-px:has(>[data-slot=field-content])>[role=checkbox],.\@md\/field-group\:has-\[\>\[data-slot\=field-content\]\]\:\[\&\>\[role\=checkbox\]\,\[role\=radio\]\]\:mt-px:has(>[data-slot=field-content]) [role=radio]{margin-top:1px}}.\[\&\>a\]\:underline>a{text-decoration-line:underline}.\[\&\>a\]\:underline-offset-4>a{text-underline-offset:4px}.\[\&\>a\:hover\]\:text-primary>a:hover{color:var(--primary)}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>input\]\:pt-3:has(>[data-align=block-end])>input{padding-top:calc(var(--spacing) * 3)}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>input\]\:pb-3:has(>[data-align=block-start])>input{padding-bottom:calc(var(--spacing) * 3)}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-1\.5:has(>[data-align=inline-end])>input{padding-right:calc(var(--spacing) * 1.5)}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-1\.5:has(>[data-align=inline-start])>input{padding-left:calc(var(--spacing) * 1.5)}.\[\&\>kbd\]\:rounded-none>kbd{border-radius:0}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3\!>svg{width:calc(var(--spacing) * 3)!important;height:calc(var(--spacing) * 3)!important}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5>svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}[data-variant=legend]+.\[\[data-variant\=legend\]\+\&\]\:-mt-1\.5{margin-top:calc(var(--spacing) * -1.5)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@property --scroll-fade-t{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-b{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-s{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-e{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-mask{syntax:"*";inherits:false}@property --shimmer-angle{syntax:"<angle>";inherits:true;initial-value:20deg}@property --shimmer-image{syntax:"*";inherits:false}@property --shimmer-text-fill{syntax:"*";inherits:false}@media (prefers-reduced-motion:reduce){.shimmer{-webkit-text-fill-color:currentColor;background-image:none;animation:none}}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--background:oklch(100% 0 0);--foreground:oklch(14.7% .004 49.25);--card:oklch(100% 0 0);--card-foreground:oklch(14.7% .004 49.25);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.7% .004 49.25);--primary:oklch(21.6% .006 56.043);--primary-foreground:oklch(98.5% .001 106.423);--secondary:oklch(97% .001 106.424);--secondary-foreground:oklch(21.6% .006 56.043);--muted:oklch(97% .001 106.424);--muted-foreground:oklch(55.3% .013 58.071);--accent:oklch(97% .001 106.424);--accent-foreground:oklch(21.6% .006 56.043);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.3% .003 48.717);--input:oklch(92.3% .003 48.717);--ring:oklch(70.9% .01 56.259);--chart-1:oklch(86.9% .005 56.366);--chart-2:oklch(55.3% .013 58.071);--chart-3:oklch(44.4% .011 73.639);--chart-4:oklch(37.4% .01 67.558);--chart-5:oklch(26.8% .007 34.298);--radius:.625rem;--sidebar:oklch(98.5% .001 106.423);--sidebar-foreground:oklch(14.7% .004 49.25);--sidebar-primary:oklch(21.6% .006 56.043);--sidebar-primary-foreground:oklch(98.5% .001 106.423);--sidebar-accent:oklch(97% .001 106.424);--sidebar-accent-foreground:oklch(21.6% .006 56.043);--sidebar-border:oklch(92.3% .003 48.717);--sidebar-ring:oklch(70.9% .01 56.259)}.dark{--background:#1d1c1a;--foreground:#f3f1ed;--card:#292825;--card-foreground:#f3f1ed;--popover:#292825;--popover-foreground:#f3f1ed;--primary:#e7e5e4;--primary-foreground:#1d1c1a;--secondary:#393835;--secondary-foreground:#f3f1ed;--muted:#393835;--muted-foreground:#b6b1ab;--accent:#393835;--accent-foreground:#f3f1ed;--destructive:oklch(70.4% .191 22.216);--border:#44423f;--input:#44423f;--ring:#928c84;--chart-1:oklch(86.9% .005 56.366);--chart-2:oklch(55.3% .013 58.071);--chart-3:oklch(44.4% .011 73.639);--chart-4:oklch(37.4% .01 67.558);--chart-5:oklch(26.8% .007 34.298);--sidebar:#292825;--sidebar-foreground:#f3f1ed;--sidebar-primary:#e7e5e4;--sidebar-primary-foreground:#1d1c1a;--sidebar-accent:#393835;--sidebar-accent-foreground:#f3f1ed;--sidebar-border:#44423f;--sidebar-ring:#928c84}@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-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-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@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-tracking{syntax:"*";inherits:false}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
@@ -0,0 +1,3 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["_astro/services-view.BvkS7FHr.js","_astro/client.BeKNsjPN.js","_astro/common.D6YHScsr.js","_astro/client.BUUZgEFj.js","_astro/data-view.B2afgdXn.js","_astro/input-group.BziAwKdZ.js","_astro/functions-view.B0jPBNNy.js","_astro/auth-view.DxyBDw7Z.js","_astro/settings-view.BXt0dexJ.js","_astro/sdk-view.DAd5aPbd.js","_astro/cli-approval.C4-RBXQh.js"])))=>i.map(i=>d[i]);
2
+ import{a as e,r as t,t as n}from"./client.BeKNsjPN.js";import{$ as r,A as i,B as a,C as o,Ct as s,D as c,Dt as l,E as u,Et as d,F as f,G as p,H as m,I as h,J as g,K as _,L as v,M as y,N as b,O as x,Ot as S,P as C,Q as w,S as T,St as E,T as D,Tt as O,U as k,V as A,W as j,X as M,Y as N,Z as ee,_ as P,_t as F,a as I,at as L,b as R,bt as z,dt as te,et as ne,ft as re,g as B,gt as ie,h as V,ht as H,it as U,j as ae,k as oe,kt as W,lt as se,m as ce,mt as le,n as ue,nt as de,o as fe,ot as pe,p as G,pt as K,q as me,r as he,rt as ge,s as q,t as _e,tt as ve,u as J,ut as ye,v as be,vt as xe,w as Se,wt as Ce,x as we,xt as Te,y as Y,yt as Ee,z as De}from"./common.D6YHScsr.js";var Oe={name:`activity`,size:24,node:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]};Oe.node;var ke=W(Oe),Ae={name:`box`,size:24,node:[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]};Ae.node;var je=W(Ae),Me={name:`code`,size:24,node:[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]};Me.node;var Ne=W(Me),Pe={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};Pe.node;var Fe=W(Pe),Ie={name:`file`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}]]};Ie.node;var Le=W(Ie),Re={name:`logs`,size:24,node:[[`path`,{d:`M3 5h1`,key:`1mv5vm`}],[`path`,{d:`M3 12h1`,key:`lp3yf2`}],[`path`,{d:`M3 19h1`,key:`w6f3n9`}],[`path`,{d:`M8 5h1`,key:`1nxr5w`}],[`path`,{d:`M8 12h1`,key:`1con00`}],[`path`,{d:`M8 19h1`,key:`k7p10e`}],[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}]]};Re.node;var ze=W(Re),Be={name:`panel-left-close`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]],aliases:[`sidebar-close`]};Be.node;var Ve=W(Be),He={name:`panel-left-open`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m14 9 3 3-3 3`,key:`8010ee`}]],aliases:[`sidebar-open`]};He.node;var Ue=W(He),We={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]};We.node;var Ge=W(We),Ke={name:`refresh-cw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]};Ke.node;var qe=W(Ke),Je={name:`settings`,size:24,node:[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};Je.node;var Ye=W(Je),Xe={name:`shield`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]};Xe.node;var Ze=W(Xe),Qe={name:`timer`,size:24,node:[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`,key:`14vaq8`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`,key:`17fdiu`}],[`circle`,{cx:`12`,cy:`14`,r:`8`,key:`1e1u0o`}]]};Qe.node;var $e=W(Qe),X=e(t(),1),et=X.createContext(void 0);function tt(){let e=X.useContext(et);if(e===void 0)throw Error(O(64));return e}var nt=`data-activation-direction`,rt={tabActivationDirection:e=>({[nt]:e})},Z=le(),it=X.forwardRef(function(e,t){let{className:n,defaultValue:r=0,onValueChange:i,orientation:a=`horizontal`,render:o,value:s,style:c,...u}=e,d=e.defaultValue!==void 0,f=X.useRef([]),[m,h]=X.useState(()=>new Map),[v,y]=_({controlled:s,default:r,name:`Tabs`,state:`value`}),b=s!==void 0,[x,C]=X.useState(()=>new Map),T=X.useRef(void 0),E=X.useCallback(e=>at(x,e),[x]),[D,O]=X.useState(()=>({previousValue:v,tabActivationDirection:`none`})),{previousValue:k,tabActivationDirection:A}=D,j=A,ee=!1;k!==v&&(j=ot(k,v,a,x),ee=k!=null&&v!=null&&E(v)==null);let P=ee?k:v,I=k!==P||A!==j;l(()=>{I&&O({previousValue:P,tabActivationDirection:j})},[P,I,j]);let L=S((e,t)=>{t.activationDirection=ot(v,e,a,x),i?.(e,t),!t.isCanceled&&y(()=>e)}),R=S((e,t)=>{i?.(e,w(t,void 0,void 0,{activationDirection:`none`}))}),z=S((e,t)=>(h(n=>{let r=new Map(n);return r.set(e,t),r}),()=>{h(n=>{if(n.get(e)!==t)return n;let r=new Map(n);return r.delete(e),r})})),te=X.useCallback(e=>m.get(e),[m]),ne=X.useCallback(e=>{for(let t of x.values())if(e===t.value)return t.id},[x]),re=X.useMemo(()=>({getTabElementBySelectedValue:E,getTabIdByPanelValue:ne,getTabPanelIdByValue:te,onValueChange:L,orientation:a,registerMountedTabPanel:z,setTabMap:C,tabActivationDirection:j,value:v}),[E,ne,te,L,a,z,C,j,v]),B=X.useMemo(()=>{for(let e of x.values())if(e.value===v)return e},[x,v]),ie=X.useMemo(()=>{for(let e of x.values())if(!e.disabled)return e.value},[x]),V=X.useRef(!d),H=X.useRef(r),U=X.useRef(d),ae=X.useRef(!1);l(()=>{if(b)return;function e(e,t){y(()=>e),O({previousValue:e,tabActivationDirection:`none`}),R(e,t),V.current=!1}if(x.size===0){ae.current&&v!==null&&!T.current?.isConnected&&e(null,M);return}ae.current=!0,T.current=x.keys().next().value;let t=B?.disabled,n=B==null&&v!==null;if(!t&&v===H.current&&(U.current=!1),U.current&&t&&v===H.current)return;let r=V.current;if(t||n){let n=ie??null;if(v===n){V.current=!1;return}let i=M;r?i=N:t&&(i=g),e(n,i)}else r&&B!=null&&(R(v,N),V.current=!1)},[ie,b,R,B,y,x,v]);let oe=F(`div`,e,{state:{orientation:a,tabActivationDirection:j},ref:t,props:u,stateAttributesMapping:rt});return(0,Z.jsx)(et.Provider,{value:re,children:(0,Z.jsx)(p,{elementsRef:f,children:oe})})});function at(e,t){for(let[n,r]of e.entries())if(t===r.value)return n;return null}function ot(e,t,n,r){if(e==null||t==null)return`none`;let[i,a,o]=n===`horizontal`?[`left`,`left`,`right`]:[`top`,`up`,`down`],s=at(r,e),c=at(r,t);if(s==null||c==null)return s!==c&&(typeof e==`number`||typeof e==`string`)&&typeof e==typeof t?t>e?o:a:`none`;let l=s.getBoundingClientRect()[i],u=c.getBoundingClientRect()[i];return u<l?a:u>l?o:`none`}var st=`data-composite-item-active`;function ct(e={}){let{highlightItemOnHover:t,highlightedIndex:n,onHighlightedIndexChange:r}=Ce(),{ref:i,index:a}=j(e),o=n===a,s=X.useRef(null),c=z(i,s);return{compositeProps:{tabIndex:o?0:-1,onFocus(){r(a)},onMouseMove(){let e=s.current;if(!t||!e)return;let n=e.hasAttribute(`disabled`)||e.ariaDisabled===`true`;!o&&!n&&e.focus()}},compositeRef:c,index:a}}var lt=X.createContext(void 0);function ut(){let e=X.useContext(lt);if(e===void 0)throw Error(O(65));return e}var dt=X.forwardRef(function(e,t){let{className:n,disabled:r=!1,render:i,value:a,id:o,nativeButton:s=!0,style:c,...u}=e,{value:d,getTabPanelIdByValue:f,onValueChange:p,orientation:m,tabActivationDirection:h}=tt(),{activateOnFocus:g,registerTabResizeObserverElement:_,tabsListElement:v}=ut(),{highlightedIndex:y,onHighlightedIndexChange:b}=Ce(),x=re(o),{compositeProps:C,compositeRef:T,index:D}=ct({metadata:X.useMemo(()=>({disabled:r,id:x,value:a}),[r,x,a])}),O=a===d,k=X.useRef(!1),A=X.useRef(null),j=S(e=>{A.current?.(),A.current=e?_(e):null});l(()=>{if(k.current){k.current=!1;return}if(!(O&&D>-1&&y!==D))return;let e=v;if(e!=null){let t=se(E(e));if(t&&ye(e,t))return}r||b(D)},[O,D,y,b,r,v]);let{getButtonProps:M,buttonRef:N}=Te({disabled:r,native:s,focusableWhenDisabled:!0}),P=f(a),I=X.useRef(!1),L=X.useRef(!1);function R(e){p(a,w(ee,e.nativeEvent,void 0,{activationDirection:`none`}))}function z(e){O||r||R(e)}function te(e){O||r||g&&(!I.current||L.current)&&R(e)}function ne(e){if(O||r)return;I.current=!0,L.current=e.button===0;let t=E(e.currentTarget);function n(){I.current=!1,L.current=!1,t.removeEventListener(`pointerup`,n),t.removeEventListener(`pointercancel`,n)}t.addEventListener(`pointerup`,n),t.addEventListener(`pointercancel`,n)}return F(`button`,e,{state:{disabled:r,active:O,orientation:m,tabActivationDirection:h},ref:[t,N,T,j],props:[C,{role:`tab`,"aria-controls":P,"aria-selected":O,id:x,onClick:z,onFocus:te,onPointerDown:ne,[st]:O?``:void 0,onKeyDownCapture(){k.current=!0}},u,M],stateAttributesMapping:rt})}),ft=`data-index`,pt={...rt,...pe},mt=X.forwardRef(function(e,t){let{className:n,value:i,render:a,keepMounted:o=!1,style:s,...c}=e,{value:u,getTabIdByPanelValue:d,orientation:f,tabActivationDirection:p,registerMountedTabPanel:m}=tt(),h=re(),{ref:g,index:_}=j(),v=i===u,{mounted:y,transitionStatus:b,setMounted:x}=r(v),S=!y,C=d(i),w={hidden:S,orientation:f,tabActivationDirection:p,transitionStatus:b},T=X.useRef(null),E=F(`div`,e,{state:w,ref:[t,g,T],props:[{"aria-labelledby":C,hidden:S,id:h,role:`tabpanel`,tabIndex:v?0:-1,inert:k(!v),[ft]:_},c],stateAttributesMapping:pt});return ne({open:v,ref:T,onComplete(){v||x(!1)}}),l(()=>{if(!(h==null||S&&!o))return m(i,h)},[S,o,i,h,m]),o||y?E:null});function ht(e){let{loopFocus:t=!0,orientation:n=`both`,grid:r,onLoop:i,direction:o,highlightedIndex:s,onHighlightedIndexChange:c,rootRef:u,enableHomeAndEndKeys:d=!1,stopEventPropagation:p,disabledIndices:g,modifierKeys:_=xe}=e,[y,x]=X.useState(0),w=r!=null,T=X.useRef(null),E=z(T,u),D=X.useRef([]),O=X.useRef(!1),k=X.useRef(null),j=s??y,M=S((e,t=!1)=>{if(k.current=D.current[e]??null,(c??x)(e),t){let t=D.current[e];A(T.current,t,o,n)}}),N=S(e=>{if(e.size===0)return;if(O.current){let e=D.current,t=e.indexOf(k.current);if(t===-1){let t=e[j];!t||L(e,j,g)?M(gt(e,g)):k.current=t}else t!==j&&M(t);return}O.current=!0;let t=Array.from(e.keys()),r=t.find(e=>e?.hasAttribute(`data-composite-item-active`))??null,i=r?e.get(r)?.index??-1:-1;if(i!==-1)M(i);else if(L(t,j,g)){let e=ve(t,{disabledIndices:g});U(t,e)||M(e)}A(T.current,r,o,n)});l(()=>{if(g==null||s!=null||!O.current)return;let e=D.current;if(L(e,j,g)){let t=ve(e,{disabledIndices:g});U(e,t)||M(t)}},[g,s,j,D,M]);let ee=S((e,t,n)=>i?i(e,t,n,D):n),P=S(e=>{let s=e.key===`Home`||e.key===`End`;if(!v.has(e.key)||!d&&s||_t(e,_)||!T.current)return;let c=o===`rtl`,l=c?C:f,u=c?f:C,y=n===`vertical`?b:l,x=n===`vertical`?h:u,S=te(e.nativeEvent);if(S!=null&&a(S)&&!m(S)){let t=S.selectionStart,n=S.selectionEnd,r=S.value;if(t==null||e.shiftKey||t!==n||e.key!==x&&t<r.length||e.key!==y&&t>0)return}let E=j,O=ge(D,g),k=de(D,g);r!=null&&(E=r({disabledIndices:g,elementsRef:D,event:e,highlightedIndex:j,loopFocus:t,maxIndex:k,minIndex:O,onLoop:ee,orientation:n,rtl:c}));let A=n!==`vertical`&&e.key===l||n!==`horizontal`&&e.key===`ArrowDown`,N=n!==`vertical`&&e.key===u||n!==`horizontal`&&e.key===`ArrowUp`;d&&(e.key===`Home`?E=O:e.key===`End`&&(E=k)),E===j&&(A||N)&&(t&&E===k&&A?(E=O,i&&(E=i(e,j,E,D))):t&&E===O&&N?(E=k,i&&(E=i(e,j,E,D))):E=ve(D.current,{startingIndex:E,decrement:N,disabledIndices:g})),E!==j&&!U(D.current,E)&&(p&&e.stopPropagation(),(w||s||A||N)&&e.preventDefault(),M(E,!0),queueMicrotask(()=>{D.current[E]?.focus()}))});return{props:{ref:E,onFocus(e){let t=T.current,n=te(e.nativeEvent);t&&n!=null&&a(n)&&n.setSelectionRange(0,n.value.length)},onKeyDown:P},highlightedIndex:j,onHighlightedIndexChange:M,elementsRef:D,onMapChange:N,relayKeyboardEvent:P}}function gt(e,t){let n=-1;for(let r=0;r<e.length;r+=1){let i=e[r];if(i&&!L(e,r,t)){if(i.hasAttribute(`data-composite-item-active`))return r;n===-1&&(n=r)}}return Math.max(n,0)}function _t(e,t){for(let n of De)if(!t.includes(n)&&e.getModifierState(n))return!0;return!1}function vt(e){let{render:t,className:n,style:r,refs:i=xe,props:a=xe,state:o=Ee,stateAttributesMapping:c,highlightedIndex:l,onHighlightedIndexChange:u,orientation:d,grid:f,loopFocus:m,onLoop:h,enableHomeAndEndKeys:g,onMapChange:_,stopEventPropagation:v=!0,rootRef:b,disabledIndices:x,modifierKeys:S,highlightItemOnHover:C=!1,tag:w=`div`,...T}=e,{props:E,highlightedIndex:D,onHighlightedIndexChange:O,elementsRef:k,onMapChange:A,relayKeyboardEvent:j}=ht({grid:f,loopFocus:m,onLoop:h,orientation:d,highlightedIndex:l,onHighlightedIndexChange:u,rootRef:b,stopEventPropagation:v,enableHomeAndEndKeys:g,direction:y(),disabledIndices:x,modifierKeys:S}),M=F(w,e,{state:o,ref:i,props:[E,...a,T],stateAttributesMapping:c}),N=X.useMemo(()=>({highlightedIndex:D,onHighlightedIndexChange:O,highlightItemOnHover:C,relayKeyboardEvent:j}),[D,O,C,j]);return(0,Z.jsx)(s.Provider,{value:N,children:(0,Z.jsx)(p,{elementsRef:k,onMapChange:e=>{_?.(e),A(e)},children:M})})}var yt=X.forwardRef(function(e,t){let{activateOnFocus:n=!1,className:r,loopFocus:i=!0,render:a,style:o,...s}=e,{orientation:c,setTabMap:u,tabActivationDirection:d}=tt(),[f,p]=X.useState(0),[m,h]=X.useState(null),g=X.useRef(new Set),_=X.useRef(new Set),v=X.useRef(null);l(()=>{if(typeof ResizeObserver>`u`)return;let e=new ResizeObserver(()=>{g.current.forEach(e=>{e()})});return v.current=e,m&&e.observe(m),_.current.forEach(t=>{e.observe(t)}),()=>{e.disconnect(),v.current=null}},[m]);let y=S(e=>(g.current.add(e),()=>{g.current.delete(e)})),b=S(e=>(_.current.add(e),v.current?.observe(e),()=>{_.current.delete(e),v.current?.unobserve(e)})),x={orientation:c,tabActivationDirection:d},C={"aria-orientation":c===`vertical`?`vertical`:void 0,role:`tablist`},w=X.useMemo(()=>({activateOnFocus:n,registerIndicatorUpdateListener:y,registerTabResizeObserverElement:b,tabsListElement:m}),[n,y,b,m]);return(0,Z.jsx)(lt.Provider,{value:w,children:(0,Z.jsx)(vt,{render:a,className:r,style:o,state:x,refs:[t,h],props:[C,s],stateAttributesMapping:rt,highlightedIndex:f,enableHomeAndEndKeys:!0,loopFocus:i,orientation:c,onHighlightedIndexChange:p,onMapChange:u,disabledIndices:xe})})}),bt=n();function xt({className:e,orientation:t=`horizontal`,...n}){return(0,Z.jsx)(it,{"data-slot":`tabs`,"data-orientation":t,className:H(`group/tabs flex gap-2 data-horizontal:flex-col`,e),...n})}var St=ie(`group/tabs-list inline-flex w-fit items-center justify-center rounded-none p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none`,{variants:{variant:{default:`bg-muted`,line:`gap-1 bg-transparent`}},defaultVariants:{variant:`default`}});function Ct({className:e,variant:t=`default`,...n}){return(0,Z.jsx)(yt,{"data-slot":`tabs-list`,"data-variant":t,className:H(St({variant:t}),e),...n})}function wt({className:e,...t}){return(0,Z.jsx)(dt,{"data-slot":`tabs-trigger`,className:H(`relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-none border border-transparent px-1.5 py-0.5 text-xs font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start group-data-vertical/tabs:py-[calc(--spacing(1.25))] hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,`group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent`,`data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground`,`after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100`,e),...t})}function Tt({className:e,...t}){return(0,Z.jsx)(mt,{"data-slot":`tabs-content`,className:H(`flex-1 text-xs/relaxed outline-none`,e),...t})}function Et(e){return F(e.defaultTagName??`div`,e,e)}var Dt=ie(`group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-none border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!`,{variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,secondary:`bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80`,success:`border-emerald-600/20 bg-emerald-100/50 text-emerald-700 dark:border-emerald-400/20 dark:bg-emerald-900/50 dark:text-emerald-200`,warning:`border-amber-600/20 bg-amber-100/50 text-amber-700 dark:border-amber-400/20 dark:bg-amber-900/50 dark:text-amber-200`,info:`border-blue-600/20 bg-blue-100/50 text-blue-700 dark:border-blue-400/20 dark:bg-blue-900/50 dark:text-blue-200`,destructive:`bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20`,outline:`border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground`,ghost:`hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50`,link:`text-primary underline-offset-4 hover:underline`}},defaultVariants:{variant:`default`}});function Ot({className:e,variant:t=`default`,render:n,...r}){return Et({defaultTagName:`span`,props:d({className:H(Dt({variant:t}),e)},r),render:n,state:{slot:`badge`,variant:t}})}var kt=new Map([...[`ready`,`active`,`enabled`,`ok`,`completed`,`development`].map(e=>[e,`success`]),...[`pending`,`paused`,`activating`,`restoring`,`incomplete`,`required`].map(e=>[e,`warning`]),...[`uploading`,`running`,`queued`,`enqueued`,`production`,`public registration`,`public`].map(e=>[e,`info`]),...[`error`,`failed`,`blocked`,`unavailable`].map(e=>[e,`destructive`])]);function Q({status:e,children:t}){return(0,Z.jsx)(Ot,{variant:kt.get(e.toLowerCase())??`secondary`,children:t??e})}var At={query:`bg-yellow-100/50 text-yellow-700 dark:bg-yellow-900/50 dark:text-yellow-200`,mutation:`bg-blue-100/50 text-blue-700 dark:bg-blue-900/50 dark:text-blue-200`,action:`bg-purple-100/50 text-purple-700 dark:bg-purple-900/50 dark:text-purple-200`};function jt({kind:e}){return(0,Z.jsx)(Ot,{variant:`secondary`,className:At[e],children:e})}function Mt(e){let[t,n]=(0,X.useState)(!1);return(0,Z.jsxs)(`details`,{className:`rounded-lg border`,onToggle:e=>n(e.currentTarget.open),children:[(0,Z.jsx)(`summary`,{className:`cursor-pointer p-4 font-medium`,children:`Deployment history`}),t&&(0,Z.jsx)(`div`,{className:`p-4 pt-0`,children:(0,Z.jsx)(Nt,{...e})})]})}function Nt(e){let[t,n]=(0,X.useState)(),[r,i]=(0,X.useState)(),a=B(e.project,e.env),o=B(e.project,e.env),s=J(a+`/history`),c=e.session.role!==`viewer`,l=async(t,n)=>{let r=n?B(e.project,`prod`):o,a=await G(r+`/health`);i({title:n?`Promote backend to production`:`Rollback backend`,description:`Activate this exact backend hash after native schema/job validation. Data, files and settings stay unchanged. Frontend is not published by this button; use the CLI release flow for that.`,productionId:n||e.env===`prod`?e.project.id:void 0,submit:async()=>{await G(r+(n?`/release-promote`:`/release-rollback`),{hash:t,expected:a.active,confirm:e.project.id}),s.refresh(),e.refresh()}})},[u,d]=(0,X.useState)();return(0,Z.jsxs)(`div`,{className:`space-y-3`,children:[(0,Z.jsx)(q,{loading:s.loading,error:u||s.error}),(0,Z.jsxs)(P,{children:[(0,Z.jsx)(we,{children:(0,Z.jsxs)(T,{children:[(0,Z.jsx)(R,{children:`First published`}),(0,Z.jsx)(R,{children:`Backend hash`}),(0,Z.jsx)(R,{children:`Actions`})]})}),(0,Z.jsx)(be,{children:s.data?.map(t=>(0,Z.jsxs)(T,{children:[(0,Z.jsx)(Y,{children:new Date(t.at).toLocaleString()}),(0,Z.jsxs)(Y,{children:[(0,Z.jsx)(`code`,{className:`text-xs`,children:t.hash.slice(0,12)}),e.active===t.hash&&(0,Z.jsx)(Q,{status:`Active`})]}),(0,Z.jsx)(Y,{children:(0,Z.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Z.jsx)(K,{variant:`outline`,size:`sm`,onClick:()=>n(t.hash),children:`View contracts`}),c&&e.active!==t.hash&&(0,Z.jsx)(K,{variant:`outline`,size:`sm`,onClick:()=>void l(t.hash,!1).catch(e=>d(e.message)),children:`Rollback backend`}),c&&e.env===`dev`&&(0,Z.jsx)(K,{variant:`outline`,size:`sm`,onClick:()=>void l(t.hash,!0).catch(e=>d(e.message)),children:`Promote backend`})]})})]},t.hash))})]}),t&&(0,Z.jsx)(Pt,{path:a,hash:t,close:()=>n(void 0)}),r&&(0,Z.jsx)(I,{modal:r,onClose:()=>i(void 0)})]})}function Pt({path:e,hash:t,close:n}){let r=J(e+`/release?hash=`+t);return(0,Z.jsx)(o,{open:!0,onOpenChange:e=>{e||n()},children:(0,Z.jsxs)(Se,{className:`max-h-[80vh] overflow-auto`,children:[(0,Z.jsxs)(u,{children:[(0,Z.jsx)(c,{children:`Backend release`}),(0,Z.jsx)(D,{className:`break-all`,children:t})]}),(0,Z.jsx)(q,{...r}),r.data&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`h3`,{className:`font-medium`,children:`Tables`}),(0,Z.jsxs)(P,{children:[(0,Z.jsx)(we,{children:(0,Z.jsxs)(T,{children:[(0,Z.jsx)(R,{children:`Table`}),(0,Z.jsx)(R,{children:`Fields`})]})}),(0,Z.jsx)(be,{children:Object.entries(r.data.schema).map(([e,t])=>(0,Z.jsxs)(T,{children:[(0,Z.jsx)(Y,{children:e}),(0,Z.jsx)(Y,{children:Object.keys(t.document.properties??{}).join(`, `)||`No declared fields`})]},e))})]}),(0,Z.jsx)(`h3`,{className:`font-medium`,children:`Functions`}),(0,Z.jsxs)(P,{children:[(0,Z.jsx)(we,{children:(0,Z.jsxs)(T,{children:[(0,Z.jsx)(R,{children:`Function`}),(0,Z.jsx)(R,{children:`Kind`}),(0,Z.jsx)(R,{children:`Access`})]})}),(0,Z.jsx)(be,{children:Object.entries(r.data.manifest.functions).map(([e,t])=>(0,Z.jsxs)(T,{children:[(0,Z.jsx)(Y,{children:e}),(0,Z.jsx)(Y,{children:(0,Z.jsx)(jt,{kind:t.kind})}),(0,Z.jsx)(Y,{children:(0,Z.jsx)(Q,{status:t.auth})})]},e))})]})]})]})})}function Ft({className:e,size:t=`default`,...n}){return(0,Z.jsx)(`div`,{"data-slot":`card`,"data-size":t,className:H(`group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-none bg-card py-(--card-spacing) text-xs/relaxed text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-none *:[img:last-child]:rounded-none`,e),...n})}function It({className:e,...t}){return(0,Z.jsx)(`div`,{"data-slot":`card-header`,className:H(`group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-none px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)`,e),...t})}function Lt({className:e,...t}){return(0,Z.jsx)(`div`,{"data-slot":`card-title`,className:H(`font-heading text-sm font-medium group-data-[size=sm]/card:text-sm`,e),...t})}function Rt({className:e,...t}){return(0,Z.jsx)(`div`,{"data-slot":`card-content`,className:H(`px-(--card-spacing)`,e),...t})}function zt({project:e,env:t,session:n,connect:r}){let i=J(B(e,t)+`/health`),a=J(B(e,t)+`/settings`);return(0,Z.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,Z.jsx)(`h1`,{className:`page-title`,children:`Health`}),(0,Z.jsx)(q,{loading:i.loading||a.loading,error:i.error||a.error}),i.data&&a.data&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`h2`,{className:`section-title`,children:`Summary`}),(0,Z.jsx)(Ft,{children:(0,Z.jsxs)(Rt,{className:`grid gap-4 md:grid-cols-2`,children:[(0,Z.jsxs)(`div`,{className:`space-y-3`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(Q,{status:t===`dev`?`Development`:`Production`}),(0,Z.jsx)(`strong`,{children:e.name})]}),(0,Z.jsx)(`p`,{className:`text-muted-foreground`,children:`Cloudflare · Durable Objects · SQLite`}),(0,Z.jsxs)(`p`,{className:`font-mono text-xs text-muted-foreground`,children:[`Release `,i.data.active?.slice(0,12)??`not deployed`]})]}),(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsx)(`p`,{className:`text-muted-foreground`,children:`Cloud URL`}),(0,Z.jsx)(`code`,{className:`block select-all break-all text-xs`,children:a.data.url}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,Z.jsx)(Q,{status:i.data.status}),i.data.connections,` connections · `,i.data.subscriptions,` `,`subscriptions`]})]})]})}),(0,Z.jsx)(Mt,{project:e,env:t,session:n,active:i.data.active,refresh:i.refresh}),(0,Z.jsx)(K,{variant:`outline`,onClick:r,children:`Connect SDK`})]})]})}function Bt({project:e,env:t}){let n=J(B(e,t)+`/schema`);return(0,Z.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,Z.jsx)(`h1`,{className:`page-title`,children:`Schema`}),(0,Z.jsx)(`div`,{className:`flex gap-2`,children:(0,Z.jsx)(K,{variant:`ghost`,size:`icon-sm`,"aria-label":`Reload snapshot`,title:`Reload snapshot`,onClick:n.refresh,disabled:n.loading,children:(0,Z.jsx)(qe,{})})})]}),(0,Z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Defined in code; validated documents and indexes activate atomically. System tables are hidden.`}),(0,Z.jsx)(q,{...n}),n.data?.tables.map(e=>(0,Z.jsxs)(Ft,{children:[(0,Z.jsx)(It,{children:(0,Z.jsx)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:(0,Z.jsx)(Lt,{className:`font-mono`,children:e.name})})}),(0,Z.jsxs)(Rt,{className:`space-y-4`,children:[(0,Z.jsx)(fe,{rows:e.columns.map(e=>({Field:e.name,Type:e.type,Required:!!e.notnull,Primary:!!e.pk,Default:e.dflt_value})),columns:[`Field`,`Type`,`Required`,`Primary`,`Default`]}),(0,Z.jsx)(fe,{rows:Object.entries(e.indexes).map(([e,t])=>({Index:e,Fields:t.join(`, `)})),columns:[`Index`,`Fields`]}),(0,Z.jsxs)(`details`,{children:[(0,Z.jsx)(`summary`,{className:`cursor-pointer text-muted-foreground`,children:`Document contract`}),(0,Z.jsx)(`pre`,{className:`code-block mt-3`,children:JSON.stringify(e.document,null,2)})]})]})]},e.name)),n.data&&!n.data.tables.length&&(0,Z.jsx)(ue,{title:`No application tables`})]})}function Vt({project:e,env:t}){let n=J(B(e,t)+`/logs`);return(0,Z.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)(`h1`,{className:`page-title`,children:`Logs`}),(0,Z.jsx)(K,{variant:`ghost`,size:`icon-sm`,"aria-label":`Reload snapshot`,title:`Reload snapshot`,onClick:n.refresh,disabled:n.loading,children:(0,Z.jsx)(qe,{})})]}),(0,Z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Last 100 invocation summaries. Successful queries are held in memory and disappear on hibernation/restart; writes and failures are persisted. Not Cloudflare Tail logs or billing analytics.`}),(0,Z.jsx)(q,{...n}),n.data&&(n.data.length?(0,Z.jsx)(fe,{rows:n.data,renderCell:(e,t)=>e===`kind`&&[`query`,`mutation`,`action`].includes(String(t))?(0,Z.jsx)(jt,{kind:t}):e===`status`?(0,Z.jsx)(Q,{status:t===`ok`?`ok`:`error`,children:V(t)}):e===`at`&&typeof t==`number`?new Date(t).toLocaleString():V(t),columns:[`at`,`path`,`kind`,`status`,`ms`],labels:{at:`Time`,path:`Function`,kind:`Type`,status:`Status`,ms:`Duration (ms)`}}):(0,Z.jsx)(ue,{title:`No recent function calls`}))]})}var Ht=(function(){let e=typeof document<`u`&&document.createElement(`link`).relList;return e&&e.supports&&e.supports(`modulepreload`)?`modulepreload`:`preload`})(),Ut=function(e){return`/`+e},Wt={},Gt=function(e){return e.pathname.endsWith(`.css`)},Kt=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},$=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=function(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))},i=function(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)},a,o=document.querySelector(`meta[property=csp-nonce]`),s=o?.nonce||o?.getAttribute(`nonce`);r=e(t.map(e=>{e=Ut(e,n);let t=i(e),r=Gt(t);return Kt(Wt,t.href,()=>{if(a===void 0){a={all:new Set,styles:new Set};let e=document.getElementsByTagName(`link`);for(let t=e.length-1;t>=0;t--){let n=e[t];a.all.add(n.href),n.rel===`stylesheet`&&a.styles.add(n.href)}}if((r?a.styles:a.all).has(t.href))return;let e=document.createElement(`link`);if(e.rel=r?`stylesheet`:Ht,r||(e.as=`script`),e.crossOrigin=``,e.href=t.href,s&&e.setAttribute(`nonce`,s),document.head.appendChild(e),r)return new Promise((n,r)=>{e.addEventListener(`load`,n),e.addEventListener(`error`,()=>r(Error(`Unable to preload CSS for ${t}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},qt=(0,X.lazy)(()=>$(()=>import(`./services-view.BvkS7FHr.js`).then(e=>({default:e.FilesView})),__vite__mapDeps([0,1,2,3]))),Jt=(0,X.lazy)(()=>$(()=>import(`./services-view.BvkS7FHr.js`).then(e=>({default:e.SchedulesView})),__vite__mapDeps([0,1,2,3]))),Yt=(0,X.lazy)(()=>$(()=>import(`./data-view.B2afgdXn.js`),__vite__mapDeps([4,1,2,5]))),Xt=(0,X.lazy)(()=>$(()=>import(`./functions-view.B0jPBNNy.js`),__vite__mapDeps([6,1,2,5,3]))),Zt=(0,X.lazy)(()=>$(()=>import(`./auth-view.DxyBDw7Z.js`),__vite__mapDeps([7,1,2]))),Qt=(0,X.lazy)(()=>$(()=>import(`./settings-view.BXt0dexJ.js`),__vite__mapDeps([8,1,2]))),$t=(0,X.lazy)(()=>$(()=>import(`./sdk-view.DAd5aPbd.js`),__vite__mapDeps([9,1,2]))),en=[{key:`health`,label:`Health`,icon:ke},{key:`data`,label:`Data`,icon:Fe},{key:`schema`,label:`Schema`,icon:je},{key:`functions`,label:`Functions`,icon:Ne},{key:`files`,label:`Files`,icon:Le},{key:`schedules`,label:`Schedules`,icon:$e},{key:`auth`,label:`Auth`,icon:Ze},{key:`logs`,label:`Logs`,icon:ze}],tn=(0,X.lazy)(()=>$(()=>import(`./cli-approval.C4-RBXQh.js`),__vite__mapDeps([10,1,2])));function nn(){return new URLSearchParams(location.search).has(`cli`)?(0,Z.jsx)(X.Suspense,{fallback:(0,Z.jsx)(`p`,{children:`Loading…`}),children:(0,Z.jsx)(tn,{})}):(0,Z.jsx)(rn,{})}function rn(){let[e,t]=(0,X.useState)(),[n,r]=(0,X.useState)([]),[a,o]=(0,X.useState)(),[s,c]=(0,X.useState)(`dev`),[l,u]=(0,X.useState)(`health`),[d,f]=(0,X.useState)(``),[p,m]=(0,X.useState)(!0),[h,g]=(0,X.useState)(),[_,v]=(0,X.useState)(!1);(0,X.useEffect)(()=>{let e=new AbortController;return v(localStorage.getItem(`flare.sidebar`)===`collapsed`),Promise.all([G(`session`,void 0,e.signal),G(`projects`,void 0,e.signal)]).then(([n,i])=>{e.signal.aborted||(t(n),r(i),o(i.find(e=>e.id===localStorage.getItem(`flare.project`))??i[0]),m(!1))}).catch(t=>{e.signal.aborted||(f(ce(t)),m(!1))}),()=>e.abort()},[]);let y=e=>{let t=n.find(t=>t.id===e);t&&(o(t),c(`dev`),u(`health`),g(void 0),localStorage.setItem(`flare.project`,e))},b=()=>g({title:`Create project`,description:`Creates separate development and production environments.`,content:(0,Z.jsxs)(oe,{children:[(0,Z.jsxs)(x,{children:[(0,Z.jsx)(i,{htmlFor:`project-name`,children:`Project name`}),(0,Z.jsx)(me,{id:`project-name`,name:`name`,required:!0,maxLength:100,placeholder:`CRM`})]}),(0,Z.jsxs)(x,{children:[(0,Z.jsx)(i,{htmlFor:`project-alias`,children:`Short URL name (optional)`}),(0,Z.jsx)(me,{id:`project-alias`,name:`alias`,maxLength:48,pattern:`[a-z][a-z0-9]*(?:-[a-z0-9]+)*`,placeholder:`crm`})]}),(0,Z.jsxs)(x,{children:[(0,Z.jsx)(i,{htmlFor:`project-origins`,children:`Allowed frontend origins · one per line`}),(0,Z.jsx)(ae,{id:`project-origins`,name:`origins`,placeholder:`http://127.0.0.1:5173`})]})]}),submit:async e=>{let t=new FormData(e),n=await G(`projects`,{name:t.get(`name`),alias:t.get(`alias`)||void 0,origins:[location.origin,...String(t.get(`origins`)).split(`
3
+ `).map(e=>e.trim()).filter(Boolean)]}),i=await G(`projects`);r(i),o(i.find(e=>e.id===n.id)??i[0]),c(`dev`),u(`health`)}}),S=a&&e?{project:a,env:s,session:e}:null,C=()=>{let e=n.filter(e=>e.id!==a?.id);r(e),o(e[0]),c(`dev`),u(`health`),e[0]?localStorage.setItem(`flare.project`,e[0].id):localStorage.removeItem(`flare.project`)},w=e=>{g(void 0),u(e)};return(0,Z.jsxs)(`div`,{className:`flex h-dvh min-h-0 flex-col overflow-hidden text-sm`,children:[(0,Z.jsxs)(`header`,{className:`flex h-14 shrink-0 items-center justify-between gap-3 border-b bg-sidebar px-4`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,Z.jsx)(_e,{label:`Select project`,value:a?.id??``,onChange:y,items:n.map(e=>({value:e.id,label:e.name})),className:`max-w-48`}),S&&(0,Z.jsx)(xt,{value:s,onValueChange:e=>{(e===`dev`||e===`prod`)&&(c(e),g(void 0))},"aria-label":`Select environment`,children:(0,Z.jsxs)(Ct,{children:[(0,Z.jsx)(wt,{value:`dev`,children:`Dev`}),(0,Z.jsx)(wt,{value:`prod`,children:`Production`})]})})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e?.role!==`viewer`&&e&&(0,Z.jsx)(K,{"aria-label":`Create project`,size:`icon-sm`,variant:`ghost`,onClick:b,children:(0,Z.jsx)(Ge,{})}),S&&(0,Z.jsx)(K,{"aria-label":`Project settings`,size:`icon-sm`,variant:`ghost`,onClick:()=>w(`settings`),children:(0,Z.jsx)(Ye,{})}),e&&(0,Z.jsx)(`span`,{className:`flex size-7 items-center justify-center rounded-full bg-muted text-xs font-medium`,title:e.email,"aria-label":`Signed in as ${e.email}`,children:e.email.slice(0,2).toUpperCase()})]})]}),(0,Z.jsxs)(`div`,{className:`flex min-h-0 flex-1`,children:[(0,Z.jsxs)(`aside`,{className:`flex shrink-0 flex-col border-r bg-sidebar px-2 py-3 ${_?`w-12`:`w-36`}`,children:[(0,Z.jsx)(`nav`,{"aria-label":`Deployment`,className:`flex flex-col gap-1`,children:en.map(({key:e,label:t,icon:n})=>(0,Z.jsxs)(K,{variant:`ghost`,disabled:!S,"aria-current":l===e?`page`:void 0,title:_?t:void 0,"aria-label":_?t:void 0,className:`w-full justify-start ${l===e?`bg-sidebar-accent text-sidebar-accent-foreground`:`text-muted-foreground`}`,onClick:()=>w(e),children:[(0,Z.jsx)(n,{className:`size-4`}),!_&&t]},e))}),(0,Z.jsxs)(K,{"aria-label":_?`Expand sidebar`:`Collapse sidebar`,className:`mt-auto justify-start text-muted-foreground`,variant:`ghost`,onClick:()=>v(e=>(localStorage.setItem(`flare.sidebar`,e?`expanded`:`collapsed`),!e)),children:[_?(0,Z.jsx)(Ue,{}):(0,Z.jsx)(Ve,{}),!_&&`Collapse`]})]}),(0,Z.jsxs)(`main`,{className:`min-h-0 min-w-0 flex-1 ${l===`data`?`overflow-hidden`:`overflow-auto`}`,"aria-label":`Deployment content`,children:[d&&(0,Z.jsx)(`div`,{className:`p-4`,children:(0,Z.jsx)(he,{children:d})}),p?(0,Z.jsx)(q,{loading:!0}):S?(0,Z.jsx)(X.Suspense,{fallback:(0,Z.jsx)(q,{loading:!0}),children:(0,Z.jsx)(`div`,{className:l===`data`?`h-full min-h-0`:`min-h-full`,children:l===`health`?(0,Z.jsx)(zt,{...S,connect:()=>w(`sdk`)}):l===`data`?(0,Z.jsx)(Yt,{...S}):l===`schema`?(0,Z.jsx)(Bt,{...S}):l===`functions`?(0,Z.jsx)(Xt,{...S}):l===`files`?(0,Z.jsx)(qt,{...S}):l===`schedules`?(0,Z.jsx)(Jt,{...S}):l===`auth`?(0,Z.jsx)(Zt,{...S}):l===`logs`?(0,Z.jsx)(Vt,{...S}):l===`settings`?(0,Z.jsx)(Qt,{...S,onDeleted:C}):(0,Z.jsx)($t,{...S})},`${a.id}/${s}/${l}`)}):d?null:(0,Z.jsxs)(`div`,{className:`p-4`,children:[(0,Z.jsx)(`h1`,{className:`page-title`,children:`Select a project`}),(0,Z.jsx)(`p`,{className:`mt-2 text-muted-foreground`,children:`Create a project to get started.`}),e?.role!==`viewer`&&(0,Z.jsxs)(K,{className:`mt-4`,onClick:b,children:[(0,Z.jsx)(Ge,{}),`New project`]})]})]})]}),h&&(0,Z.jsx)(I,{modal:h,onClose:()=>g(void 0)})]})}var an=document.getElementById(`flare-dashboard`);if(!an)throw Error(`Dashboard mount missing`);(0,bt.createRoot)(an).render((0,X.createElement)(nn));export{jt as a,xt as c,wt as d,qe as f,Ne as h,Lt as i,Tt as l,Fe as m,Rt as n,Q as o,Ge as p,It as r,Ot as s,Ft as t,Ct as u};
@@ -1 +1 @@
1
- import{r as e}from"./client.BeKNsjPN.js";import{Y as t,_t as n,gt as r,jt as i,vt as a}from"./common.DPoFQu44.js";var o={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};o.node;var s=i(o);e();var c=r();function l({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`input-group`,role:`group`,className:n(`group/input-group relative flex h-8 w-full min-w-0 items-center rounded-none border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-1 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-1 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5`,e),...t})}var u=a(`flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-xs font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-none [&>svg:not([class*='size-'])]:size-4`,{variants:{align:{"inline-start":`order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]`,"inline-end":`order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]`,"block-start":`order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2`,"block-end":`order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2`}},defaultVariants:{align:`inline-start`}});function d({className:e,align:t=`inline-start`,...r}){return(0,c.jsx)(`div`,{role:`group`,"data-slot":`input-group-addon`,"data-align":t,className:n(u({align:t}),e),onClick:e=>{e.target.closest(`button`)||e.currentTarget.parentElement?.querySelector(`input`)?.focus()},...r})}a(`flex items-center gap-2 text-xs shadow-none`,{variants:{size:{xs:`h-6 gap-1 rounded-none px-1.5 [&>svg:not([class*='size-'])]:size-3.5`,sm:`gap-1`,"icon-xs":`size-6 rounded-none p-0 has-[>svg]:p-0`,"icon-sm":`size-7 p-0 has-[>svg]:p-0`}},defaultVariants:{size:`xs`}});function f({className:e,...r}){return(0,c.jsx)(t,{"data-slot":`input-group-control`,className:n(`flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent`,e),...r})}export{s as i,d as n,f as r,l as t};
1
+ import{r as e}from"./client.BeKNsjPN.js";import{gt as t,ht as n,kt as r,mt as i,q as a}from"./common.D6YHScsr.js";var o={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};o.node;var s=r(o);e();var c=i();function l({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`input-group`,role:`group`,className:n(`group/input-group relative flex h-8 w-full min-w-0 items-center rounded-none border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-1 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-1 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5`,e),...t})}var u=t(`flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-xs font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-none [&>svg:not([class*='size-'])]:size-4`,{variants:{align:{"inline-start":`order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]`,"inline-end":`order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]`,"block-start":`order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2`,"block-end":`order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2`}},defaultVariants:{align:`inline-start`}});function d({className:e,align:t=`inline-start`,...r}){return(0,c.jsx)(`div`,{role:`group`,"data-slot":`input-group-addon`,"data-align":t,className:n(u({align:t}),e),onClick:e=>{e.target.closest(`button`)||e.currentTarget.parentElement?.querySelector(`input`)?.focus()},...r})}t(`flex items-center gap-2 text-xs shadow-none`,{variants:{size:{xs:`h-6 gap-1 rounded-none px-1.5 [&>svg:not([class*='size-'])]:size-3.5`,sm:`gap-1`,"icon-xs":`size-6 rounded-none p-0 has-[>svg]:p-0`,"icon-sm":`size-7 p-0 has-[>svg]:p-0`}},defaultVariants:{size:`xs`}});function f({className:e,...t}){return(0,c.jsx)(a,{"data-slot":`input-group-control`,className:n(`flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent`,e),...t})}export{s as i,d as n,f as r,l as t};
@@ -1 +1 @@
1
- import{a as e,r as t}from"./client.BeKNsjPN.js";import{g as n,gt as r,ht as i,jt as a,m as o,p as s,r as c,s as l,u}from"./common.DPoFQu44.js";import{a as d,i as f,o as p,r as m}from"./index.astro_astro_type_script_index_0_lang.BEuO3H0E.js";var h={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};h.node;var g=a(h),_=e(t(),1),v=r();function y({project:e,env:t,session:r}){let a=n(e,t),h=u(a+`/settings`),[y,b]=(0,_.useState)(),[x,S]=(0,_.useState)(``),[C,w]=(0,_.useState)(!1),T=(0,_.useRef)(void 0);(0,_.useEffect)(()=>()=>T.current?.abort(),[]);let E=async()=>{if(C||t!==`dev`||r.role===`viewer`)return;let e=new AbortController;T.current=e,w(!0),S(``),b(void 0);try{let t=await s(a+`/dev-token`,{},e.signal);e.signal.aborted||b(t)}catch(t){e.signal.aborted||S(o(t))}finally{e.signal.aborted||w(!1)}};return(0,v.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,v.jsx)(`h1`,{className:`page-title`,children:`SDK · Live`}),(0,v.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`One environment URL for browser, server and mobile clients. Use the generated API references from your application build.`}),(0,v.jsx)(l,{...h}),h.data&&(0,v.jsxs)(m,{children:[(0,v.jsx)(d,{children:(0,v.jsx)(p,{children:`Connect your application`})}),(0,v.jsxs)(f,{className:`space-y-4`,children:[(0,v.jsx)(`pre`,{className:`code-block`,children:`import { createClient } from '@auersperg/flare';\nimport { api } from './flare/_generated/api';\n\nconst client = createClient({\n url: '${h.data.url}',\n getToken: () => yourUserAccessToken,\n});\n\n// Use your generated query / mutation / action references.\n// Example: replace this path with your own query:\nconst stop = client.onUpdate(api.tasks.list, { limit: 50 },\n tasks => console.log(tasks));\n\n// On logout: client.refreshAuth().\n// On teardown: stop(); client.dispose();`}),(0,v.jsx)(`p`,{className:`text-muted-foreground`,children:`The task function is an illustrative name, not a requirement for other projects. Run your app locally to test live updates; this page opens no background subscription and does not write application data.`})]})]}),(0,v.jsxs)(m,{children:[(0,v.jsx)(d,{children:(0,v.jsx)(p,{children:t===`dev`?`Local developer session`:`Production authentication`})}),(0,v.jsxs)(f,{className:`space-y-4`,children:[(0,v.jsx)(`p`,{className:`text-muted-foreground`,children:t===`dev`?`A 15-minute identity for this project's development environment. Keep it in a git-ignored local file, never in a bundle or commit. Request a new token after expiry.`:`Use enabled built-in password authentication or a configured OIDC provider. Developer identities cannot access production; application handlers enforce record permissions.`}),t===`dev`&&r.role!==`viewer`&&(0,v.jsxs)(i,{variant:`outline`,onClick:E,disabled:C,children:[(0,v.jsx)(g,{}),C?`Requesting…`:`Get developer session`]}),x&&(0,v.jsx)(c,{children:x}),y&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(`pre`,{className:`code-block`,children:JSON.stringify(y,null,2)}),(0,v.jsx)(i,{variant:`ghost`,onClick:()=>b(void 0),children:`Clear from view`})]})]})]})]})}export{y as default};
1
+ import{a as e,r as t}from"./client.BeKNsjPN.js";import{g as n,kt as r,m as i,mt as a,p as o,pt as s,r as c,s as l,u}from"./common.D6YHScsr.js";import{i as d,n as f,r as p,t as m}from"./index.astro_astro_type_script_index_0_lang.BQ7pqT75.js";var h={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};h.node;var g=r(h),_=e(t(),1),v=a();function y({project:e,env:t,session:r}){let a=n(e,t),h=u(a+`/settings`),[y,b]=(0,_.useState)(),[x,S]=(0,_.useState)(``),[C,w]=(0,_.useState)(!1),T=(0,_.useRef)(void 0);(0,_.useEffect)(()=>()=>T.current?.abort(),[]);let E=async()=>{if(C||t!==`dev`||r.role===`viewer`)return;let e=new AbortController;T.current=e,w(!0),S(``),b(void 0);try{let t=await o(a+`/dev-token`,{},e.signal);e.signal.aborted||b(t)}catch(t){e.signal.aborted||S(i(t))}finally{e.signal.aborted||w(!1)}};return(0,v.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,v.jsx)(`h1`,{className:`page-title`,children:`SDK · Live`}),(0,v.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`One environment URL for browser, server and mobile clients. Use the generated API references from your application build.`}),(0,v.jsx)(l,{...h}),h.data&&(0,v.jsxs)(m,{children:[(0,v.jsx)(p,{children:(0,v.jsx)(d,{children:`Connect your application`})}),(0,v.jsxs)(f,{className:`space-y-4`,children:[(0,v.jsx)(`pre`,{className:`code-block`,children:`import { createClient } from '@auersperg/flare';\nimport { api } from './flare/_generated/api';\n\nconst client = createClient({\n url: '${h.data.url}',\n getToken: () => yourUserAccessToken,\n});\n\n// Use your generated query / mutation / action references.\n// Example: replace this path with your own query:\nconst stop = client.onUpdate(api.tasks.list, { limit: 50 },\n tasks => console.log(tasks));\n\n// On logout: client.refreshAuth().\n// On teardown: stop(); client.dispose();`}),(0,v.jsx)(`p`,{className:`text-muted-foreground`,children:`The task function is an illustrative name, not a requirement for other projects. Run your app locally to test live updates; this page opens no background subscription and does not write application data.`})]})]}),(0,v.jsxs)(m,{children:[(0,v.jsx)(p,{children:(0,v.jsx)(d,{children:t===`dev`?`Local developer session`:`Production authentication`})}),(0,v.jsxs)(f,{className:`space-y-4`,children:[(0,v.jsx)(`p`,{className:`text-muted-foreground`,children:t===`dev`?`A 15-minute identity for this project's development environment. Keep it in a git-ignored local file, never in a bundle or commit. Request a new token after expiry.`:`Use enabled built-in password authentication or a configured OIDC provider. Developer identities cannot access production; application handlers enforce record permissions.`}),t===`dev`&&r.role!==`viewer`&&(0,v.jsxs)(s,{variant:`outline`,onClick:E,disabled:C,children:[(0,v.jsx)(g,{}),C?`Requesting…`:`Get developer session`]}),x&&(0,v.jsx)(c,{children:x}),y&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(`pre`,{className:`code-block`,children:JSON.stringify(y,null,2)}),(0,v.jsx)(s,{variant:`ghost`,onClick:()=>b(void 0),children:`Clear from view`})]})]})]})]})}export{y as default};
@@ -0,0 +1 @@
1
+ import{a as e,r as t}from"./client.BeKNsjPN.js";import{S as n,_ as r,b as i,g as a,h as o,kt as s,m as c,mt as l,n as u,o as d,p as f,pt as p,q as m,s as h,u as g,v as _,x as v,y}from"./common.D6YHScsr.js";import{c as b,d as x,f as S,l as C,o as w,u as T}from"./index.astro_astro_type_script_index_0_lang.BQ7pqT75.js";import{n as E,r as D}from"./client.BUUZgEFj.js";var O={name:`download`,size:24,node:[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]};O.node;var k=s(O),A={name:`trash`,size:24,node:[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]],aliases:[`trash-2`]};A.node;var j=s(A),M=e(t(),1),N=l();function P({project:e,env:t,session:o}){let[s,l]=(0,M.useState)([null]),d=s.at(-1),b=a(e,t),x=g(b+`/files`+(d?`?cursor=`+encodeURIComponent(d):``)),C=(0,M.useRef)(null),[T,O]=(0,M.useState)(!1),[A,P]=(0,M.useState)(!1),[F,I]=(0,M.useState)(``),[L,R]=(0,M.useState)(``),z=o.role!==`viewer`;async function B(){let n=C.current?.files?.[0];if(!n)return;O(!0),I(``),R(``);let r=!1;try{let i=E(n);if(t===`prod`&&!confirm(`Upload to production ${e.name}?`))return;R(`Preparing upload…`),r=!0;let a=await f(b+`/file-upload`,{...i,...t===`prod`?{confirm:e.id}:{}});R(`Uploading ${n.name}…`),await D(a,n),C.current&&(C.current.value=``),P(!1),R(`Upload complete`)}catch(e){R(``),I(c(e)+(r?`. Check the refreshed list before retrying. Incomplete uploads expire automatically; they are not queue jobs.`:``))}finally{O(!1),r&&x.refresh()}}async function V(e){I(``);try{let t=await f(b+`/file-download?id=`+encodeURIComponent(e)),n=document.createElement(`a`);n.href=t.url,n.rel=`noreferrer`,n.click()}catch(e){I(c(e))}}async function H(n){if(confirm(`Permanently delete this ${t} file?`)){O(!0),I(``);try{await f(b+`/file-delete`,{id:n,...t===`prod`?{confirm:e.id}:{}}),x.refresh()}catch(e){I(c(e))}finally{O(!1)}}}return(0,N.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,N.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,N.jsx)(`h1`,{className:`page-title`,children:`Files`}),(0,N.jsx)(p,{variant:`ghost`,size:`icon-sm`,"aria-label":`Reload snapshot`,title:`Reload snapshot`,onClick:x.refresh,disabled:x.loading,children:(0,N.jsx)(S,{})})]}),(0,N.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Private R2 storage · streaming uploads · maximum 10 MiB · download links expire after 5 minutes. 50 files per page.`}),(0,N.jsx)(h,{loading:x.loading,error:F||x.error}),L&&(0,N.jsx)(`p`,{role:`status`,className:`text-xs text-muted-foreground`,children:L}),z&&(0,N.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,N.jsx)(m,{ref:C,type:`file`,className:`max-w-sm`,disabled:T,"aria-label":`Choose file to upload`,onChange:e=>P(!!e.target.files?.length)}),(0,N.jsx)(p,{onClick:B,disabled:T||!A,children:`Upload file`})]}),x.data?.page.length?(0,N.jsxs)(r,{children:[(0,N.jsx)(v,{children:(0,N.jsx)(n,{children:[`Name`,`Type`,`Size`,`State`,`Created`,`Actions`].map(e=>(0,N.jsx)(i,{children:e},e))})}),(0,N.jsx)(_,{children:x.data.page.map(e=>(0,N.jsxs)(n,{children:[(0,N.jsx)(y,{children:e.name}),(0,N.jsx)(y,{children:e.type}),(0,N.jsx)(y,{children:e.size>=1048576?`${(e.size/1048576).toFixed(1)} MiB`:e.size<1024?`${e.size} B`:`${(e.size/1024).toFixed(1)} KiB`}),(0,N.jsx)(y,{children:(0,N.jsx)(w,{status:e.state,children:e.state===`pending`?`Awaiting upload`:e.state===`uploading`?`Uploading / recovering`:e.state})}),(0,N.jsx)(y,{children:new Date(e.createdAt).toLocaleString()}),(0,N.jsx)(y,{children:(0,N.jsxs)(`div`,{className:`flex gap-2`,children:[(0,N.jsx)(p,{size:`icon`,variant:`outline`,"aria-label":`Download ${e.name}`,disabled:e.state!==`ready`||T,onClick:()=>void V(e.id),children:(0,N.jsx)(k,{})}),z&&(0,N.jsx)(p,{size:`icon`,variant:`outline`,"aria-label":`Delete ${e.name}`,disabled:T,onClick:()=>void H(e.id),children:(0,N.jsx)(j,{})})]})})]},e.id))})]}):x.data&&(0,N.jsx)(u,{title:`No stored files`}),x.data&&(0,N.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,N.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Page `,s.length,` · `,x.data.page.length,` files`]}),(0,N.jsxs)(`div`,{className:`flex gap-2`,children:[(0,N.jsx)(p,{variant:`outline`,disabled:x.loading||s.length===1,onClick:()=>l(e=>e.slice(0,-1)),children:`Previous`}),(0,N.jsx)(p,{variant:`outline`,disabled:x.loading||x.data.isDone,onClick:()=>{x.data?.continueCursor&&l(e=>[...e,x.data.continueCursor])},children:`Next`})]})]})]})}function F({project:e,env:t,session:s}){let l=a(e,t),m=g(l+`/jobs`),[E,D]=(0,M.useState)(``);async function O(n){if(t!==`prod`||confirm(`Pause production cron ${n}?`))try{await f(l+`/cron-cancel`,{name:n,...t===`prod`?{confirm:e.id}:{}}),m.refresh()}catch(e){D(c(e))}}async function k(n){if(t!==`prod`||confirm(`Cancel this pending production job?`)){D(``);try{(await f(l+`/job-cancel`,{id:n,...t===`prod`?{confirm:e.id}:{}})).cancelled||D(`This job is already enqueued; it cannot be cancelled here.`)}catch(e){D(c(e))}finally{m.refresh()}}}return(0,N.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,N.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,N.jsx)(`h1`,{className:`page-title`,children:`Schedules`}),(0,N.jsx)(p,{variant:`ghost`,size:`icon-sm`,"aria-label":`Reload snapshot`,title:`Reload snapshot`,onClick:m.refresh,disabled:m.loading,children:(0,N.jsx)(S,{})})]}),(0,N.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Durable scheduling → transactional outbox → Cloudflare Queues. At-least-once delivery; handlers must be idempotent. Times use UTC.`}),(0,N.jsx)(h,{loading:m.loading,error:m.error||E}),(0,N.jsxs)(b,{defaultValue:`scheduled`,children:[(0,N.jsxs)(T,{variant:`line`,children:[(0,N.jsx)(x,{value:`scheduled`,children:`Scheduled Functions`}),(0,N.jsx)(x,{value:`cron`,children:`Cron Jobs`})]}),(0,N.jsxs)(C,{value:`scheduled`,className:`space-y-4 pt-4`,children:[(0,N.jsx)(`h2`,{className:`section-title`,children:`Waiting to enqueue`}),m.data&&(m.data.pending.length?(0,N.jsxs)(r,{children:[(0,N.jsx)(v,{children:(0,N.jsx)(n,{children:[`Function`,`Due (UTC)`,`Job ID`,``].map((e,t)=>(0,N.jsx)(i,{children:e},t))})}),(0,N.jsx)(_,{children:m.data.pending.map(e=>(0,N.jsxs)(n,{children:[(0,N.jsx)(y,{className:`font-mono`,children:String(e.path)}),(0,N.jsx)(y,{children:new Date(Number(e.dueAt)).toISOString()}),(0,N.jsx)(y,{className:`font-mono`,children:String(e.id)}),(0,N.jsx)(y,{children:s.role!==`viewer`&&(0,N.jsx)(p,{variant:`outline`,disabled:m.loading,onClick:()=>void k(String(e.id)),children:`Cancel`})})]},String(e.id)))})]}):(0,N.jsx)(u,{title:`No delayed jobs`})),(0,N.jsx)(`h2`,{className:`section-title`,children:`Recent queue deliveries`}),m.data&&(m.data.recent.length?(0,N.jsx)(d,{rows:m.data.recent,columns:[`id`,`path`,`state`,`attempts`,`error`,`at`],renderCell:(e,t)=>e===`state`?(0,N.jsx)(w,{status:String(t)}):e===`at`&&typeof t==`number`?new Date(t).toLocaleString():o(t)}):(0,N.jsx)(u,{title:`No queue deliveries yet`}))]}),(0,N.jsxs)(C,{value:`cron`,className:`space-y-4 pt-4`,children:[m.data?.crons.length?(0,N.jsxs)(r,{children:[(0,N.jsx)(v,{children:(0,N.jsx)(n,{children:[`Name`,`Function`,`Cron (UTC)`,`State`,``].map((e,t)=>(0,N.jsx)(i,{children:e},t))})}),(0,N.jsx)(_,{children:m.data.crons.map(e=>(0,N.jsxs)(n,{children:[(0,N.jsx)(y,{children:e.name}),(0,N.jsx)(y,{className:`font-mono`,children:e.path}),(0,N.jsx)(y,{className:`font-mono`,children:e.cron}),(0,N.jsx)(y,{children:(0,N.jsx)(w,{status:e.enabled?`Enabled`:`Paused`})}),(0,N.jsx)(y,{children:s.role!==`viewer`&&e.enabled&&(0,N.jsx)(p,{variant:`outline`,onClick:()=>void O(e.name),children:`Pause`})})]},e.name))})]}):m.data&&(0,N.jsx)(u,{title:`No cron jobs`}),(0,N.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Define schedules through an application action using ctx.schedules.set(). Five-field cron expressions, minimum one minute, maximum 20 per environment. No permanent frontend timers.`})]})]})]})}export{P as FilesView,F as SchedulesView};
@@ -0,0 +1,3 @@
1
+ import{a as e,r as t}from"./client.BeKNsjPN.js";import{A as n,O as r,S as i,_ as a,a as o,b as s,g as c,j as l,k as u,m as d,mt as f,p,pt as m,q as h,r as g,s as _,u as v,v as y,x as b,y as x}from"./common.D6YHScsr.js";import{i as S,n as C,o as w,r as T,t as E}from"./index.astro_astro_type_script_index_0_lang.BQ7pqT75.js";var D=e(t(),1),O=f();function k(e){return(0,O.jsxs)(`div`,{className:`space-y-3 p-4 pt-0`,children:[(0,O.jsx)(`p`,{className:`text-muted-foreground`,children:`On-demand data, user accounts, files and backend code snapshots. Restore only into an empty environment. Sessions, secrets and schedules are not copied. No background polling.`}),(0,O.jsx)(A,{...e})]})}function A(e){let[t,n]=(0,D.useState)(e.env),[r,l]=(0,D.useState)(null),[u,d]=(0,D.useState)(),f=c(e.project,t),h=c(e.project,e.env),g=v(f+`/backups`+(r?`?cursor=${encodeURIComponent(r)}`:``)),S=v(h+`/backup-status`),C=e.session.role===`owner`,T=(t,n,r,i)=>d({title:t,description:n,productionId:e.project.id,submit:async()=>{await p(r,{...i,confirm:e.project.id}),g.refresh(),S.refresh()}});return(0,O.jsxs)(`div`,{className:`space-y-3`,children:[(0,O.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Limits: 10,000 documents / 4 MiB data; 100 files / 100 MiB. Pause cron and drain jobs before creating a backup. Partial restores stay closed; retry the same backup ID.`}),S.data?.status===`restoring`&&(0,O.jsxs)(`p`,{role:`alert`,children:[(0,O.jsx)(w,{status:`restoring`,children:`Restore in progress`}),`:`,` `,S.data.id,`. Select its source environment and retry Restore to finish.`]}),(0,O.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[[`dev`,`prod`].map(e=>(0,O.jsxs)(m,{variant:t===e?`secondary`:`outline`,onClick:()=>{n(e),l(null)},children:[e===`dev`?`Development`:`Production`,` backups`]},e)),C&&(0,O.jsxs)(m,{onClick:()=>{let t=crypto.randomUUID();T(`Create backup`,`Snapshot ${e.env}. Backup ID: ${t}. No data will be deleted.`,h+`/backup-create`,{id:t})},children:[`Create `,e.env,` backup`]})]}),(0,O.jsx)(_,{loading:g.loading||S.loading,error:g.error||S.error}),g.data&&(0,O.jsxs)(a,{children:[(0,O.jsx)(b,{children:(0,O.jsxs)(i,{children:[(0,O.jsx)(s,{children:`Created`}),(0,O.jsx)(s,{children:`Backup / release`}),(0,O.jsx)(s,{children:`Documents`}),(0,O.jsx)(s,{children:`Files`}),(0,O.jsx)(s,{children:`Actions`})]})}),(0,O.jsxs)(y,{children:[g.data.page.map(n=>(0,O.jsxs)(i,{children:[(0,O.jsx)(x,{children:n.at?new Date(n.at).toLocaleString():(0,O.jsx)(w,{status:`Incomplete`})}),(0,O.jsxs)(x,{children:[(0,O.jsx)(`code`,{className:`text-xs select-all`,children:n.id}),(0,O.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n.hash?.slice(0,12)??`Not restorable`})]}),(0,O.jsx)(x,{children:n.rows??`—`}),(0,O.jsx)(x,{children:n.files??`—`}),(0,O.jsx)(x,{children:(0,O.jsxs)(`div`,{className:`flex gap-2`,children:[C&&t!==e.env&&n.hash&&(0,O.jsxs)(m,{variant:`outline`,size:`sm`,onClick:()=>T(`Restore backup`,`Restore ${n.id} from ${t} into empty ${e.env}. Existing data will never be overwritten. Origin/auth settings stay unchanged.`,h+`/backup-restore`,{id:n.id,sourceEnv:t}),children:[`Restore into `,e.env]}),C&&(0,O.jsx)(m,{variant:`outline`,size:`sm`,onClick:()=>T(`Delete backup`,`Permanently delete snapshot ${n.id}. Live application data is not affected. Do not delete a backup needed by an unfinished restore.`,f+`/backup-delete`,{id:n.id}),children:`Delete`})]})})]},n.id)),!g.data.page.length&&(0,O.jsx)(i,{children:(0,O.jsx)(x,{colSpan:5,children:`No backups.`})})]})]}),(0,O.jsxs)(`div`,{className:`flex gap-2`,children:[(0,O.jsx)(m,{variant:`outline`,disabled:!r,onClick:()=>l(null),children:`First page`}),(0,O.jsx)(m,{variant:`outline`,disabled:!g.data?.cursor,onClick:()=>l(g.data?.cursor??null),children:`Next page`})]}),u&&(0,O.jsx)(o,{modal:u,onClose:()=>d(void 0)})]})}function j({onDeleted:e,...t}){let n=c(t.project,t.env),r=v(n+`/settings`),[i,a]=(0,D.useState)(!1);return(0,O.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,O.jsx)(`h1`,{className:`page-title`,children:`Settings`}),(0,O.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Environment identity and frontend permissions.`}),(0,O.jsx)(_,{...r}),r.data&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(N,{...t,settings:r.data,refresh:r.refresh}),(0,O.jsxs)(`details`,{className:`rounded-lg border`,onToggle:e=>a(e.currentTarget.open),children:[(0,O.jsx)(`summary`,{className:`cursor-pointer p-4 font-medium`,children:`Backups`}),i&&(0,O.jsx)(k,{...t})]})]}),t.session.role===`owner`&&(0,O.jsx)(M,{...t,onDeleted:e})]})}function M({project:e,onDeleted:t}){let[i,a]=(0,D.useState)();return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(E,{children:[(0,O.jsx)(T,{children:(0,O.jsx)(S,{children:`Delete project`})}),(0,O.jsxs)(C,{className:`space-y-3`,children:[(0,O.jsx)(`p`,{className:`text-muted-foreground`,children:`Permanently delete both development and production: data, users, files, releases, backups and schedules. This cannot be undone.`}),e.deleting?(0,O.jsx)(`p`,{role:`alert`,children:`Deletion was started. Retry to finish cleanup.`}):null,(0,O.jsx)(m,{variant:`destructive`,onClick:()=>a({title:`Delete project`,description:`Delete ${e.name} and both environments permanently? The short URL stays reserved; other projects are not affected.`,destructive:!0,submitLabel:`Delete project`,content:(0,O.jsxs)(r,{children:[(0,O.jsxs)(n,{htmlFor:`delete-project-name`,children:[`Type the project name: `,e.name]}),(0,O.jsx)(h,{id:`delete-project-name`,name:`name`,required:!0,autoComplete:`off`,maxLength:100})]}),submit:async n=>{let r=new FormData(n).get(`name`);if(r!==e.name)throw Error(`Project name does not match`);try{await p(`projects/${e.id}/delete`,{name:r,confirm:e.id})}catch(t){if(d(t)!==`NOT_FOUND`||(await p(`projects`)).some(t=>t.id===e.id))throw t}t()}}),children:`Delete project`})]})]}),i&&(0,O.jsx)(o,{modal:i,onClose:()=>a(void 0)})]})}function N({project:e,env:t,session:i,settings:a,refresh:s}){let f=c(e,t),_=i.role!==`viewer`,[v,y]=(0,D.useState)(),[b,x]=(0,D.useState)(``),[w,k]=(0,D.useState)(``),[A,j]=(0,D.useState)(!1),M=async e=>{if(!A){j(!0),k(``);try{await e()}catch(e){k(d(e))}finally{j(!1)}}},N=(n,r,i)=>y({title:n,description:r,productionId:t===`prod`?e.id:void 0,submit:async e=>i(t===`prod`?String(new FormData(e).get(`confirm`)):void 0)});return(0,O.jsxs)(O.Fragment,{children:[w&&(0,O.jsx)(g,{children:w}),(0,O.jsxs)(E,{children:[(0,O.jsx)(T,{children:(0,O.jsx)(S,{children:`Cloud URL`})}),(0,O.jsxs)(C,{className:`space-y-3`,children:[(0,O.jsx)(`code`,{className:`block select-all break-all`,children:a.url}),(0,O.jsx)(`p`,{className:`text-muted-foreground`,children:`Permanent project name. Existing UUID URLs remain valid.`}),!a.alias&&i.role===`owner`&&(0,O.jsxs)(`form`,{className:`flex gap-2`,onSubmit:t=>{t.preventDefault();let n=new FormData(t.currentTarget).get(`alias`);M(async()=>{await p(`projects/${e.id}/alias`,{alias:n}),s()})},children:[(0,O.jsx)(h,{name:`alias`,"aria-label":`Short URL name`,required:!0,maxLength:48,pattern:`[a-z][a-z0-9]*(?:-[a-z0-9]+)*`,placeholder:`crm`}),(0,O.jsx)(m,{type:`submit`,disabled:A,children:`Set short URL`})]})]})]}),(0,O.jsxs)(E,{children:[(0,O.jsx)(T,{children:(0,O.jsx)(S,{children:`Environment access`})}),(0,O.jsx)(C,{children:(0,O.jsx)(`form`,{className:`max-w-xl`,onSubmit:e=>{if(e.preventDefault(),!_)return;let t=new FormData(e.currentTarget),n={origins:String(t.get(`origins`)).split(`
2
+ `).map(e=>e.trim()).filter(Boolean),oidc:[`issuer`,`audience`,`jwks`].some(e=>String(t.get(e)).trim())?Object.fromEntries([`issuer`,`audience`,`jwks`].map(e=>[e,String(t.get(e)).trim()])):null};N(`Save environment`,`Updates frontend origins and user token verification. Existing applications continue to use this environment.`,async e=>{await p(f+`/settings`,{...n,confirm:e}),s()})},children:(0,O.jsxs)(u,{children:[(0,O.jsxs)(r,{children:[(0,O.jsx)(n,{htmlFor:`settings-origins`,children:`Frontend origins · one per line`}),(0,O.jsx)(l,{id:`settings-origins`,name:`origins`,defaultValue:a.origins.join(`
3
+ `),disabled:!_})]}),(0,O.jsx)(`h3`,{className:`text-sm font-medium`,children:`Authentication · OIDC / RS256`}),(0,O.jsxs)(r,{children:[(0,O.jsx)(n,{htmlFor:`settings-issuer`,children:`Issuer`}),(0,O.jsx)(h,{id:`settings-issuer`,type:`url`,name:`issuer`,defaultValue:a.oidc?.issuer??``,disabled:!_,placeholder:`https://your-provider.example`})]}),(0,O.jsxs)(r,{children:[(0,O.jsx)(n,{htmlFor:`settings-audience`,children:`Audience`}),(0,O.jsx)(h,{id:`settings-audience`,name:`audience`,defaultValue:a.oidc?.audience??``,disabled:!_})]}),(0,O.jsxs)(r,{children:[(0,O.jsx)(n,{htmlFor:`settings-jwks`,children:`JWKS URL`}),(0,O.jsx)(h,{id:`settings-jwks`,type:`url`,name:`jwks`,defaultValue:a.oidc?.jwks??``,disabled:!_,placeholder:`https://your-provider.example/.well-known/jwks.json`})]}),(0,O.jsx)(`p`,{className:`text-muted-foreground`,children:`Leave all three empty to disable OIDC. Protected production functions remain closed.`}),_&&(0,O.jsx)(m,{type:`submit`,children:`Save environment`})]})})})]}),(0,O.jsxs)(E,{children:[(0,O.jsx)(T,{children:(0,O.jsx)(S,{children:`CLI access`})}),(0,O.jsxs)(C,{className:`space-y-4`,children:[(0,O.jsx)(`p`,{children:`Project-scoped deploy credential, valid for 30 days. Never put it in frontend code. Keep it in your shell or CI secret store.`}),i.role===`owner`&&(0,O.jsxs)(`div`,{className:`flex gap-2`,children:[(0,O.jsx)(m,{variant:`outline`,onClick:()=>N(`Issue CLI credential`,`The token is shown once. It grants deployment rights only for this project.`,async t=>{let n=await p(f+`/credential`,{confirm:t});x(`export FLARE_DEPLOY_TOKEN=${n.token}\nflare link --platform ${n.platform} --project ${e.id}\nflare deploy --env dev --release ./release`)}),children:`Issue credential`}),(0,O.jsx)(m,{variant:`destructive`,onClick:()=>N(`Revoke project credentials`,`All existing CLI credentials for this project will stop working.`,async e=>{await p(f+`/revoke-credentials`,{confirm:e}),x(`Credentials revoked.`)}),children:`Revoke credentials`})]}),b&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`pre`,{className:`code-block`,children:b}),(0,O.jsx)(m,{variant:`ghost`,onClick:()=>x(``),children:`Clear from view`})]})]})]}),v&&(0,O.jsx)(o,{modal:v,onClose:()=>y(void 0)})]})}export{j as default};
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="robots" content="noindex,nofollow"><title>Flare · Dashboard</title><meta http-equiv="content-security-policy" content="script-src 'self' 'sha256-xIb/Pa7FUshAu4ihwjchYcQpyCI8eS8kt40GpOAYCz8=' 'sha256-1BvDVWLr3QCC20uHhUDi27eDFVJpk1uMQJGIWKUks2I=' 'sha256-kmZE/W8I1iuTnl1b3yqzv9/DQZenPngd3NjSKMQl7y0=' 'sha256-Y8t0ntteBwH+PqGKUyjWW3CAk+BNJKSoQc0xZ68FjhM=' 'sha256-0O7iB6zr9x0r6X6eWYITC9V5q+yWCGAoFvcysBGbY9Q=' 'sha256-tQIkdAw2vqfQ1PjgUE4ML2A4pIV8SByQ1Seeehy6UIc=' 'sha256-4f86GpVBksx63uHEB4f15jGyhnVEOKjwqYxwnfDVOik='; style-src 'self' 'sha256-vv9IoKo7BSLbWcUHr3tNmfNVmm5L/9Cfn2H6LMk7/ow=' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=';"><link rel="stylesheet" href="/_astro/index.lobU7uK5.css"></head><body><div id="flare-dashboard"><div class="p-6 text-sm text-muted-foreground" role="status">Loading Flare…</div></div><script type="module" src="/_astro/index.astro_astro_type_script_index_0_lang.BEuO3H0E.js"></script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="robots" content="noindex,nofollow"><title>Flare · Dashboard</title><meta http-equiv="content-security-policy" content="script-src 'self' 'sha256-xIb/Pa7FUshAu4ihwjchYcQpyCI8eS8kt40GpOAYCz8=' 'sha256-1BvDVWLr3QCC20uHhUDi27eDFVJpk1uMQJGIWKUks2I=' 'sha256-kmZE/W8I1iuTnl1b3yqzv9/DQZenPngd3NjSKMQl7y0=' 'sha256-Y8t0ntteBwH+PqGKUyjWW3CAk+BNJKSoQc0xZ68FjhM=' 'sha256-0O7iB6zr9x0r6X6eWYITC9V5q+yWCGAoFvcysBGbY9Q=' 'sha256-tQIkdAw2vqfQ1PjgUE4ML2A4pIV8SByQ1Seeehy6UIc=' 'sha256-4f86GpVBksx63uHEB4f15jGyhnVEOKjwqYxwnfDVOik='; style-src 'self' 'sha256-vv9IoKo7BSLbWcUHr3tNmfNVmm5L/9Cfn2H6LMk7/ow=' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=';"><link rel="stylesheet" href="/_astro/index.BPQdjJ4j.css"></head><body><div id="flare-dashboard"><div class="p-6 text-sm text-muted-foreground" role="status">Loading Flare…</div></div><script type="module" src="/_astro/index.astro_astro_type_script_index_0_lang.BQ7pqT75.js"></script></body></html>
@@ -1,29 +1,29 @@
1
1
  {
2
2
  "format": 1,
3
- "version": "0.3.5",
3
+ "version": "0.3.7",
4
4
  "stateFormat": 1,
5
5
  "protocol": 1,
6
6
  "runtimeAbi": 4,
7
7
  "compatibilityDate": "2026-10-10",
8
8
  "wranglerVersion": "4.149.0",
9
9
  "upgradeFrom": [
10
- "0.3.4"
10
+ "0.3.6"
11
11
  ],
12
12
  "files": [
13
13
  {
14
14
  "path": "admin.js",
15
- "bytes": 34968,
16
- "sha256": "6423e02eccc1b1029ad67f6b46f8dc3fa87bc718bae343832b8043047a95a78a"
15
+ "bytes": 35767,
16
+ "sha256": "41a917a84c9f378172128dfb9ea44c69d81cf7267d741d7c0825b056dd4ca6b4"
17
17
  },
18
18
  {
19
- "path": "dashboard/_astro/auth-view.UTGGCEHc.js",
19
+ "path": "dashboard/_astro/auth-view.DxyBDw7Z.js",
20
20
  "bytes": 3499,
21
- "sha256": "c807cff07af551e566ba4324aeb9a523d4f78a5abddca4426a32270290862082"
21
+ "sha256": "417e0cb4a41d5c026f64620ea8b61ec00c8c890d93cc2d281e08dc8bfd973c57"
22
22
  },
23
23
  {
24
- "path": "dashboard/_astro/cli-approval.BZAWmpiR.js",
24
+ "path": "dashboard/_astro/cli-approval.C4-RBXQh.js",
25
25
  "bytes": 2090,
26
- "sha256": "60ed08983cca3b0a5615c9ba76600abbe8ee9ba1d45f8956f707b4f6c67e5ee0"
26
+ "sha256": "7017105953ec5666be84f00fc2d9158d11d9d9173bf80a3ca8d0525f2caeedc2"
27
27
  },
28
28
  {
29
29
  "path": "dashboard/_astro/client.BUUZgEFj.js",
@@ -41,19 +41,19 @@
41
41
  "sha256": "734f339e4f5fe6dc3597d92c36a0c55023927eebfe4f006f23ad8552e5d48e9a"
42
42
  },
43
43
  {
44
- "path": "dashboard/_astro/common.DPoFQu44.js",
45
- "bytes": 188920,
46
- "sha256": "9cf60316b4d8d6ad65b35fe76a9e34ad779b2c917f230fb950d944ab1d3fd131"
44
+ "path": "dashboard/_astro/common.D6YHScsr.js",
45
+ "bytes": 186827,
46
+ "sha256": "e09b6d8e6f4655e445bb36ff2db2f6d2b977f86bb4ee3d4fb9a9d6ab04c796bb"
47
47
  },
48
48
  {
49
- "path": "dashboard/_astro/data-view.BgYyTCMN.js",
50
- "bytes": 5940,
51
- "sha256": "63d37a431a85041fd41d2a7618b64a8452d5a276680ecb41eafbe439acc7ecaf"
49
+ "path": "dashboard/_astro/data-view.B2afgdXn.js",
50
+ "bytes": 5806,
51
+ "sha256": "99448d10a0f3bda225f4ab019826303dbb79fda4f03ff53ec82bbffb7719d635"
52
52
  },
53
53
  {
54
- "path": "dashboard/_astro/functions-view.PUkng3T1.js",
55
- "bytes": 6201,
56
- "sha256": "93cc5deb3cd0dcab79f66f497887b09baec9cf2c00115a95f5b742a7a3afd5b9"
54
+ "path": "dashboard/_astro/functions-view.B0jPBNNy.js",
55
+ "bytes": 6206,
56
+ "sha256": "fa3b18034488c6cd8a29d8f7979332e09b13e25a0d8feec2f097aff428f2e887"
57
57
  },
58
58
  {
59
59
  "path": "dashboard/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2",
@@ -81,34 +81,34 @@
81
81
  "sha256": "8fa40e5d248247735eb97a0bd593b8852440430600d6ba01364c31fe0abc1fe1"
82
82
  },
83
83
  {
84
- "path": "dashboard/_astro/index.astro_astro_type_script_index_0_lang.BEuO3H0E.js",
85
- "bytes": 43621,
86
- "sha256": "9b2f2292fe901602bec1848dd005cb2fc75589d4de4cd00d823870b635e0306e"
84
+ "path": "dashboard/_astro/index.BPQdjJ4j.css",
85
+ "bytes": 70245,
86
+ "sha256": "03da0b7733798a393d7ebdaf27b5bb63387da684ff3dcf8b3e87215947fa3409"
87
87
  },
88
88
  {
89
- "path": "dashboard/_astro/index.lobU7uK5.css",
90
- "bytes": 71163,
91
- "sha256": "e70a19c8a920bac087dd81037e0c58316b13d42ddd66e90b0b478e72d9477372"
89
+ "path": "dashboard/_astro/index.astro_astro_type_script_index_0_lang.BQ7pqT75.js",
90
+ "bytes": 36986,
91
+ "sha256": "573b4ebc519a2fb0b1f703a01d88b61091059e8be59708629795de3c9fb2f59b"
92
92
  },
93
93
  {
94
- "path": "dashboard/_astro/input-group.CJxPRHej.js",
94
+ "path": "dashboard/_astro/input-group.BziAwKdZ.js",
95
95
  "bytes": 3065,
96
- "sha256": "da2e4007f4484bb91a06daaa6f320e3d415bf738e329626f4ff50b3acc3146fa"
96
+ "sha256": "7ab75dbd04fc89f04adba95f58ad35ae29e8ccb0ff72035e8caecea15560422b"
97
97
  },
98
98
  {
99
- "path": "dashboard/_astro/sdk-view.COmbEZrF.js",
99
+ "path": "dashboard/_astro/sdk-view.DAd5aPbd.js",
100
100
  "bytes": 3363,
101
- "sha256": "fd4c0e9306b52f97c944e973003eae65d80afa886853f87178d16ad5317b141d"
101
+ "sha256": "fa042beefd6b7104b4c4b9620892e7b68f181639df3543d5e64ad8c0fe358e7a"
102
102
  },
103
103
  {
104
- "path": "dashboard/_astro/services-view.C34dy0dk.js",
105
- "bytes": 8054,
106
- "sha256": "ac65cedc79ee7475fca380fb46380fc859dd78197d07e5898b6564ab617598dc"
104
+ "path": "dashboard/_astro/services-view.BvkS7FHr.js",
105
+ "bytes": 8249,
106
+ "sha256": "1da534910cba93bc4d69e772cae31f35d0de0abe6b48c87dd1a49cd4e13805fc"
107
107
  },
108
108
  {
109
- "path": "dashboard/_astro/settings-view.IuD2r5JW.js",
110
- "bytes": 10266,
111
- "sha256": "f0137e5d3433d0613f1a5df9fabcf90386625b879875f68d425d512fb96fa610"
109
+ "path": "dashboard/_astro/settings-view.BXt0dexJ.js",
110
+ "bytes": 10282,
111
+ "sha256": "94cbaa1c967fd901b9a04180244089ce37c9726e82a3dca02f1d520433e377c0"
112
112
  },
113
113
  {
114
114
  "path": "dashboard/_headers",
@@ -153,7 +153,7 @@
153
153
  {
154
154
  "path": "dashboard/index.html",
155
155
  "bytes": 1095,
156
- "sha256": "efe48778050011e7de564d47e33381c3afeb07c204614f0e8fa76c3ec78f1046"
156
+ "sha256": "4b36ed61d3e26f6a0695a3489d3bfac1d606227719836edc628b8e23542e85df"
157
157
  },
158
158
  {
159
159
  "path": "migrations/0001.sql",
@@ -187,9 +187,9 @@
187
187
  },
188
188
  {
189
189
  "path": "runtime.js",
190
- "bytes": 346794,
191
- "sha256": "70c81434b4eb1cfd8926662285f98a17218cc2dd244d4e3240fa61883078348e"
190
+ "bytes": 348181,
191
+ "sha256": "115904ab19d3bc8f7bf18b718147c98811f6bf3f155b79f4c99e2545c5c40ec9"
192
192
  }
193
193
  ],
194
- "digest": "93fa2857c7f7536138cb3e3cb25d20739d058b3c9476c8d23dfda76b3d13a8d3"
194
+ "digest": "e7c746146383646d2a33266f89c3a43ea0b1eff9167edbd9ccbeeb0f5432a15c"
195
195
  }
@@ -529,7 +529,7 @@ class PasswordAuth {
529
529
  // packages/core/package.json
530
530
  var package_default = {
531
531
  name: "@flare/platform",
532
- version: "0.3.5",
532
+ version: "0.3.7",
533
533
  type: "module",
534
534
  license: "MIT",
535
535
  private: true,
@@ -7841,9 +7841,26 @@ function aliases(env) {
7841
7841
  }
7842
7842
  function getSupervisor(env, scope) {
7843
7843
  const stub = env.SUPERVISORS.getByName(scope);
7844
- return new Proxy({}, {
7845
- get: (_target, key) => key === "fetch" ? (request) => stub.fetch(request) : (...args) => stub.dispatch(String(key), args).then(unwrap)
7846
- });
7844
+ return {
7845
+ fetch: (request) => stub.fetch(request),
7846
+ authCommand: (...args) => stub.dispatch("authCommand", args).then(unwrap),
7847
+ application: (...args) => stub.dispatch("application", args).then(unwrap),
7848
+ socketIdentity: (...args) => stub.dispatch("socketIdentity", args).then(unwrap),
7849
+ configuration: (...args) => stub.dispatch("configuration", args).then(unwrap),
7850
+ configure: (...args) => stub.dispatch("configure", args).then(unwrap),
7851
+ publish: (...args) => stub.dispatch("publish", args).then(unwrap),
7852
+ activate: (...args) => stub.dispatch("activate", args).then(unwrap),
7853
+ admin: (...args) => stub.dispatch("admin", args).then(unwrap),
7854
+ authenticate: (...args) => stub.dispatch("authenticate", args).then(unwrap),
7855
+ consumeTicket: (...args) => stub.dispatch("consumeTicket", args).then(unwrap),
7856
+ ticket: (...args) => stub.dispatch("ticket", args).then(unwrap),
7857
+ call: (...args) => stub.dispatch("call", args).then(unwrap),
7858
+ job: (...args) => stub.dispatch("job", args).then(unwrap),
7859
+ destroy: (...args) => stub.dispatch("destroy", args).then(unwrap),
7860
+ prepareDestroy: (...args) => stub.dispatch("prepareDestroy", args).then(unwrap),
7861
+ fileCommand: (...args) => stub.dispatch("fileCommand", args).then(unwrap),
7862
+ scheduleCommand: (...args) => stub.dispatch("scheduleCommand", args).then(unwrap)
7863
+ };
7847
7864
  }
7848
7865
 
7849
7866
  class AppOutbound extends WorkerEntrypoint {
@@ -7904,7 +7921,10 @@ class EnvironmentSupervisor extends DurableObject {
7904
7921
  "scheduleCommand"
7905
7922
  ].includes(op))
7906
7923
  fail("INVALID_OPERATION");
7907
- return this[op](...args);
7924
+ if (!Array.isArray(args))
7925
+ fail("INVALID_INPUT");
7926
+ const method = this[op];
7927
+ return method.apply(this, args);
7908
7928
  });
7909
7929
  }
7910
7930
  removed = false;
@@ -9148,7 +9168,10 @@ class RuntimeControl extends WorkerEntrypoint {
9148
9168
  "readiness"
9149
9169
  ].includes(op))
9150
9170
  fail("INVALID_OPERATION");
9151
- return this[op](...args);
9171
+ if (!Array.isArray(args))
9172
+ fail("INVALID_INPUT");
9173
+ const method = this[op];
9174
+ return method.apply(this, args);
9152
9175
  });
9153
9176
  }
9154
9177
  readiness() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@auersperg/flare",
3
- "version": "0.3.5",
3
+ "version": "0.3.7",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "Flare client, server declarations and development CLI",
@@ -1 +0,0 @@
1
- import{a as e,r as t}from"./client.BeKNsjPN.js";import{M as n,Y as r,gt as i,ht as a,j as o,k as s,m as c,p as l,r as u,t as d}from"./common.DPoFQu44.js";var f=e(t(),1),p=i();function m(){let e=new URLSearchParams(location.search).get(`cli`)??``,[t,i]=(0,f.useState)(``),[m,h]=(0,f.useState)([]),[g,_]=(0,f.useState)(`new`),[v,y]=(0,f.useState)(``),[b,x]=(0,f.useState)(``),[S,C]=(0,f.useState)(!1),[w,T]=(0,f.useState)(!1);(0,f.useEffect)(()=>{let t=new AbortController;return Promise.all([l(`cli/approval?id=`+encodeURIComponent(e),void 0,t.signal),l(`projects`,void 0,t.signal)]).then(([e,t])=>{i(e.code),h(t),_(`new`)}).catch(e=>{t.signal.aborted||x(c(e))}),()=>t.abort()},[e]);async function E(){C(!0),x(``);try{let t=g;if(t===`new`){let e=await l(`projects`,{name:v,customer:`Applications`,origins:[]});t=e.id,h(t=>[...t,{id:e.id,name:v,customer:`Applications`}]),_(t)}await l(`cli/approval`,{id:e,project:t}),T(!0)}catch(e){x(c(e))}finally{C(!1)}}return(0,p.jsxs)(`main`,{className:`mx-auto max-w-lg p-8`,children:[(0,p.jsx)(`h1`,{className:`mb-4 text-xl font-semibold`,children:`Connect Flare CLI`}),w?(0,p.jsx)(`p`,{children:`Connected. Return to your terminal. You can close this tab.`}):(0,p.jsxs)(o,{children:[(0,p.jsx)(`p`,{children:`Approve only a login you just started. Compare this code with your terminal:`}),(0,p.jsx)(`strong`,{className:`text-2xl font-mono`,children:t||`Loading…`}),(0,p.jsx)(`p`,{children:`Grants this computer deployment access to the selected project, including production. The credential expires in 30 days and can be revoked in Settings.`}),(0,p.jsxs)(s,{children:[(0,p.jsx)(n,{children:`Project`}),(0,p.jsx)(d,{label:`CLI project`,value:g,onChange:_,items:[...m.map(e=>({value:e.id,label:e.name})),{value:`new`,label:`Create new project`}]})]}),g===`new`&&(0,p.jsxs)(s,{children:[(0,p.jsx)(n,{children:`New project name`}),(0,p.jsx)(r,{value:v,onChange:e=>y(e.target.value),maxLength:100})]}),b&&(0,p.jsx)(u,{children:b}),(0,p.jsx)(a,{disabled:S||!t||!g||g===`new`&&!v.trim(),onClick:E,children:`Approve connection`})]})]})}export{m as default};