@tscircuit/runframe 0.0.1136 → 0.0.1138

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.
@@ -83,7 +83,7 @@ TabsContent.displayName = TabsPrimitive.Content.displayName;
83
83
 
84
84
  // lib/components/CircuitJsonPreview/CircuitJsonPreview.tsx
85
85
  import { CadViewer } from "@tscircuit/3d-viewer";
86
- import { useCallback as useCallback8, useEffect as useEffect12, useState as useState19, useMemo as useMemo8 } from "react";
86
+ import { useCallback as useCallback9, useEffect as useEffect14, useState as useState20, useMemo as useMemo9 } from "react";
87
87
 
88
88
  // lib/components/ErrorFallback.tsx
89
89
  import "react";
@@ -376,7 +376,7 @@ var AutoroutingLogOptions = ({
376
376
  ] }) });
377
377
 
378
378
  // lib/components/ErrorTabContent/ErrorTabContent.tsx
379
- import { useState, useMemo } from "react";
379
+ import { useState, useMemo, useEffect } from "react";
380
380
  import { Fragment as Fragment2, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
381
381
  var ErrorTabContent = ({
382
382
  code,
@@ -500,6 +500,19 @@ var ErrorTabContent = ({
500
500
  };
501
501
  const currentError = unifiedErrors[currentErrorIndex];
502
502
  const currentWarning = unifiedWarnings[currentWarningIndex];
503
+ useEffect(() => {
504
+ if (errorMessage) {
505
+ let errorText = errorMessage;
506
+ if (errorStack) {
507
+ errorText += `
508
+
509
+ ${errorStack}`;
510
+ }
511
+ if (typeof window !== "undefined") {
512
+ window.__TSCIRCUIT_LAST_EXECUTION_ERROR = errorText;
513
+ }
514
+ }
515
+ }, [errorMessage, errorStack]);
503
516
  return /* @__PURE__ */ jsx6(Fragment2, { children: /* @__PURE__ */ jsxs4("div", { className: "rf-w-[95%] rf-mx-auto", children: [
504
517
  unifiedErrors.length > 1 && /* @__PURE__ */ jsxs4("div", { className: "rf-flex rf-items-center rf-gap-2 rf-mb-2", children: [
505
518
  /* @__PURE__ */ jsx6(
@@ -1135,14 +1148,14 @@ var PcbViewerWithContainerHeight = ({
1135
1148
  };
1136
1149
 
1137
1150
  // lib/hooks/use-styles.ts
1138
- import { useEffect } from "react";
1151
+ import { useEffect as useEffect2 } from "react";
1139
1152
 
1140
1153
  // lib/hooks/styles.generated.ts
1141
- var styles_generated_default = '*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:root{--radius:0.5rem}.rf-pointer-events-none{pointer-events:none}.rf-invisible{visibility:hidden}.rf-fixed{position:fixed}.rf-absolute{position:absolute}.rf-relative{position:relative}.rf-inset-0{inset:0}.-rf-left-2{left:-.5rem}.-rf-right-10{right:-2.5rem}.-rf-right-2{right:-.5rem}.-rf-right-4{right:-1rem}.-rf-right-6{right:-1.5rem}.-rf-right-7{right:-1.75rem}.-rf-right-8{right:-2rem}.-rf-right-9{right:-2.25rem}.rf-bottom-full{bottom:100%}.rf-left-0{left:0}.rf-left-1{left:.25rem}.rf-left-1\\/2{left:50%}.rf-left-2{left:.5rem}.rf-left-\\[50\\%\\]{left:50%}.rf-right-0{right:0}.rf-right-1{right:.25rem}.rf-right-4{right:1rem}.rf-right-\\[4px\\]{right:4px}.rf-top-0{top:0}.rf-top-1{top:.25rem}.rf-top-2{top:.5rem}.rf-top-2\\.5{top:.625rem}.rf-top-\\[50\\%\\]{top:50%}.rf-top-\\[6px\\]{top:6px}.\\!rf-z-\\[101\\]{z-index:101!important}.\\!rf-z-\\[200\\]{z-index:200!important}.rf-z-10{z-index:10}.rf-z-50{z-index:50}.rf-z-\\[100\\]{z-index:100}.rf-z-\\[101\\]{z-index:101}.rf-order-1{order:1}.rf-order-2{order:2}.rf-order-3{order:3}.rf-m-1{margin:.25rem}.rf-m-6{margin:1.5rem}.-rf-mx-1,.rf--mx-1{margin-left:-.25rem;margin-right:-.25rem}.rf-mx-1{margin-left:.25rem;margin-right:.25rem}.rf-mx-2{margin-left:.5rem;margin-right:.5rem}.rf-mx-4{margin-left:1rem;margin-right:1rem}.rf-mx-auto{margin-left:auto;margin-right:auto}.rf-my-1{margin-bottom:.25rem;margin-top:.25rem}.rf-my-12{margin-bottom:3rem;margin-top:3rem}.rf-my-4{margin-bottom:1rem;margin-top:1rem}.rf-my-auto{margin-bottom:auto;margin-top:auto}.rf-mb-1{margin-bottom:.25rem}.rf-mb-12{margin-bottom:3rem}.rf-mb-2{margin-bottom:.5rem}.rf-mb-3{margin-bottom:.75rem}.rf-mb-4{margin-bottom:1rem}.rf-mb-6{margin-bottom:1.5rem}.rf-mb-8{margin-bottom:2rem}.rf-ml-1{margin-left:.25rem}.rf-ml-2{margin-left:.5rem}.rf-ml-auto{margin-left:auto}.rf-mr-1{margin-right:.25rem}.rf-mr-2{margin-right:.5rem}.rf-mr-4{margin-right:1rem}.rf-mt-0{margin-top:0}.rf-mt-0\\.5{margin-top:.125rem}.rf-mt-1{margin-top:.25rem}.rf-mt-2{margin-top:.5rem}.rf-mt-3{margin-top:.75rem}.rf-mt-4{margin-top:1rem}.rf-mt-5{margin-top:1.25rem}.rf-mt-auto{margin-top:auto}.rf-block{display:block}.rf-inline-block{display:inline-block}.rf-inline{display:inline}.rf-flex{display:flex}.rf-inline-flex{display:inline-flex}.rf-grid{display:grid}.rf-hidden{display:none}.rf-aspect-square{aspect-ratio:1/1}.rf-aspect-video{aspect-ratio:16/9}.rf-size-14{height:3.5rem;width:3.5rem}.rf-size-4{height:1rem;width:1rem}.\\!rf-h-2{height:.5rem!important}.\\!rf-h-2\\.5{height:.625rem!important}.\\!rf-h-3{height:.75rem!important}.\\!rf-h-full{height:100%!important}.rf-h-1{height:.25rem}.rf-h-10{height:2.5rem}.rf-h-12{height:3rem}.rf-h-2{height:.5rem}.rf-h-2\\.5{height:.625rem}.rf-h-20{height:5rem}.rf-h-24{height:6rem}.rf-h-3{height:.75rem}.rf-h-3\\.5{height:.875rem}.rf-h-4{height:1rem}.rf-h-5{height:1.25rem}.rf-h-6{height:1.5rem}.rf-h-60{height:15rem}.rf-h-64{height:16rem}.rf-h-7{height:1.75rem}.rf-h-8{height:2rem}.rf-h-9{height:2.25rem}.rf-h-\\[400px\\]{height:400px}.rf-h-\\[calc\\(100vh-52px\\)\\]{height:calc(100vh - 52px)}.rf-h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.rf-h-auto{height:auto}.rf-h-fit{height:-moz-fit-content;height:fit-content}.rf-h-full{height:100%}.rf-h-px{height:1px}.rf-h-screen{height:100vh}.\\!rf-max-h-\\[40vh\\]{max-height:40vh!important}.rf-max-h-32{max-height:8rem}.rf-max-h-96{max-height:24rem}.rf-max-h-\\[200px\\]{max-height:200px}.rf-max-h-\\[300px\\]{max-height:300px}.rf-max-h-\\[500px\\]{max-height:500px}.rf-max-h-\\[70vh\\]{max-height:70vh}.rf-max-h-\\[90vh\\]{max-height:90vh}.rf-max-h-full{max-height:100%}.rf-min-h-0{min-height:0}.rf-min-h-\\[200px\\]{min-height:200px}.rf-min-h-\\[300px\\]{min-height:300px}.rf-min-h-\\[620px\\]{min-height:620px}.rf-min-h-\\[calc\\(100vh-240px\\)\\]{min-height:calc(100vh - 240px)}.\\!rf-w-2{width:.5rem!important}.\\!rf-w-2\\.5{width:.625rem!important}.rf-w-1{width:.25rem}.rf-w-1\\/2{width:50%}.rf-w-11{width:2.75rem}.rf-w-11\\/12{width:91.666667%}.rf-w-12{width:3rem}.rf-w-16{width:4rem}.rf-w-2{width:.5rem}.rf-w-2\\.5{width:.625rem}.rf-w-20{width:5rem}.rf-w-24{width:6rem}.rf-w-28{width:7rem}.rf-w-3{width:.75rem}.rf-w-3\\.5{width:.875rem}.rf-w-32{width:8rem}.rf-w-4{width:1rem}.rf-w-40{width:10rem}.rf-w-48{width:12rem}.rf-w-5{width:1.25rem}.rf-w-6{width:1.5rem}.rf-w-64{width:16rem}.rf-w-72{width:18rem}.rf-w-8{width:2rem}.rf-w-80{width:20rem}.rf-w-9{width:2.25rem}.rf-w-96{width:24rem}.rf-w-\\[400px\\]{width:400px}.rf-w-\\[95\\%\\]{width:95%}.rf-w-fit{width:-moz-fit-content;width:fit-content}.rf-w-full{width:100%}.rf-w-screen{width:100vw}.rf-min-w-0{min-width:0}.rf-min-w-10{min-width:2.5rem}.rf-min-w-16{min-width:4rem}.rf-min-w-32{min-width:8rem}.rf-min-w-80{min-width:20rem}.rf-min-w-96{min-width:24rem}.rf-min-w-\\[148px\\]{min-width:148px}.rf-min-w-\\[400px\\]{min-width:400px}.rf-min-w-\\[8rem\\]{min-width:8rem}.rf-min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.\\!rf-max-w-\\[660px\\]{max-width:660px!important}.rf-max-w-2xl{max-width:42rem}.rf-max-w-3xl{max-width:48rem}.rf-max-w-4xl{max-width:56rem}.rf-max-w-5xl{max-width:64rem}.rf-max-w-64{max-width:16rem}.rf-max-w-96{max-width:24rem}.rf-max-w-\\[100px\\]{max-width:100px}.rf-max-w-\\[120px\\]{max-width:120px}.rf-max-w-\\[150px\\]{max-width:150px}.rf-max-w-\\[400px\\]{max-width:400px}.rf-max-w-full{max-width:100%}.rf-max-w-lg{max-width:32rem}.rf-max-w-md{max-width:28rem}.rf-max-w-none{max-width:none}.rf-max-w-xl{max-width:36rem}.rf-max-w-xs{max-width:20rem}.rf-flex-1{flex:1 1 0%}.rf-flex-shrink-0,.rf-shrink-0{flex-shrink:0}.rf-flex-grow{flex-grow:1}.rf-table-auto{table-layout:auto}.rf-origin-\\[--radix-popover-content-transform-origin\\]{transform-origin:var(--radix-popover-content-transform-origin)}.-rf-translate-x-1{--tw-translate-x:-0.25rem}.-rf-translate-x-1,.-rf-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rf-translate-x-1\\/2{--tw-translate-x:-50%}.-rf-translate-y-1{--tw-translate-y:-0.25rem}.-rf-translate-y-1,.rf--translate-x-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf--translate-x-1{--tw-translate-x:-0.25rem}.rf--translate-x-1\\/2{--tw-translate-x:-50%}.rf--translate-x-1\\/2,.rf--translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf--translate-y-1{--tw-translate-y:-0.25rem}.rf-translate-x-\\[-50\\%\\]{--tw-translate-x:-50%}.rf-translate-x-\\[-50\\%\\],.rf-translate-y-\\[-50\\%\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf-translate-y-\\[-50\\%\\]{--tw-translate-y:-50%}.rf-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes rf-pulse{50%{opacity:.5}}.rf-animate-pulse{animation:rf-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes rf-spin{to{transform:rotate(1turn)}}.rf-animate-spin{animation:rf-spin 1s linear infinite}.rf-cursor-default{cursor:default}.rf-cursor-not-allowed{cursor:not-allowed}.rf-cursor-pointer{cursor:pointer}.rf-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.rf-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.rf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.rf-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.rf-flex-row{flex-direction:row}.rf-flex-col{flex-direction:column}.rf-flex-col-reverse{flex-direction:column-reverse}.rf-flex-wrap{flex-wrap:wrap}.rf-place-items-center{place-items:center}.rf-items-start{align-items:flex-start}.rf-items-end{align-items:flex-end}.rf-items-center{align-items:center}.rf-items-stretch{align-items:stretch}.rf-justify-end{justify-content:flex-end}.rf-justify-center{justify-content:center}.rf-justify-between{justify-content:space-between}.rf-gap-0{gap:0}.rf-gap-1{gap:.25rem}.rf-gap-2{gap:.5rem}.rf-gap-3{gap:.75rem}.rf-gap-4{gap:1rem}.rf-gap-5{gap:1.25rem}.rf-gap-6{gap:1.5rem}.rf-gap-8{gap:2rem}.rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.rf-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.rf-divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.rf-overflow-auto{overflow:auto}.rf-overflow-hidden{overflow:hidden}.rf-overflow-visible{overflow:visible}.\\!rf-overflow-x-auto{overflow-x:auto!important}.rf-overflow-x-auto{overflow-x:auto}.\\!rf-overflow-y-auto{overflow-y:auto!important}.rf-overflow-y-auto{overflow-y:auto}.rf-overflow-x-hidden{overflow-x:hidden}.rf-overflow-x-clip{overflow-x:clip}.rf-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rf-whitespace-normal{white-space:normal}.rf-whitespace-nowrap{white-space:nowrap}.rf-whitespace-pre-wrap{white-space:pre-wrap}.rf-break-words{overflow-wrap:break-word}.rf-break-all{word-break:break-all}.rf-rounded{border-radius:.25rem}.rf-rounded-2xl{border-radius:1rem}.rf-rounded-full{border-radius:9999px}.rf-rounded-lg{border-radius:var(--radius)}.rf-rounded-md{border-radius:calc(var(--radius) - 2px)}.rf-rounded-sm{border-radius:calc(var(--radius) - 4px)}.rf-rounded-xl{border-radius:.75rem}.rf-border{border-width:1px}.rf-border-2{border-width:2px}.rf-border-b{border-bottom-width:1px}.rf-border-t{border-top-width:1px}.rf-border-none{border-style:none}.rf-border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.rf-border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.rf-border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.rf-border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.rf-border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.rf-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.rf-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.rf-border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.rf-border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity,1))}.rf-border-input{border-color:hsl(var(--input))}.rf-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.rf-border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.rf-border-primary{border-color:hsl(var(--primary))}.rf-border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.rf-border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.rf-border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.rf-border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity,1))}.rf-border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity,1))}.rf-bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.rf-bg-amber-50\\/30{background-color:rgba(255,251,235,.3)}.rf-bg-background{background-color:hsl(var(--background))}.rf-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.rf-bg-black\\/80{background-color:rgba(0,0,0,.8)}.rf-bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.rf-bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.rf-bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.rf-bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.rf-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.rf-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.rf-bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.rf-bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.rf-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.rf-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.rf-bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.rf-bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.rf-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.rf-bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.rf-bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.rf-bg-muted{background-color:hsl(var(--muted))}.rf-bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.rf-bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.rf-bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.rf-bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity,1))}.rf-bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.rf-bg-popover{background-color:hsl(var(--popover))}.rf-bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.rf-bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.rf-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.rf-bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.rf-bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.rf-bg-transparent{background-color:transparent}.rf-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.rf-bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.rf-bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.rf-bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity,1))}.rf-bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.rf-bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.rf-bg-opacity-50{--tw-bg-opacity:0.5}.rf-fill-amber-500{fill:#f59e0b}.rf-fill-current{fill:currentColor}.rf-object-contain{-o-object-fit:contain;object-fit:contain}.rf-object-cover{-o-object-fit:cover;object-fit:cover}.\\!rf-p-0{padding:0!important}.rf-p-0{padding:0}.rf-p-1{padding:.25rem}.rf-p-2{padding:.5rem}.rf-p-3{padding:.75rem}.rf-p-4{padding:1rem}.rf-p-5{padding:1.25rem}.rf-p-6{padding:1.5rem}.rf-p-8{padding:2rem}.rf-px-1{padding-left:.25rem;padding-right:.25rem}.rf-px-2{padding-left:.5rem;padding-right:.5rem}.rf-px-3{padding-left:.75rem;padding-right:.75rem}.rf-px-4{padding-left:1rem;padding-right:1rem}.rf-px-6{padding-left:1.5rem;padding-right:1.5rem}.rf-px-8{padding-left:2rem;padding-right:2rem}.rf-py-0{padding-bottom:0;padding-top:0}.rf-py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.rf-py-1{padding-bottom:.25rem;padding-top:.25rem}.rf-py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.rf-py-10{padding-bottom:2.5rem;padding-top:2.5rem}.rf-py-12{padding-bottom:3rem;padding-top:3rem}.rf-py-2{padding-bottom:.5rem;padding-top:.5rem}.rf-py-3{padding-bottom:.75rem;padding-top:.75rem}.rf-py-4{padding-bottom:1rem;padding-top:1rem}.rf-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.rf-py-8{padding-bottom:2rem;padding-top:2rem}.rf-pb-0{padding-bottom:0}.rf-pb-1{padding-bottom:.25rem}.rf-pb-2{padding-bottom:.5rem}.rf-pb-3{padding-bottom:.75rem}.rf-pb-4{padding-bottom:1rem}.rf-pl-2{padding-left:.5rem}.rf-pl-4{padding-left:1rem}.rf-pl-8{padding-left:2rem}.rf-pr-2{padding-right:.5rem}.rf-pt-0{padding-top:0}.rf-pt-2{padding-top:.5rem}.rf-pt-4{padding-top:1rem}.rf-text-left{text-align:left}.rf-text-center{text-align:center}.rf-text-right{text-align:right}.rf-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.rf-text-2xl{font-size:1.5rem;line-height:2rem}.rf-text-3xl{font-size:1.875rem;line-height:2.25rem}.rf-text-\\[8px\\]{font-size:8px}.rf-text-base{font-size:1rem;line-height:1.5rem}.rf-text-lg{font-size:1.125rem;line-height:1.75rem}.rf-text-sm{font-size:.875rem;line-height:1.25rem}.rf-text-xl{font-size:1.25rem;line-height:1.75rem}.rf-text-xs{font-size:.75rem;line-height:1rem}.\\!rf-font-normal{font-weight:400!important}.rf-font-bold{font-weight:700}.rf-font-medium{font-weight:500}.rf-font-semibold{font-weight:600}.rf-uppercase{text-transform:uppercase}.rf-capitalize{text-transform:capitalize}.rf-tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.rf-leading-5{line-height:1.25rem}.rf-leading-none{line-height:1}.rf-leading-relaxed{line-height:1.625}.rf-leading-tight{line-height:1.25}.rf-tracking-wide{letter-spacing:.025em}.rf-tracking-widest{letter-spacing:.1em}.rf-text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.rf-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.rf-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.rf-text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.rf-text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.rf-text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.rf-text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.rf-text-current{color:currentColor}.rf-text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.rf-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.rf-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.rf-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.rf-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.rf-text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.rf-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.rf-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.rf-text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.rf-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.rf-text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.rf-text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.rf-text-muted-foreground{color:hsl(var(--muted-foreground))}.rf-text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.rf-text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.rf-text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity,1))}.rf-text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.rf-text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.rf-text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity,1))}.rf-text-popover-foreground{color:hsl(var(--popover-foreground))}.rf-text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.rf-text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.rf-text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.rf-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.rf-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.rf-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.rf-text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.rf-text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.rf-text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.rf-text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.rf-text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.rf-text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.rf-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.rf-text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.rf-text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.rf-text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.rf-text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity,1))}.rf-text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity,1))}.rf-text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity,1))}.rf-text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.rf-text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.rf-text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.rf-text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.rf-underline{text-decoration-line:underline}.rf-line-through{text-decoration-line:line-through}.rf-underline-offset-4{text-underline-offset:4px}.rf-opacity-0{opacity:0}.rf-opacity-100{opacity:1}.rf-opacity-25{opacity:.25}.rf-opacity-30{opacity:.3}.rf-opacity-50{opacity:.5}.rf-opacity-60{opacity:.6}.rf-opacity-75{opacity:.75}.rf-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.rf-shadow,.rf-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.rf-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.rf-shadow-md,.rf-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.rf-outline-none{outline:2px solid transparent;outline-offset:2px}.rf-ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.rf-ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.rf-ring-primary{--tw-ring-color:hsl(var(--primary))}.rf-ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.rf-ring-offset-white{--tw-ring-offset-color:#fff}.rf-transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-duration-200{transition-duration:.2s}.rf-ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.rf-slide-in-from-left-1{--tw-enter-translate-x:-0.25rem}.rf-slide-out-to-left-1{--tw-exit-translate-x:-0.25rem}.rf-duration-200{animation-duration:.2s}.rf-ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.file\\:rf-border-0::file-selector-button{border-width:0}.file\\:rf-bg-transparent::file-selector-button{background-color:transparent}.file\\:rf-text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\\:rf-font-medium::file-selector-button{font-weight:500}.placeholder\\:rf-text-zinc-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.placeholder\\:rf-text-zinc-500::placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.hover\\:rf-border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.hover\\:rf-border-blue-500:hover{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.hover\\:\\!rf-bg-transparent:hover{background-color:transparent!important}.hover\\:rf-bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.hover\\:rf-bg-red-500\\/90:hover{background-color:rgba(239,68,68,.9)}.hover\\:rf-bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100:hover{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100\\/80:hover{background-color:hsla(240,5%,96%,.8)}.hover\\:rf-bg-zinc-900\\/90:hover{background-color:rgba(24,24,27,.9)}.hover\\:rf-text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.hover\\:rf-text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.hover\\:rf-text-slate-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.hover\\:rf-text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.hover\\:rf-underline:hover{text-decoration-line:underline}.focus\\:rf-bg-gray-100:focus{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.focus\\:rf-bg-zinc-100:focus{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.focus\\:rf-text-gray-900:focus{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.focus\\:rf-text-zinc-900:focus{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.focus\\:rf-outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:rf-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:rf-ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\\:rf-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\\:rf-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:rf-ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-zinc-950:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(9 9 11/var(--tw-ring-opacity,1))}.focus-visible\\:rf-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:rf-pointer-events-none:disabled{pointer-events:none}.disabled\\:rf-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:rf-opacity-50:disabled{opacity:.5}.rf-group:hover .group-hover\\:rf-opacity-100,.rf-group\\/bar:hover .group-hover\\/bar\\:rf-opacity-100{opacity:1}.data-\\[disabled\\=true\\]\\:rf-pointer-events-none[data-disabled=true],.data-\\[disabled\\]\\:rf-pointer-events-none[data-disabled]{pointer-events:none}.data-\\[side\\=bottom\\]\\:rf-translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.data-\\[side\\=bottom\\]\\:rf-translate-y-1[data-side=bottom],.data-\\[side\\=left\\]\\:-rf-translate-x-1[data-side=left]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=left\\]\\:-rf-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.data-\\[side\\=right\\]\\:rf-translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.data-\\[side\\=right\\]\\:rf-translate-x-1[data-side=right],.data-\\[side\\=top\\]\\:-rf-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=top\\]\\:-rf-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.data-\\[selected\\=true\\]\\:rf-bg-zinc-100[data-selected=true]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[state\\=active\\]\\:rf-bg-white[data-state=active]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.data-\\[state\\=checked\\]\\:rf-bg-zinc-900[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.data-\\[state\\=open\\]\\:rf-bg-zinc-100[data-state=open]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[selected\\=true\\]\\:rf-text-zinc-900[data-selected=true]{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.data-\\[state\\=active\\]\\:rf-text-zinc-950[data-state=active]{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.data-\\[state\\=checked\\]\\:rf-text-zinc-50[data-state=checked]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.data-\\[disabled\\=true\\]\\:rf-opacity-50[data-disabled=true],.data-\\[disabled\\]\\:rf-opacity-50[data-disabled]{opacity:.5}.data-\\[state\\=active\\]\\:rf-shadow[data-state=active]{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\\[state\\=open\\]\\:rf-animate-in[data-state=open]{animation-duration:.15s;animation-name:enter;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-animate-out[data-state=closed]{animation-duration:.15s;animation-name:exit;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\\[state\\=open\\]\\:rf-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\\[state\\=closed\\]\\:rf-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=open\\]\\:rf-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[side\\=bottom\\]\\:rf-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\\[side\\=left\\]\\:rf-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\\[side\\=right\\]\\:rf-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\\[side\\=top\\]\\:rf-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.data-\\[state\\=closed\\]\\:rf-slide-out-to-left-1\\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\\[state\\=closed\\]\\:rf-slide-out-to-top-\\[48\\%\\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\\[state\\=open\\]\\:rf-slide-in-from-left-1\\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\\[state\\=open\\]\\:rf-slide-in-from-top-\\[48\\%\\][data-state=open]{--tw-enter-translate-y:-48%}.dark\\:rf-border-zinc-50:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity,1))}.dark\\:rf-border-zinc-800:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity,1))}.dark\\:rf-bg-gray-700:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\\:rf-bg-gray-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\\:rf-bg-red-900:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-50:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-950:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:rf-text-gray-500:is(.rf-dark *){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-400:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-50:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-900:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.dark\\:rf-placeholder-zinc-400:is(.rf-dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(161 161 170/var(--tw-placeholder-opacity,1))}.dark\\:rf-placeholder-zinc-400:is(.rf-dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(161 161 170/var(--tw-placeholder-opacity,1))}.dark\\:rf-ring-offset-zinc-950:is(.rf-dark *){--tw-ring-offset-color:#09090b}.dark\\:placeholder\\:rf-text-zinc-400:is(.rf-dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:placeholder\\:rf-text-zinc-400:is(.rf-dark *)::placeholder{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:hover\\:rf-bg-red-900\\/90:hover:is(.rf-dark *){background-color:rgba(127,29,29,.9)}.dark\\:hover\\:rf-bg-zinc-50\\/90:hover:is(.rf-dark *){background-color:hsla(0,0%,98%,.9)}.dark\\:hover\\:rf-bg-zinc-800:hover:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:hover\\:rf-bg-zinc-800\\/80:hover:is(.rf-dark *){background-color:rgba(39,39,42,.8)}.dark\\:hover\\:rf-text-zinc-50:hover:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus\\:rf-bg-zinc-800:focus:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:focus\\:rf-text-zinc-50:focus:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus-visible\\:rf-ring-zinc-300:focus-visible:is(.rf-dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 216/var(--tw-ring-opacity,1))}.dark\\:data-\\[selected\\=true\\]\\:rf-bg-zinc-800[data-selected=true]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-bg-zinc-950[data-state=active]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=checked\\]\\:rf-bg-zinc-50[data-state=checked]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=open\\]\\:rf-bg-zinc-800[data-state=open]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[selected\\=true\\]\\:rf-text-zinc-50[data-selected=true]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-text-zinc-50[data-state=active]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:data-\\[state\\=checked\\]\\:rf-text-zinc-900[data-state=checked]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\\:rf-order-1{order:1}.sm\\:rf-order-2{order:2}.sm\\:rf-mt-0{margin-top:0}.sm\\:rf-block{display:block}.sm\\:rf-inline{display:inline}.sm\\:rf-grid{display:grid}.sm\\:rf-hidden{display:none}.sm\\:rf-w-auto{width:auto}.sm\\:rf-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\\:rf-grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.sm\\:rf-flex-row{flex-direction:row}.sm\\:rf-items-center{align-items:center}.sm\\:rf-justify-end{justify-content:flex-end}.sm\\:rf-gap-3{gap:.75rem}.sm\\:rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.sm\\:rf-justify-self-end{justify-self:end}.sm\\:rf-rounded-lg{border-radius:var(--radius)}.sm\\:rf-px-4{padding-left:1rem;padding-right:1rem}.sm\\:rf-text-left{text-align:left}.sm\\:rf-text-right{text-align:right}.sm\\:rf-text-sm{font-size:.875rem;line-height:1.25rem}.sm\\:rf-text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:768px){.md\\:rf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}.\\[\\&\\>span\\]\\:rf-line-clamp-1>span{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\\[\\&\\>svg\\]\\:rf-size-4>svg{height:1rem;width:1rem}.\\[\\&\\>svg\\]\\:rf-shrink-0>svg{flex-shrink:0}.\\[\\&\\>svg\\]\\:rf-text-red-300>svg{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.\\[\\&\\>svg\\]\\:hover\\:rf-text-red-400:hover>svg{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-py-1\\.5 [cmdk-group-heading]{padding-bottom:.375rem;padding-top:.375rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-font-medium [cmdk-group-heading]{font-weight:500}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-zinc-500 [cmdk-group-heading]{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.dark\\:\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-zinc-400 [cmdk-group-heading]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:rf-pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\\[\\&_\\[cmdk-group\\]\\]\\:rf-px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:rf-h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:rf-w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\\[\\&_\\[cmdk-input\\]\\]\\:rf-h-12 [cmdk-input]{height:3rem}.\\[\\&_\\[cmdk-item\\]\\]\\:rf-px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-item\\]\\]\\:rf-py-3 [cmdk-item]{padding-bottom:.75rem;padding-top:.75rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:rf-h-5 [cmdk-item] svg{height:1.25rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:rf-w-5 [cmdk-item] svg{width:1.25rem}.\\[\\&_svg\\]\\:rf-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:rf-size-4 svg{height:1rem;width:1rem}.\\[\\&_svg\\]\\:rf-shrink-0 svg{flex-shrink:0}';
1154
+ var styles_generated_default = '*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:root{--radius:0.5rem}.rf-pointer-events-none{pointer-events:none}.rf-invisible{visibility:hidden}.rf-fixed{position:fixed}.rf-absolute{position:absolute}.rf-relative{position:relative}.rf-inset-0{inset:0}.-rf-left-2{left:-.5rem}.-rf-right-10{right:-2.5rem}.-rf-right-2{right:-.5rem}.-rf-right-4{right:-1rem}.-rf-right-6{right:-1.5rem}.-rf-right-7{right:-1.75rem}.-rf-right-8{right:-2rem}.-rf-right-9{right:-2.25rem}.rf-bottom-full{bottom:100%}.rf-left-0{left:0}.rf-left-1{left:.25rem}.rf-left-1\\/2{left:50%}.rf-left-2{left:.5rem}.rf-left-\\[50\\%\\]{left:50%}.rf-right-0{right:0}.rf-right-1{right:.25rem}.rf-right-4{right:1rem}.rf-right-\\[4px\\]{right:4px}.rf-top-0{top:0}.rf-top-1{top:.25rem}.rf-top-2{top:.5rem}.rf-top-2\\.5{top:.625rem}.rf-top-\\[50\\%\\]{top:50%}.rf-top-\\[6px\\]{top:6px}.\\!rf-z-\\[101\\]{z-index:101!important}.\\!rf-z-\\[200\\]{z-index:200!important}.rf-z-10{z-index:10}.rf-z-50{z-index:50}.rf-z-\\[100\\]{z-index:100}.rf-z-\\[101\\]{z-index:101}.rf-order-1{order:1}.rf-order-2{order:2}.rf-order-3{order:3}.rf-m-1{margin:.25rem}.rf-m-6{margin:1.5rem}.-rf-mx-1,.rf--mx-1{margin-left:-.25rem;margin-right:-.25rem}.rf-mx-1{margin-left:.25rem;margin-right:.25rem}.rf-mx-2{margin-left:.5rem;margin-right:.5rem}.rf-mx-4{margin-left:1rem;margin-right:1rem}.rf-mx-auto{margin-left:auto;margin-right:auto}.rf-my-1{margin-bottom:.25rem;margin-top:.25rem}.rf-my-12{margin-bottom:3rem;margin-top:3rem}.rf-my-4{margin-bottom:1rem;margin-top:1rem}.rf-my-auto{margin-bottom:auto;margin-top:auto}.rf-mb-1{margin-bottom:.25rem}.rf-mb-12{margin-bottom:3rem}.rf-mb-2{margin-bottom:.5rem}.rf-mb-3{margin-bottom:.75rem}.rf-mb-4{margin-bottom:1rem}.rf-mb-6{margin-bottom:1.5rem}.rf-mb-8{margin-bottom:2rem}.rf-ml-1{margin-left:.25rem}.rf-ml-2{margin-left:.5rem}.rf-ml-auto{margin-left:auto}.rf-mr-1{margin-right:.25rem}.rf-mr-2{margin-right:.5rem}.rf-mr-4{margin-right:1rem}.rf-mt-0{margin-top:0}.rf-mt-0\\.5{margin-top:.125rem}.rf-mt-1{margin-top:.25rem}.rf-mt-2{margin-top:.5rem}.rf-mt-3{margin-top:.75rem}.rf-mt-4{margin-top:1rem}.rf-mt-5{margin-top:1.25rem}.rf-mt-auto{margin-top:auto}.rf-block{display:block}.rf-inline-block{display:inline-block}.rf-inline{display:inline}.rf-flex{display:flex}.rf-inline-flex{display:inline-flex}.rf-grid{display:grid}.rf-hidden{display:none}.rf-aspect-square{aspect-ratio:1/1}.rf-aspect-video{aspect-ratio:16/9}.rf-size-14{height:3.5rem;width:3.5rem}.rf-size-4{height:1rem;width:1rem}.\\!rf-h-2{height:.5rem!important}.\\!rf-h-2\\.5{height:.625rem!important}.\\!rf-h-3{height:.75rem!important}.\\!rf-h-full{height:100%!important}.rf-h-1{height:.25rem}.rf-h-10{height:2.5rem}.rf-h-12{height:3rem}.rf-h-2{height:.5rem}.rf-h-2\\.5{height:.625rem}.rf-h-20{height:5rem}.rf-h-24{height:6rem}.rf-h-3{height:.75rem}.rf-h-3\\.5{height:.875rem}.rf-h-4{height:1rem}.rf-h-5{height:1.25rem}.rf-h-6{height:1.5rem}.rf-h-60{height:15rem}.rf-h-64{height:16rem}.rf-h-7{height:1.75rem}.rf-h-8{height:2rem}.rf-h-9{height:2.25rem}.rf-h-\\[400px\\]{height:400px}.rf-h-\\[calc\\(100vh-52px\\)\\]{height:calc(100vh - 52px)}.rf-h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.rf-h-auto{height:auto}.rf-h-fit{height:-moz-fit-content;height:fit-content}.rf-h-full{height:100%}.rf-h-px{height:1px}.rf-h-screen{height:100vh}.\\!rf-max-h-\\[40vh\\]{max-height:40vh!important}.rf-max-h-32{max-height:8rem}.rf-max-h-96{max-height:24rem}.rf-max-h-\\[200px\\]{max-height:200px}.rf-max-h-\\[300px\\]{max-height:300px}.rf-max-h-\\[500px\\]{max-height:500px}.rf-max-h-\\[70vh\\]{max-height:70vh}.rf-max-h-\\[90vh\\]{max-height:90vh}.rf-max-h-full{max-height:100%}.rf-min-h-0{min-height:0}.rf-min-h-\\[100px\\]{min-height:100px}.rf-min-h-\\[200px\\]{min-height:200px}.rf-min-h-\\[300px\\]{min-height:300px}.rf-min-h-\\[620px\\]{min-height:620px}.rf-min-h-\\[calc\\(100vh-240px\\)\\]{min-height:calc(100vh - 240px)}.\\!rf-w-2{width:.5rem!important}.\\!rf-w-2\\.5{width:.625rem!important}.rf-w-1{width:.25rem}.rf-w-1\\/2{width:50%}.rf-w-11{width:2.75rem}.rf-w-11\\/12{width:91.666667%}.rf-w-12{width:3rem}.rf-w-16{width:4rem}.rf-w-2{width:.5rem}.rf-w-2\\.5{width:.625rem}.rf-w-20{width:5rem}.rf-w-24{width:6rem}.rf-w-28{width:7rem}.rf-w-3{width:.75rem}.rf-w-3\\.5{width:.875rem}.rf-w-32{width:8rem}.rf-w-4{width:1rem}.rf-w-40{width:10rem}.rf-w-48{width:12rem}.rf-w-5{width:1.25rem}.rf-w-6{width:1.5rem}.rf-w-64{width:16rem}.rf-w-72{width:18rem}.rf-w-8{width:2rem}.rf-w-80{width:20rem}.rf-w-9{width:2.25rem}.rf-w-96{width:24rem}.rf-w-\\[400px\\]{width:400px}.rf-w-\\[95\\%\\]{width:95%}.rf-w-fit{width:-moz-fit-content;width:fit-content}.rf-w-full{width:100%}.rf-w-screen{width:100vw}.rf-min-w-0{min-width:0}.rf-min-w-10{min-width:2.5rem}.rf-min-w-16{min-width:4rem}.rf-min-w-32{min-width:8rem}.rf-min-w-80{min-width:20rem}.rf-min-w-96{min-width:24rem}.rf-min-w-\\[148px\\]{min-width:148px}.rf-min-w-\\[400px\\]{min-width:400px}.rf-min-w-\\[8rem\\]{min-width:8rem}.rf-min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.\\!rf-max-w-\\[660px\\]{max-width:660px!important}.rf-max-w-2xl{max-width:42rem}.rf-max-w-3xl{max-width:48rem}.rf-max-w-4xl{max-width:56rem}.rf-max-w-5xl{max-width:64rem}.rf-max-w-64{max-width:16rem}.rf-max-w-96{max-width:24rem}.rf-max-w-\\[100px\\]{max-width:100px}.rf-max-w-\\[120px\\]{max-width:120px}.rf-max-w-\\[150px\\]{max-width:150px}.rf-max-w-\\[400px\\]{max-width:400px}.rf-max-w-full{max-width:100%}.rf-max-w-lg{max-width:32rem}.rf-max-w-md{max-width:28rem}.rf-max-w-none{max-width:none}.rf-max-w-xl{max-width:36rem}.rf-max-w-xs{max-width:20rem}.rf-flex-1{flex:1 1 0%}.rf-flex-shrink-0,.rf-shrink-0{flex-shrink:0}.rf-flex-grow{flex-grow:1}.rf-table-auto{table-layout:auto}.rf-origin-\\[--radix-popover-content-transform-origin\\]{transform-origin:var(--radix-popover-content-transform-origin)}.-rf-translate-x-1{--tw-translate-x:-0.25rem}.-rf-translate-x-1,.-rf-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rf-translate-x-1\\/2{--tw-translate-x:-50%}.-rf-translate-y-1{--tw-translate-y:-0.25rem}.-rf-translate-y-1,.rf--translate-x-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf--translate-x-1{--tw-translate-x:-0.25rem}.rf--translate-x-1\\/2{--tw-translate-x:-50%}.rf--translate-x-1\\/2,.rf--translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf--translate-y-1{--tw-translate-y:-0.25rem}.rf-translate-x-\\[-50\\%\\]{--tw-translate-x:-50%}.rf-translate-x-\\[-50\\%\\],.rf-translate-y-\\[-50\\%\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf-translate-y-\\[-50\\%\\]{--tw-translate-y:-50%}.rf-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes rf-pulse{50%{opacity:.5}}.rf-animate-pulse{animation:rf-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes rf-spin{to{transform:rotate(1turn)}}.rf-animate-spin{animation:rf-spin 1s linear infinite}.rf-cursor-default{cursor:default}.rf-cursor-not-allowed{cursor:not-allowed}.rf-cursor-pointer{cursor:pointer}.rf-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.rf-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.rf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.rf-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.rf-flex-row{flex-direction:row}.rf-flex-col{flex-direction:column}.rf-flex-col-reverse{flex-direction:column-reverse}.rf-flex-wrap{flex-wrap:wrap}.rf-place-items-center{place-items:center}.rf-items-start{align-items:flex-start}.rf-items-end{align-items:flex-end}.rf-items-center{align-items:center}.rf-items-stretch{align-items:stretch}.rf-justify-end{justify-content:flex-end}.rf-justify-center{justify-content:center}.rf-justify-between{justify-content:space-between}.rf-gap-0{gap:0}.rf-gap-1{gap:.25rem}.rf-gap-2{gap:.5rem}.rf-gap-3{gap:.75rem}.rf-gap-4{gap:1rem}.rf-gap-5{gap:1.25rem}.rf-gap-6{gap:1.5rem}.rf-gap-8{gap:2rem}.rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.rf-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.rf-divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.rf-overflow-auto{overflow:auto}.rf-overflow-hidden{overflow:hidden}.rf-overflow-visible{overflow:visible}.\\!rf-overflow-x-auto{overflow-x:auto!important}.rf-overflow-x-auto{overflow-x:auto}.\\!rf-overflow-y-auto{overflow-y:auto!important}.rf-overflow-y-auto{overflow-y:auto}.rf-overflow-x-hidden{overflow-x:hidden}.rf-overflow-x-clip{overflow-x:clip}.rf-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rf-whitespace-normal{white-space:normal}.rf-whitespace-nowrap{white-space:nowrap}.rf-whitespace-pre-wrap{white-space:pre-wrap}.rf-break-words{overflow-wrap:break-word}.rf-break-all{word-break:break-all}.rf-rounded{border-radius:.25rem}.rf-rounded-2xl{border-radius:1rem}.rf-rounded-full{border-radius:9999px}.rf-rounded-lg{border-radius:var(--radius)}.rf-rounded-md{border-radius:calc(var(--radius) - 2px)}.rf-rounded-sm{border-radius:calc(var(--radius) - 4px)}.rf-rounded-xl{border-radius:.75rem}.rf-border{border-width:1px}.rf-border-2{border-width:2px}.rf-border-b{border-bottom-width:1px}.rf-border-t{border-top-width:1px}.rf-border-none{border-style:none}.rf-border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.rf-border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.rf-border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.rf-border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.rf-border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.rf-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.rf-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.rf-border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.rf-border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity,1))}.rf-border-input{border-color:hsl(var(--input))}.rf-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.rf-border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.rf-border-primary{border-color:hsl(var(--primary))}.rf-border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.rf-border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.rf-border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.rf-border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity,1))}.rf-border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity,1))}.rf-bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.rf-bg-amber-50\\/30{background-color:rgba(255,251,235,.3)}.rf-bg-background{background-color:hsl(var(--background))}.rf-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.rf-bg-black\\/80{background-color:rgba(0,0,0,.8)}.rf-bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.rf-bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.rf-bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.rf-bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.rf-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.rf-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.rf-bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.rf-bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.rf-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.rf-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.rf-bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.rf-bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.rf-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.rf-bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.rf-bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.rf-bg-muted{background-color:hsl(var(--muted))}.rf-bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.rf-bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.rf-bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.rf-bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity,1))}.rf-bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.rf-bg-popover{background-color:hsl(var(--popover))}.rf-bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.rf-bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.rf-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.rf-bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.rf-bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.rf-bg-transparent{background-color:transparent}.rf-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.rf-bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.rf-bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.rf-bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity,1))}.rf-bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.rf-bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.rf-bg-opacity-50{--tw-bg-opacity:0.5}.rf-fill-amber-500{fill:#f59e0b}.rf-fill-current{fill:currentColor}.rf-object-contain{-o-object-fit:contain;object-fit:contain}.rf-object-cover{-o-object-fit:cover;object-fit:cover}.\\!rf-p-0{padding:0!important}.rf-p-0{padding:0}.rf-p-1{padding:.25rem}.rf-p-2{padding:.5rem}.rf-p-3{padding:.75rem}.rf-p-4{padding:1rem}.rf-p-5{padding:1.25rem}.rf-p-6{padding:1.5rem}.rf-p-8{padding:2rem}.rf-px-1{padding-left:.25rem;padding-right:.25rem}.rf-px-2{padding-left:.5rem;padding-right:.5rem}.rf-px-3{padding-left:.75rem;padding-right:.75rem}.rf-px-4{padding-left:1rem;padding-right:1rem}.rf-px-6{padding-left:1.5rem;padding-right:1.5rem}.rf-px-8{padding-left:2rem;padding-right:2rem}.rf-py-0{padding-bottom:0;padding-top:0}.rf-py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.rf-py-1{padding-bottom:.25rem;padding-top:.25rem}.rf-py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.rf-py-10{padding-bottom:2.5rem;padding-top:2.5rem}.rf-py-12{padding-bottom:3rem;padding-top:3rem}.rf-py-2{padding-bottom:.5rem;padding-top:.5rem}.rf-py-3{padding-bottom:.75rem;padding-top:.75rem}.rf-py-4{padding-bottom:1rem;padding-top:1rem}.rf-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.rf-py-8{padding-bottom:2rem;padding-top:2rem}.rf-pb-0{padding-bottom:0}.rf-pb-1{padding-bottom:.25rem}.rf-pb-2{padding-bottom:.5rem}.rf-pb-3{padding-bottom:.75rem}.rf-pb-4{padding-bottom:1rem}.rf-pl-2{padding-left:.5rem}.rf-pl-4{padding-left:1rem}.rf-pl-8{padding-left:2rem}.rf-pr-2{padding-right:.5rem}.rf-pt-0{padding-top:0}.rf-pt-2{padding-top:.5rem}.rf-pt-4{padding-top:1rem}.rf-text-left{text-align:left}.rf-text-center{text-align:center}.rf-text-right{text-align:right}.rf-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.rf-text-2xl{font-size:1.5rem;line-height:2rem}.rf-text-3xl{font-size:1.875rem;line-height:2.25rem}.rf-text-\\[8px\\]{font-size:8px}.rf-text-base{font-size:1rem;line-height:1.5rem}.rf-text-lg{font-size:1.125rem;line-height:1.75rem}.rf-text-sm{font-size:.875rem;line-height:1.25rem}.rf-text-xl{font-size:1.25rem;line-height:1.75rem}.rf-text-xs{font-size:.75rem;line-height:1rem}.\\!rf-font-normal{font-weight:400!important}.rf-font-bold{font-weight:700}.rf-font-medium{font-weight:500}.rf-font-semibold{font-weight:600}.rf-uppercase{text-transform:uppercase}.rf-capitalize{text-transform:capitalize}.rf-tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.rf-leading-5{line-height:1.25rem}.rf-leading-none{line-height:1}.rf-leading-relaxed{line-height:1.625}.rf-leading-tight{line-height:1.25}.rf-tracking-wide{letter-spacing:.025em}.rf-tracking-widest{letter-spacing:.1em}.rf-text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.rf-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.rf-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.rf-text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.rf-text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.rf-text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.rf-text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.rf-text-current{color:currentColor}.rf-text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.rf-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.rf-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.rf-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.rf-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.rf-text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.rf-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.rf-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.rf-text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.rf-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.rf-text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.rf-text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.rf-text-muted-foreground{color:hsl(var(--muted-foreground))}.rf-text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.rf-text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.rf-text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity,1))}.rf-text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.rf-text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.rf-text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity,1))}.rf-text-popover-foreground{color:hsl(var(--popover-foreground))}.rf-text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.rf-text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.rf-text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.rf-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.rf-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.rf-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.rf-text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.rf-text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.rf-text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.rf-text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.rf-text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.rf-text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.rf-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.rf-text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.rf-text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.rf-text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.rf-text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity,1))}.rf-text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity,1))}.rf-text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity,1))}.rf-text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.rf-text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.rf-text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.rf-text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.rf-underline{text-decoration-line:underline}.rf-line-through{text-decoration-line:line-through}.rf-underline-offset-4{text-underline-offset:4px}.rf-opacity-0{opacity:0}.rf-opacity-100{opacity:1}.rf-opacity-25{opacity:.25}.rf-opacity-30{opacity:.3}.rf-opacity-50{opacity:.5}.rf-opacity-60{opacity:.6}.rf-opacity-70{opacity:.7}.rf-opacity-75{opacity:.75}.rf-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.rf-shadow,.rf-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.rf-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.rf-shadow-md,.rf-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.rf-outline-none{outline:2px solid transparent;outline-offset:2px}.rf-ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.rf-ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.rf-ring-primary{--tw-ring-color:hsl(var(--primary))}.rf-ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.rf-ring-offset-white{--tw-ring-offset-color:#fff}.rf-transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-duration-200{transition-duration:.2s}.rf-ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.rf-slide-in-from-left-1{--tw-enter-translate-x:-0.25rem}.rf-slide-out-to-left-1{--tw-exit-translate-x:-0.25rem}.rf-duration-200{animation-duration:.2s}.rf-ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.file\\:rf-border-0::file-selector-button{border-width:0}.file\\:rf-bg-transparent::file-selector-button{background-color:transparent}.file\\:rf-text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\\:rf-font-medium::file-selector-button{font-weight:500}.placeholder\\:rf-text-zinc-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.placeholder\\:rf-text-zinc-500::placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.hover\\:rf-border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.hover\\:rf-border-blue-500:hover{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.hover\\:\\!rf-bg-transparent:hover{background-color:transparent!important}.hover\\:rf-bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.hover\\:rf-bg-red-500\\/90:hover{background-color:rgba(239,68,68,.9)}.hover\\:rf-bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100:hover{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100\\/80:hover{background-color:hsla(240,5%,96%,.8)}.hover\\:rf-bg-zinc-900\\/90:hover{background-color:rgba(24,24,27,.9)}.hover\\:rf-text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.hover\\:rf-text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.hover\\:rf-text-slate-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.hover\\:rf-text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.hover\\:rf-underline:hover{text-decoration-line:underline}.focus\\:rf-bg-gray-100:focus{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.focus\\:rf-bg-zinc-100:focus{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.focus\\:rf-text-gray-900:focus{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.focus\\:rf-text-zinc-900:focus{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.focus\\:rf-outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:rf-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:rf-ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.focus\\:rf-ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\\:rf-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\\:rf-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:rf-ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-zinc-950:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(9 9 11/var(--tw-ring-opacity,1))}.focus-visible\\:rf-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:rf-pointer-events-none:disabled{pointer-events:none}.disabled\\:rf-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:rf-opacity-50:disabled{opacity:.5}.rf-group:hover .group-hover\\:rf-opacity-100,.rf-group\\/bar:hover .group-hover\\/bar\\:rf-opacity-100{opacity:1}.data-\\[disabled\\=true\\]\\:rf-pointer-events-none[data-disabled=true],.data-\\[disabled\\]\\:rf-pointer-events-none[data-disabled]{pointer-events:none}.data-\\[side\\=bottom\\]\\:rf-translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.data-\\[side\\=bottom\\]\\:rf-translate-y-1[data-side=bottom],.data-\\[side\\=left\\]\\:-rf-translate-x-1[data-side=left]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=left\\]\\:-rf-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.data-\\[side\\=right\\]\\:rf-translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.data-\\[side\\=right\\]\\:rf-translate-x-1[data-side=right],.data-\\[side\\=top\\]\\:-rf-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=top\\]\\:-rf-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.data-\\[selected\\=true\\]\\:rf-bg-zinc-100[data-selected=true]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[state\\=active\\]\\:rf-bg-white[data-state=active]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.data-\\[state\\=checked\\]\\:rf-bg-zinc-900[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.data-\\[state\\=open\\]\\:rf-bg-zinc-100[data-state=open]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[selected\\=true\\]\\:rf-text-zinc-900[data-selected=true]{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.data-\\[state\\=active\\]\\:rf-text-zinc-950[data-state=active]{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.data-\\[state\\=checked\\]\\:rf-text-zinc-50[data-state=checked]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.data-\\[disabled\\=true\\]\\:rf-opacity-50[data-disabled=true],.data-\\[disabled\\]\\:rf-opacity-50[data-disabled]{opacity:.5}.data-\\[state\\=active\\]\\:rf-shadow[data-state=active]{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\\[state\\=open\\]\\:rf-animate-in[data-state=open]{animation-duration:.15s;animation-name:enter;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-animate-out[data-state=closed]{animation-duration:.15s;animation-name:exit;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\\[state\\=open\\]\\:rf-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\\[state\\=closed\\]\\:rf-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=open\\]\\:rf-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[side\\=bottom\\]\\:rf-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\\[side\\=left\\]\\:rf-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\\[side\\=right\\]\\:rf-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\\[side\\=top\\]\\:rf-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.data-\\[state\\=closed\\]\\:rf-slide-out-to-left-1\\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\\[state\\=closed\\]\\:rf-slide-out-to-top-\\[48\\%\\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\\[state\\=open\\]\\:rf-slide-in-from-left-1\\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\\[state\\=open\\]\\:rf-slide-in-from-top-\\[48\\%\\][data-state=open]{--tw-enter-translate-y:-48%}.dark\\:rf-border-zinc-50:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity,1))}.dark\\:rf-border-zinc-800:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity,1))}.dark\\:rf-bg-gray-700:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\\:rf-bg-gray-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\\:rf-bg-red-900:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-50:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-950:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:rf-text-gray-500:is(.rf-dark *){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-400:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-50:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-900:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.dark\\:rf-placeholder-zinc-400:is(.rf-dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(161 161 170/var(--tw-placeholder-opacity,1))}.dark\\:rf-placeholder-zinc-400:is(.rf-dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(161 161 170/var(--tw-placeholder-opacity,1))}.dark\\:rf-ring-offset-zinc-950:is(.rf-dark *){--tw-ring-offset-color:#09090b}.dark\\:placeholder\\:rf-text-zinc-400:is(.rf-dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:placeholder\\:rf-text-zinc-400:is(.rf-dark *)::placeholder{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:hover\\:rf-bg-red-900\\/90:hover:is(.rf-dark *){background-color:rgba(127,29,29,.9)}.dark\\:hover\\:rf-bg-zinc-50\\/90:hover:is(.rf-dark *){background-color:hsla(0,0%,98%,.9)}.dark\\:hover\\:rf-bg-zinc-800:hover:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:hover\\:rf-bg-zinc-800\\/80:hover:is(.rf-dark *){background-color:rgba(39,39,42,.8)}.dark\\:hover\\:rf-text-zinc-50:hover:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus\\:rf-bg-zinc-800:focus:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:focus\\:rf-text-zinc-50:focus:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus-visible\\:rf-ring-zinc-300:focus-visible:is(.rf-dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 216/var(--tw-ring-opacity,1))}.dark\\:data-\\[selected\\=true\\]\\:rf-bg-zinc-800[data-selected=true]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-bg-zinc-950[data-state=active]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=checked\\]\\:rf-bg-zinc-50[data-state=checked]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=open\\]\\:rf-bg-zinc-800[data-state=open]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[selected\\=true\\]\\:rf-text-zinc-50[data-selected=true]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-text-zinc-50[data-state=active]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:data-\\[state\\=checked\\]\\:rf-text-zinc-900[data-state=checked]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\\:rf-order-1{order:1}.sm\\:rf-order-2{order:2}.sm\\:rf-mt-0{margin-top:0}.sm\\:rf-block{display:block}.sm\\:rf-inline{display:inline}.sm\\:rf-grid{display:grid}.sm\\:rf-hidden{display:none}.sm\\:rf-w-auto{width:auto}.sm\\:rf-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\\:rf-grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.sm\\:rf-flex-row{flex-direction:row}.sm\\:rf-items-center{align-items:center}.sm\\:rf-justify-end{justify-content:flex-end}.sm\\:rf-gap-3{gap:.75rem}.sm\\:rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.sm\\:rf-justify-self-end{justify-self:end}.sm\\:rf-rounded-lg{border-radius:var(--radius)}.sm\\:rf-px-4{padding-left:1rem;padding-right:1rem}.sm\\:rf-text-left{text-align:left}.sm\\:rf-text-right{text-align:right}.sm\\:rf-text-sm{font-size:.875rem;line-height:1.25rem}.sm\\:rf-text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:768px){.md\\:rf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}.\\[\\&\\>span\\]\\:rf-line-clamp-1>span{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\\[\\&\\>svg\\]\\:rf-size-4>svg{height:1rem;width:1rem}.\\[\\&\\>svg\\]\\:rf-shrink-0>svg{flex-shrink:0}.\\[\\&\\>svg\\]\\:rf-text-red-300>svg{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.\\[\\&\\>svg\\]\\:hover\\:rf-text-red-400:hover>svg{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-py-1\\.5 [cmdk-group-heading]{padding-bottom:.375rem;padding-top:.375rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-font-medium [cmdk-group-heading]{font-weight:500}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-zinc-500 [cmdk-group-heading]{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.dark\\:\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-zinc-400 [cmdk-group-heading]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:rf-pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\\[\\&_\\[cmdk-group\\]\\]\\:rf-px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:rf-h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:rf-w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\\[\\&_\\[cmdk-input\\]\\]\\:rf-h-12 [cmdk-input]{height:3rem}.\\[\\&_\\[cmdk-item\\]\\]\\:rf-px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-item\\]\\]\\:rf-py-3 [cmdk-item]{padding-bottom:.75rem;padding-top:.75rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:rf-h-5 [cmdk-item] svg{height:1.25rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:rf-w-5 [cmdk-item] svg{width:1.25rem}.\\[\\&_svg\\]\\:rf-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:rf-size-4 svg{height:1rem;width:1rem}.\\[\\&_svg\\]\\:rf-shrink-0 svg{flex-shrink:0}';
1142
1155
 
1143
1156
  // lib/hooks/use-styles.ts
1144
1157
  var useStyles = () => {
1145
- useEffect(() => {
1158
+ useEffect2(() => {
1146
1159
  const existingStyle = document.querySelector(
1147
1160
  'style[data-styles="tscircuit-runframe"]'
1148
1161
  );
@@ -1155,9 +1168,9 @@ var useStyles = () => {
1155
1168
  };
1156
1169
 
1157
1170
  // lib/hooks/use-fullscreen-body-scroll.ts
1158
- import { useEffect as useEffect2 } from "react";
1171
+ import { useEffect as useEffect3 } from "react";
1159
1172
  var useFullscreenBodyScroll = (isFullScreen) => {
1160
- useEffect2(() => {
1173
+ useEffect3(() => {
1161
1174
  if (isFullScreen) {
1162
1175
  document.body.style.overflow = "hidden";
1163
1176
  } else {
@@ -1407,13 +1420,13 @@ var RenderLogViewer = ({
1407
1420
  };
1408
1421
 
1409
1422
  // lib/hooks/use-error-telemetry.ts
1410
- import { useEffect as useEffect3 } from "react";
1423
+ import { useEffect as useEffect4 } from "react";
1411
1424
  var useErrorTelemetry = ({
1412
1425
  errorMessage,
1413
1426
  errorStack,
1414
1427
  circuitJsonErrors
1415
1428
  }) => {
1416
- useEffect3(() => {
1429
+ useEffect4(() => {
1417
1430
  if (errorMessage) {
1418
1431
  const err = new Error(errorMessage);
1419
1432
  if (errorStack) err.stack = errorStack;
@@ -1423,7 +1436,7 @@ var useErrorTelemetry = ({
1423
1436
  }
1424
1437
  }
1425
1438
  }, [errorMessage, errorStack]);
1426
- useEffect3(() => {
1439
+ useEffect4(() => {
1427
1440
  if (circuitJsonErrors && circuitJsonErrors.length > 0) {
1428
1441
  for (const error of circuitJsonErrors) {
1429
1442
  const err = new Error(error.message || "Circuit JSON Error");
@@ -1441,7 +1454,7 @@ var useErrorTelemetry = ({
1441
1454
  };
1442
1455
 
1443
1456
  // package.json
1444
- var version = "0.0.1135";
1457
+ var version = "0.0.1137";
1445
1458
  var package_default = {
1446
1459
  name: "@tscircuit/runframe",
1447
1460
  main: "dist/preview.js",
@@ -1484,19 +1497,20 @@ var package_default = {
1484
1497
  "@radix-ui/react-icons": "^1.3.2",
1485
1498
  "@radix-ui/react-popover": "^1.1.14",
1486
1499
  "@radix-ui/react-progress": "^1.1.2",
1500
+ "@radix-ui/react-select": "^2.2.6",
1487
1501
  "@radix-ui/react-slot": "^1.1.1",
1488
1502
  "@radix-ui/react-tabs": "^1.1.2",
1489
1503
  "@resvg/resvg-wasm": "^2.6.2",
1490
- "@tscircuit/3d-viewer": "^0.0.418",
1504
+ "@tscircuit/3d-viewer": "^0.0.419",
1491
1505
  "@tscircuit/assembly-viewer": "^0.0.5",
1492
1506
  "@tscircuit/checks": "^0.0.78",
1493
1507
  "@tscircuit/create-snippet-url": "^0.0.9",
1494
- "@tscircuit/eval": "^0.0.414",
1495
- "@tscircuit/fake-snippets": "^0.0.87",
1508
+ "@tscircuit/eval": "^0.0.416",
1509
+ "@tscircuit/fake-snippets": "^0.0.122",
1496
1510
  "@tscircuit/file-server": "^0.0.32",
1497
1511
  "@tscircuit/footprinter": "^0.0.236",
1498
1512
  "@tscircuit/math-utils": "^0.0.25",
1499
- "@tscircuit/pcb-viewer": "1.11.236",
1513
+ "@tscircuit/pcb-viewer": "1.11.237",
1500
1514
  "@tscircuit/props": "^0.0.365",
1501
1515
  "@tscircuit/schematic-trace-solver": "^0.0.40",
1502
1516
  "@tscircuit/schematic-viewer": "2.0.45",
@@ -1519,6 +1533,7 @@ var package_default = {
1519
1533
  "circuit-to-svg": "^0.0.205",
1520
1534
  "class-variance-authority": "^0.7.1",
1521
1535
  clsx: "^2.1.1",
1536
+ cmdk: "^1.1.1",
1522
1537
  comlink: "^4.4.2",
1523
1538
  concurrently: "^9.1.2",
1524
1539
  cssnano: "^7.0.6",
@@ -1526,6 +1541,7 @@ var package_default = {
1526
1541
  easyeda: "^0.0.228",
1527
1542
  fflate: "^0.8.2",
1528
1543
  "fuse.js": "^7.1.0",
1544
+ jose: "^6.1.0",
1529
1545
  jszip: "^3.10.1",
1530
1546
  "kicad-component-converter": "^0.1.21",
1531
1547
  kicadts: "^0.0.10",
@@ -1561,10 +1577,10 @@ var package_default = {
1561
1577
  };
1562
1578
 
1563
1579
  // lib/hooks/use-eval-versions.ts
1564
- import { useEffect as useEffect5, useMemo as useMemo2, useState as useState6 } from "react";
1580
+ import { useEffect as useEffect6, useMemo as useMemo2, useState as useState6 } from "react";
1565
1581
 
1566
1582
  // lib/hooks/use-local-storage-state.ts
1567
- import { useState as useState5, useEffect as useEffect4 } from "react";
1583
+ import { useState as useState5, useEffect as useEffect5 } from "react";
1568
1584
  function useLocalStorageState(key, initialValue) {
1569
1585
  const [state, setState] = useState5(() => {
1570
1586
  try {
@@ -1575,7 +1591,7 @@ function useLocalStorageState(key, initialValue) {
1575
1591
  return initialValue;
1576
1592
  }
1577
1593
  });
1578
- useEffect4(() => {
1594
+ useEffect5(() => {
1579
1595
  try {
1580
1596
  window.localStorage.setItem(key, JSON.stringify(state));
1581
1597
  } catch (error) {
@@ -1611,7 +1627,7 @@ var useEvalVersions = (allowSelecting) => {
1611
1627
  );
1612
1628
  const setLastRunEvalVersion = useRunnerStore((s) => s.setLastRunEvalVersion);
1613
1629
  const lastRunEvalVersion = useRunnerStore((s) => s.lastRunEvalVersion);
1614
- useEffect5(() => {
1630
+ useEffect6(() => {
1615
1631
  if (!allowSelecting) return;
1616
1632
  fetch("https://data.jsdelivr.com/v1/package/npm/@tscircuit/eval").then((res) => res.json()).then((data) => {
1617
1633
  if (Array.isArray(data?.versions)) {
@@ -1625,7 +1641,7 @@ var useEvalVersions = (allowSelecting) => {
1625
1641
  }).catch(() => {
1626
1642
  });
1627
1643
  }, [allowSelecting]);
1628
- useEffect5(() => {
1644
+ useEffect6(() => {
1629
1645
  if (!allowSelecting) return;
1630
1646
  if (selected) {
1631
1647
  window.TSCIRCUIT_LATEST_EVAL_VERSION = selected;
@@ -1654,7 +1670,7 @@ var useEvalVersions = (allowSelecting) => {
1654
1670
  };
1655
1671
 
1656
1672
  // lib/components/FileMenuLeftHeader.tsx
1657
- import { useEffect as useEffect11, useMemo as useMemo7, useState as useState18 } from "react";
1673
+ import { useEffect as useEffect13, useMemo as useMemo8, useState as useState19 } from "react";
1658
1674
 
1659
1675
  // lib/components/RunFrameWithApi/store.ts
1660
1676
  import { applyEditEventsToManualEditsFile } from "@tscircuit/core";
@@ -1925,11 +1941,11 @@ var SelectSnippetDialog = ({
1925
1941
  };
1926
1942
 
1927
1943
  // lib/components/RunFrameForCli/useEventHandler.ts
1928
- import { useEffect as useEffect6, useRef as useRef2 } from "react";
1944
+ import { useEffect as useEffect7, useRef as useRef2 } from "react";
1929
1945
  var useEventHandler = (callback) => {
1930
1946
  const lastProcessedEventId = useRef2(null);
1931
1947
  const recentEvents = useRunFrameStore((state) => state.recentEvents);
1932
- useEffect6(() => {
1948
+ useEffect7(() => {
1933
1949
  if (recentEvents.length === 0) return;
1934
1950
  const latestEvent = recentEvents[0];
1935
1951
  if (latestEvent.event_id !== lastProcessedEventId.current) {
@@ -3400,7 +3416,7 @@ var exportAndDownload = async ({
3400
3416
  import { useState as useState15 } from "react";
3401
3417
 
3402
3418
  // lib/components/AiReviewDialog/ListAiReviewsView.tsx
3403
- import { useEffect as useEffect8, useState as useState13 } from "react";
3419
+ import { useEffect as useEffect9, useState as useState13 } from "react";
3404
3420
 
3405
3421
  // lib/utils/get-registry-ky.ts
3406
3422
  import ky from "ky";
@@ -3440,7 +3456,7 @@ var AiReviewListView = ({
3440
3456
  const [reviews, setReviews] = useState13([]);
3441
3457
  const [loading, setLoading] = useState13(false);
3442
3458
  const [creating, setCreating] = useState13(false);
3443
- useEffect8(() => {
3459
+ useEffect9(() => {
3444
3460
  if (!packageName || !hasRegistryToken()) return;
3445
3461
  setLoading(true);
3446
3462
  registryKy.get("ai_reviews/list", { searchParams: { package_name: packageName } }).json().then((data) => setReviews(data.ai_reviews)).catch((err) => {
@@ -3495,7 +3511,7 @@ var AiReviewListView = ({
3495
3511
  };
3496
3512
 
3497
3513
  // lib/components/AiReviewDialog/ViewAiReviewView.tsx
3498
- import { useEffect as useEffect9, useMemo as useMemo4, useState as useState14 } from "react";
3514
+ import { useEffect as useEffect10, useMemo as useMemo4, useState as useState14 } from "react";
3499
3515
  import { marked } from "marked";
3500
3516
  import { Fragment as Fragment5, jsx as jsx27, jsxs as jsxs20 } from "react/jsx-runtime";
3501
3517
  var AiReviewViewView = ({
@@ -3507,7 +3523,7 @@ var AiReviewViewView = ({
3507
3523
  );
3508
3524
  const registryKy2 = getRegistryKy();
3509
3525
  const aiReviewId = review.ai_review_id;
3510
- useEffect9(() => {
3526
+ useEffect10(() => {
3511
3527
  if (!aiReviewId) return;
3512
3528
  let timeout;
3513
3529
  async function loadAiReviewText() {
@@ -3638,7 +3654,7 @@ import { QueryClient, QueryClientProvider } from "react-query";
3638
3654
  // lib/components/OrderDialog/InitialOrder.tsx
3639
3655
  import { Loader2 as Loader24 } from "lucide-react";
3640
3656
  import { GitHubLogoIcon as GitHubLogoIcon2 } from "@radix-ui/react-icons";
3641
- import { useEffect as useEffect10, useMemo as useMemo5, useState as useState16 } from "react";
3657
+ import { useEffect as useEffect11, useMemo as useMemo5, useState as useState16 } from "react";
3642
3658
 
3643
3659
  // lib/components/OrderDialog/VendorQuoteCard.tsx
3644
3660
  import { Truck, Package } from "lucide-react";
@@ -3804,7 +3820,7 @@ var InitialOrderScreen = ({
3804
3820
  const [selectedShippingCarrier, setSelectedShippingCarrier] = useState16(null);
3805
3821
  const [orderQuoteId, setOrderQuoteId] = useState16(null);
3806
3822
  const { mutate: createOrderQuote2, error: createOrderQuoteError } = useCreateOrderQuote();
3807
- useEffect10(() => {
3823
+ useEffect11(() => {
3808
3824
  if (packageReleaseId) {
3809
3825
  createOrderQuote2(packageReleaseId, {
3810
3826
  onSuccess: (data) => {
@@ -3822,7 +3838,7 @@ var InitialOrderScreen = ({
3822
3838
  );
3823
3839
  window.location.href = `${stripeCheckoutBaseUrl}?client_reference_id=${orderQuoteId2}&shipping_option=${selectedShippingCarrier}`;
3824
3840
  };
3825
- useEffect10(() => {
3841
+ useEffect11(() => {
3826
3842
  if (selectedShippingCarrier === null && orderQuote && Array.isArray(orderQuote.shipping_options) && orderQuote.shipping_options.length > 0) {
3827
3843
  const lowest = orderQuote.shipping_options.reduce(
3828
3844
  (min, curr) => curr.cost < min.cost ? curr : min,
@@ -4024,31 +4040,314 @@ var useOrderDialog = ({
4024
4040
  };
4025
4041
  };
4026
4042
 
4027
- // lib/components/FileMenuLeftHeader.tsx
4043
+ // lib/components/useBugReportDialog.tsx
4044
+ import clsx2 from "clsx";
4045
+ import { HTTPError as HTTPError2 } from "ky";
4046
+ import {
4047
+ useCallback as useCallback8,
4048
+ useEffect as useEffect12,
4049
+ useMemo as useMemo7,
4050
+ useState as useState18
4051
+ } from "react";
4028
4052
  import { Fragment as Fragment7, jsx as jsx34, jsxs as jsxs24 } from "react/jsx-runtime";
4053
+ var DYNAMIC_FILE_EXTENSIONS2 = [".tsx", ".ts", ".jsx", ".js", ".json"];
4054
+ async function getFilesFromServer() {
4055
+ const response = await fetch(`${API_BASE}/files/list`);
4056
+ const { file_list } = await response.json();
4057
+ const fileMap = /* @__PURE__ */ new Map();
4058
+ for (const file of file_list) {
4059
+ if (DYNAMIC_FILE_EXTENSIONS2.some((ext) => file.file_path.endsWith(ext))) {
4060
+ const fileResponse = await fetch(
4061
+ `${API_BASE}/files/get?file_path=${encodeURIComponent(file.file_path)}`
4062
+ );
4063
+ const fileData = await fileResponse.json();
4064
+ if (fileData.file?.text_content) {
4065
+ fileMap.set(file.file_path, fileData.file.text_content);
4066
+ }
4067
+ }
4068
+ }
4069
+ return fileMap;
4070
+ }
4071
+ var buildBugReportUrl = (bugReportId) => {
4072
+ const normalizedApiBase = API_BASE.endsWith("/") ? API_BASE : `${API_BASE}/`;
4073
+ const baseForView = API_BASE.startsWith("http://") || API_BASE.startsWith("https://") ? normalizedApiBase : `${typeof window !== "undefined" ? window.location.origin : "https://api.tscircuit.com"}/${normalizedApiBase.replace(/^\//, "")}`;
4074
+ return new URL(
4075
+ `bug_reports/view?bug_report_id=${bugReportId}`,
4076
+ baseForView
4077
+ ).toString();
4078
+ };
4079
+ var useBugReportDialog = () => {
4080
+ const [isOpen, setIsOpen] = useState18(false);
4081
+ const [isSubmitting, setIsSubmitting] = useState18(false);
4082
+ const [errorMessage, setErrorMessage] = useState18(null);
4083
+ const [userText, setUserText] = useState18("");
4084
+ const [successState, setSuccessState] = useState18(null);
4085
+ const [bugReportFileCount, setBugReportFileCount] = useState18(0);
4086
+ const isSessionLoggedIn = useMemo7(() => {
4087
+ if (hasRegistryToken()) return true;
4088
+ if (typeof document === "undefined") return false;
4089
+ return document.cookie.split(";").some((cookie) => cookie.trim().startsWith("session="));
4090
+ }, [isOpen]);
4091
+ useEffect12(() => {
4092
+ if (isOpen && !successState) {
4093
+ const globalError = typeof window !== "undefined" ? window.__TSCIRCUIT_LAST_EXECUTION_ERROR : void 0;
4094
+ if (globalError) {
4095
+ setUserText(`I'm getting this execution error:
4096
+
4097
+ ${globalError}`);
4098
+ }
4099
+ }
4100
+ }, [isOpen, successState]);
4101
+ useEffect12(() => {
4102
+ if (isOpen && !successState) {
4103
+ getFilesFromServer().then((files) => {
4104
+ setBugReportFileCount(files.size);
4105
+ }).catch((error) => {
4106
+ console.error("Failed to fetch file count", error);
4107
+ setBugReportFileCount(0);
4108
+ });
4109
+ }
4110
+ }, [isOpen, successState]);
4111
+ const openBugReportDialog = useCallback8(() => {
4112
+ setErrorMessage(null);
4113
+ setSuccessState(null);
4114
+ setUserText("");
4115
+ setIsOpen(true);
4116
+ }, []);
4117
+ const closeBugReportDialog = useCallback8(() => {
4118
+ setIsOpen(false);
4119
+ }, []);
4120
+ const handleConfirmBugReport = useCallback8(async () => {
4121
+ setIsSubmitting(true);
4122
+ setErrorMessage(null);
4123
+ const registryKy2 = getRegistryKy();
4124
+ try {
4125
+ const filesFromServer = await getFilesFromServer();
4126
+ if (filesFromServer.size === 0) {
4127
+ toast.error("No project files available to include in the bug report");
4128
+ setIsSubmitting(false);
4129
+ return;
4130
+ }
4131
+ const deleteAt = new Date(Date.now() + 24 * 60 * 60 * 1e3).toISOString();
4132
+ const createResponse = await registryKy2.post("bug_reports/create", {
4133
+ json: {
4134
+ text: userText.trim() || void 0,
4135
+ is_auto_deleted: true,
4136
+ delete_at: deleteAt
4137
+ }
4138
+ }).json();
4139
+ const bugReportId = createResponse.bug_report.bug_report_id;
4140
+ for (const [filePath, fileContents] of filesFromServer.entries()) {
4141
+ await registryKy2.post("bug_reports/upload_file", {
4142
+ json: {
4143
+ bug_report_id: bugReportId,
4144
+ file_path: filePath,
4145
+ content_text: String(fileContents ?? "")
4146
+ }
4147
+ });
4148
+ }
4149
+ const bugReportUrl = buildBugReportUrl(bugReportId);
4150
+ setSuccessState({ bugReportUrl });
4151
+ } catch (error) {
4152
+ console.error("Failed to submit bug report", error);
4153
+ if (error instanceof HTTPError2) {
4154
+ if (error.response.status === 401) {
4155
+ const message = "You must be logged in to report a bug. Please sign in and try again.";
4156
+ setErrorMessage(message);
4157
+ toast.error(message);
4158
+ } else {
4159
+ const message = `Failed to submit bug report (${error.response.status})`;
4160
+ setErrorMessage(message);
4161
+ toast.error(message);
4162
+ }
4163
+ } else if (error instanceof Error) {
4164
+ setErrorMessage(error.message);
4165
+ toast.error(error.message);
4166
+ } else {
4167
+ const message = "Failed to submit bug report";
4168
+ setErrorMessage(message);
4169
+ toast.error(message);
4170
+ }
4171
+ } finally {
4172
+ setIsSubmitting(false);
4173
+ }
4174
+ }, [userText]);
4175
+ const BugReportDialog = useCallback8(() => {
4176
+ return /* @__PURE__ */ jsx34(
4177
+ AlertDialog,
4178
+ {
4179
+ open: isOpen,
4180
+ onOpenChange: (open) => {
4181
+ if (!open) {
4182
+ if (!isSubmitting) {
4183
+ closeBugReportDialog();
4184
+ }
4185
+ } else {
4186
+ setErrorMessage(null);
4187
+ setSuccessState(null);
4188
+ setIsOpen(true);
4189
+ }
4190
+ },
4191
+ children: /* @__PURE__ */ jsxs24(AlertDialogContent, { children: [
4192
+ /* @__PURE__ */ jsxs24(AlertDialogHeader, { children: [
4193
+ /* @__PURE__ */ jsx34(AlertDialogTitle, { children: successState ? "Bug Report Created" : "Report Bug" }),
4194
+ /* @__PURE__ */ jsx34(AlertDialogDescription, { asChild: true, children: successState ? /* @__PURE__ */ jsxs24("div", { className: "rf-text-left rf-space-y-3 rf-text-sm", children: [
4195
+ /* @__PURE__ */ jsx34("p", { children: "Bug report created successfully." }),
4196
+ /* @__PURE__ */ jsx34("div", { children: /* @__PURE__ */ jsx34(
4197
+ "a",
4198
+ {
4199
+ className: "rf-text-blue-600 hover:rf-underline",
4200
+ href: successState.bugReportUrl,
4201
+ target: "_blank",
4202
+ rel: "noreferrer",
4203
+ children: "View bug report"
4204
+ }
4205
+ ) }),
4206
+ /* @__PURE__ */ jsxs24("p", { children: [
4207
+ "Please share this link privately with tscircuit staff so we can help debug. Join the",
4208
+ /* @__PURE__ */ jsx34(
4209
+ "a",
4210
+ {
4211
+ className: "rf-ml-1 rf-text-blue-600 hover:rf-underline",
4212
+ href: "https://tscircuit.com/join",
4213
+ target: "_blank",
4214
+ rel: "noreferrer",
4215
+ children: "tscircuit Discord"
4216
+ }
4217
+ ),
4218
+ "."
4219
+ ] })
4220
+ ] }) : /* @__PURE__ */ jsxs24("div", { className: "rf-text-left rf-space-y-3 rf-text-sm", children: [
4221
+ /* @__PURE__ */ jsxs24("p", { children: [
4222
+ "Reporting a bug will upload your entire project",
4223
+ bugReportFileCount > 0 ? ` (${bugReportFileCount} file${bugReportFileCount === 1 ? "" : "s"})` : "",
4224
+ " ",
4225
+ "to tscircuit support."
4226
+ ] }),
4227
+ /* @__PURE__ */ jsxs24("div", { className: "rf-space-y-2", children: [
4228
+ /* @__PURE__ */ jsx34(
4229
+ "label",
4230
+ {
4231
+ htmlFor: "bug-description",
4232
+ className: "rf-block rf-font-medium",
4233
+ children: "Description (optional)"
4234
+ }
4235
+ ),
4236
+ /* @__PURE__ */ jsx34(
4237
+ "textarea",
4238
+ {
4239
+ id: "bug-description",
4240
+ className: "rf-w-full rf-min-h-[100px] rf-px-3 rf-py-2 rf-text-sm rf-border rf-border-gray-300 rf-rounded-md focus:rf-outline-none focus:rf-ring-2 focus:rf-ring-blue-500",
4241
+ placeholder: "Describe the issue you're experiencing...",
4242
+ value: userText,
4243
+ onChange: (e) => setUserText(e.target.value),
4244
+ disabled: isSubmitting
4245
+ }
4246
+ )
4247
+ ] }),
4248
+ /* @__PURE__ */ jsxs24("p", { children: [
4249
+ "Share the generated bug report link privately with tscircuit staff so we can help debug your issue. You can also reach out on our",
4250
+ /* @__PURE__ */ jsx34(
4251
+ "a",
4252
+ {
4253
+ className: "rf-ml-1 rf-text-blue-600 hover:rf-underline",
4254
+ href: "https://tscircuit.com/join",
4255
+ target: "_blank",
4256
+ rel: "noreferrer",
4257
+ children: "Discord community"
4258
+ }
4259
+ ),
4260
+ "."
4261
+ ] }),
4262
+ !isSessionLoggedIn && /* @__PURE__ */ jsx34("p", { className: "rf-text-red-600", children: "You appear to be logged out. Please log in before reporting a bug or the upload will fail." }),
4263
+ errorMessage && /* @__PURE__ */ jsx34("p", { className: "rf-text-red-600", children: errorMessage })
4264
+ ] }) })
4265
+ ] }),
4266
+ /* @__PURE__ */ jsx34(AlertDialogFooter, { children: successState ? /* @__PURE__ */ jsx34(
4267
+ "button",
4268
+ {
4269
+ type: "button",
4270
+ className: buttonVariants(),
4271
+ onClick: () => {
4272
+ closeBugReportDialog();
4273
+ },
4274
+ children: "Close"
4275
+ }
4276
+ ) : /* @__PURE__ */ jsxs24(Fragment7, { children: [
4277
+ /* @__PURE__ */ jsx34(
4278
+ AlertDialogCancel,
4279
+ {
4280
+ disabled: isSubmitting,
4281
+ onClick: () => {
4282
+ if (!isSubmitting) {
4283
+ closeBugReportDialog();
4284
+ }
4285
+ },
4286
+ children: "Cancel"
4287
+ }
4288
+ ),
4289
+ /* @__PURE__ */ jsx34(
4290
+ "button",
4291
+ {
4292
+ type: "button",
4293
+ className: clsx2(
4294
+ buttonVariants(),
4295
+ isSubmitting && "rf-opacity-70 rf-cursor-not-allowed"
4296
+ ),
4297
+ disabled: isSubmitting,
4298
+ onClick: (event) => {
4299
+ event.preventDefault();
4300
+ void handleConfirmBugReport();
4301
+ },
4302
+ children: isSubmitting ? "Reporting..." : "Upload & Report"
4303
+ }
4304
+ )
4305
+ ] }) })
4306
+ ] })
4307
+ }
4308
+ );
4309
+ }, [
4310
+ bugReportFileCount,
4311
+ closeBugReportDialog,
4312
+ errorMessage,
4313
+ handleConfirmBugReport,
4314
+ isOpen,
4315
+ isSessionLoggedIn,
4316
+ isSubmitting,
4317
+ successState,
4318
+ userText
4319
+ ]);
4320
+ return {
4321
+ BugReportDialog,
4322
+ openBugReportDialog
4323
+ };
4324
+ };
4325
+
4326
+ // lib/components/FileMenuLeftHeader.tsx
4327
+ import { Fragment as Fragment8, jsx as jsx35, jsxs as jsxs25 } from "react/jsx-runtime";
4029
4328
  var FileMenuLeftHeader = (props) => {
4030
4329
  const lastRunEvalVersion = useRunnerStore((s) => s.lastRunEvalVersion);
4031
- const [snippetName, setSnippetName] = useState18(null);
4032
- const [hasUnsavedChanges, setHasUnsavedChanges] = useState18(false);
4033
- const [hasNeverBeenSaved, setHasNeverBeenSaved] = useState18(true);
4034
- const [isSaving, setIsSaving] = useState18(false);
4035
- const [requestToSaveSentAt, setRequestToSaveSentAt] = useState18(
4330
+ const [snippetName, setSnippetName] = useState19(null);
4331
+ const [hasUnsavedChanges, setHasUnsavedChanges] = useState19(false);
4332
+ const [hasNeverBeenSaved, setHasNeverBeenSaved] = useState19(true);
4333
+ const [isSaving, setIsSaving] = useState19(false);
4334
+ const [requestToSaveSentAt, setRequestToSaveSentAt] = useState19(
4036
4335
  null
4037
4336
  );
4038
- const [availableSnippets, setAvailableSnippets] = useState18(
4337
+ const [availableSnippets, setAvailableSnippets] = useState19(
4039
4338
  null
4040
4339
  );
4041
- const [isSelectSnippetDialogOpen, setIsSelectSnippetDialogOpen] = useState18(false);
4042
- const [notificationMessage, setNotificationMessage] = useState18(
4340
+ const [isSelectSnippetDialogOpen, setIsSelectSnippetDialogOpen] = useState19(false);
4341
+ const [notificationMessage, setNotificationMessage] = useState19(
4043
4342
  null
4044
4343
  );
4045
- const [errorMessage, setErrorMessage] = useState18(null);
4046
- const [isError, setIsError] = useState18(false);
4047
- const [isExporting, setisExporting] = useState18(false);
4344
+ const [errorMessage, setErrorMessage] = useState19(null);
4345
+ const [isError, setIsError] = useState19(false);
4346
+ const [isExporting, setisExporting] = useState19(false);
4048
4347
  const orderDialog = useOrderDialogCli();
4049
4348
  const pushEvent = useRunFrameStore((state) => state.pushEvent);
4050
4349
  const recentEvents = useRunFrameStore((state) => state.recentEvents);
4051
- const firstRenderTime = useMemo7(() => Date.now(), []);
4350
+ const firstRenderTime = useMemo8(() => Date.now(), []);
4052
4351
  useEventHandler((event) => {
4053
4352
  if (new Date(event.created_at).valueOf() < firstRenderTime + 500) return;
4054
4353
  if (event.event_type === "FILE_UPDATED") {
@@ -4073,7 +4372,7 @@ var FileMenuLeftHeader = (props) => {
4073
4372
  setisExporting(false);
4074
4373
  }
4075
4374
  });
4076
- useEffect11(() => {
4375
+ useEffect13(() => {
4077
4376
  if (!isSaving || requestToSaveSentAt === null) return;
4078
4377
  const eventsSinceRequestToSave = recentEvents.filter(
4079
4378
  (event) => new Date(event.created_at).valueOf() > requestToSaveSentAt
@@ -4116,14 +4415,15 @@ var FileMenuLeftHeader = (props) => {
4116
4415
  };
4117
4416
  const storeCircuitJson = useRunFrameStore((state) => state.circuitJson);
4118
4417
  const circuitJson = storeCircuitJson ?? props.circuitJson;
4119
- const [isImportDialogOpen, setIsImportDialogOpen] = useState18(false);
4120
- const [isAiReviewDialogOpen, setIsAiReviewDialogOpen] = useState18(false);
4121
- return /* @__PURE__ */ jsxs24(Fragment7, { children: [
4122
- /* @__PURE__ */ jsxs24(DropdownMenu, { children: [
4123
- /* @__PURE__ */ jsx34(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx34("div", { className: "rf-whitespace-nowrap rf-text-xs font-medium rf-p-2 rf-mx-1 rf-cursor-pointer rf-relative", children: "File" }) }),
4124
- /* @__PURE__ */ jsxs24(DropdownMenuContent, { className: "rf-z-[101]", children: [
4125
- !props.isWebEmbedded && /* @__PURE__ */ jsxs24(Fragment7, { children: [
4126
- /* @__PURE__ */ jsx34(
4418
+ const [isImportDialogOpen, setIsImportDialogOpen] = useState19(false);
4419
+ const [isAiReviewDialogOpen, setIsAiReviewDialogOpen] = useState19(false);
4420
+ const { BugReportDialog, openBugReportDialog } = useBugReportDialog();
4421
+ return /* @__PURE__ */ jsxs25(Fragment8, { children: [
4422
+ /* @__PURE__ */ jsxs25(DropdownMenu, { children: [
4423
+ /* @__PURE__ */ jsx35(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx35("div", { className: "rf-whitespace-nowrap rf-text-xs font-medium rf-p-2 rf-mx-1 rf-cursor-pointer rf-relative", children: "File" }) }),
4424
+ /* @__PURE__ */ jsxs25(DropdownMenuContent, { className: "rf-z-[101]", children: [
4425
+ !props.isWebEmbedded && /* @__PURE__ */ jsxs25(Fragment8, { children: [
4426
+ /* @__PURE__ */ jsx35(
4127
4427
  DropdownMenuItem,
4128
4428
  {
4129
4429
  className: "rf-text-xs",
@@ -4132,7 +4432,7 @@ var FileMenuLeftHeader = (props) => {
4132
4432
  children: isSaving ? "Saving..." : "Push"
4133
4433
  }
4134
4434
  ),
4135
- parseInt(window.location.port) > 5e3 && /* @__PURE__ */ jsx34(
4435
+ parseInt(window.location.port) > 5e3 && /* @__PURE__ */ jsx35(
4136
4436
  DropdownMenuItem,
4137
4437
  {
4138
4438
  className: "rf-text-xs",
@@ -4142,7 +4442,7 @@ var FileMenuLeftHeader = (props) => {
4142
4442
  children: "Order"
4143
4443
  }
4144
4444
  ),
4145
- /* @__PURE__ */ jsx34(
4445
+ /* @__PURE__ */ jsx35(
4146
4446
  DropdownMenuItem,
4147
4447
  {
4148
4448
  className: "rf-text-xs",
@@ -4151,7 +4451,7 @@ var FileMenuLeftHeader = (props) => {
4151
4451
  children: "Import"
4152
4452
  }
4153
4453
  ),
4154
- /* @__PURE__ */ jsx34(
4454
+ /* @__PURE__ */ jsx35(
4155
4455
  DropdownMenuItem,
4156
4456
  {
4157
4457
  className: "rf-text-xs",
@@ -4166,8 +4466,18 @@ var FileMenuLeftHeader = (props) => {
4166
4466
  }
4167
4467
  )
4168
4468
  ] }),
4169
- /* @__PURE__ */ jsxs24(DropdownMenuSub, { children: [
4170
- /* @__PURE__ */ jsx34(
4469
+ !props.isWebEmbedded && /* @__PURE__ */ jsx35(
4470
+ DropdownMenuItem,
4471
+ {
4472
+ className: "rf-text-xs",
4473
+ onSelect: () => {
4474
+ openBugReportDialog();
4475
+ },
4476
+ children: "Report Bug"
4477
+ }
4478
+ ),
4479
+ /* @__PURE__ */ jsxs25(DropdownMenuSub, { children: [
4480
+ /* @__PURE__ */ jsx35(
4171
4481
  DropdownMenuSubTrigger,
4172
4482
  {
4173
4483
  className: "rf-text-xs",
@@ -4175,7 +4485,7 @@ var FileMenuLeftHeader = (props) => {
4175
4485
  children: isExporting ? "Exporting..." : "Export"
4176
4486
  }
4177
4487
  ),
4178
- /* @__PURE__ */ jsx34(DropdownMenuPortal, { children: /* @__PURE__ */ jsx34(DropdownMenuSubContent, { children: availableExports.map((exp, i) => /* @__PURE__ */ jsx34(
4488
+ /* @__PURE__ */ jsx35(DropdownMenuPortal, { children: /* @__PURE__ */ jsx35(DropdownMenuSubContent, { children: availableExports.map((exp, i) => /* @__PURE__ */ jsx35(
4179
4489
  DropdownMenuItem,
4180
4490
  {
4181
4491
  onSelect: () => {
@@ -4190,16 +4500,16 @@ var FileMenuLeftHeader = (props) => {
4190
4500
  });
4191
4501
  },
4192
4502
  disabled: isExporting,
4193
- children: /* @__PURE__ */ jsx34("span", { className: "rf-text-xs", children: exp.name })
4503
+ children: /* @__PURE__ */ jsx35("span", { className: "rf-text-xs", children: exp.name })
4194
4504
  },
4195
4505
  i
4196
4506
  )) }) })
4197
4507
  ] }),
4198
- !props.isWebEmbedded && /* @__PURE__ */ jsxs24(DropdownMenuSub, { children: [
4199
- /* @__PURE__ */ jsx34(DropdownMenuSubTrigger, { className: "rf-text-xs", children: "Advanced" }),
4200
- /* @__PURE__ */ jsx34(DropdownMenuPortal, { children: /* @__PURE__ */ jsxs24(DropdownMenuSubContent, { children: [
4201
- /* @__PURE__ */ jsx34(DropdownMenuItem, { className: "rf-flex rf-items-center rf-gap-2", children: /* @__PURE__ */ jsxs24("div", { className: "rf-flex rf-items-center rf-gap-2", children: [
4202
- /* @__PURE__ */ jsx34(
4508
+ !props.isWebEmbedded && /* @__PURE__ */ jsxs25(DropdownMenuSub, { children: [
4509
+ /* @__PURE__ */ jsx35(DropdownMenuSubTrigger, { className: "rf-text-xs", children: "Advanced" }),
4510
+ /* @__PURE__ */ jsx35(DropdownMenuPortal, { children: /* @__PURE__ */ jsxs25(DropdownMenuSubContent, { children: [
4511
+ /* @__PURE__ */ jsx35(DropdownMenuItem, { className: "rf-flex rf-items-center rf-gap-2", children: /* @__PURE__ */ jsxs25("div", { className: "rf-flex rf-items-center rf-gap-2", children: [
4512
+ /* @__PURE__ */ jsx35(
4203
4513
  Checkbox,
4204
4514
  {
4205
4515
  id: "load-latest-eval",
@@ -4209,7 +4519,7 @@ var FileMenuLeftHeader = (props) => {
4209
4519
  }
4210
4520
  }
4211
4521
  ),
4212
- /* @__PURE__ */ jsx34(
4522
+ /* @__PURE__ */ jsx35(
4213
4523
  "label",
4214
4524
  {
4215
4525
  htmlFor: "load-latest-eval",
@@ -4218,35 +4528,35 @@ var FileMenuLeftHeader = (props) => {
4218
4528
  }
4219
4529
  )
4220
4530
  ] }) }),
4221
- lastRunEvalVersion && /* @__PURE__ */ jsx34(DropdownMenuItem, { className: "rf-flex rf-items-center rf-gap-2", children: /* @__PURE__ */ jsx34("div", { className: "rf-flex rf-items-center rf-gap-2", children: /* @__PURE__ */ jsxs24("span", { className: "rf-text-xs", children: [
4531
+ lastRunEvalVersion && /* @__PURE__ */ jsx35(DropdownMenuItem, { className: "rf-flex rf-items-center rf-gap-2", children: /* @__PURE__ */ jsx35("div", { className: "rf-flex rf-items-center rf-gap-2", children: /* @__PURE__ */ jsxs25("span", { className: "rf-text-xs", children: [
4222
4532
  "@tscircuit/eval@",
4223
4533
  lastRunEvalVersion
4224
4534
  ] }) }) }),
4225
- /* @__PURE__ */ jsx34(DropdownMenuItem, { className: "rf-flex rf-items-center rf-gap-2", children: /* @__PURE__ */ jsx34("div", { className: "rf-flex rf-items-center rf-gap-2", children: /* @__PURE__ */ jsxs24("span", { className: "rf-text-xs", children: [
4535
+ /* @__PURE__ */ jsx35(DropdownMenuItem, { className: "rf-flex rf-items-center rf-gap-2", children: /* @__PURE__ */ jsx35("div", { className: "rf-flex rf-items-center rf-gap-2", children: /* @__PURE__ */ jsxs25("span", { className: "rf-text-xs", children: [
4226
4536
  "@tscircuit/runframe@",
4227
4537
  package_default.version
4228
4538
  ] }) }) }),
4229
- /* @__PURE__ */ jsx34(
4539
+ /* @__PURE__ */ jsx35(
4230
4540
  DropdownMenuItem,
4231
4541
  {
4232
4542
  className: "rf-flex rf-items-center rf-gap-2",
4233
4543
  onClick: () => {
4234
4544
  window.open("/api/admin", "_blank");
4235
4545
  },
4236
- children: /* @__PURE__ */ jsx34("div", { className: "rf-flex rf-items-center rf-gap-2", children: /* @__PURE__ */ jsx34("span", { className: "rf-text-xs", children: "CLI Admin Panel" }) })
4546
+ children: /* @__PURE__ */ jsx35("div", { className: "rf-flex rf-items-center rf-gap-2", children: /* @__PURE__ */ jsx35("span", { className: "rf-text-xs", children: "CLI Admin Panel" }) })
4237
4547
  }
4238
4548
  )
4239
4549
  ] }) })
4240
4550
  ] })
4241
4551
  ] }),
4242
- /* @__PURE__ */ jsx34(AlertDialog, { open: isError, onOpenChange: setIsError, children: /* @__PURE__ */ jsxs24(AlertDialogContent, { children: [
4243
- /* @__PURE__ */ jsxs24(AlertDialogHeader, { children: [
4244
- /* @__PURE__ */ jsx34(AlertDialogTitle, { children: "Error Saving Snippet" }),
4245
- /* @__PURE__ */ jsx34(AlertDialogDescription, { children: errorMessage })
4552
+ /* @__PURE__ */ jsx35(AlertDialog, { open: isError, onOpenChange: setIsError, children: /* @__PURE__ */ jsxs25(AlertDialogContent, { children: [
4553
+ /* @__PURE__ */ jsxs25(AlertDialogHeader, { children: [
4554
+ /* @__PURE__ */ jsx35(AlertDialogTitle, { children: "Error Saving Snippet" }),
4555
+ /* @__PURE__ */ jsx35(AlertDialogDescription, { children: errorMessage })
4246
4556
  ] }),
4247
- /* @__PURE__ */ jsx34(AlertDialogFooter, { children: /* @__PURE__ */ jsx34(AlertDialogCancel, { onClick: () => setIsError(false), children: "Dismiss" }) })
4557
+ /* @__PURE__ */ jsx35(AlertDialogFooter, { children: /* @__PURE__ */ jsx35(AlertDialogCancel, { onClick: () => setIsError(false), children: "Dismiss" }) })
4248
4558
  ] }) }),
4249
- /* @__PURE__ */ jsx34(
4559
+ /* @__PURE__ */ jsx35(
4250
4560
  SelectSnippetDialog,
4251
4561
  {
4252
4562
  snippetNames: availableSnippets ?? [],
@@ -4265,14 +4575,15 @@ var FileMenuLeftHeader = (props) => {
4265
4575
  }
4266
4576
  )
4267
4577
  ] }),
4268
- /* @__PURE__ */ jsx34(
4578
+ /* @__PURE__ */ jsx35(BugReportDialog, {}),
4579
+ /* @__PURE__ */ jsx35(
4269
4580
  ImportComponentDialogForCli,
4270
4581
  {
4271
4582
  isOpen: isImportDialogOpen,
4272
4583
  onClose: () => setIsImportDialogOpen(false)
4273
4584
  }
4274
4585
  ),
4275
- /* @__PURE__ */ jsx34(
4586
+ /* @__PURE__ */ jsx35(
4276
4587
  AiReviewDialog,
4277
4588
  {
4278
4589
  isOpen: isAiReviewDialogOpen,
@@ -4280,7 +4591,7 @@ var FileMenuLeftHeader = (props) => {
4280
4591
  packageName: snippetName
4281
4592
  }
4282
4593
  ),
4283
- /* @__PURE__ */ jsx34(
4594
+ /* @__PURE__ */ jsx35(
4284
4595
  Toaster,
4285
4596
  {
4286
4597
  position: "top-center",
@@ -4292,7 +4603,7 @@ var FileMenuLeftHeader = (props) => {
4292
4603
  }
4293
4604
  }
4294
4605
  ),
4295
- /* @__PURE__ */ jsx34(
4606
+ /* @__PURE__ */ jsx35(
4296
4607
  orderDialog.OrderDialog,
4297
4608
  {
4298
4609
  isOpen: orderDialog.isOpen,
@@ -4305,7 +4616,7 @@ var FileMenuLeftHeader = (props) => {
4305
4616
  };
4306
4617
 
4307
4618
  // lib/components/CircuitJsonPreview/CircuitJsonPreview.tsx
4308
- import { jsx as jsx35, jsxs as jsxs25 } from "react/jsx-runtime";
4619
+ import { jsx as jsx36, jsxs as jsxs26 } from "react/jsx-runtime";
4309
4620
  var dropdownMenuItems = [
4310
4621
  "assembly",
4311
4622
  "pinout",
@@ -4364,13 +4675,13 @@ var CircuitJsonPreview = ({
4364
4675
  setSearch: setEvalSearch,
4365
4676
  selectVersion: selectEvalVersion
4366
4677
  } = useEvalVersions(allowSelectingVersion);
4367
- const circuitJsonErrors = useMemo8(() => {
4678
+ const circuitJsonErrors = useMemo9(() => {
4368
4679
  if (!circuitJson) return null;
4369
4680
  return circuitJson.filter(
4370
4681
  (e) => e && "error_type" in e || e.type.includes("error")
4371
4682
  );
4372
4683
  }, [circuitJson]);
4373
- const circuitJsonWarnings = useMemo8(() => {
4684
+ const circuitJsonWarnings = useMemo9(() => {
4374
4685
  if (!circuitJson) return null;
4375
4686
  return circuitJson.filter(
4376
4687
  (e) => e && "warning_type" in e || e.type.includes("warning")
@@ -4381,13 +4692,13 @@ var CircuitJsonPreview = ({
4381
4692
  errorStack,
4382
4693
  circuitJsonErrors
4383
4694
  });
4384
- const [activeTab, setActiveTabState] = useState19(
4695
+ const [activeTab, setActiveTabState] = useState20(
4385
4696
  defaultActiveTab ?? defaultTab ?? availableTabs?.[0] ?? "pcb"
4386
4697
  );
4387
- const [lastActiveTab, setLastActiveTab] = useState19(null);
4388
- const [isFullScreen, setIsFullScreen] = useState19(defaultToFullScreen);
4698
+ const [lastActiveTab, setLastActiveTab] = useState20(null);
4699
+ const [isFullScreen, setIsFullScreen] = useState20(defaultToFullScreen);
4389
4700
  useFullscreenBodyScroll(isFullScreen);
4390
- const setActiveTab = useCallback8(
4701
+ const setActiveTab = useCallback9(
4391
4702
  (tab) => {
4392
4703
  setActiveTabState(tab);
4393
4704
  onActiveTabChange?.(tab);
@@ -4397,7 +4708,7 @@ var CircuitJsonPreview = ({
4397
4708
  const toggleFullScreen = () => {
4398
4709
  setIsFullScreen(!isFullScreen);
4399
4710
  };
4400
- useEffect12(() => {
4711
+ useEffect14(() => {
4401
4712
  if (errorMessage) {
4402
4713
  if (activeTab !== "errors") {
4403
4714
  setLastActiveTab(activeTab);
@@ -4405,38 +4716,38 @@ var CircuitJsonPreview = ({
4405
4716
  setActiveTab("errors");
4406
4717
  }
4407
4718
  }, [errorMessage]);
4408
- useEffect12(() => {
4719
+ useEffect14(() => {
4409
4720
  if ((activeTab === "code" || activeTab === "errors") && circuitJson && !errorMessage) {
4410
4721
  setActiveTab(
4411
4722
  lastActiveTab ?? defaultActiveTab ?? defaultTab ?? availableTabs?.[0] ?? "pcb"
4412
4723
  );
4413
4724
  }
4414
4725
  }, [circuitJson]);
4415
- const setCadViewerRef = useCallback8((value) => {
4726
+ const setCadViewerRef = useCallback9((value) => {
4416
4727
  window.TSCIRCUIT_3D_OBJECT_REF = value === null ? void 0 : value;
4417
4728
  }, []);
4418
- return /* @__PURE__ */ jsx35(
4729
+ return /* @__PURE__ */ jsx36(
4419
4730
  "div",
4420
4731
  {
4421
4732
  className: cn(
4422
4733
  "flex flex-col relative rf-overflow-x-hidden rf-h-full",
4423
4734
  className
4424
4735
  ),
4425
- children: /* @__PURE__ */ jsx35(
4736
+ children: /* @__PURE__ */ jsx36(
4426
4737
  "div",
4427
4738
  {
4428
4739
  className: cn(
4429
4740
  "rf-md:sticky rf-md:top-2 rf-h-full",
4430
4741
  isFullScreen && "rf-fixed rf-top-0 rf-left-0 rf-w-full rf-h-full rf-bg-white rf-overflow-hidden"
4431
4742
  ),
4432
- children: /* @__PURE__ */ jsxs25(
4743
+ children: /* @__PURE__ */ jsxs26(
4433
4744
  Tabs,
4434
4745
  {
4435
4746
  value: activeTab,
4436
4747
  onValueChange: setActiveTab,
4437
4748
  className: "rf-flex-grow rf-flex rf-flex-col rf-h-full",
4438
4749
  children: [
4439
- /* @__PURE__ */ jsxs25(
4750
+ /* @__PURE__ */ jsxs26(
4440
4751
  "div",
4441
4752
  {
4442
4753
  className: cn(
@@ -4445,7 +4756,7 @@ var CircuitJsonPreview = ({
4445
4756
  ),
4446
4757
  children: [
4447
4758
  leftHeaderContent,
4448
- showFileMenu && !leftHeaderContent && /* @__PURE__ */ jsx35(
4759
+ showFileMenu && !leftHeaderContent && /* @__PURE__ */ jsx36(
4449
4760
  FileMenuLeftHeader,
4450
4761
  {
4451
4762
  isWebEmbedded,
@@ -4453,18 +4764,18 @@ var CircuitJsonPreview = ({
4453
4764
  projectName
4454
4765
  }
4455
4766
  ),
4456
- (leftHeaderContent || showFileMenu) && /* @__PURE__ */ jsx35("div", { className: "rf-flex-grow" }),
4457
- !leftHeaderContent && !showFileMenu && isRunningCode && /* @__PURE__ */ jsx35(Loader25, { className: "rf-w-4 rf-h-4 rf-animate-spin" }),
4458
- !leftHeaderContent && !showFileMenu && /* @__PURE__ */ jsx35("div", { className: "rf-flex-grow" }),
4459
- renderLog && renderLog.progress !== 1 && !errorMessage && /* @__PURE__ */ jsxs25("div", { className: "rf-flex rf-items-center rf-gap-2 rf-min-w-0 rf-max-w-xs", children: [
4460
- activeEffectName ? /* @__PURE__ */ jsx35(
4767
+ (leftHeaderContent || showFileMenu) && /* @__PURE__ */ jsx36("div", { className: "rf-flex-grow" }),
4768
+ !leftHeaderContent && !showFileMenu && isRunningCode && /* @__PURE__ */ jsx36(Loader25, { className: "rf-w-4 rf-h-4 rf-animate-spin" }),
4769
+ !leftHeaderContent && !showFileMenu && /* @__PURE__ */ jsx36("div", { className: "rf-flex-grow" }),
4770
+ renderLog && renderLog.progress !== 1 && !errorMessage && /* @__PURE__ */ jsxs26("div", { className: "rf-flex rf-items-center rf-gap-2 rf-min-w-0 rf-max-w-xs", children: [
4771
+ activeEffectName ? /* @__PURE__ */ jsx36(
4461
4772
  "div",
4462
4773
  {
4463
4774
  className: "rf-text-xs rf-text-gray-500 rf-truncate rf-min-w-0",
4464
4775
  title: activeEffectName,
4465
4776
  children: activeEffectName
4466
4777
  }
4467
- ) : renderLog.lastRenderEvent && /* @__PURE__ */ jsx35(
4778
+ ) : renderLog.lastRenderEvent && /* @__PURE__ */ jsx36(
4468
4779
  "div",
4469
4780
  {
4470
4781
  className: "rf-text-xs rf-text-gray-500 rf-truncate rf-min-w-0",
@@ -4472,16 +4783,16 @@ var CircuitJsonPreview = ({
4472
4783
  children: renderLog.lastRenderEvent?.phase ?? ""
4473
4784
  }
4474
4785
  ),
4475
- /* @__PURE__ */ jsx35("div", { className: "rf-w-4 rf-h-4 rf-bg-blue-500 rf-opacity-50 rf-rounded-full rf-text-white rf-flex-shrink-0", children: /* @__PURE__ */ jsx35(LoaderCircleIcon, { className: "rf-w-4 rf-h-4 rf-animate-spin" }) }),
4476
- /* @__PURE__ */ jsxs25("div", { className: "rf-text-xs rf-font-bold rf-text-gray-700 rf-tabular-nums rf-flex-shrink-0", children: [
4786
+ /* @__PURE__ */ jsx36("div", { className: "rf-w-4 rf-h-4 rf-bg-blue-500 rf-opacity-50 rf-rounded-full rf-text-white rf-flex-shrink-0", children: /* @__PURE__ */ jsx36(LoaderCircleIcon, { className: "rf-w-4 rf-h-4 rf-animate-spin" }) }),
4787
+ /* @__PURE__ */ jsxs26("div", { className: "rf-text-xs rf-font-bold rf-text-gray-700 rf-tabular-nums rf-flex-shrink-0", children: [
4477
4788
  ((renderLog.progress ?? 0) * 100).toFixed(1),
4478
4789
  "%"
4479
4790
  ] })
4480
4791
  ] }),
4481
- showRightHeaderContent && /* @__PURE__ */ jsxs25(TabsList, { children: [
4482
- showCodeTab && /* @__PURE__ */ jsx35(TabsTrigger, { value: "code", children: "Code" }),
4483
- !availableTabs || availableTabs.includes("pcb") ? /* @__PURE__ */ jsxs25(TabsTrigger, { value: "pcb", className: "rf-whitespace-nowrap", children: [
4484
- circuitJson && /* @__PURE__ */ jsx35(
4792
+ showRightHeaderContent && /* @__PURE__ */ jsxs26(TabsList, { children: [
4793
+ showCodeTab && /* @__PURE__ */ jsx36(TabsTrigger, { value: "code", children: "Code" }),
4794
+ !availableTabs || availableTabs.includes("pcb") ? /* @__PURE__ */ jsxs26(TabsTrigger, { value: "pcb", className: "rf-whitespace-nowrap", children: [
4795
+ circuitJson && /* @__PURE__ */ jsx36(
4485
4796
  "span",
4486
4797
  {
4487
4798
  className: cn(
@@ -4492,13 +4803,13 @@ var CircuitJsonPreview = ({
4492
4803
  ),
4493
4804
  "PCB"
4494
4805
  ] }) : null,
4495
- !availableTabs || availableTabs.includes("schematic") ? /* @__PURE__ */ jsxs25(
4806
+ !availableTabs || availableTabs.includes("schematic") ? /* @__PURE__ */ jsxs26(
4496
4807
  TabsTrigger,
4497
4808
  {
4498
4809
  value: "schematic",
4499
4810
  className: "rf-whitespace-nowrap",
4500
4811
  children: [
4501
- circuitJson && /* @__PURE__ */ jsx35(
4812
+ circuitJson && /* @__PURE__ */ jsx36(
4502
4813
  "span",
4503
4814
  {
4504
4815
  className: cn(
@@ -4511,8 +4822,8 @@ var CircuitJsonPreview = ({
4511
4822
  ]
4512
4823
  }
4513
4824
  ) : null,
4514
- !availableTabs || availableTabs.includes("cad") ? /* @__PURE__ */ jsxs25(TabsTrigger, { value: "cad", children: [
4515
- circuitJson && /* @__PURE__ */ jsx35(
4825
+ !availableTabs || availableTabs.includes("cad") ? /* @__PURE__ */ jsxs26(TabsTrigger, { value: "cad", children: [
4826
+ circuitJson && /* @__PURE__ */ jsx36(
4516
4827
  "span",
4517
4828
  {
4518
4829
  className: cn(
@@ -4523,34 +4834,34 @@ var CircuitJsonPreview = ({
4523
4834
  ),
4524
4835
  "3D"
4525
4836
  ] }) : null,
4526
- !["pcb", "cad", "schematic"].includes(activeTab) && /* @__PURE__ */ jsx35(TabsTrigger, { value: activeTab, children: capitalizeFirstLetters(activeTab) }),
4527
- /* @__PURE__ */ jsxs25(DropdownMenu, { children: [
4528
- /* @__PURE__ */ jsx35(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs25("div", { className: "rf-whitespace-nowrap rf-p-2 rf-mr-1 rf-cursor-pointer rf-relative", children: [
4529
- /* @__PURE__ */ jsx35(EllipsisIcon, { className: "rf-w-4 rf-h-4" }),
4530
- (circuitJsonErrors && circuitJsonErrors.length > 0 || errorMessage) && /* @__PURE__ */ jsx35("span", { className: "rf-inline-flex rf-absolute rf-top-[6px] rf-right-[4px] rf-items-center rf-justify-center rf-w-1 rf-h-1 rf-ml-2 rf-text-[8px] rf-font-bold rf-text-white rf-bg-red-500 rf-rounded-full" })
4837
+ !["pcb", "cad", "schematic"].includes(activeTab) && /* @__PURE__ */ jsx36(TabsTrigger, { value: activeTab, children: capitalizeFirstLetters(activeTab) }),
4838
+ /* @__PURE__ */ jsxs26(DropdownMenu, { children: [
4839
+ /* @__PURE__ */ jsx36(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs26("div", { className: "rf-whitespace-nowrap rf-p-2 rf-mr-1 rf-cursor-pointer rf-relative", children: [
4840
+ /* @__PURE__ */ jsx36(EllipsisIcon, { className: "rf-w-4 rf-h-4" }),
4841
+ (circuitJsonErrors && circuitJsonErrors.length > 0 || errorMessage) && /* @__PURE__ */ jsx36("span", { className: "rf-inline-flex rf-absolute rf-top-[6px] rf-right-[4px] rf-items-center rf-justify-center rf-w-1 rf-h-1 rf-ml-2 rf-text-[8px] rf-font-bold rf-text-white rf-bg-red-500 rf-rounded-full" })
4531
4842
  ] }) }),
4532
- /* @__PURE__ */ jsxs25(DropdownMenuContent, { className: "rf-*:text-xs rf-z-[101]", children: [
4843
+ /* @__PURE__ */ jsxs26(DropdownMenuContent, { className: "rf-*:text-xs rf-z-[101]", children: [
4533
4844
  dropdownMenuItems.filter(
4534
4845
  (item) => !availableTabs || availableTabs.includes(item)
4535
- ).map((item) => /* @__PURE__ */ jsxs25(
4846
+ ).map((item) => /* @__PURE__ */ jsxs26(
4536
4847
  DropdownMenuItem,
4537
4848
  {
4538
4849
  onSelect: () => setActiveTab(item),
4539
4850
  children: [
4540
- activeTab !== item && /* @__PURE__ */ jsx35(Circle2, { className: "rf-w-3 rf-h-3 rf-opacity-30" }),
4541
- activeTab === item && /* @__PURE__ */ jsx35(CheckIcon, { className: "rf-w-3 rf-h-3" }),
4542
- /* @__PURE__ */ jsx35("div", { className: "rf-pr-2", children: capitalizeFirstLetters(item) }),
4543
- item === "errors" && (circuitJsonErrors && circuitJsonErrors.length > 0 || errorMessage) && /* @__PURE__ */ jsx35("span", { className: "rf-inline-flex rf-items-center rf-justify-center rf-w-3 rf-h-3 rf-ml-2 rf-text-[8px] rf-font-bold rf-text-white rf-bg-red-500 rf-rounded-full", children: errorMessage ? 1 : circuitJsonErrors?.length })
4851
+ activeTab !== item && /* @__PURE__ */ jsx36(Circle2, { className: "rf-w-3 rf-h-3 rf-opacity-30" }),
4852
+ activeTab === item && /* @__PURE__ */ jsx36(CheckIcon, { className: "rf-w-3 rf-h-3" }),
4853
+ /* @__PURE__ */ jsx36("div", { className: "rf-pr-2", children: capitalizeFirstLetters(item) }),
4854
+ item === "errors" && (circuitJsonErrors && circuitJsonErrors.length > 0 || errorMessage) && /* @__PURE__ */ jsx36("span", { className: "rf-inline-flex rf-items-center rf-justify-center rf-w-3 rf-h-3 rf-ml-2 rf-text-[8px] rf-font-bold rf-text-white rf-bg-red-500 rf-rounded-full", children: errorMessage ? 1 : circuitJsonErrors?.length })
4544
4855
  ]
4545
4856
  },
4546
4857
  item
4547
4858
  )),
4548
- /* @__PURE__ */ jsx35(
4859
+ /* @__PURE__ */ jsx36(
4549
4860
  DropdownMenuItem,
4550
4861
  {
4551
4862
  disabled: true,
4552
4863
  className: "rf-opacity-60 rf-cursor-default rf-select-none",
4553
- children: /* @__PURE__ */ jsxs25("div", { className: "rf-pr-2 rf-text-xs rf-text-gray-500", children: [
4864
+ children: /* @__PURE__ */ jsxs26("div", { className: "rf-pr-2 rf-text-xs rf-text-gray-500", children: [
4554
4865
  "@tscircuit/runframe@",
4555
4866
  version.split(".").map(
4556
4867
  (part, i) => i === 2 ? parseInt(part) + 1 : part
@@ -4558,17 +4869,17 @@ var CircuitJsonPreview = ({
4558
4869
  ] })
4559
4870
  }
4560
4871
  ),
4561
- allowSelectingVersion ? /* @__PURE__ */ jsxs25(
4872
+ allowSelectingVersion ? /* @__PURE__ */ jsxs26(
4562
4873
  DropdownMenuSub,
4563
4874
  {
4564
4875
  onOpenChange: (open) => !open && setEvalSearch(""),
4565
4876
  children: [
4566
- /* @__PURE__ */ jsx35(DropdownMenuSubTrigger, { className: "rf-text-xs rf-opacity-60", children: /* @__PURE__ */ jsxs25("div", { className: "rf-pr-2 rf-text-xs rf-text-gray-500", children: [
4877
+ /* @__PURE__ */ jsx36(DropdownMenuSubTrigger, { className: "rf-text-xs rf-opacity-60", children: /* @__PURE__ */ jsxs26("div", { className: "rf-pr-2 rf-text-xs rf-text-gray-500", children: [
4567
4878
  "@tscircuit/eval@",
4568
4879
  lastRunEvalVersion ?? latestVersion ?? "latest"
4569
4880
  ] }) }),
4570
- /* @__PURE__ */ jsx35(DropdownMenuPortal, { children: /* @__PURE__ */ jsxs25(DropdownMenuSubContent, { className: "rf-*:text-xs rf-w-40 rf-max-h-[200px] rf-overflow-y-auto", children: [
4571
- /* @__PURE__ */ jsx35("div", { className: "rf-p-1", children: /* @__PURE__ */ jsx35(
4881
+ /* @__PURE__ */ jsx36(DropdownMenuPortal, { children: /* @__PURE__ */ jsxs26(DropdownMenuSubContent, { className: "rf-*:text-xs rf-w-40 rf-max-h-[200px] rf-overflow-y-auto", children: [
4882
+ /* @__PURE__ */ jsx36("div", { className: "rf-p-1", children: /* @__PURE__ */ jsx36(
4572
4883
  Input,
4573
4884
  {
4574
4885
  value: evalSearch,
@@ -4577,15 +4888,15 @@ var CircuitJsonPreview = ({
4577
4888
  className: "rf-h-7 rf-text-xs"
4578
4889
  }
4579
4890
  ) }),
4580
- /* @__PURE__ */ jsx35(DropdownMenuSeparator, {}),
4581
- /* @__PURE__ */ jsx35(
4891
+ /* @__PURE__ */ jsx36(DropdownMenuSeparator, {}),
4892
+ /* @__PURE__ */ jsx36(
4582
4893
  DropdownMenuItem,
4583
4894
  {
4584
4895
  onSelect: () => selectEvalVersion(null),
4585
4896
  children: latestVersion ? `${latestVersion} (latest)` : "latest"
4586
4897
  }
4587
4898
  ),
4588
- evalVersions.map((v) => /* @__PURE__ */ jsx35(
4899
+ evalVersions.map((v) => /* @__PURE__ */ jsx36(
4589
4900
  DropdownMenuItem,
4590
4901
  {
4591
4902
  onSelect: () => selectEvalVersion(v),
@@ -4596,12 +4907,12 @@ var CircuitJsonPreview = ({
4596
4907
  ] }) })
4597
4908
  ]
4598
4909
  }
4599
- ) : lastRunEvalVersion && /* @__PURE__ */ jsx35(
4910
+ ) : lastRunEvalVersion && /* @__PURE__ */ jsx36(
4600
4911
  DropdownMenuItem,
4601
4912
  {
4602
4913
  disabled: true,
4603
4914
  className: "rf-opacity-60 rf-cursor-default rf-select-none",
4604
- children: /* @__PURE__ */ jsxs25("div", { className: "rf-pr-2 rf-text-xs rf-text-gray-500", children: [
4915
+ children: /* @__PURE__ */ jsxs26("div", { className: "rf-pr-2 rf-text-xs rf-text-gray-500", children: [
4605
4916
  "@tscircuit/eval@",
4606
4917
  lastRunEvalVersion
4607
4918
  ] })
@@ -4610,33 +4921,33 @@ var CircuitJsonPreview = ({
4610
4921
  ] })
4611
4922
  ] })
4612
4923
  ] }),
4613
- showToggleFullScreen && /* @__PURE__ */ jsx35(Button, { onClick: toggleFullScreen, variant: "ghost", children: isFullScreen ? /* @__PURE__ */ jsx35(MinimizeIcon, { size: 16 }) : /* @__PURE__ */ jsx35(FullscreenIcon, { size: 16 }) })
4924
+ showToggleFullScreen && /* @__PURE__ */ jsx36(Button, { onClick: toggleFullScreen, variant: "ghost", children: isFullScreen ? /* @__PURE__ */ jsx36(MinimizeIcon, { size: 16 }) : /* @__PURE__ */ jsx36(FullscreenIcon, { size: 16 }) })
4614
4925
  ]
4615
4926
  }
4616
4927
  ),
4617
- showCodeTab && /* @__PURE__ */ jsx35(
4928
+ showCodeTab && /* @__PURE__ */ jsx36(
4618
4929
  TabsContent,
4619
4930
  {
4620
4931
  value: "code",
4621
4932
  className: "rf-flex-grow rf-overflow-hidden",
4622
- children: /* @__PURE__ */ jsx35("div", { className: "rf-h-full", children: codeTabContent })
4933
+ children: /* @__PURE__ */ jsx36("div", { className: "rf-h-full", children: codeTabContent })
4623
4934
  }
4624
4935
  ),
4625
- (!availableTabs || availableTabs.includes("pcb")) && /* @__PURE__ */ jsx35(TabsContent, { value: "pcb", children: /* @__PURE__ */ jsx35(
4936
+ (!availableTabs || availableTabs.includes("pcb")) && /* @__PURE__ */ jsx36(TabsContent, { value: "pcb", children: /* @__PURE__ */ jsx36(
4626
4937
  "div",
4627
4938
  {
4628
4939
  className: cn(
4629
4940
  "rf-overflow-hidden",
4630
4941
  isFullScreen ? "rf-h-[calc(100vh-52px)]" : "rf-h-full"
4631
4942
  ),
4632
- children: /* @__PURE__ */ jsx35(
4943
+ children: /* @__PURE__ */ jsx36(
4633
4944
  ErrorBoundary,
4634
4945
  {
4635
- fallbackRender: ({ error }) => /* @__PURE__ */ jsx35("div", { className: "rf-mt-4 rf-bg-red-50 rf-rounded-md rf-border rf-border-red-200", children: /* @__PURE__ */ jsxs25("div", { className: "rf-p-4", children: [
4636
- /* @__PURE__ */ jsx35("h3", { className: "rf-text-lg rf-font-semibold rf-text-red-800 rf-mb-3", children: "Error loading PCB viewer" }),
4637
- /* @__PURE__ */ jsx35("p", { className: "rf-text-xs rf-font-mono rf-whitespace-pre-wrap rf-text-red-600 rf-mt-2", children: error?.message || "An unknown error occurred" })
4946
+ fallbackRender: ({ error }) => /* @__PURE__ */ jsx36("div", { className: "rf-mt-4 rf-bg-red-50 rf-rounded-md rf-border rf-border-red-200", children: /* @__PURE__ */ jsxs26("div", { className: "rf-p-4", children: [
4947
+ /* @__PURE__ */ jsx36("h3", { className: "rf-text-lg rf-font-semibold rf-text-red-800 rf-mb-3", children: "Error loading PCB viewer" }),
4948
+ /* @__PURE__ */ jsx36("p", { className: "rf-text-xs rf-font-mono rf-whitespace-pre-wrap rf-text-red-600 rf-mt-2", children: error?.message || "An unknown error occurred" })
4638
4949
  ] }) }),
4639
- children: circuitJson ? /* @__PURE__ */ jsx35(
4950
+ children: circuitJson ? /* @__PURE__ */ jsx36(
4640
4951
  PcbViewerWithContainerHeight,
4641
4952
  {
4642
4953
  focusOnHover: false,
@@ -4654,19 +4965,19 @@ var CircuitJsonPreview = ({
4654
4965
  }
4655
4966
  }
4656
4967
  }
4657
- ) : /* @__PURE__ */ jsx35(PreviewEmptyState_default, { onRunClicked })
4968
+ ) : /* @__PURE__ */ jsx36(PreviewEmptyState_default, { onRunClicked })
4658
4969
  }
4659
4970
  )
4660
4971
  }
4661
4972
  ) }),
4662
- (!availableTabs || availableTabs.includes("assembly")) && /* @__PURE__ */ jsx35(TabsContent, { value: "assembly", children: /* @__PURE__ */ jsx35(
4973
+ (!availableTabs || availableTabs.includes("assembly")) && /* @__PURE__ */ jsx36(TabsContent, { value: "assembly", children: /* @__PURE__ */ jsx36(
4663
4974
  "div",
4664
4975
  {
4665
4976
  className: cn(
4666
4977
  "rf-overflow-auto",
4667
4978
  isFullScreen ? "rf-h-screen" : "rf-h-full rf-min-h-[620px]"
4668
4979
  ),
4669
- children: /* @__PURE__ */ jsx35(ErrorBoundary, { fallback: /* @__PURE__ */ jsx35("div", { children: "Error loading Assembly" }), children: circuitJson ? /* @__PURE__ */ jsx35(
4980
+ children: /* @__PURE__ */ jsx36(ErrorBoundary, { fallback: /* @__PURE__ */ jsx36("div", { children: "Error loading Assembly" }), children: circuitJson ? /* @__PURE__ */ jsx36(
4670
4981
  AssemblyViewer,
4671
4982
  {
4672
4983
  circuitJson,
@@ -4676,21 +4987,21 @@ var CircuitJsonPreview = ({
4676
4987
  editingEnabled: true,
4677
4988
  debugGrid: true
4678
4989
  }
4679
- ) : /* @__PURE__ */ jsx35(PreviewEmptyState_default, { onRunClicked }) })
4990
+ ) : /* @__PURE__ */ jsx36(PreviewEmptyState_default, { onRunClicked }) })
4680
4991
  }
4681
4992
  ) }),
4682
- (!availableTabs || availableTabs.includes("pinout")) && /* @__PURE__ */ jsx35(TabsContent, { value: "pinout", children: /* @__PURE__ */ jsx35(
4993
+ (!availableTabs || availableTabs.includes("pinout")) && /* @__PURE__ */ jsx36(TabsContent, { value: "pinout", children: /* @__PURE__ */ jsx36(
4683
4994
  "div",
4684
4995
  {
4685
4996
  className: cn(
4686
4997
  "rf-overflow-auto",
4687
4998
  isFullScreen ? "rf-h-screen" : "rf-h-full rf-min-h-[620px]"
4688
4999
  ),
4689
- children: /* @__PURE__ */ jsx35(
5000
+ children: /* @__PURE__ */ jsx36(
4690
5001
  ErrorBoundary,
4691
5002
  {
4692
- fallback: /* @__PURE__ */ jsx35("div", { children: "Error loading Pinout Viewer" }),
4693
- children: circuitJson ? /* @__PURE__ */ jsx35(
5003
+ fallback: /* @__PURE__ */ jsx36("div", { children: "Error loading Pinout Viewer" }),
5004
+ children: circuitJson ? /* @__PURE__ */ jsx36(
4694
5005
  PinoutViewer,
4695
5006
  {
4696
5007
  circuitJson,
@@ -4698,26 +5009,26 @@ var CircuitJsonPreview = ({
4698
5009
  height: "100%"
4699
5010
  }
4700
5011
  }
4701
- ) : /* @__PURE__ */ jsx35(PreviewEmptyState_default, { onRunClicked })
5012
+ ) : /* @__PURE__ */ jsx36(PreviewEmptyState_default, { onRunClicked })
4702
5013
  }
4703
5014
  )
4704
5015
  }
4705
5016
  ) }),
4706
- (!availableTabs || availableTabs.includes("schematic")) && /* @__PURE__ */ jsx35(TabsContent, { value: "schematic", children: /* @__PURE__ */ jsx35(
5017
+ (!availableTabs || availableTabs.includes("schematic")) && /* @__PURE__ */ jsx36(TabsContent, { value: "schematic", children: /* @__PURE__ */ jsx36(
4707
5018
  "div",
4708
5019
  {
4709
5020
  className: cn(
4710
5021
  "rf-overflow-auto rf-bg-white",
4711
5022
  isFullScreen ? "rf-h-screen" : "rf-h-full rf-min-h-[620px]"
4712
5023
  ),
4713
- children: /* @__PURE__ */ jsx35(
5024
+ children: /* @__PURE__ */ jsx36(
4714
5025
  ErrorBoundary,
4715
5026
  {
4716
- fallbackRender: ({ error }) => /* @__PURE__ */ jsx35("div", { className: "rf-mt-4 rf-bg-red-50 rf-rounded-md rf-border rf-border-red-200", children: /* @__PURE__ */ jsxs25("div", { className: "rf-p-4", children: [
4717
- /* @__PURE__ */ jsx35("h3", { className: "rf-text-lg rf-font-semibold rf-text-red-800 rf-mb-3", children: "Error loading Schematic" }),
4718
- /* @__PURE__ */ jsx35("p", { className: "rf-text-xs rf-font-mono rf-whitespace-pre-wrap rf-text-red-600 rf-mt-2", children: error?.message || "An unknown error occurred" })
5027
+ fallbackRender: ({ error }) => /* @__PURE__ */ jsx36("div", { className: "rf-mt-4 rf-bg-red-50 rf-rounded-md rf-border rf-border-red-200", children: /* @__PURE__ */ jsxs26("div", { className: "rf-p-4", children: [
5028
+ /* @__PURE__ */ jsx36("h3", { className: "rf-text-lg rf-font-semibold rf-text-red-800 rf-mb-3", children: "Error loading Schematic" }),
5029
+ /* @__PURE__ */ jsx36("p", { className: "rf-text-xs rf-font-mono rf-whitespace-pre-wrap rf-text-red-600 rf-mt-2", children: error?.message || "An unknown error occurred" })
4719
5030
  ] }) }),
4720
- children: circuitJson ? /* @__PURE__ */ jsx35(
5031
+ children: circuitJson ? /* @__PURE__ */ jsx36(
4721
5032
  SchematicViewer,
4722
5033
  {
4723
5034
  spiceSimulationEnabled: true,
@@ -4731,65 +5042,65 @@ var CircuitJsonPreview = ({
4731
5042
  },
4732
5043
  debugGrid: showSchematicDebugGrid
4733
5044
  }
4734
- ) : /* @__PURE__ */ jsx35(PreviewEmptyState_default, { onRunClicked })
5045
+ ) : /* @__PURE__ */ jsx36(PreviewEmptyState_default, { onRunClicked })
4735
5046
  }
4736
5047
  )
4737
5048
  }
4738
5049
  ) }),
4739
- (!availableTabs || availableTabs.includes("cad")) && /* @__PURE__ */ jsx35(TabsContent, { value: "cad", children: /* @__PURE__ */ jsx35(
5050
+ (!availableTabs || availableTabs.includes("cad")) && /* @__PURE__ */ jsx36(TabsContent, { value: "cad", children: /* @__PURE__ */ jsx36(
4740
5051
  "div",
4741
5052
  {
4742
5053
  className: cn(
4743
5054
  "rf-overflow-auto",
4744
5055
  isFullScreen ? "rf-h-screen" : "rf-h-full rf-min-h-[620px]"
4745
5056
  ),
4746
- children: /* @__PURE__ */ jsx35(ErrorBoundary, { FallbackComponent: ErrorFallback, children: circuitJson ? /* @__PURE__ */ jsx35(
5057
+ children: /* @__PURE__ */ jsx36(ErrorBoundary, { FallbackComponent: ErrorFallback, children: circuitJson ? /* @__PURE__ */ jsx36(
4747
5058
  CadViewer,
4748
5059
  {
4749
5060
  ref: setCadViewerRef,
4750
5061
  circuitJson,
4751
5062
  autoRotateDisabled: autoRotate3dViewerDisabled
4752
5063
  }
4753
- ) : /* @__PURE__ */ jsx35(PreviewEmptyState_default, { onRunClicked }) })
5064
+ ) : /* @__PURE__ */ jsx36(PreviewEmptyState_default, { onRunClicked }) })
4754
5065
  }
4755
5066
  ) }),
4756
- (!availableTabs || availableTabs.includes("bom")) && /* @__PURE__ */ jsx35(TabsContent, { value: "bom", children: /* @__PURE__ */ jsx35(
5067
+ (!availableTabs || availableTabs.includes("bom")) && /* @__PURE__ */ jsx36(TabsContent, { value: "bom", children: /* @__PURE__ */ jsx36(
4757
5068
  "div",
4758
5069
  {
4759
5070
  className: cn(
4760
5071
  "rf-overflow-auto",
4761
5072
  isFullScreen ? "rf-h-screen" : "rf-h-full rf-min-h-[620px]"
4762
5073
  ),
4763
- children: /* @__PURE__ */ jsx35(
5074
+ children: /* @__PURE__ */ jsx36(
4764
5075
  ErrorBoundary,
4765
5076
  {
4766
- fallbackRender: ({ error }) => /* @__PURE__ */ jsx35("div", { className: "rf-mt-4 rf-bg-red-50 rf-rounded-md rf-border rf-border-red-200", children: /* @__PURE__ */ jsxs25("div", { className: "rf-p-4", children: [
4767
- /* @__PURE__ */ jsx35("h3", { className: "rf-text-lg rf-font-semibold rf-text-red-800 rf-mb-3", children: "Error loading Bill of Materials" }),
4768
- /* @__PURE__ */ jsx35("p", { className: "rf-text-xs rf-font-mono rf-whitespace-pre-wrap rf-text-red-600 rf-mt-2", children: error?.message || "An unknown error occurred" })
5077
+ fallbackRender: ({ error }) => /* @__PURE__ */ jsx36("div", { className: "rf-mt-4 rf-bg-red-50 rf-rounded-md rf-border rf-border-red-200", children: /* @__PURE__ */ jsxs26("div", { className: "rf-p-4", children: [
5078
+ /* @__PURE__ */ jsx36("h3", { className: "rf-text-lg rf-font-semibold rf-text-red-800 rf-mb-3", children: "Error loading Bill of Materials" }),
5079
+ /* @__PURE__ */ jsx36("p", { className: "rf-text-xs rf-font-mono rf-whitespace-pre-wrap rf-text-red-600 rf-mt-2", children: error?.message || "An unknown error occurred" })
4769
5080
  ] }) }),
4770
- children: circuitJson ? /* @__PURE__ */ jsx35(BomTable, { circuitJson }) : /* @__PURE__ */ jsx35(PreviewEmptyState_default, { onRunClicked })
5081
+ children: circuitJson ? /* @__PURE__ */ jsx36(BomTable, { circuitJson }) : /* @__PURE__ */ jsx36(PreviewEmptyState_default, { onRunClicked })
4771
5082
  }
4772
5083
  )
4773
5084
  }
4774
5085
  ) }),
4775
- (!availableTabs || availableTabs.includes("circuit_json")) && /* @__PURE__ */ jsx35(TabsContent, { value: "circuit_json", children: /* @__PURE__ */ jsx35(
5086
+ (!availableTabs || availableTabs.includes("circuit_json")) && /* @__PURE__ */ jsx36(TabsContent, { value: "circuit_json", children: /* @__PURE__ */ jsx36(
4776
5087
  "div",
4777
5088
  {
4778
5089
  className: cn(
4779
5090
  "rf-overflow-auto",
4780
5091
  isFullScreen ? "rf-h-screen" : "rf-h-full rf-min-h-[620px]"
4781
5092
  ),
4782
- children: /* @__PURE__ */ jsx35(ErrorBoundary, { fallback: /* @__PURE__ */ jsx35("div", { children: "Error loading JSON viewer" }), children: circuitJson ? /* @__PURE__ */ jsx35(CircuitJsonTableViewer, { elements: circuitJson }) : /* @__PURE__ */ jsx35(PreviewEmptyState_default, { onRunClicked }) })
5093
+ children: /* @__PURE__ */ jsx36(ErrorBoundary, { fallback: /* @__PURE__ */ jsx36("div", { children: "Error loading JSON viewer" }), children: circuitJson ? /* @__PURE__ */ jsx36(CircuitJsonTableViewer, { elements: circuitJson }) : /* @__PURE__ */ jsx36(PreviewEmptyState_default, { onRunClicked }) })
4783
5094
  }
4784
5095
  ) }),
4785
- (!availableTabs || availableTabs.includes("errors")) && /* @__PURE__ */ jsx35(TabsContent, { value: "errors", children: /* @__PURE__ */ jsx35(
5096
+ (!availableTabs || availableTabs.includes("errors")) && /* @__PURE__ */ jsx36(TabsContent, { value: "errors", children: /* @__PURE__ */ jsx36(
4786
5097
  "div",
4787
5098
  {
4788
5099
  className: cn(
4789
5100
  "rf-overflow-auto",
4790
5101
  isFullScreen ? "rf-h-screen" : "rf-h-full rf-min-h-[620px]"
4791
5102
  ),
4792
- children: errorMessage || circuitJsonErrors && circuitJsonErrors.length > 0 || circuitJson ? /* @__PURE__ */ jsx35(
5103
+ children: errorMessage || circuitJsonErrors && circuitJsonErrors.length > 0 || circuitJson ? /* @__PURE__ */ jsx36(
4793
5104
  ErrorTabContent,
4794
5105
  {
4795
5106
  code,
@@ -4803,10 +5114,10 @@ var CircuitJsonPreview = ({
4803
5114
  autoroutingLog,
4804
5115
  onReportAutoroutingLog
4805
5116
  }
4806
- ) : /* @__PURE__ */ jsx35(PreviewEmptyState_default, { onRunClicked })
5117
+ ) : /* @__PURE__ */ jsx36(PreviewEmptyState_default, { onRunClicked })
4807
5118
  }
4808
5119
  ) }),
4809
- showRenderLogTab && (!availableTabs || availableTabs.includes("render_log")) && /* @__PURE__ */ jsx35(TabsContent, { value: "render_log", children: /* @__PURE__ */ jsx35(
5120
+ showRenderLogTab && (!availableTabs || availableTabs.includes("render_log")) && /* @__PURE__ */ jsx36(TabsContent, { value: "render_log", children: /* @__PURE__ */ jsx36(
4810
5121
  RenderLogViewer,
4811
5122
  {
4812
5123
  renderLog,