@tscircuit/runframe 0.0.1060 → 0.0.1062

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.
@@ -5385,7 +5385,7 @@ ${R.type}: ${N}
5385
5385
  `,r.appendChild(b)}})}};o();const s=new MutationObserver(o);return s.observe(r,{childList:!0,subtree:!1,characterData:!1}),()=>{s.disconnect()}},[n,t,e,i])},Sit=["#8B0000","#2F4F4F","#191970","#006400","#FF4500","#800080","#2E8B57","#B8860B","#C71585","#008B8B"],I4n=n=>{const{svgDivRef:e,circuitJson:t,circuitJsonKey:i,showGroups:r}=n;Te.useEffect(()=>{if(e.current&&e.current.querySelectorAll(".schematic-group-overlay").forEach(a=>a.remove()),!e.current||!r||!t||t.length===0)return;const o=setTimeout(()=>{if(!e.current)return;const s=e.current.querySelector("svg");if(!s)return;s.querySelectorAll(".schematic-group-overlay").forEach(c=>c.remove());try{const c=lg(t).source_group?.list().filter(b=>!b.is_subcircuit)||[],l=lg(t).schematic_component?.list()||[],u=new Map;c.forEach(b=>{const w=b;if(w.parent_source_group_id){const T=u.get(w.parent_source_group_id)||[];T.push(b.source_group_id),u.set(w.parent_source_group_id,T)}});const d=b=>{const w=[],T=u.get(b)||[];for(const k of T)w.push(k),w.push(...d(k));return w},h=b=>{const w=c.find(T=>T.source_group_id===b);return w?.parent_source_group_id?1+h(w.parent_source_group_id):0},f=c.length>0&&c.some(b=>b.name&&b.name.trim()!=="");let m=[];if(f){const b=new Map;for(const w of l){const T=lg(t).source_component.get(w.source_component_id);T?.source_group_id&&(b.has(T.source_group_id)||b.set(T.source_group_id,[]),b.get(T.source_group_id).push(w))}c.forEach((w,T)=>{let k=b.get(w.source_group_id)||[];const P=d(w.source_group_id);for(const R of P){const M=b.get(R)||[];k=[...k,...M]}if(k.length>0){const R=h(w.source_group_id),M=d(w.source_group_id).length>0;if(w.name?.startsWith("unnamed_board"))return;m.push({id:w.source_group_id,name:w.name||`Group ${T+1}`,components:k,color:Sit[T%Sit.length],depthLevel:R,hasChildren:M,sourceGroupId:w.source_group_id})}})}const y=s.viewBox.baseVal,g=s.getBoundingClientRect(),x=Math.min(g.width/y.width,g.height/y.height)||1;m.sort((b,w)=>b.depthLevel-w.depthLevel),m.forEach(b=>{if(b.components.length===0)return;const w=k4n(b.components,s);if(!w)return;const T=Math.max(8,Math.min(25,15/Math.max(x,.3))),k=b.hasChildren?T*.6:0,P=T+k,R=Math.max(1,2/Math.max(x,.5)),M=b.depthLevel===0?R:R*.7,I=Math.max(4,8/Math.max(x,.5)),A=b.hasChildren?1.3:1,B=I*A,N=B*.5,V=document.createElementNS("http://www.w3.org/2000/svg","rect");V.setAttribute("class","schematic-group-overlay"),V.setAttribute("x",(w.minX-P).toString()),V.setAttribute("y",(w.minY-P).toString()),V.setAttribute("width",(w.maxX-w.minX+P*2).toString()),V.setAttribute("height",(w.maxY-w.minY+P*2).toString()),V.setAttribute("fill","none"),V.setAttribute("stroke",b.color),V.setAttribute("stroke-width",M.toString()),V.setAttribute("stroke-dasharray",`${B},${N}`),V.setAttribute("opacity","0.8"),V.setAttribute("rx","0"),V.setAttribute("ry","0");const X=Math.max(6,Math.min(20,14/Math.max(x,.2))),W=b.depthLevel===0||b.depthLevel===1?0:b.depthLevel*.2,K=X*(1-W),te=Math.max(1,K*.2),se=b.name,de=document.createElementNS("http://www.w3.org/2000/svg","text");de.setAttribute("font-size",K.toString()),de.setAttribute("font-family","Arial, sans-serif"),de.textContent=se,s.appendChild(de);const xe=de.getBBox();s.removeChild(de);const re=xe.width+te*2,ue=K+te*2,he=w.minX-P,Ae=w.minY-P-ue,ke=document.createElementNS("http://www.w3.org/2000/svg","rect");ke.setAttribute("class","schematic-group-overlay"),ke.setAttribute("x",he.toString()),ke.setAttribute("y",(Ae-ue).toString()),ke.setAttribute("width",re.toString()),ke.setAttribute("height",ue.toString()),ke.setAttribute("fill","transparent"),ke.setAttribute("rx","0"),ke.setAttribute("ry","0");const De=document.createElementNS("http://www.w3.org/2000/svg","text");De.setAttribute("class","schematic-group-overlay"),De.setAttribute("x",(he+te).toString()),De.setAttribute("y",(Ae+ue-te).toString()),De.setAttribute("fill",b.color),De.setAttribute("font-size",K.toString()),De.setAttribute("font-family","Arial, sans-serif"),De.setAttribute("font-weight",b.depthLevel===0?"600":"500"),De.setAttribute("stroke",b.color),De.setAttribute("stroke-width",Math.max(.2,K*.02).toString()),De.textContent=se,s.appendChild(V),s.appendChild(ke),s.appendChild(De)})}catch(c){console.error("Error creating group overlays:",c)}},10);return()=>clearTimeout(o)},[e,i,r])};function k4n(n,e){let t=1/0,i=1/0,r=-1/0,o=-1/0;for(const a of n){let c=e.querySelector(`g[data-schematic-component-id="${a.schematic_component_id}"]`);if(c||(c=e.querySelector(`[data-schematic-component-id="${a.schematic_component_id}"]`)),c){const l=c.getBBox();t=Math.min(t,l.x),i=Math.min(i,l.y),r=Math.max(r,l.x+l.width),o=Math.max(o,l.y+l.height)}}return t===1/0?null:{minX:t,minY:i,maxX:r,maxY:o}}var N4n=M0("schematic-viewer"),O4n=()=>{M0.enable("schematic-viewer*")},L4n=N4n,D4n=n=>{const[e,t]=Te.useState(0),[i,r]=Te.useState(0);return Te.useEffect(()=>{if(!n.current)return;const o=()=>{const a=n.current?.getBoundingClientRect();t(a?.width||0),r(a?.height||0)};o();const s=new ResizeObserver(o);return s.observe(n.current),window.addEventListener("resize",o),()=>{s.disconnect(),window.removeEventListener("resize",o)}},[]),{containerWidth:e,containerHeight:i}},z4n=L4n.extend("useComponentDragging"),$4n=({onEditEvent:n,editEvents:e=[],circuitJson:t,cancelDrag:i,svgToScreenProjection:r,realToSvgProjection:o,enabled:s=!1,snapToGrid:a=!1})=>{const[c,l]=Te.useState(null),u=as(o,r),d=Te.useRef(null),h=Te.useRef(null),f=Te.useRef(new Map);Te.useEffect(()=>{e.forEach(R=>{"edit_event_type"in R&&R.edit_event_type==="edit_schematic_component_location"&&!R.in_progress&&f.current.set(R.schematic_component_id,{...R.new_center})})},[e]);const m=Te.useCallback((R,M,I)=>{if(!s)return!1;const A=I.closest('[data-circuit-json-type="schematic_component"]');if(!A)return!1;const B=A.getAttribute("data-schematic-component-id");if(!B)return!1;i&&i();const N=lg(t).schematic_component.get(B);if(!N)return!1;d.current={x:R,y:M};let V;const X=f.current.get(B);if(X)V={...X};else{const K=wit({editEvents:e,schematic_component_id:B});V={x:N.center.x+K.x,y:N.center.y+K.y},f.current.set(B,{...V})}const W={edit_event_id:Math.random().toString(36).substr(2,9),edit_event_type:"edit_schematic_component_location",schematic_component_id:B,original_center:V,new_center:{...V},in_progress:!0,created_at:Date.now(),_element:A};return h.current=W,l(W),!0},[i,s,t,e]),y=Te.useCallback(R=>{m(R.clientX,R.clientY,R.target)},[m]),g=Te.useCallback(R=>{if(R.touches.length!==1)return;const M=R.touches[0];m(M.clientX,M.clientY,R.target)&&R.preventDefault()},[m]),x=Te.useCallback((R,M)=>{if(!h.current||!d.current)return;const I={x:R-d.current.x,y:M-d.current.y},A={x:I.x/u.a,y:I.y/u.d};let B={x:h.current.original_center.x+A.x,y:h.current.original_center.y+A.y};if(a){const V=X=>Math.round(X*10)/10;B={x:V(B.x),y:V(B.y)}}const N={...h.current,new_center:B};h.current=N,l(N)},[u,a]),b=Te.useCallback(R=>x(R.clientX,R.clientY),[x]),w=Te.useCallback(R=>{if(R.touches.length!==1||!h.current)return;R.preventDefault();const M=R.touches[0];x(M.clientX,M.clientY)},[x]),T=Te.useCallback(()=>{if(!h.current)return;const R={...h.current,in_progress:!1};f.current.set(R.schematic_component_id,{...R.new_center}),z4n("endDrag calling onEditEvent with new edit event",{newEditEvent:R}),n&&n(R),h.current=null,d.current=null,l(null)},[n]),k=Te.useCallback(()=>T(),[T]),P=Te.useCallback(()=>T(),[T]);return Te.useEffect(()=>(window.addEventListener("mousemove",b),window.addEventListener("mouseup",k),window.addEventListener("touchmove",w,{passive:!1}),window.addEventListener("touchend",P),()=>{window.removeEventListener("mousemove",b),window.removeEventListener("mouseup",k),window.removeEventListener("touchmove",w),window.removeEventListener("touchend",P)}),[b,k,w,P]),{handleMouseDown:y,handleTouchStart:g,isDragging:!!h.current,activeEditEvent:c}},PM={schematicEditIcon:50,schematicGridIcon:49,spiceSimulationIcon:50,viewMenuIcon:48,viewMenu:55,viewMenuBackdrop:54,clickToInteractOverlay:100,schematicComponentHoverOutline:47},F4n=({onClick:n,active:e})=>{const t=i=>{i.preventDefault(),n()};return ye.jsx("div",{onClick:t,onTouchEnd:t,style:{position:"absolute",top:"16px",right:"64px",backgroundColor:e?"#4CAF50":"#fff",color:e?"#fff":"#000",padding:"8px",borderRadius:"4px",cursor:"pointer",boxShadow:"0 2px 4px rgba(0,0,0,0.1)",display:"flex",alignItems:"center",gap:"4px",zIndex:PM.schematicEditIcon},children:ye.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[ye.jsx("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),ye.jsx("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})]})})},U4n=({onClick:n,active:e})=>{const t=i=>{i.preventDefault(),n()};return ye.jsx("div",{onClick:t,onTouchEnd:t,style:{position:"absolute",top:"56px",right:"64px",backgroundColor:e?"#4CAF50":"#fff",color:e?"#fff":"#000",padding:"8px",borderRadius:"4px",cursor:"pointer",boxShadow:"0 2px 4px rgba(0,0,0,0.1)",display:"flex",alignItems:"center",gap:"4px",zIndex:PM.schematicGridIcon},children:ye.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:ye.jsx("path",{d:"M3 3h7v7H3zM14 3h7v7h-7zM3 14h7v7H3zM14 14h7v7h-7z"})})})},B4n=({onClick:n,active:e})=>{const t=i=>{i.preventDefault(),n()};return ye.jsx("div",{onClick:t,onTouchEnd:t,style:{position:"absolute",top:"16px",right:"16px",backgroundColor:e?"#4CAF50":"#fff",color:e?"#fff":"#000",padding:"8px",borderRadius:"4px",cursor:"pointer",boxShadow:"0 2px 4px rgba(0,0,0,0.1)",display:"flex",alignItems:"center",gap:"4px",zIndex:PM.viewMenuIcon},children:ye.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[ye.jsx("circle",{cx:"12",cy:"12",r:"1"}),ye.jsx("circle",{cx:"12",cy:"5",r:"1"}),ye.jsx("circle",{cx:"12",cy:"19",r:"1"})]})})},j4n={version:"2.0.43"},H4n=({circuitJson:n,circuitJsonKey:e,isVisible:t,onClose:i,showGroups:r,onToggleGroups:o})=>{const s=Te.useMemo(()=>{if(!n||n.length===0)return!1;try{if((lg(n).source_group?.list()||[]).length>0)return!0;const c=lg(n).schematic_component?.list()||[];if(c.length>1){const l=new Set;for(const u of c){const d=lg(n).source_component.get(u.source_component_id);d?.ftype&&l.add(d.ftype)}return l.size>1}return!1}catch(a){return console.error("Error checking for groups:",a),!1}},[e]);return t?ye.jsxs(ye.Fragment,{children:[ye.jsx("div",{onClick:i,onTouchEnd:a=>{a.preventDefault(),i()},style:{position:"absolute",inset:0,backgroundColor:"transparent",zIndex:PM.viewMenuBackdrop}}),ye.jsxs("div",{style:{position:"absolute",top:"56px",right:"16px",backgroundColor:"#ffffff",color:"#000000",border:"1px solid #ccc",borderRadius:"4px",boxShadow:"0 4px 12px rgba(0,0,0,0.1)",minWidth:"200px",zIndex:PM.viewMenu},children:[ye.jsxs("div",{onClick:()=>{s&&o(!r)},onTouchEnd:a=>{a.preventDefault(),s&&o(!r)},style:{padding:"8px 12px",cursor:s?"pointer":"not-allowed",opacity:s?1:.5,fontSize:"13px",color:"#000000",fontFamily:"sans-serif",display:"flex",alignItems:"center",gap:"8px"},onMouseEnter:a=>{s&&(a.currentTarget.style.backgroundColor="#f0f0f0")},onMouseLeave:a=>{s&&(a.currentTarget.style.backgroundColor="transparent")},children:[ye.jsx("div",{style:{width:"16px",height:"16px",border:"2px solid #000",borderRadius:"2px",backgroundColor:"transparent",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"10px",fontWeight:"bold"},children:r&&"✓"}),"View Schematic Groups"]}),!s&&ye.jsx("div",{style:{padding:"8px 12px",fontSize:"11px",color:"#666",fontStyle:"italic"},children:"No groups found in this schematic"}),ye.jsxs("div",{style:{padding:"4px 8px",fontSize:"12px",color:"#999",borderTop:"1px solid #eee",textAlign:"center"},children:["v",String(j4n?.version)]})]})]}):null},V4n=()=>ye.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:ye.jsx("path",{d:"M3 12h2.5l2.5-9 4 18 4-9h5.5"})}),G4n=({onClick:n})=>ye.jsx("div",{onClick:n,style:{position:"absolute",top:"16px",right:"112px",backgroundColor:"#fff",color:"#000",padding:"8px",borderRadius:"4px",cursor:"pointer",boxShadow:"0 2px 4px rgba(0,0,0,0.1)",display:"flex",alignItems:"center",gap:"4px",zIndex:PM.spiceSimulationIcon},children:ye.jsx(V4n,{})});uV.register(o4n,c4n,FCn,$Cn,qCn,t4n,GCn);var fV=["#8884d8","#82ca9d","#ffc658","#ff7300","#387908"],Eit=n=>{if(n===0)return"0s";const e=Math.abs(n);let t="s",i=1;return e<1e-12?(t="fs",i=1e15):e<1e-9?(t="ps",i=1e12):e<1e-6?(t="ns",i=1e9):e<.001?(t="us",i=1e6):e<1&&(t="ms",i=1e3),`${parseFloat((n*i).toPrecision(3))}${t}`},Y4n=({plotData:n,nodes:e,isLoading:t,error:i,hasRun:r})=>{const o=Te.useMemo(()=>{const c=e.some(u=>u.toLowerCase().startsWith("v(")),l=e.some(u=>u.toLowerCase().startsWith("i("));return c&&l?"Value":c?"Voltage (V)":l?"Current (A)":"Value"},[e]);if(t)return ye.jsx("div",{style:{height:"300px",width:"100%",display:"flex",alignItems:"center",justifyContent:"center"},children:"Running simulation..."});if(!r)return ye.jsx("div",{style:{height:"300px",width:"100%",display:"flex",alignItems:"center",justifyContent:"center"},children:'Click "Run" to start the simulation.'});if(i)return ye.jsxs("div",{style:{height:"300px",width:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"red"},children:["Error: ",i]});if(n.length===0)return ye.jsx("div",{style:{height:"300px",width:"100%",display:"flex",alignItems:"center",justifyContent:"center"},children:"No data to plot. Check simulation output or SPICE netlist."});const s={datasets:e.map((c,l)=>({label:c,data:n.map(u=>({x:Number(u.name),y:u[c]})),borderColor:fV[l%fV.length],backgroundColor:fV[l%fV.length],fill:!1,tension:.1}))},a={responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"top",labels:{font:{family:"sans-serif"}}},title:{display:!1},tooltip:{callbacks:{title:c=>{if(c.length>0){const l=c[0];return Eit(l.parsed.x)}return""}}}},scales:{x:{type:"linear",title:{display:!0,text:"Time",font:{family:"sans-serif"}},ticks:{callback:c=>Eit(c),font:{family:"sans-serif"}}},y:{title:{display:!0,text:o,font:{family:"sans-serif"}},ticks:{font:{family:"sans-serif"}}}}};return ye.jsx("div",{style:{position:"relative",height:"300px",width:"100%"},children:ye.jsx(y4n,{options:a,data:s})})},q4n=({spiceString:n,onClose:e,plotData:t,nodes:i,isLoading:r,error:o,simOptions:s,onSimOptionsChange:a,hasRun:c})=>{const[l,u]=Te.useState(String(s.startTime)),[d,h]=Te.useState(String(s.duration));Te.useEffect(()=>{u(String(s.startTime)),h(String(s.duration))},[s.startTime,s.duration]);const f=()=>{a({...s,startTime:Number(l),duration:Number(d)})},m=i.filter(y=>{const g=y.toLowerCase().startsWith("v("),x=y.toLowerCase().startsWith("i(");return!!(s.showVoltage&&g||s.showCurrent&&x)});return ye.jsx("div",{style:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.5)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1002,fontFamily:"sans-serif"},children:ye.jsxs("div",{style:{backgroundColor:"white",padding:"24px",borderRadius:"12px",width:"90%",maxWidth:"900px",boxShadow:"0 4px 20px rgba(0, 0, 0, 0.15)"},children:[ye.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"24px",borderBottom:"1px solid #eee",paddingBottom:"16px"},children:[ye.jsx("h2",{style:{margin:0,fontSize:"22px",fontWeight:600,color:"#333"},children:"SPICE Simulation"}),ye.jsx("button",{onClick:e,style:{background:"none",border:"none",fontSize:"28px",cursor:"pointer",color:"#888",padding:0,lineHeight:1},children:"×"})]}),ye.jsx("div",{children:ye.jsx(Y4n,{plotData:t,nodes:m,isLoading:r,error:o,hasRun:c})}),ye.jsxs("div",{style:{marginTop:"16px",padding:"12px",backgroundColor:"#f7f7f7",borderRadius:"6px",display:"flex",flexWrap:"wrap",gap:"24px",alignItems:"center",fontSize:"14px"},children:[ye.jsxs("div",{style:{display:"flex",gap:"16px"},children:[ye.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[ye.jsx("input",{type:"checkbox",checked:s.showVoltage,onChange:y=>a({...s,showVoltage:y.target.checked})}),"Voltage"]}),ye.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[ye.jsx("input",{type:"checkbox",checked:s.showCurrent,onChange:y=>a({...s,showCurrent:y.target.checked})}),"Current"]})]}),ye.jsxs("div",{style:{display:"flex",gap:"16px",alignItems:"center"},children:[ye.jsx("label",{htmlFor:"startTime",children:"Start Time (ms):"}),ye.jsx("input",{id:"startTime",type:"number",value:l,onChange:y=>u(y.target.value),style:{width:"80px",padding:"4px 8px",borderRadius:"4px",border:"1px solid #ccc"}}),ye.jsx("label",{htmlFor:"duration",children:"Duration (ms):"}),ye.jsx("input",{id:"duration",type:"number",value:d,onChange:y=>h(y.target.value),style:{width:"80px",padding:"4px 8px",borderRadius:"4px",border:"1px solid #ccc"}}),ye.jsx("button",{onClick:f,style:{padding:"4px 12px",borderRadius:"4px",border:"1px solid #ccc",backgroundColor:"#f0f0f0",cursor:"pointer"},children:c?"Rerun":"Run"})]})]}),ye.jsxs("div",{style:{marginTop:"24px"},children:[ye.jsx("h3",{style:{marginTop:0,marginBottom:"12px",fontSize:"18px",fontWeight:600,color:"#333"},children:"SPICE Netlist"}),ye.jsx("pre",{style:{backgroundColor:"#fafafa",padding:"16px",borderRadius:"6px",maxHeight:"150px",overflowY:"auto",border:"1px solid #eee",color:"#333",fontSize:"13px",fontFamily:"monospace"},children:n})]})]})})},X4n="dmFyIGU9bnVsbCxzPWFzeW5jKCk9Pihhd2FpdCBpbXBvcnQoImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vZWVjaXJjdWl0LWVuZ2luZUAxLjUuMi8rZXNtIikpLlNpbXVsYXRpb24sYz1hc3luYygpPT57aWYoZSYmZS5pc0luaXRpYWxpemVkKCkpcmV0dXJuO2xldCBpPWF3YWl0IHMoKTtlPW5ldyBpLGF3YWl0IGUuc3RhcnQoKX07c2VsZi5vbm1lc3NhZ2U9YXN5bmMgaT0+e3RyeXtpZihhd2FpdCBjKCksIWUpdGhyb3cgbmV3IEVycm9yKCJTaW11bGF0aW9uIG5vdCBpbml0aWFsaXplZCIpO2xldCB0PWkuZGF0YS5zcGljZVN0cmluZyxhPXQubWF0Y2goL3dyZGF0YVxzKyhcUyspXHMrKC4qKS9pKTtpZihhKXtsZXQgbz1gLnByb2JlICR7YVsyXS50cmltKCkuc3BsaXQoL1xzKy8pLmpvaW4oIiAiKX1gO3Q9dC5yZXBsYWNlKC93cmRhdGEuKi9pLG8pfWVsc2UgaWYoIXQubWF0Y2goL1wucHJvYmUvaSkpdGhyb3cgdC5tYXRjaCgvcGxvdFxzKyguKikvaSk/bmV3IEVycm9yKCJUaGUgJ3Bsb3QnIGNvbW1hbmQgaXMgbm90IHN1cHBvcnRlZCBmb3IgZGF0YSBleHRyYWN0aW9uLiBQbGVhc2UgdXNlICd3cmRhdGEgPGZpbGVuYW1lPiA8dmFyMT4gLi4uJyBvciAnLnByb2JlIDx2YXIxPiAuLi4nIGluc3RlYWQuIik6bmV3IEVycm9yKCJObyAnLnByb2JlJyBvciAnd3JkYXRhJyBjb21tYW5kIGZvdW5kIGluIFNQSUNFIGZpbGUuIFVzZSAnd3JkYXRhIDxmaWxlbmFtZT4gPHZhcjE+IC4uLicgdG8gc3BlY2lmeSBvdXRwdXQuIik7ZS5zZXROZXRMaXN0KHQpO2xldCBuPWF3YWl0IGUucnVuU2ltKCk7c2VsZi5wb3N0TWVzc2FnZSh7dHlwZToicmVzdWx0IixyZXN1bHQ6bn0pfWNhdGNoKHQpe3NlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6ImVycm9yIixlcnJvcjp0Lm1lc3NhZ2V9KX19Owo=",mV=null,W4n=()=>{if(typeof window>"u")return null;if(mV)return mV;try{const n=new Blob([atob(X4n)],{type:"application/javascript"});return mV=URL.createObjectURL(n),mV}catch(n){return console.error("Failed to create blob URL for worker",n),null}},Z4n=n=>{const e={};if(n.dataType==="real")n.data.forEach(a=>{e[a.name]=a.values});else if(n.dataType==="complex")n.data.forEach(a=>{e[a.name]=a.values.map(c=>c.real)});else throw new Error("Unsupported data type in simulation result");const t=Object.keys(e).find(a=>a.toLowerCase()==="time"||a.toLowerCase()==="frequency");if(!t)throw new Error("No time or frequency data in simulation result");const i=e[t],r=Object.keys(e).filter(a=>a!==t),o=r;return{plotData:i.map((a,c)=>{const l={name:a.toExponential(2)};return r.forEach(u=>{l[u]=e[u][c]}),l}),nodes:o}},K4n=n=>{const[e,t]=Te.useState([]),[i,r]=Te.useState([]),[o,s]=Te.useState(!0),[a,c]=Te.useState(null);return Te.useEffect(()=>{if(!n){s(!1),t([]),r([]),c(null);return}s(!0),c(null),t([]),r([]);const l=W4n();if(!l){c("Could not create SPICE simulation worker."),s(!1);return}const u=new Worker(l,{type:"module"});return u.onmessage=d=>{if(d.data.type==="result")try{const{plotData:h,nodes:f}=Z4n(d.data.result);t(h),r(f)}catch(h){c(h.message||"Failed to parse simulation result"),console.error(h)}else d.data.type==="error"&&c(d.data.error);s(!1)},u.onerror=d=>{c(d.message),s(!1)},u.postMessage({spiceString:n}),()=>{u.terminate()}},[n]),{plotData:e,nodes:i,isLoading:o,error:a}},ege=n=>{if(n===0)return"0";const e=Math.abs(n),t=i=>i.toPrecision(4);return e>=1?t(n):e>=.001?`${t(n*1e3)}m`:e>=1e-6?`${t(n*1e6)}u`:e>=1e-9?`${t(n*1e9)}n`:e>=1e-12?`${t(n*1e12)}p`:e>=1e-15?`${t(n*1e15)}f`:n.toExponential(3)},Q4n=(n,e)=>{const i=T4n(n).toSpiceString(),o=i.split(`
5386
5386
  `).filter(A=>A.trim()!=="").filter(A=>!A.startsWith("*")&&!A.startsWith(".")&&A.trim()!==""),s=new Set,a=new Set,c=new Set;for(const A of o){const B=A.trim().split(/\s+/);if(B.length<3)continue;const N=B[0],V=N[0].toUpperCase();let X=[];if(["R","C","L","V","I","D"].includes(V))X=B.slice(1,3),V==="V"&&c.add(N);else if(V==="Q"&&B.length>=4)X=B.slice(1,4);else if(V==="M"&&B.length>=5)X=B.slice(1,5);else if(V==="X")X=B.slice(1,-1);else continue;X.forEach(W=>s.add(W)),V==="C"&&X.forEach(W=>a.add(W))}s.delete("0"),a.delete("0");const l=Array.from(a).map(A=>`.ic V(${A})=0`),u=[],d=Array.from(s).map(A=>`V(${A})`);u.push(...d);const h=Array.from(c).map(A=>`I(${A})`);u.push(...h);const f=u.length>0?`.probe ${u.join(" ")}`:"",m=e?.startTime??0,y=e?.duration??20,g=m*.001,x=y*.001,b=g+x,w=x/50,T=`.tran ${ege(w)} ${ege(b)} ${ege(g)} UIC`,k=".end",P=i.split(`
5387
5387
  `);let R=-1;for(let A=P.length-1;A>=0;A--)if(P[A].trim().toLowerCase().startsWith(k)){R=A;break}const M=[...l,f,T].filter(Boolean);let I;if(R!==-1){const A=P.slice(0,R),B=P.slice(R);I=[...A,...M,...B]}else I=[...P,...M,k];return I.join(`
5388
- `)},J4n=(n,e)=>{if(typeof window>"u")return e;try{const t=localStorage.getItem(n);return t!==null?JSON.parse(t):e}catch{return e}},e9n=(n,e)=>{if(!(typeof window>"u"))try{localStorage.setItem(n,JSON.stringify(e))}catch{}},tge=Te.createContext(null),t9n=(n,e)=>!n&&!e?!0:!n||!e?!1:n.minX===e.minX&&n.maxX===e.maxX&&n.minY===e.minY&&n.maxY===e.maxY,n9n=({children:n})=>{if(Te.useContext(tge))return ye.jsx(ye.Fragment,{children:n});const t=Te.useRef({pointer:null,boundingBoxes:new Map,hoveringIds:new Set,subscribers:new Set}),i=Te.useCallback(()=>{for(const d of t.current.subscribers)d()},[]),r=Te.useCallback(()=>{const d=t.current.pointer,h=new Set;if(d)for(const[m,y]of t.current.boundingBoxes){const g=y.bounds;g&&d.x>=g.minX&&d.x<=g.maxX&&d.y>=g.minY&&d.y<=g.maxY&&h.add(m)}const f=t.current.hoveringIds;h.size===f.size&&[...h].every(m=>f.has(m))||(t.current.hoveringIds=h,i())},[i]),o=Te.useCallback((d,h)=>{t.current.boundingBoxes.set(d,h),r()},[r]),s=Te.useCallback((d,h)=>{const f=t.current.boundingBoxes.get(d);f&&t9n(f.bounds,h.bounds)&&f.onClick===h.onClick||(t.current.boundingBoxes.set(d,h),r())},[r]),a=Te.useCallback(d=>{t.current.boundingBoxes.delete(d)&&r()},[r]),c=Te.useCallback(d=>(t.current.subscribers.add(d),()=>{t.current.subscribers.delete(d)}),[]),l=Te.useCallback(d=>t.current.hoveringIds.has(d),[]);Te.useEffect(()=>{const d=m=>{const{clientX:y,clientY:g}=m,x=t.current.pointer;x&&x.x===y&&x.y===g||(t.current.pointer={x:y,y:g},r())},h=()=>{t.current.pointer!==null&&(t.current.pointer=null,r())},f=m=>{const{clientX:y,clientY:g}=m;for(const x of t.current.boundingBoxes.values()){const b=x.bounds;b&&y>=b.minX&&y<=b.maxX&&g>=b.minY&&g<=b.maxY&&x.onClick?.(m)}};return window.addEventListener("pointermove",d,{passive:!0}),window.addEventListener("pointerdown",d,{passive:!0}),window.addEventListener("pointerup",d,{passive:!0}),window.addEventListener("pointerleave",h),window.addEventListener("pointercancel",h),window.addEventListener("blur",h),window.addEventListener("click",f,{passive:!0}),()=>{window.removeEventListener("pointermove",d),window.removeEventListener("pointerdown",d),window.removeEventListener("pointerup",d),window.removeEventListener("pointerleave",h),window.removeEventListener("pointercancel",h),window.removeEventListener("blur",h),window.removeEventListener("click",f)}},[r]);const u=Te.useMemo(()=>({registerBoundingBox:o,updateBoundingBox:s,unregisterBoundingBox:a,subscribe:c,isHovering:l}),[o,s,a,c,l]);return ye.jsx(tge.Provider,{value:u,children:n})},i9n=n=>{const e=Te.useContext(tge);if(!e)throw new Error("useMouseEventsOverBoundingBox must be used within a MouseTracker");const t=Te.useId(),i=Te.useRef(n);i.current=n;const r=Te.useMemo(()=>s=>{i.current.onClick?.(s)},[]);return Te.useEffect(()=>(e.registerBoundingBox(t,{bounds:i.current.bounds,onClick:i.current.onClick?r:void 0}),()=>{e.unregisterBoundingBox(t)}),[e,r,t]),Te.useEffect(()=>{e.updateBoundingBox(t,{bounds:i.current.bounds,onClick:i.current.onClick?r:void 0})},[e,r,t,n.bounds?.minX,n.bounds?.maxX,n.bounds?.minY,n.bounds?.maxY,n.onClick]),{hovering:Te.useSyncExternalStore(e.subscribe,()=>e.isHovering(t),()=>!1)}},r9n=(n,e)=>!n&&!e?!0:!n||!e?!1:Math.abs(n.bounds.minX-e.bounds.minX)<.5&&Math.abs(n.bounds.maxX-e.bounds.maxX)<.5&&Math.abs(n.bounds.minY-e.bounds.minY)<.5&&Math.abs(n.bounds.maxY-e.bounds.maxY)<.5&&Math.abs(n.rect.left-e.rect.left)<.5&&Math.abs(n.rect.top-e.rect.top)<.5&&Math.abs(n.rect.width-e.rect.width)<.5&&Math.abs(n.rect.height-e.rect.height)<.5,o9n=({componentId:n,svgDivRef:e,containerRef:t,onComponentClick:i,showOutline:r,circuitJsonKey:o})=>{const[s,a]=Te.useState(null),c=Te.useRef(null),l=Te.useCallback(()=>{c.current=null;const y=e.current,g=t.current;if(!y||!g){a(k=>k&&null);return}const x=y.querySelector(`[data-schematic-component-id="${n}"]`);if(!x){a(k=>k&&null);return}const b=x.getBoundingClientRect(),w=g.getBoundingClientRect(),T={bounds:{minX:b.left,maxX:b.right,minY:b.top,maxY:b.bottom},rect:{left:b.left-w.left,top:b.top-w.top,width:b.width,height:b.height}};a(k=>r9n(k,T)?k:T)},[n,t,e]),u=Te.useCallback(()=>{c.current===null&&(c.current=window.requestAnimationFrame(l))},[l]);Te.useEffect(()=>{u()},[u,o]),Te.useEffect(()=>{u();const y=e.current,g=t.current;if(!y||!g)return;const x=typeof ResizeObserver<"u"?new ResizeObserver(()=>{u()}):null;x?.observe(g),x?.observe(y);const b=typeof MutationObserver<"u"?new MutationObserver(()=>{u()}):null;return b?.observe(y,{attributes:!0,attributeFilter:["style","transform"],subtree:!0,childList:!0}),window.addEventListener("scroll",u,!0),window.addEventListener("resize",u),()=>{x?.disconnect(),b?.disconnect(),window.removeEventListener("scroll",u,!0),window.removeEventListener("resize",u),c.current!==null&&(cancelAnimationFrame(c.current),c.current=null)}},[u,e,t]);const d=Te.useCallback(y=>{i&&i(n,y)},[n,i]),h=s?.bounds??null,{hovering:f}=i9n({bounds:h,onClick:i?d:void 0});if(!s||!f||!r)return null;const m=s.rect;return ye.jsx("div",{style:{position:"absolute",left:m.left,top:m.top,width:m.width,height:m.height,border:"1.5px solid rgba(51, 153, 255, 0.9)",borderRadius:"6px",pointerEvents:"none",zIndex:PM.schematicComponentHoverOutline,boxShadow:"0 0 6px rgba(51, 153, 255, 0.35)"}})},s9n=({circuitJson:n,containerStyle:e,editEvents:t=[],onEditEvent:i,defaultEditMode:r=!1,debugGrid:o=!1,editingEnabled:s=!1,debug:a=!1,clickToInteractEnabled:c=!1,colorOverrides:l,spiceSimulationEnabled:u=!1,disableGroups:d=!1,onSchematicComponentClicked:h})=>{a&&O4n();const[f,m]=Te.useState(!1),[y,g]=Te.useState({showVoltage:!0,showCurrent:!1,startTime:0,duration:20}),x=qe=>`${qe?.length||0}_${qe?.editCount||0}`,b=Te.useMemo(()=>x(n),[n]),w=Te.useMemo(()=>{if(!u)return null;try{return Q4n(n,y)}catch(qe){return console.error("Failed to generate SPICE string",qe),null}},[b,u,y.startTime,y.duration]),[T,k]=Te.useState(!1);Te.useEffect(()=>{k(!1)},[b]);const{plotData:P,nodes:R,isLoading:M,error:I}=K4n(T?w:null),[A,B]=Te.useState(r),[N,V]=Te.useState(!0),[X,W]=Te.useState(!c),[K,te]=Te.useState(!1),[se,de]=Te.useState(()=>d?!1:J4n("schematic_viewer_show_groups",!1)),xe=Te.useRef(null),re=Te.useRef(null),ue=Te.useMemo(()=>{try{return lg(n).schematic_component?.list()?.map(qe=>qe.schematic_component_id)??[]}catch(qe){return console.error("Failed to derive schematic component ids",qe),[]}},[b,n]),he=qe=>{const Je=qe.touches[0];re.current={x:Je.clientX,y:Je.clientY}},Ae=qe=>{const Je=qe.changedTouches[0],ft=re.current;if(!ft)return;const vt=Math.abs(Je.clientX-ft.x),Tt=Math.abs(Je.clientY-ft.y);vt<10&&Tt<10&&(qe.preventDefault(),W(!0)),re.current=null},[ke,De]=Te.useState([]),Ge=Te.useRef(n);Te.useEffect(()=>{const qe=x(n),Je=x(Ge.current);qe!==Je&&(De([]),Ge.current=n)},[n]);const{ref:Ne,cancelDrag:ce,transform:we}=bye({onSetTransform(qe){xe.current&&(xe.current.style.transform=PE(qe))},enabled:X&&!f}),{containerWidth:ve,containerHeight:Ye}=D4n(Ne),et=Te.useMemo(()=>!ve||!Ye?"":gye(n,{width:ve,height:Ye||720,grid:o?{cellSize:1,labelCells:!0}:void 0,colorOverrides:l}),[b,ve,Ye]),at=Te.useMemo(()=>et.match(/<svg[^>]*style="[^"]*background-color:\s*([^;\"]+)/i)?.[1]??"transparent",[et]),Se=Te.useMemo(()=>{if(!et)return ym();const qe=et.match(/data-real-to-screen-transform="([^"]+)"/)?.[1];try{return q7(qe)}catch(Je){return console.error(Je),ym()}},[et]),ht=qe=>{De(Je=>[...Je,qe]),i&&i(qe)},Qe=Te.useMemo(()=>[...t,...ke],[t,ke]),{handleMouseDown:Xe,handleTouchStart:rt,isDragging:ze,activeEditEvent:Re}=$4n({onEditEvent:ht,cancelDrag:ce,realToSvgProjection:Se,svgToScreenProjection:we,circuitJson:n,editEvents:Qe,enabled:A&&X&&!f,snapToGrid:N});P4n({svgDivRef:xe,editEvents:Qe,realToSvgProjection:Se,svgToScreenProjection:we,activeEditEvent:Re}),R4n({svgDivRef:xe,circuitJson:n,activeEditEvent:Re,editEvents:Qe}),I4n({svgDivRef:xe,circuitJson:n,circuitJsonKey:b,showGroups:se&&!d});const We=Te.useRef(rt);Te.useEffect(()=>{We.current=rt},[rt]);const Le=Te.useMemo(()=>ye.jsx("div",{ref:xe,style:{pointerEvents:c?X?"auto":"none":"auto",transformOrigin:"0 0"},onTouchStart:qe=>{A&&X&&!f&&We.current(qe)},dangerouslySetInnerHTML:{__html:et}}),[et,X,c,A,f]);return ye.jsx(n9n,{children:ye.jsxs("div",{ref:Ne,style:{position:"relative",backgroundColor:at,overflow:"hidden",cursor:f?"auto":ze?"grabbing":c&&!X?"pointer":"grab",minHeight:"300px",...e},onWheelCapture:qe=>{f&&qe.stopPropagation()},onMouseDown:qe=>{if(c&&!X){qe.preventDefault(),qe.stopPropagation();return}Xe(qe)},onMouseDownCapture:qe=>{if(c&&!X){qe.preventDefault(),qe.stopPropagation();return}},onTouchStart:qe=>{f||he(qe)},onTouchEnd:qe=>{f||Ae(qe)},children:[!X&&c&&ye.jsx("div",{onClick:qe=>{qe.preventDefault(),qe.stopPropagation(),W(!0)},style:{position:"absolute",inset:0,cursor:"pointer",zIndex:PM.clickToInteractOverlay,display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"all",touchAction:"pan-x pan-y pinch-zoom"},children:ye.jsx("div",{style:{backgroundColor:"rgba(0, 0, 0, 0.8)",color:"white",padding:"12px 24px",borderRadius:"8px",fontSize:"16px",fontFamily:"sans-serif",pointerEvents:"none"},children:typeof window<"u"&&("ontouchstart"in window||navigator.maxTouchPoints>0)?"Touch to Interact":"Click to Interact"})}),ye.jsx(B4n,{active:K,onClick:()=>te(!K)}),s&&ye.jsx(F4n,{active:A,onClick:()=>B(!A)}),s&&A&&ye.jsx(U4n,{active:N,onClick:()=>V(!N)}),ye.jsx(H4n,{circuitJson:n,circuitJsonKey:b,isVisible:K,onClose:()=>te(!1),showGroups:se,onToggleGroups:qe=>{d||(de(qe),e9n("schematic_viewer_show_groups",qe))}}),u&&ye.jsx(G4n,{onClick:()=>m(!0)}),f&&ye.jsx(q4n,{spiceString:w,onClose:()=>m(!1),plotData:P,nodes:R,isLoading:M,error:I,simOptions:y,onSimOptionsChange:qe=>{k(!0),g(qe)},hasRun:T}),h&&ue.map(qe=>ye.jsx(o9n,{componentId:qe,svgDivRef:xe,containerRef:Ne,showOutline:!0,circuitJsonKey:b,onComponentClick:(Je,ft)=>{h?.({schematicComponentId:Je,event:ft})}},qe)),Le]})})},Tit=n=>{const[e,t]=Te.useState(0),[i,r]=Te.useState(0);return Te.useEffect(()=>{if(!n.current)return;const o=()=>{const a=n.current?.getBoundingClientRect();t(a?.width||0),r(a?.height||0)};o();const s=new ResizeObserver(o);return s.observe(n.current),window.addEventListener("resize",o),()=>{s.disconnect(),window.removeEventListener("resize",o)}},[]),{containerWidth:e,containerHeight:i}};M0("assembly-viewer");var Mit=()=>{M0.enable("assembly-viewer*")},a9n=({circuitJson:n,containerStyle:e,debugGrid:t=!1,debug:i=!1})=>{i&&Mit();const r=Te.useRef(null),{ref:o}=bye({onSetTransform(u){r.current&&(r.current.style.transform=PE(u))}}),{containerWidth:s,containerHeight:a}=Tit(o),c=Te.useMemo(()=>!s||!a?"":ttt(n,{width:s,height:a||720}),[n,s,a]);Te.useMemo(()=>{if(!c)return ym();const u=c.match(/data-real-to-screen-transform="([^"]+)"/)?.[1];try{return q7(u)}catch(d){return console.error(d),ym()}},[c]);const l=Te.useMemo(()=>ye.jsx("div",{ref:r,style:{pointerEvents:"auto",transformOrigin:"0 0"},dangerouslySetInnerHTML:{__html:c}}),[c]);return ye.jsx("div",{ref:o,style:{position:"relative",backgroundColor:"#FFFFFF",overflow:"hidden",minHeight:"300px",...e},children:l})},c9n=({circuitJson:n,containerStyle:e,debugGrid:t=!1,debug:i=!1})=>{i&&Mit();const r=Te.useRef(null),{ref:o}=bye({onSetTransform(u){r.current&&(r.current.style.transform=PE(u))}}),{containerWidth:s,containerHeight:a}=Tit(o),c=Te.useMemo(()=>!s||!a?"":_ye(n,{width:s,height:a||720}),[n,s,a]);Te.useMemo(()=>{if(!c)return ym();const u=c.match(/data-real-to-screen-transform="([^"]+)"/)?.[1];try{return q7(u)}catch(d){return console.error(d),ym()}},[c]);const l=Te.useMemo(()=>ye.jsx("div",{ref:r,style:{pointerEvents:"auto",transformOrigin:"0 0"},dangerouslySetInnerHTML:{__html:c}}),[c]);return ye.jsx("div",{ref:o,style:{position:"relative",backgroundColor:"#FFFFFF",overflow:"hidden",minHeight:"300px",...e},children:l})};const Ait=["Initialize a tscircuit project using [tsci init](https://github.com/tscircuit/cli) before adding components.","Define reusable modules with cached routes using [<subcircuit />](https://docs.tscircuit.com/elements/subcircuit)","Run `tsci dev` on the command line to preview your boards before export",'Use units like mm or mils consistently across your designs (e.g. pcbX="10mm")',"Quickly set footprints with the [footprint prop](https://docs.tscircuit.com/footprints/footprinter-strings)","Check out the guide on [ordering prototypes](https://docs.tscircuit.com/building-electronics/ordering-prototypes)","Use [net labels](https://docs.tscircuit.com/elements/net) and [group elements](https://docs.tscircuit.com/elements/group) to organize complex schematics.","You can manually drag components on the PCB and Schematic using [manual edits](https://docs.tscircuit.com/guides/manual-edits)","Every tscircuit module can export to [Circuit JSON](https://github.com/tscircuit/circuit-json), Gerbers, Pick'n'Place CSV files, Bill of Materials CSV and more","You can import components from [JLCPCB](https://docs.tscircuit.com/guides/importing-modules-and-chips/importing-from-jlcpcb) or [KiCad](https://docs.tscircuit.com/guides/importing-modules-and-chips/importing-from-kicad)","Any module you push to the [registry](https://tscircuit.com/trending) will have [simple image urls](https://docs.tscircuit.com/web-apis/image-generation-api) you can use display images on a website","The default [Parts Engine](https://docs.tscircuit.com/guides/platform-configuration) will automatically find parts from common vendors for your BOM",'[Pin selectors](https://docs.tscircuit.com/guides/using-sel-references) are similar to CSS selectors, ".R1 > .pin1" means "connect to the first pin of the component R1"',"You can use the [sel](https://docs.tscircuit.com/guides/using-sel-references) object to select pins in a type-safe way","Publish modules via the [registry](https://tscircuit.com/trending) for working with a team or sharing your work","[Explore tutorials](https://docs.tscircuit.com/category/tutorials) for real-world circuit design examples.","Upload your Circuit JSON to [circuitjson.com](https://circuitjson.com) for a quick preview.","You can display Circuit JSON in 3D, PCB or Schematic mode with the [<CircuitJsonPreview />](https://docs.tscircuit.com/elements/circuitjsonpreview) React component","Use a [<group />](https://docs.tscircuit.com/elements/group) element to move multiple components at once in a schematic or PCB layout.","Check out the [GitHub Discussions page](https://github.com/tscircuit/tscircuit/discussions) to upvote features","You can customize the autorouter using the [autorouter prop](https://docs.tscircuit.com/elements/board#setting-the-autorouter)","Use the [<constraint />](https://docs.tscircuit.com/footprints/constraint) element to enforce geometric relationships in PCB designs.","Join the [Discord server](https://tscircuit.com/join) to discuss issues and get help directly from the community."],l9n=(()=>{let n=Ait[Math.floor(Math.random()*Ait.length)];return n=n.replace(/</g,"&lt;"),n=n.replace(/>/g,"&gt;"),n=n.replace(new RegExp('(?<!href=")(?<!\\()(?<!\\]\\()(https?:\\/\\/[^\\s\\)\\]]+)',"g"),(e,t)=>`<a class="rf-text-blue-500 rf-underline" href="${e}" target="_blank">${e}</a>`),n=n.replace(/\[([^\]]+)\]\((https?:\/\/[^\)]+)\)/g,'<a class="rf-text-blue-500 rf-underline" href="$2" target="_blank">$1</a>'),n})(),RM=({onRunClicked:n})=>ye.jsxs("div",{className:"rf-flex rf-flex-col rf-items-center rf-justify-center rf-h-full rf-bg-gray-50 rf-text-gray-500 rf-p-4",children:[ye.jsx(Rwn,{className:"rf-size-14 rf-mb-4"}),ye.jsxs("p",{className:"rf-text-md rf-break-words rf-max-w-xl rf-text-center",children:["Tip: ",ye.jsx("span",{dangerouslySetInnerHTML:{__html:l9n}})]}),n&&ye.jsxs(H_,{className:"rf-mt-4 rf-bg-blue-600 rf-hover:bg-blue-500",onClick:n,children:["Run Code",ye.jsx(Nwn,{className:"rf-w-3 rf-h-3 rf-ml-2"})]})]}),_V=({text:n,onClick:e})=>ye.jsx("span",{className:"rf-cursor-pointer rf-underline rf-text-blue-600 rf-mx-2",onClick:e,children:n}),yV=n=>ye.jsxs("div",{className:"rf-leading-5",children:[ye.jsx("div",{className:"rf-py-2 rf-font-bold",children:n.column.name}),ye.jsx("div",{children:n.field?.()??ye.jsx("input",{type:"text",className:"rf-border rf-rounded rf-p-1 rf-w-full",onChange:e=>{n.onTextChange?.(e.target.value)}})})]}),u9n=({open:n,children:e,title:t,onClose:i})=>n?ye.jsx("div",{className:"rf-fixed rf-inset-0 rf-bg-black rf-bg-opacity-50 rf-flex rf-justify-center rf-items-center rf-z-50",onClick:i,children:ye.jsxs("div",{className:"rf-bg-white rf-p-5 rf-rounded-lg rf-relative rf-w-11/12 rf-max-w-2xl",onClick:r=>{r.preventDefault(),r.stopPropagation()},children:[ye.jsx("h2",{className:"rf-mt-0 rf-text-md rf-pb-4",children:t}),ye.jsx("button",{type:"button",className:"rf-absolute rf-top-2 rf-right-4 rf-text-2xl rf-font-bold",onClick:i,children:"×"}),e]})}):null,d9n=({elements:n})=>{const[e,t]=Te.useState({open:!1}),[i,r]=Te.useReducer((u,d)=>({...u,...d}),{}),o=[...new Set(n.map(u=>u.type))],s=n.map(u=>{const d=u[`${u.type}_id`],h=Object.fromEntries(Object.entries(u).filter(([m])=>!(m===`${u.type}_id`||!m.endsWith("_id")))),f=Object.fromEntries(Object.entries(u).filter(([m])=>!m.endsWith("_id")));return{primary_id:d,other_ids:h,...f,_og_elm:u}}),a=s.map(u=>{let d="";const h=f=>{const m=Object.keys(f.other_ids).find(x=>x.startsWith("source_"));if(!m)return`.${f.name}`;const y=m.slice(0,-3),g=s.find(x=>x.type===y&&x.primary_id===f.other_ids[m]);return g?"name"in g?`${h(g)} > .${f.name}`:`#${g.primary_id} > .${f.name}`:`??? > .${f.name}`};return"name"in u&&(d=h(u)),{...u,selector_path:d}}),c=[{key:"primary_id",name:"primary_id",renderCell:u=>ye.jsxs("div",{className:"rf-flex rf-items-center",children:[ye.jsx(_V,{text:u.primary_id,onClick:()=>r({focused_id:u.primary_id,id_search:void 0,selector_search:void 0})}),ye.jsx("span",{className:"rf-flex-grow"}),ye.jsx(_V,{text:"(JSON)",onClick:()=>t({open:!0,element:u._og_elm,title:u.primary_id})})]}),renderHeaderCell:u=>ye.jsx(yV,{column:u,onTextChange:d=>r({id_search:d}),field:i.focused_id?()=>ye.jsxs("div",{children:["Focus:"," ",ye.jsx("span",{className:"rf-underline",children:i.focused_id}),ye.jsx(_V,{text:"(unfocus)",onClick:()=>r({focused_id:void 0})})]}):void 0})},{key:"type",name:"type",renderHeaderCell:u=>ye.jsx(yV,{column:u,field:()=>ye.jsxs("select",{onChange:d=>r({component_type_filter:d.target.value}),className:"rf-border rf-rounded rf-p-1 rf-w-full",children:[ye.jsx("option",{value:"any",children:"any"},"any"),ye.jsx("option",{value:"source",children:"source"},"source"),ye.jsx("option",{value:"source/pcb",children:"source/pcb"},"source/pcb"),ye.jsx("option",{value:"source/schematic",children:"source/schematic"},"source/schematic"),o.map(d=>ye.jsx("option",{value:d,children:d},d))]})})},{key:"name",name:"name",renderHeaderCell:u=>ye.jsx(yV,{column:u,onTextChange:d=>r({name_search:d})})},{key:"selector_path",name:"selector_path",renderHeaderCell:u=>ye.jsx(yV,{column:u,onTextChange:d=>r({selector_search:d})})},{key:"other_ids",name:"other_ids",renderCell:u=>ye.jsx("div",{className:"rf-space-x-2",children:Object.entries(u.other_ids).map(([d,h])=>ye.jsx(_V,{text:h,onClick:()=>r({focused_id:h})},h))})}],l=a.filter(u=>i.name_search?u.name?.toLowerCase()?.includes(i.name_search.toLowerCase()):!0).filter(u=>!i.component_type_filter||i.component_type_filter==="any"?!0:i.component_type_filter==="source"?u.type.startsWith("source_"):i.component_type_filter==="source/pcb"?u.type.startsWith("source_")||u.type.startsWith("pcb_"):i.component_type_filter==="source/schematic"?u.type.startsWith("source_")||u.type.startsWith("schematic_"):u.type?.includes(i.component_type_filter)).filter(u=>i.selector_search?i.selector_search.split(" ").filter(h=>h.length>0).every(h=>u.selector_path?.includes(h)):!0).filter(u=>i.id_search?u.primary_id?.includes(i.id_search):!0).filter(u=>!!(!i.focused_id||u.primary_id===i.focused_id||Object.values(u.other_ids).includes(i.focused_id)));return ye.jsxs("div",{className:"rf-font-mono rf-text-xs rf-bg-white",children:[ye.jsx("div",{className:"rf-overflow-x-auto",children:ye.jsxs("table",{className:"rf-table-auto rf-w-full rf-text-left",children:[ye.jsx("thead",{children:ye.jsx("tr",{children:c.map(u=>ye.jsx("th",{className:"rf-px-4 rf-py-2 rf-border-b",children:u.renderHeaderCell?u.renderHeaderCell(u):u.name},u.key))})}),ye.jsx("tbody",{children:l.map((u,d)=>ye.jsx("tr",{className:"rf-hover:bg-gray-100",children:c.map(h=>ye.jsx("td",{className:"rf-px-4 rf-py-2 rf-border-b",children:h.renderCell?h.renderCell(u):u[h.key]},h.key))},d))})]})}),ye.jsx(u9n,{open:e.open,onClose:()=>t({open:!1}),title:e.open?e.title:"",children:ye.jsx("div",{className:"rf-bg-gray-800 rf-p-3 rf-text-white rf-rounded",children:ye.jsx("pre",{className:"rf-whitespace-pre-wrap",children:e.open?JSON.stringify(e.element,null,2):""})})})]})},h9n=(n,e)=>n==="jlcpcb"?ye.jsx("a",{className:"rf-underline rf-text-blue-500",target:"_blank",rel:"noreferrer",href:`https://jlcpcb.com/partdetail/${e}`,children:e}):e,p9n=({circuitJson:n})=>{const e=n.filter(i=>i.type==="source_component"),t=new Set;for(const i of e)if(i.supplier_part_numbers)for(const r of Object.keys(i.supplier_part_numbers))t.add(r);return ye.jsx("div",{className:"rf-overflow-x-auto",children:ye.jsxs("table",{className:"rf-w-full rf-text-left rf-text-sm",children:[ye.jsx("thead",{children:ye.jsxs("tr",{className:"rf-border-b",children:[ye.jsx("th",{className:"rf-p-2",children:"Name"}),Array.from(t).map(i=>ye.jsx("th",{className:"rf-p-2 rf-capitalize",children:i},i))]})}),ye.jsx("tbody",{children:e.map(i=>ye.jsxs("tr",{className:"rf-border-b",children:[ye.jsx("td",{className:"rf-p-2",children:i.name}),Array.from(t).map(r=>ye.jsx("td",{className:"rf-p-2",children:h9n(r,i.supplier_part_numbers?.[r]?.[0]||"")},r))]},i.source_component_id))})]})})},nge=Te.forwardRef(({className:n,type:e,...t},i)=>ye.jsx("input",{type:e,className:Va("rf-flex rf-h-9 rf-w-full rf-rounded-md rf-border rf-border-zinc-200 rf-bg-white rf-px-3 rf-py-1 rf-text-sm rf-shadow-sm rf-transition-colors file:rf-border-0 file:rf-bg-transparent file:rf-text-sm file:rf-font-medium placeholder:rf-text-zinc-500 focus-visible:rf-outline-none focus-visible:rf-ring-1 focus-visible:rf-ring-zinc-950 disabled:rf-cursor-not-allowed disabled:rf-opacity-50 dark:rf-border-zinc-800 dark:rf-bg-zinc-950 dark:rf-placeholder-zinc-400 dark:focus-visible:rf-ring-zinc-300",n),ref:i,...t}));nge.displayName="Input";const f9n={},Cit=n=>{let e;const t=new Set,i=(u,d)=>{const h=typeof u=="function"?u(e):u;if(!Object.is(h,e)){const f=e;e=d??(typeof h!="object"||h===null)?h:Object.assign({},e,h),t.forEach(m=>m(e,f))}},r=()=>e,c={setState:i,getState:r,getInitialState:()=>l,subscribe:u=>(t.add(u),()=>t.delete(u)),destroy:()=>{(f9n?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),t.clear()}},l=e=n(i,r,c);return c},Pit=n=>n?Cit(n):Cit;var gV={exports:{}},ige={},xV={exports:{}},rge={};/**
5388
+ `)},J4n=(n,e)=>{if(typeof window>"u")return e;try{const t=localStorage.getItem(n);return t!==null?JSON.parse(t):e}catch{return e}},e9n=(n,e)=>{if(!(typeof window>"u"))try{localStorage.setItem(n,JSON.stringify(e))}catch{}},tge=Te.createContext(null),t9n=(n,e)=>!n&&!e?!0:!n||!e?!1:n.minX===e.minX&&n.maxX===e.maxX&&n.minY===e.minY&&n.maxY===e.maxY,n9n=({children:n})=>{if(Te.useContext(tge))return ye.jsx(ye.Fragment,{children:n});const t=Te.useRef({pointer:null,boundingBoxes:new Map,hoveringIds:new Set,subscribers:new Set}),i=Te.useCallback(()=>{for(const d of t.current.subscribers)d()},[]),r=Te.useCallback(()=>{const d=t.current.pointer,h=new Set;if(d)for(const[m,y]of t.current.boundingBoxes){const g=y.bounds;g&&d.x>=g.minX&&d.x<=g.maxX&&d.y>=g.minY&&d.y<=g.maxY&&h.add(m)}const f=t.current.hoveringIds;h.size===f.size&&[...h].every(m=>f.has(m))||(t.current.hoveringIds=h,i())},[i]),o=Te.useCallback((d,h)=>{t.current.boundingBoxes.set(d,h),r()},[r]),s=Te.useCallback((d,h)=>{const f=t.current.boundingBoxes.get(d);f&&t9n(f.bounds,h.bounds)&&f.onClick===h.onClick||(t.current.boundingBoxes.set(d,h),r())},[r]),a=Te.useCallback(d=>{t.current.boundingBoxes.delete(d)&&r()},[r]),c=Te.useCallback(d=>(t.current.subscribers.add(d),()=>{t.current.subscribers.delete(d)}),[]),l=Te.useCallback(d=>t.current.hoveringIds.has(d),[]);Te.useEffect(()=>{const d=m=>{const{clientX:y,clientY:g}=m,x=t.current.pointer;x&&x.x===y&&x.y===g||(t.current.pointer={x:y,y:g},r())},h=()=>{t.current.pointer!==null&&(t.current.pointer=null,r())},f=m=>{const{clientX:y,clientY:g}=m;for(const x of t.current.boundingBoxes.values()){const b=x.bounds;b&&y>=b.minX&&y<=b.maxX&&g>=b.minY&&g<=b.maxY&&x.onClick?.(m)}};return window.addEventListener("pointermove",d,{passive:!0}),window.addEventListener("pointerdown",d,{passive:!0}),window.addEventListener("pointerup",d,{passive:!0}),window.addEventListener("pointerleave",h),window.addEventListener("pointercancel",h),window.addEventListener("blur",h),window.addEventListener("click",f,{passive:!0}),()=>{window.removeEventListener("pointermove",d),window.removeEventListener("pointerdown",d),window.removeEventListener("pointerup",d),window.removeEventListener("pointerleave",h),window.removeEventListener("pointercancel",h),window.removeEventListener("blur",h),window.removeEventListener("click",f)}},[r]);const u=Te.useMemo(()=>({registerBoundingBox:o,updateBoundingBox:s,unregisterBoundingBox:a,subscribe:c,isHovering:l}),[o,s,a,c,l]);return ye.jsx(tge.Provider,{value:u,children:n})},i9n=n=>{const e=Te.useContext(tge);if(!e)throw new Error("useMouseEventsOverBoundingBox must be used within a MouseTracker");const t=Te.useId(),i=Te.useRef(n);i.current=n;const r=Te.useMemo(()=>s=>{i.current.onClick?.(s)},[]);return Te.useEffect(()=>(e.registerBoundingBox(t,{bounds:i.current.bounds,onClick:i.current.onClick?r:void 0}),()=>{e.unregisterBoundingBox(t)}),[e,r,t]),Te.useEffect(()=>{e.updateBoundingBox(t,{bounds:i.current.bounds,onClick:i.current.onClick?r:void 0})},[e,r,t,n.bounds?.minX,n.bounds?.maxX,n.bounds?.minY,n.bounds?.maxY,n.onClick]),{hovering:Te.useSyncExternalStore(e.subscribe,()=>e.isHovering(t),()=>!1)}},r9n=(n,e)=>!n&&!e?!0:!n||!e?!1:Math.abs(n.bounds.minX-e.bounds.minX)<.5&&Math.abs(n.bounds.maxX-e.bounds.maxX)<.5&&Math.abs(n.bounds.minY-e.bounds.minY)<.5&&Math.abs(n.bounds.maxY-e.bounds.maxY)<.5&&Math.abs(n.rect.left-e.rect.left)<.5&&Math.abs(n.rect.top-e.rect.top)<.5&&Math.abs(n.rect.width-e.rect.width)<.5&&Math.abs(n.rect.height-e.rect.height)<.5,o9n=({componentId:n,svgDivRef:e,containerRef:t,onComponentClick:i,showOutline:r,circuitJsonKey:o})=>{const[s,a]=Te.useState(null),c=Te.useRef(null),l=Te.useCallback(()=>{c.current=null;const y=e.current,g=t.current;if(!y||!g){a(k=>k&&null);return}const x=y.querySelector(`[data-schematic-component-id="${n}"]`);if(!x){a(k=>k&&null);return}const b=x.getBoundingClientRect(),w=g.getBoundingClientRect(),T={bounds:{minX:b.left,maxX:b.right,minY:b.top,maxY:b.bottom},rect:{left:b.left-w.left,top:b.top-w.top,width:b.width,height:b.height}};a(k=>r9n(k,T)?k:T)},[n,t,e]),u=Te.useCallback(()=>{c.current===null&&(c.current=window.requestAnimationFrame(l))},[l]);Te.useEffect(()=>{u()},[u,o]),Te.useEffect(()=>{u();const y=e.current,g=t.current;if(!y||!g)return;const x=typeof ResizeObserver<"u"?new ResizeObserver(()=>{u()}):null;x?.observe(g),x?.observe(y);const b=typeof MutationObserver<"u"?new MutationObserver(()=>{u()}):null;return b?.observe(y,{attributes:!0,attributeFilter:["style","transform"],subtree:!0,childList:!0}),window.addEventListener("scroll",u,!0),window.addEventListener("resize",u),()=>{x?.disconnect(),b?.disconnect(),window.removeEventListener("scroll",u,!0),window.removeEventListener("resize",u),c.current!==null&&(cancelAnimationFrame(c.current),c.current=null)}},[u,e,t]);const d=Te.useCallback(y=>{i&&i(n,y)},[n,i]),h=s?.bounds??null,{hovering:f}=i9n({bounds:h,onClick:i?d:void 0});if(!s||!f||!r)return null;const m=s.rect;return ye.jsx("div",{style:{position:"absolute",left:m.left,top:m.top,width:m.width,height:m.height,border:"1.5px solid rgba(51, 153, 255, 0.9)",borderRadius:"6px",pointerEvents:"none",zIndex:PM.schematicComponentHoverOutline,boxShadow:"0 0 6px rgba(51, 153, 255, 0.35)"}})},s9n=({circuitJson:n,containerStyle:e,editEvents:t=[],onEditEvent:i,defaultEditMode:r=!1,debugGrid:o=!1,editingEnabled:s=!1,debug:a=!1,clickToInteractEnabled:c=!1,colorOverrides:l,spiceSimulationEnabled:u=!1,disableGroups:d=!1,onSchematicComponentClicked:h})=>{a&&O4n();const[f,m]=Te.useState(!1),[y,g]=Te.useState({showVoltage:!0,showCurrent:!1,startTime:0,duration:20}),x=qe=>`${qe?.length||0}_${qe?.editCount||0}`,b=Te.useMemo(()=>x(n),[n]),w=Te.useMemo(()=>{if(!u)return null;try{return Q4n(n,y)}catch(qe){return console.error("Failed to generate SPICE string",qe),null}},[b,u,y.startTime,y.duration]),[T,k]=Te.useState(!1);Te.useEffect(()=>{k(!1)},[b]);const{plotData:P,nodes:R,isLoading:M,error:I}=K4n(T?w:null),[A,B]=Te.useState(r),[N,V]=Te.useState(!0),[X,W]=Te.useState(!c),[K,te]=Te.useState(!1),[se,de]=Te.useState(()=>d?!1:J4n("schematic_viewer_show_groups",!1)),xe=Te.useRef(null),re=Te.useRef(null),ue=Te.useMemo(()=>{try{return lg(n).schematic_component?.list()?.map(qe=>qe.schematic_component_id)??[]}catch(qe){return console.error("Failed to derive schematic component ids",qe),[]}},[b,n]),he=qe=>{const Je=qe.touches[0];re.current={x:Je.clientX,y:Je.clientY}},Ae=qe=>{const Je=qe.changedTouches[0],ft=re.current;if(!ft)return;const vt=Math.abs(Je.clientX-ft.x),Tt=Math.abs(Je.clientY-ft.y);vt<10&&Tt<10&&(qe.preventDefault(),W(!0)),re.current=null},[ke,De]=Te.useState([]),Ge=Te.useRef(n);Te.useEffect(()=>{const qe=x(n),Je=x(Ge.current);qe!==Je&&(De([]),Ge.current=n)},[n]);const{ref:Ne,cancelDrag:ce,transform:we}=bye({onSetTransform(qe){xe.current&&(xe.current.style.transform=PE(qe))},enabled:X&&!f}),{containerWidth:ve,containerHeight:Ye}=D4n(Ne),et=Te.useMemo(()=>!ve||!Ye?"":gye(n,{width:ve,height:Ye||720,grid:o?{cellSize:1,labelCells:!0}:void 0,colorOverrides:l}),[b,ve,Ye]),at=Te.useMemo(()=>et.match(/<svg[^>]*style="[^"]*background-color:\s*([^;\"]+)/i)?.[1]??"transparent",[et]),Se=Te.useMemo(()=>{if(!et)return ym();const qe=et.match(/data-real-to-screen-transform="([^"]+)"/)?.[1];try{return q7(qe)}catch(Je){return console.error(Je),ym()}},[et]),ht=qe=>{De(Je=>[...Je,qe]),i&&i(qe)},Qe=Te.useMemo(()=>[...t,...ke],[t,ke]),{handleMouseDown:Xe,handleTouchStart:rt,isDragging:ze,activeEditEvent:Re}=$4n({onEditEvent:ht,cancelDrag:ce,realToSvgProjection:Se,svgToScreenProjection:we,circuitJson:n,editEvents:Qe,enabled:A&&X&&!f,snapToGrid:N});P4n({svgDivRef:xe,editEvents:Qe,realToSvgProjection:Se,svgToScreenProjection:we,activeEditEvent:Re}),R4n({svgDivRef:xe,circuitJson:n,activeEditEvent:Re,editEvents:Qe}),I4n({svgDivRef:xe,circuitJson:n,circuitJsonKey:b,showGroups:se&&!d});const We=Te.useRef(rt);Te.useEffect(()=>{We.current=rt},[rt]);const Le=Te.useMemo(()=>ye.jsx("div",{ref:xe,style:{pointerEvents:c?X?"auto":"none":"auto",transformOrigin:"0 0"},onTouchStart:qe=>{A&&X&&!f&&We.current(qe)},dangerouslySetInnerHTML:{__html:et}}),[et,X,c,A,f]);return ye.jsx(n9n,{children:ye.jsxs("div",{ref:Ne,style:{position:"relative",backgroundColor:at,overflow:"hidden",cursor:f?"auto":ze?"grabbing":c&&!X?"pointer":"grab",minHeight:"300px",...e},onWheelCapture:qe=>{f&&qe.stopPropagation()},onMouseDown:qe=>{if(c&&!X){qe.preventDefault(),qe.stopPropagation();return}Xe(qe)},onMouseDownCapture:qe=>{if(c&&!X){qe.preventDefault(),qe.stopPropagation();return}},onTouchStart:qe=>{f||he(qe)},onTouchEnd:qe=>{f||Ae(qe)},children:[!X&&c&&ye.jsx("div",{onClick:qe=>{qe.preventDefault(),qe.stopPropagation(),W(!0)},style:{position:"absolute",inset:0,cursor:"pointer",zIndex:PM.clickToInteractOverlay,display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"all",touchAction:"pan-x pan-y pinch-zoom"},children:ye.jsx("div",{style:{backgroundColor:"rgba(0, 0, 0, 0.8)",color:"white",padding:"12px 24px",borderRadius:"8px",fontSize:"16px",fontFamily:"sans-serif",pointerEvents:"none"},children:typeof window<"u"&&("ontouchstart"in window||navigator.maxTouchPoints>0)?"Touch to Interact":"Click to Interact"})}),ye.jsx(B4n,{active:K,onClick:()=>te(!K)}),s&&ye.jsx(F4n,{active:A,onClick:()=>B(!A)}),s&&A&&ye.jsx(U4n,{active:N,onClick:()=>V(!N)}),ye.jsx(H4n,{circuitJson:n,circuitJsonKey:b,isVisible:K,onClose:()=>te(!1),showGroups:se,onToggleGroups:qe=>{d||(de(qe),e9n("schematic_viewer_show_groups",qe))}}),u&&ye.jsx(G4n,{onClick:()=>m(!0)}),f&&ye.jsx(q4n,{spiceString:w,onClose:()=>m(!1),plotData:P,nodes:R,isLoading:M,error:I,simOptions:y,onSimOptionsChange:qe=>{k(!0),g(qe)},hasRun:T}),h&&ue.map(qe=>ye.jsx(o9n,{componentId:qe,svgDivRef:xe,containerRef:Ne,showOutline:!0,circuitJsonKey:b,onComponentClick:(Je,ft)=>{h?.({schematicComponentId:Je,event:ft})}},qe)),Le]})})},Tit=n=>{const[e,t]=Te.useState(0),[i,r]=Te.useState(0);return Te.useEffect(()=>{if(!n.current)return;const o=()=>{const a=n.current?.getBoundingClientRect();t(a?.width||0),r(a?.height||0)};o();const s=new ResizeObserver(o);return s.observe(n.current),window.addEventListener("resize",o),()=>{s.disconnect(),window.removeEventListener("resize",o)}},[]),{containerWidth:e,containerHeight:i}};M0("assembly-viewer");var Mit=()=>{M0.enable("assembly-viewer*")},a9n=({circuitJson:n,containerStyle:e,debugGrid:t=!1,debug:i=!1})=>{i&&Mit();const r=Te.useRef(null),{ref:o}=bye({onSetTransform(u){r.current&&(r.current.style.transform=PE(u))}}),{containerWidth:s,containerHeight:a}=Tit(o),c=Te.useMemo(()=>!s||!a?"":ttt(n,{width:s,height:a||720}),[n,s,a]);Te.useMemo(()=>{if(!c)return ym();const u=c.match(/data-real-to-screen-transform="([^"]+)"/)?.[1];try{return q7(u)}catch(d){return console.error(d),ym()}},[c]);const l=Te.useMemo(()=>ye.jsx("div",{ref:r,style:{pointerEvents:"auto",transformOrigin:"0 0"},dangerouslySetInnerHTML:{__html:c}}),[c]);return ye.jsx("div",{ref:o,style:{position:"relative",backgroundColor:"#FFFFFF",overflow:"hidden",minHeight:"300px",...e},children:l})},c9n=({circuitJson:n,containerStyle:e,debugGrid:t=!1,debug:i=!1})=>{i&&Mit();const r=Te.useRef(null),{ref:o}=bye({onSetTransform(u){r.current&&(r.current.style.transform=PE(u))}}),{containerWidth:s,containerHeight:a}=Tit(o),c=Te.useMemo(()=>!s||!a?"":_ye(n,{width:s,height:a||720}),[n,s,a]);Te.useMemo(()=>{if(!c)return ym();const u=c.match(/data-real-to-screen-transform="([^"]+)"/)?.[1];try{return q7(u)}catch(d){return console.error(d),ym()}},[c]);const l=Te.useMemo(()=>ye.jsx("div",{ref:r,style:{pointerEvents:"auto",transformOrigin:"0 0"},dangerouslySetInnerHTML:{__html:c}}),[c]);return ye.jsx("div",{ref:o,style:{position:"relative",backgroundColor:"#FFFFFF",overflow:"hidden",minHeight:"300px",...e},children:l})};const Ait=["Initialize a tscircuit project using [tsci init](https://github.com/tscircuit/cli) before adding components.","Define reusable modules with cached routes using [<subcircuit />](https://docs.tscircuit.com/elements/subcircuit)","Run `tsci dev` on the command line to preview your boards before export",'Use units like mm or mils consistently across your designs (e.g. pcbX="10mm")',"Quickly set footprints with the [footprint prop](https://docs.tscircuit.com/footprints/footprinter-strings)","Check out the guide on [ordering prototypes](https://docs.tscircuit.com/building-electronics/ordering-prototypes)","Use [net labels](https://docs.tscircuit.com/elements/net) and [group elements](https://docs.tscircuit.com/elements/group) to organize complex schematics.","You can manually drag components on the PCB and Schematic using [manual edits](https://docs.tscircuit.com/guides/manual-edits)","Every tscircuit module can export to [Circuit JSON](https://github.com/tscircuit/circuit-json), Gerbers, Pick'n'Place CSV files, Bill of Materials CSV and more","You can import components from [JLCPCB](https://docs.tscircuit.com/guides/importing-modules-and-chips/importing-from-jlcpcb) or [KiCad](https://docs.tscircuit.com/guides/importing-modules-and-chips/importing-from-kicad)","Any module you push to the [registry](https://tscircuit.com/trending) will have [simple image urls](https://docs.tscircuit.com/web-apis/image-generation-api) you can use display images on a website","The default [Parts Engine](https://docs.tscircuit.com/guides/platform-configuration) will automatically find parts from common vendors for your BOM",'[Pin selectors](https://docs.tscircuit.com/guides/using-sel-references) are similar to CSS selectors, ".R1 > .pin1" means "connect to the first pin of the component R1"',"You can use the [sel](https://docs.tscircuit.com/guides/using-sel-references) object to select pins in a type-safe way","Publish modules via the [registry](https://tscircuit.com/trending) for working with a team or sharing your work","[Explore tutorials](https://docs.tscircuit.com/category/tutorials) for real-world circuit design examples.","Upload your Circuit JSON to [circuitjson.com](https://circuitjson.com) for a quick preview.","You can display Circuit JSON in 3D, PCB or Schematic mode with the [<CircuitJsonPreview />](https://docs.tscircuit.com/guides/running-tscircuit/displaying-circuit-json-on-a-webpage#react-display-all-available-previews-with-circuitjsonpreview-) React component","Use a [<group />](https://docs.tscircuit.com/elements/group) element to move multiple components at once in a schematic or PCB layout.","Check out the [GitHub Discussions page](https://github.com/tscircuit/tscircuit/discussions) to upvote features","You can customize the autorouter using the [autorouter prop](https://docs.tscircuit.com/elements/board#setting-the-autorouter)","Use the [<constraint />](https://docs.tscircuit.com/footprints/constraint) element to enforce geometric relationships in PCB designs.","Join the [Discord server](https://tscircuit.com/join) to discuss issues and get help directly from the community."],l9n=(()=>{let n=Ait[Math.floor(Math.random()*Ait.length)];return n=n.replace(/</g,"&lt;"),n=n.replace(/>/g,"&gt;"),n=n.replace(new RegExp('(?<!href=")(?<!\\()(?<!\\]\\()(https?:\\/\\/[^\\s\\)\\]]+)',"g"),(e,t)=>`<a class="rf-text-blue-500 rf-underline" href="${e}" target="_blank">${e}</a>`),n=n.replace(/\[([^\]]+)\]\((https?:\/\/[^\)]+)\)/g,'<a class="rf-text-blue-500 rf-underline" href="$2" target="_blank">$1</a>'),n})(),RM=({onRunClicked:n})=>ye.jsxs("div",{className:"rf-flex rf-flex-col rf-items-center rf-justify-center rf-h-full rf-bg-gray-50 rf-text-gray-500 rf-p-4",children:[ye.jsx(Rwn,{className:"rf-size-14 rf-mb-4"}),ye.jsxs("p",{className:"rf-text-md rf-break-words rf-max-w-xl rf-text-center",children:["Tip: ",ye.jsx("span",{dangerouslySetInnerHTML:{__html:l9n}})]}),n&&ye.jsxs(H_,{className:"rf-mt-4 rf-bg-blue-600 rf-hover:bg-blue-500",onClick:n,children:["Run Code",ye.jsx(Nwn,{className:"rf-w-3 rf-h-3 rf-ml-2"})]})]}),_V=({text:n,onClick:e})=>ye.jsx("span",{className:"rf-cursor-pointer rf-underline rf-text-blue-600 rf-mx-2",onClick:e,children:n}),yV=n=>ye.jsxs("div",{className:"rf-leading-5",children:[ye.jsx("div",{className:"rf-py-2 rf-font-bold",children:n.column.name}),ye.jsx("div",{children:n.field?.()??ye.jsx("input",{type:"text",className:"rf-border rf-rounded rf-p-1 rf-w-full",onChange:e=>{n.onTextChange?.(e.target.value)}})})]}),u9n=({open:n,children:e,title:t,onClose:i})=>n?ye.jsx("div",{className:"rf-fixed rf-inset-0 rf-bg-black rf-bg-opacity-50 rf-flex rf-justify-center rf-items-center rf-z-50",onClick:i,children:ye.jsxs("div",{className:"rf-bg-white rf-p-5 rf-rounded-lg rf-relative rf-w-11/12 rf-max-w-2xl",onClick:r=>{r.preventDefault(),r.stopPropagation()},children:[ye.jsx("h2",{className:"rf-mt-0 rf-text-md rf-pb-4",children:t}),ye.jsx("button",{type:"button",className:"rf-absolute rf-top-2 rf-right-4 rf-text-2xl rf-font-bold",onClick:i,children:"×"}),e]})}):null,d9n=({elements:n})=>{const[e,t]=Te.useState({open:!1}),[i,r]=Te.useReducer((u,d)=>({...u,...d}),{}),o=[...new Set(n.map(u=>u.type))],s=n.map(u=>{const d=u[`${u.type}_id`],h=Object.fromEntries(Object.entries(u).filter(([m])=>!(m===`${u.type}_id`||!m.endsWith("_id")))),f=Object.fromEntries(Object.entries(u).filter(([m])=>!m.endsWith("_id")));return{primary_id:d,other_ids:h,...f,_og_elm:u}}),a=s.map(u=>{let d="";const h=f=>{const m=Object.keys(f.other_ids).find(x=>x.startsWith("source_"));if(!m)return`.${f.name}`;const y=m.slice(0,-3),g=s.find(x=>x.type===y&&x.primary_id===f.other_ids[m]);return g?"name"in g?`${h(g)} > .${f.name}`:`#${g.primary_id} > .${f.name}`:`??? > .${f.name}`};return"name"in u&&(d=h(u)),{...u,selector_path:d}}),c=[{key:"primary_id",name:"primary_id",renderCell:u=>ye.jsxs("div",{className:"rf-flex rf-items-center",children:[ye.jsx(_V,{text:u.primary_id,onClick:()=>r({focused_id:u.primary_id,id_search:void 0,selector_search:void 0})}),ye.jsx("span",{className:"rf-flex-grow"}),ye.jsx(_V,{text:"(JSON)",onClick:()=>t({open:!0,element:u._og_elm,title:u.primary_id})})]}),renderHeaderCell:u=>ye.jsx(yV,{column:u,onTextChange:d=>r({id_search:d}),field:i.focused_id?()=>ye.jsxs("div",{children:["Focus:"," ",ye.jsx("span",{className:"rf-underline",children:i.focused_id}),ye.jsx(_V,{text:"(unfocus)",onClick:()=>r({focused_id:void 0})})]}):void 0})},{key:"type",name:"type",renderHeaderCell:u=>ye.jsx(yV,{column:u,field:()=>ye.jsxs("select",{onChange:d=>r({component_type_filter:d.target.value}),className:"rf-border rf-rounded rf-p-1 rf-w-full",children:[ye.jsx("option",{value:"any",children:"any"},"any"),ye.jsx("option",{value:"source",children:"source"},"source"),ye.jsx("option",{value:"source/pcb",children:"source/pcb"},"source/pcb"),ye.jsx("option",{value:"source/schematic",children:"source/schematic"},"source/schematic"),o.map(d=>ye.jsx("option",{value:d,children:d},d))]})})},{key:"name",name:"name",renderHeaderCell:u=>ye.jsx(yV,{column:u,onTextChange:d=>r({name_search:d})})},{key:"selector_path",name:"selector_path",renderHeaderCell:u=>ye.jsx(yV,{column:u,onTextChange:d=>r({selector_search:d})})},{key:"other_ids",name:"other_ids",renderCell:u=>ye.jsx("div",{className:"rf-space-x-2",children:Object.entries(u.other_ids).map(([d,h])=>ye.jsx(_V,{text:h,onClick:()=>r({focused_id:h})},h))})}],l=a.filter(u=>i.name_search?u.name?.toLowerCase()?.includes(i.name_search.toLowerCase()):!0).filter(u=>!i.component_type_filter||i.component_type_filter==="any"?!0:i.component_type_filter==="source"?u.type.startsWith("source_"):i.component_type_filter==="source/pcb"?u.type.startsWith("source_")||u.type.startsWith("pcb_"):i.component_type_filter==="source/schematic"?u.type.startsWith("source_")||u.type.startsWith("schematic_"):u.type?.includes(i.component_type_filter)).filter(u=>i.selector_search?i.selector_search.split(" ").filter(h=>h.length>0).every(h=>u.selector_path?.includes(h)):!0).filter(u=>i.id_search?u.primary_id?.includes(i.id_search):!0).filter(u=>!!(!i.focused_id||u.primary_id===i.focused_id||Object.values(u.other_ids).includes(i.focused_id)));return ye.jsxs("div",{className:"rf-font-mono rf-text-xs rf-bg-white",children:[ye.jsx("div",{className:"rf-overflow-x-auto",children:ye.jsxs("table",{className:"rf-table-auto rf-w-full rf-text-left",children:[ye.jsx("thead",{children:ye.jsx("tr",{children:c.map(u=>ye.jsx("th",{className:"rf-px-4 rf-py-2 rf-border-b",children:u.renderHeaderCell?u.renderHeaderCell(u):u.name},u.key))})}),ye.jsx("tbody",{children:l.map((u,d)=>ye.jsx("tr",{className:"rf-hover:bg-gray-100",children:c.map(h=>ye.jsx("td",{className:"rf-px-4 rf-py-2 rf-border-b",children:h.renderCell?h.renderCell(u):u[h.key]},h.key))},d))})]})}),ye.jsx(u9n,{open:e.open,onClose:()=>t({open:!1}),title:e.open?e.title:"",children:ye.jsx("div",{className:"rf-bg-gray-800 rf-p-3 rf-text-white rf-rounded",children:ye.jsx("pre",{className:"rf-whitespace-pre-wrap",children:e.open?JSON.stringify(e.element,null,2):""})})})]})},h9n=(n,e)=>n==="jlcpcb"?ye.jsx("a",{className:"rf-underline rf-text-blue-500",target:"_blank",rel:"noreferrer",href:`https://jlcpcb.com/partdetail/${e}`,children:e}):e,p9n=({circuitJson:n})=>{const e=n.filter(i=>i.type==="source_component"),t=new Set;for(const i of e)if(i.supplier_part_numbers)for(const r of Object.keys(i.supplier_part_numbers))t.add(r);return ye.jsx("div",{className:"rf-overflow-x-auto",children:ye.jsxs("table",{className:"rf-w-full rf-text-left rf-text-sm",children:[ye.jsx("thead",{children:ye.jsxs("tr",{className:"rf-border-b",children:[ye.jsx("th",{className:"rf-p-2",children:"Name"}),Array.from(t).map(i=>ye.jsx("th",{className:"rf-p-2 rf-capitalize",children:i},i))]})}),ye.jsx("tbody",{children:e.map(i=>ye.jsxs("tr",{className:"rf-border-b",children:[ye.jsx("td",{className:"rf-p-2",children:i.name}),Array.from(t).map(r=>ye.jsx("td",{className:"rf-p-2",children:h9n(r,i.supplier_part_numbers?.[r]?.[0]||"")},r))]},i.source_component_id))})]})})},nge=Te.forwardRef(({className:n,type:e,...t},i)=>ye.jsx("input",{type:e,className:Va("rf-flex rf-h-9 rf-w-full rf-rounded-md rf-border rf-border-zinc-200 rf-bg-white rf-px-3 rf-py-1 rf-text-sm rf-shadow-sm rf-transition-colors file:rf-border-0 file:rf-bg-transparent file:rf-text-sm file:rf-font-medium placeholder:rf-text-zinc-500 focus-visible:rf-outline-none focus-visible:rf-ring-1 focus-visible:rf-ring-zinc-950 disabled:rf-cursor-not-allowed disabled:rf-opacity-50 dark:rf-border-zinc-800 dark:rf-bg-zinc-950 dark:rf-placeholder-zinc-400 dark:focus-visible:rf-ring-zinc-300",n),ref:i,...t}));nge.displayName="Input";const f9n={},Cit=n=>{let e;const t=new Set,i=(u,d)=>{const h=typeof u=="function"?u(e):u;if(!Object.is(h,e)){const f=e;e=d??(typeof h!="object"||h===null)?h:Object.assign({},e,h),t.forEach(m=>m(e,f))}},r=()=>e,c={setState:i,getState:r,getInitialState:()=>l,subscribe:u=>(t.add(u),()=>t.delete(u)),destroy:()=>{(f9n?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),t.clear()}},l=e=n(i,r,c);return c},Pit=n=>n?Cit(n):Cit;var gV={exports:{}},ige={},xV={exports:{}},rge={};/**
5389
5389
  * @license React
5390
5390
  * use-sync-external-store-shim.production.js
5391
5391
  *
@@ -5574,7 +5574,7 @@ $1`).replace(/>(\s*)(?=<!--\s*\/)/g,"> ")}}}),kge={};FPn(kge,{all_layers:()=>lxe
5574
5574
  * Copyright (c) 2013-2015, 2017, Jon Schlinkert.
5575
5575
  * Released under the MIT License.
5576
5576
  *)
5577
- */const dNn=({containerClassName:n,...e})=>{const t=Te.useRef(null),[i,r]=Te.useState(620);return Te.useLayoutEffect(()=>{const o=()=>{if(t.current){const a=t.current.clientHeight,c=window.innerHeight;r(Math.min(Math.max(a,620),c))}};o();const s=new ResizeObserver(o);return t.current&&s.observe(t.current),window.addEventListener("resize",o),()=>{s.disconnect(),window.removeEventListener("resize",o)}},[]),ye.jsx("div",{ref:t,className:n||"rf-w-full rf-h-full",children:ye.jsx(uNn,{...e,height:i})})},hNn='*,: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-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-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-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-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-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-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-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\\/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-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}',tat=()=>{Te.useEffect(()=>{if(document.querySelector('style[data-styles="tscircuit-runframe"]'))return;const e=document.createElement("style");e.setAttribute("data-styles","tscircuit-runframe"),e.textContent=hNn,document.head.appendChild(e)},[])},pNn=n=>{Te.useEffect(()=>(n?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[n])},nat=n=>`hsl(${GS.indexOf(n)*137.5%360}, 70%, 50%)`,fNn=({phaseTimings:n})=>{if(!n)return null;const e=Object.values(n).reduce((t,i)=>t+i,0);return ye.jsxs("div",{className:"rf-space-y-2 rf-w-full rf-px-4",children:[ye.jsx("div",{className:"rf-relative rf-h-8 rf-flex rf-rounded-sm",children:GS.map(t=>{const i=n[t]||0,r=i/e*100;return ye.jsx("div",{className:"rf-group/bar rf-relative rf-overflow-visible",style:{width:`${r}%`,backgroundColor:nat(t)},children:ye.jsxs("div",{className:"rf-opacity-0 group-hover/bar:rf-opacity-100 rf-transition-opacity rf-absolute rf-bottom-full rf-left-1/2 rf-transform -rf-translate-x-1/2 rf-mb-2 rf-px-2 rf-py-1 rf-text-xs rf-whitespace-nowrap rf-rounded rf-bg-gray-900 rf-text-white rf-pointer-events-none",children:[t,": ",i.toFixed(1),"ms"]})},t)})}),ye.jsxs("div",{className:"rf-text-xs rf-text-gray-500",children:["Total: ",e.toFixed(2),"ms"]})]})},mNn=({renderLog:n,onRerunWithDebug:e})=>{const[t,i]=Te.useState("chronological"),[r,o]=Te.useState(""),s=[{value:"",label:"None"},{value:"DEBUG=Group_doInitialSchematicTraceRender",label:"DEBUG=Group_doInitialSchematicTraceRender"},{value:"DEBUG=Group_doInitialSchematicLayoutMatchpack",label:"DEBUG=Group_doInitialSchematicLayoutMatchpack"},{value:"DEBUG=Group_doInitialPcbLayoutPack",label:"DEBUG=Group_doInitialPcbLayoutPack"}];if(!n)return ye.jsxs("div",{className:"rf-p-4 rf-bg-gray-100 rf-rounded-md",children:[ye.jsx("div",{className:"rf-mb-4",children:"No render log, make sure this tab is open when you render"}),e&&ye.jsxs("div",{className:"rf-flex rf-gap-2 rf-items-center",children:[ye.jsx("select",{value:r,onChange:l=>o(l.target.value),className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white",children:s.map(l=>ye.jsx("option",{value:l.value,children:l.label},l.value))}),ye.jsx(H_,{onClick:()=>e(r),size:"sm",className:"rf-text-xs",children:"Rerun Render with Debug"})]})]});const a=Object.entries(n?.phaseTimings??{});t==="chronological"?a.sort((l,u)=>GS.indexOf(l[0])-GS.indexOf(u[0])):a.sort((l,u)=>u[1]-l[1]);const c=a.reduce((l,[u,d])=>l+d,0);return ye.jsxs("div",{className:"rf-bg-white",children:[ye.jsxs("div",{className:"rf-flex rf-justify-between rf-items-center rf-mb-4",children:[ye.jsx("div",{children:"Render Logs"}),ye.jsxs("div",{className:"rf-flex rf-gap-4 rf-items-center",children:[e&&ye.jsxs("div",{className:"rf-flex rf-gap-2 rf-items-center",children:[ye.jsx("select",{value:r,onChange:l=>o(l.target.value),className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white",children:s.map(l=>ye.jsx("option",{value:l.value,children:l.label},l.value))}),ye.jsx(H_,{onClick:()=>e(r),size:"sm",className:"rf-text-xs",children:"Rerun Render with Debug"})]}),ye.jsx("div",{className:"rf-flex rf-gap-2 rf-items-center",children:ye.jsxs("select",{onChange:l=>{if(l.target.value){const u=n?.debugOutputs?.find(d=>d.name===l.target.value);if(u){const d=new Blob([u.content],{type:"text/plain"}),h=URL.createObjectURL(d),f=document.createElement("a");f.href=h,f.download=`debug-${u.name}.txt`,document.body.appendChild(f),f.click(),document.body.removeChild(f),URL.revokeObjectURL(h)}l.target.value=""}},disabled:!n?.debugOutputs||n.debugOutputs.length===0,className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white disabled:rf-opacity-50 disabled:rf-cursor-not-allowed",children:[ye.jsx("option",{value:"",children:"Download Debug Output"}),n?.debugOutputs?.map(l=>ye.jsx("option",{value:l.name,children:l.name},l.name))]})}),ye.jsxs("div",{className:"rf-flex rf-text-xs rf-items-center",children:[ye.jsx("div",{className:"rf-mr-2",children:"Sort by:"}),ye.jsxs("select",{value:t,onChange:l=>i(l.target.value),className:"rf-px-2 rf-py-1 rf-border rf-rounded rf-text-xs",children:[ye.jsx("option",{value:"chronological",children:"Phase Order"}),ye.jsx("option",{value:"longest",children:"Duration"})]})]})]})]}),ye.jsx(fNn,{phaseTimings:n.phaseTimings}),ye.jsxs("table",{className:"rf-w-full rf-text-xs",children:[ye.jsx("thead",{children:ye.jsxs("tr",{children:[ye.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase Order"}),ye.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase"}),ye.jsx("th",{className:"rf-text-left rf-p-2",children:"Duration (ms)"})]})}),ye.jsx("tbody",{children:a.map(([l,u])=>ye.jsxs("tr",{children:[ye.jsx("td",{className:"rf-p-2",children:GS.indexOf(l)}),ye.jsx("td",{className:"rf-p-2",children:l}),ye.jsx("td",{className:"rf-p-2",children:ye.jsx("div",{className:"rf-w-8",children:ye.jsx("div",{className:"rf-h-2 rf-rounded-sm",style:{backgroundColor:nat(l),width:`${u/c*100}%`}})})}),ye.jsx("td",{className:"rf-p-2",children:ye.jsxs("div",{className:"rf-flex w-full",children:[ye.jsxs("span",{className:"rf-flex-grow",children:[u,"ms"]}),ye.jsxs("span",{className:"rf-text-gray-500 rf-pr-2",children:[(u/c*100).toFixed(1),"%"]})]})})]},l))})]})]})},iat=({errorMessage:n,errorStack:e,circuitJsonErrors:t})=>{Te.useEffect(()=>{if(n){const i=new Error(n);e&&(i.stack=e);try{T7.captureException(i)}catch{}}},[n,e]),Te.useEffect(()=>{if(t&&t.length>0)for(const i of t){const r=new Error(i.message||"Circuit JSON Error");i.stack&&(r.stack=i.stack);try{T7.captureException(r,{error_type:i.type})}catch{}}},[t])},rat="0.0.1059",_Nn={version:rat};function yNn(n,e){const[t,i]=Te.useState(()=>{try{const r=window.localStorage.getItem(n);return r?JSON.parse(r):e}catch(r){return console.error("Error reading from localStorage:",r),e}});return Te.useEffect(()=>{try{window.localStorage.setItem(n,JSON.stringify(t))}catch(r){console.error("Error writing to localStorage:",r)}},[n,t]),[t,i]}const xxe={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},vxe=new Map,tG=n=>{const e=vxe.get(n);return e?Object.fromEntries(Object.entries(e.stores).map(([t,i])=>[t,i.getState()])):{}},gNn=(n,e,t)=>{if(n===void 0)return{type:"untracked",connection:e.connect(t)};const i=vxe.get(t.name);if(i)return{type:"tracked",store:n,...i};const r={connection:e.connect(t),stores:{}};return vxe.set(t.name,r),{type:"tracked",store:n,...r}},oat=(n,e={})=>(t,i,r)=>{const{enabled:o,anonymousActionType:s,store:a,...c}=e;let l;try{l=(o??(xxe?"production":void 0)!=="production")&&window.__REDUX_DEVTOOLS_EXTENSION__}catch{}if(!l)return(xxe?"production":void 0)!=="production"&&o&&console.warn("[zustand devtools middleware] Please install/enable Redux devtools extension"),n(t,i,r);const{connection:u,...d}=gNn(a,l,c);let h=!0;r.setState=(y,g,x)=>{const b=t(y,g);if(!h)return b;const w=x===void 0?{type:s||"anonymous"}:typeof x=="string"?{type:x}:x;return a===void 0?(u?.send(w,i()),b):(u?.send({...w,type:`${a}/${w.type}`},{...tG(c.name),[a]:r.getState()}),b)};const f=(...y)=>{const g=h;h=!1,t(...y),h=g},m=n(r.setState,i,r);if(d.type==="untracked"?u?.init(m):(d.stores[d.store]=r,u?.init(Object.fromEntries(Object.entries(d.stores).map(([y,g])=>[y,y===d.store?m:g.getState()])))),r.dispatchFromDevtools&&typeof r.dispatch=="function"){let y=!1;const g=r.dispatch;r.dispatch=(...x)=>{(xxe?"production":void 0)!=="production"&&x[0].type==="__setState"&&!y&&(console.warn('[zustand devtools middleware] "__setState" action type is reserved to set state from the devtools. Avoid using it.'),y=!0),g(...x)}}return u.subscribe(y=>{var g;switch(y.type){case"ACTION":if(typeof y.payload!="string"){console.error("[zustand devtools middleware] Unsupported action format");return}return bxe(y.payload,x=>{if(x.type==="__setState"){if(a===void 0){f(x.state);return}Object.keys(x.state).length!==1&&console.error(`
5577
+ */const dNn=({containerClassName:n,...e})=>{const t=Te.useRef(null),[i,r]=Te.useState(620);return Te.useLayoutEffect(()=>{const o=()=>{if(t.current){const a=t.current.clientHeight,c=window.innerHeight;r(Math.min(Math.max(a,620),c))}};o();const s=new ResizeObserver(o);return t.current&&s.observe(t.current),window.addEventListener("resize",o),()=>{s.disconnect(),window.removeEventListener("resize",o)}},[]),ye.jsx("div",{ref:t,className:n||"rf-w-full rf-h-full",children:ye.jsx(uNn,{...e,height:i})})},hNn='*,: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-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-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-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-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-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-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-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\\/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}',tat=()=>{Te.useEffect(()=>{if(document.querySelector('style[data-styles="tscircuit-runframe"]'))return;const e=document.createElement("style");e.setAttribute("data-styles","tscircuit-runframe"),e.textContent=hNn,document.head.appendChild(e)},[])},pNn=n=>{Te.useEffect(()=>(n?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[n])},nat=n=>`hsl(${GS.indexOf(n)*137.5%360}, 70%, 50%)`,fNn=({phaseTimings:n})=>{if(!n)return null;const e=Object.values(n).reduce((t,i)=>t+i,0);return ye.jsxs("div",{className:"rf-space-y-2 rf-w-full rf-px-4",children:[ye.jsx("div",{className:"rf-relative rf-h-8 rf-flex rf-rounded-sm",children:GS.map(t=>{const i=n[t]||0,r=i/e*100;return ye.jsx("div",{className:"rf-group/bar rf-relative rf-overflow-visible",style:{width:`${r}%`,backgroundColor:nat(t)},children:ye.jsxs("div",{className:"rf-opacity-0 group-hover/bar:rf-opacity-100 rf-transition-opacity rf-absolute rf-bottom-full rf-left-1/2 rf-transform -rf-translate-x-1/2 rf-mb-2 rf-px-2 rf-py-1 rf-text-xs rf-whitespace-nowrap rf-rounded rf-bg-gray-900 rf-text-white rf-pointer-events-none",children:[t,": ",i.toFixed(1),"ms"]})},t)})}),ye.jsxs("div",{className:"rf-text-xs rf-text-gray-500",children:["Total: ",e.toFixed(2),"ms"]})]})},mNn=({renderLog:n,onRerunWithDebug:e})=>{const[t,i]=Te.useState("chronological"),[r,o]=Te.useState(""),s=[{value:"",label:"None"},{value:"DEBUG=Group_doInitialSchematicTraceRender",label:"DEBUG=Group_doInitialSchematicTraceRender"},{value:"DEBUG=Group_doInitialSchematicLayoutMatchpack",label:"DEBUG=Group_doInitialSchematicLayoutMatchpack"},{value:"DEBUG=Group_doInitialPcbLayoutPack",label:"DEBUG=Group_doInitialPcbLayoutPack"}];if(!n)return ye.jsxs("div",{className:"rf-p-4 rf-bg-gray-100 rf-rounded-md",children:[ye.jsx("div",{className:"rf-mb-4",children:"No render log, make sure this tab is open when you render"}),e&&ye.jsxs("div",{className:"rf-flex rf-gap-2 rf-items-center",children:[ye.jsx("select",{value:r,onChange:l=>o(l.target.value),className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white",children:s.map(l=>ye.jsx("option",{value:l.value,children:l.label},l.value))}),ye.jsx(H_,{onClick:()=>e(r),size:"sm",className:"rf-text-xs",children:"Rerun Render with Debug"})]})]});const a=Object.entries(n?.phaseTimings??{});t==="chronological"?a.sort((l,u)=>GS.indexOf(l[0])-GS.indexOf(u[0])):a.sort((l,u)=>u[1]-l[1]);const c=a.reduce((l,[u,d])=>l+d,0);return ye.jsxs("div",{className:"rf-bg-white",children:[ye.jsxs("div",{className:"rf-flex rf-justify-between rf-items-center rf-mb-4",children:[ye.jsx("div",{children:"Render Logs"}),ye.jsxs("div",{className:"rf-flex rf-gap-4 rf-items-center",children:[e&&ye.jsxs("div",{className:"rf-flex rf-gap-2 rf-items-center",children:[ye.jsx("select",{value:r,onChange:l=>o(l.target.value),className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white",children:s.map(l=>ye.jsx("option",{value:l.value,children:l.label},l.value))}),ye.jsx(H_,{onClick:()=>e(r),size:"sm",className:"rf-text-xs",children:"Rerun Render with Debug"})]}),ye.jsx("div",{className:"rf-flex rf-gap-2 rf-items-center",children:ye.jsxs("select",{onChange:l=>{if(l.target.value){const u=n?.debugOutputs?.find(d=>d.name===l.target.value);if(u){const d=new Blob([u.content],{type:"text/plain"}),h=URL.createObjectURL(d),f=document.createElement("a");f.href=h,f.download=`debug-${u.name}.txt`,document.body.appendChild(f),f.click(),document.body.removeChild(f),URL.revokeObjectURL(h)}l.target.value=""}},disabled:!n?.debugOutputs||n.debugOutputs.length===0,className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white disabled:rf-opacity-50 disabled:rf-cursor-not-allowed",children:[ye.jsx("option",{value:"",children:"Download Debug Output"}),n?.debugOutputs?.map(l=>ye.jsx("option",{value:l.name,children:l.name},l.name))]})}),ye.jsxs("div",{className:"rf-flex rf-text-xs rf-items-center",children:[ye.jsx("div",{className:"rf-mr-2",children:"Sort by:"}),ye.jsxs("select",{value:t,onChange:l=>i(l.target.value),className:"rf-px-2 rf-py-1 rf-border rf-rounded rf-text-xs",children:[ye.jsx("option",{value:"chronological",children:"Phase Order"}),ye.jsx("option",{value:"longest",children:"Duration"})]})]})]})]}),ye.jsx(fNn,{phaseTimings:n.phaseTimings}),ye.jsxs("table",{className:"rf-w-full rf-text-xs",children:[ye.jsx("thead",{children:ye.jsxs("tr",{children:[ye.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase Order"}),ye.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase"}),ye.jsx("th",{className:"rf-text-left rf-p-2",children:"Duration (ms)"})]})}),ye.jsx("tbody",{children:a.map(([l,u])=>ye.jsxs("tr",{children:[ye.jsx("td",{className:"rf-p-2",children:GS.indexOf(l)}),ye.jsx("td",{className:"rf-p-2",children:l}),ye.jsx("td",{className:"rf-p-2",children:ye.jsx("div",{className:"rf-w-8",children:ye.jsx("div",{className:"rf-h-2 rf-rounded-sm",style:{backgroundColor:nat(l),width:`${u/c*100}%`}})})}),ye.jsx("td",{className:"rf-p-2",children:ye.jsxs("div",{className:"rf-flex w-full",children:[ye.jsxs("span",{className:"rf-flex-grow",children:[u,"ms"]}),ye.jsxs("span",{className:"rf-text-gray-500 rf-pr-2",children:[(u/c*100).toFixed(1),"%"]})]})})]},l))})]})]})},iat=({errorMessage:n,errorStack:e,circuitJsonErrors:t})=>{Te.useEffect(()=>{if(n){const i=new Error(n);e&&(i.stack=e);try{T7.captureException(i)}catch{}}},[n,e]),Te.useEffect(()=>{if(t&&t.length>0)for(const i of t){const r=new Error(i.message||"Circuit JSON Error");i.stack&&(r.stack=i.stack);try{T7.captureException(r,{error_type:i.type})}catch{}}},[t])},rat="0.0.1061",_Nn={version:rat};function yNn(n,e){const[t,i]=Te.useState(()=>{try{const r=window.localStorage.getItem(n);return r?JSON.parse(r):e}catch(r){return console.error("Error reading from localStorage:",r),e}});return Te.useEffect(()=>{try{window.localStorage.setItem(n,JSON.stringify(t))}catch(r){console.error("Error writing to localStorage:",r)}},[n,t]),[t,i]}const xxe={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},vxe=new Map,tG=n=>{const e=vxe.get(n);return e?Object.fromEntries(Object.entries(e.stores).map(([t,i])=>[t,i.getState()])):{}},gNn=(n,e,t)=>{if(n===void 0)return{type:"untracked",connection:e.connect(t)};const i=vxe.get(t.name);if(i)return{type:"tracked",store:n,...i};const r={connection:e.connect(t),stores:{}};return vxe.set(t.name,r),{type:"tracked",store:n,...r}},oat=(n,e={})=>(t,i,r)=>{const{enabled:o,anonymousActionType:s,store:a,...c}=e;let l;try{l=(o??(xxe?"production":void 0)!=="production")&&window.__REDUX_DEVTOOLS_EXTENSION__}catch{}if(!l)return(xxe?"production":void 0)!=="production"&&o&&console.warn("[zustand devtools middleware] Please install/enable Redux devtools extension"),n(t,i,r);const{connection:u,...d}=gNn(a,l,c);let h=!0;r.setState=(y,g,x)=>{const b=t(y,g);if(!h)return b;const w=x===void 0?{type:s||"anonymous"}:typeof x=="string"?{type:x}:x;return a===void 0?(u?.send(w,i()),b):(u?.send({...w,type:`${a}/${w.type}`},{...tG(c.name),[a]:r.getState()}),b)};const f=(...y)=>{const g=h;h=!1,t(...y),h=g},m=n(r.setState,i,r);if(d.type==="untracked"?u?.init(m):(d.stores[d.store]=r,u?.init(Object.fromEntries(Object.entries(d.stores).map(([y,g])=>[y,y===d.store?m:g.getState()])))),r.dispatchFromDevtools&&typeof r.dispatch=="function"){let y=!1;const g=r.dispatch;r.dispatch=(...x)=>{(xxe?"production":void 0)!=="production"&&x[0].type==="__setState"&&!y&&(console.warn('[zustand devtools middleware] "__setState" action type is reserved to set state from the devtools. Avoid using it.'),y=!0),g(...x)}}return u.subscribe(y=>{var g;switch(y.type){case"ACTION":if(typeof y.payload!="string"){console.error("[zustand devtools middleware] Unsupported action format");return}return bxe(y.payload,x=>{if(x.type==="__setState"){if(a===void 0){f(x.state);return}Object.keys(x.state).length!==1&&console.error(`
5578
5578
  [zustand devtools middleware] Unsupported __setState action format.
5579
5579
  When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),
5580
5580
  and value of this only key should be a state object. Example: { "type": "__setState", "state": { "abc123Store": { "foo": "bar" } } }
@@ -6369,7 +6369,7 @@ ${i.stack}`),t.complete=!0,"root"in this&&this.root&&this.root.emit("asyncEffect
6369
6369
  * This source code is licensed under the MIT license found in the
6370
6370
  * LICENSE file in the root directory of this source tree.
6371
6371
  *)
6372
- */const Voi=async(n,e=10)=>{const t=encodeURIComponent(n),i=await fetch(`https://jlcsearch.tscircuit.com/api/search?limit=${e}&q=${t}`);if(!i.ok)throw new Error(`JLCPCB API error: ${i.status}`);return(await i.json()).components??[]},Goi=n=>({lcscId:n.lcsc,manufacturer:n.mfr,description:n.description,partNumber:`C${n.lcsc}`,package:n.package,price:n.price,stock:n.stock}),Yoi=async(n,e)=>{const t=await Hoi(n,{fetch:(i,r)=>fetch(`${eI}/proxy`,{...r,headers:{...r?.headers,"X-Target-Url":i.toString(),"X-Sender-Origin":r?.headers?.origin??"","X-Sender-Host":r?.headers?.host??"https://easyeda.com","X-Sender-Referer":r?.headers?.referer??"","X-Sender-User-Agent":r?.headers?.userAgent??"","X-Sender-Cookie":r?.headers?.cookie??"",...e?.headers}})});return Uoi(t)},qoi=({query:n,placeholder:e,isSearching:t,onQueryChange:i,onSubmit:r})=>{const o=Te.useCallback(s=>{s.key==="Enter"&&(s.preventDefault(),r())},[r]);return ye.jsxs("div",{className:"rf-flex rf-items-center rf-gap-2 rf-mt-4",children:[ye.jsxs("div",{className:"rf-relative rf-flex-grow",children:[ye.jsx(BQe,{className:"rf-absolute rf-left-2 rf-top-2.5 rf-h-4 rf-w-4 rf-text-muted-foreground"}),ye.jsx(nge,{placeholder:e,className:"rf-pl-8",spellCheck:!1,autoComplete:"off",value:n,onChange:s=>i(s.target.value),onKeyDown:o})]}),ye.jsx(H_,{onClick:r,disabled:t||n.trim().length<1,className:"sm:rf-px-4 rf-px-3",children:t?ye.jsx(xM,{className:"rf-h-4 rf-w-4 rf-animate-spin"}):ye.jsxs(ye.Fragment,{children:[ye.jsx(BQe,{className:"rf-h-4 rf-w-4 sm:rf-hidden"}),ye.jsx("span",{className:"rf-hidden sm:rf-inline",children:"Search"})]})})]})},Ryt=n=>{switch(n.source){case"tscircuit.com":{const e=n.package;return`tscircuit-${e.package_id??`${e.owner_github_username??"unknown"}-${e.unscoped_name??e.name??"package"}`}`}case"jlcpcb":return`jlc-${n.component.lcscId}`;case"kicad":return`kicad-${n.footprint.path}`;default:return"unknown"}},Xoi=n=>{switch(n.source){case"tscircuit.com":return n.package.unscoped_name;case"jlcpcb":return n.component.manufacturer;case"kicad":return n.footprint.qualifiedName}},Woi=n=>{switch(n.source){case"tscircuit.com":return n.package.description||(n.package.owner_github_username?`Component by ${n.package.owner_github_username}`:void 0);case"jlcpcb":return n.component.description;case"kicad":return n.footprint.description}},Zoi=n=>{switch(n.source){case"tscircuit.com":return n.package.name;case"jlcpcb":return n.component.partNumber;case"kicad":return}},Koi=({results:n,selected:e,onSelect:t,onShowDetails:i})=>{const r=e?Ryt(e):null;return ye.jsx("div",{className:"rf-divide-y",children:n.map(o=>{const s=Ryt(o),a=r===s,c=Xoi(o),l=Woi(o),u=Zoi(o),d=o.source==="jlcpcb"?o.component.stock:null;return ye.jsxs("div",{className:`rf-p-3 rf-flex rf-flex-col sm:rf-grid sm:rf-grid-cols-[1fr_auto] rf-items-start sm:rf-items-center rf-cursor-pointer hover:rf-bg-zinc-100 rf-gap-2 ${a?"rf-bg-zinc-100":""}`,onClick:()=>t(o),children:[ye.jsxs("div",{className:"rf-min-w-0 rf-overflow-hidden",children:[ye.jsx("div",{className:"rf-font-medium rf-text-sm rf-truncate",children:c}),ye.jsxs("div",{className:"rf-text-xs rf-text-zinc-500 rf-truncate",children:[u?ye.jsx("span",{className:"rf-mr-2",children:u}):null,l]})]}),o.source==="tscircuit.com"&&i?ye.jsx("div",{className:"rf-flex rf-gap-2 rf-flex-shrink-0 rf-w-full sm:rf-w-auto",children:ye.jsx(H_,{variant:"outline",size:"sm",className:"rf-text-xs rf-w-full sm:rf-w-auto",onClick:h=>{h.stopPropagation(),i(o)},children:"See Details"})}):o.source==="jlcpcb"&&d!=null?ye.jsxs("div",{className:"rf-text-xs rf-text-zinc-500 rf-font-medium rf-w-full sm:rf-w-auto sm:rf-text-right sm:rf-justify-self-end rf-whitespace-nowrap",children:[d.toLocaleString()," in stock"]}):null]},s)})})},Iyt=(n,e)=>!n?.owner_github_username||!n?.unscoped_name?null:`https://registry-api.tscircuit.com/packages/images/${n.owner_github_username}/${n.unscoped_name}/${e}.png`,Qoi=({packageResult:n,isOpen:e,onOpenChange:t,isLoading:i,details:r,previewTab:o,onPreviewTabChange:s,isSubmitting:a,onImport:c})=>{const l=n?.package??null,u=Iyt(l,"pcb"),d=Iyt(l,"schematic"),h=l?.unscoped_name?.split("/").pop()??l?.unscoped_name,f=l?.owner_github_username??void 0,m=f?`https://tscircuit.com/${f}`:void 0,y=f&&h?`https://tscircuit.com/${f}/${h}`:void 0;return ye.jsx(oG,{open:e,onOpenChange:t,children:ye.jsxs(I8,{showOverlay:!1,style:{width:"calc(100vw - 2rem)"},className:"rf-max-w-5xl !rf-overflow-y-auto rf-max-h-[90vh] rf-overflow-hidden rf-flex rf-flex-col rf-rounded-sm",children:[ye.jsx(k8,{className:"rf-pb-4 rf-border-b",children:ye.jsx("div",{className:"rf-flex rf-items-start rf-justify-between rf-gap-4",children:ye.jsxs("div",{className:"rf-flex-1 rf-min-w-0",children:[ye.jsx(N8,{className:"rf-text-xl rf-font-semibold rf-truncate",children:h}),ye.jsx(aG,{children:l?.description})]})})}),ye.jsxs("div",{className:"rf-flex-1 rf-overflow-y-auto rf-py-4 rf-space-y-6",children:[f?ye.jsxs("div",{children:[ye.jsx("span",{className:"rf-text-xs rf-font-medium rf-text-gray-500 rf-uppercase rf-tracking-wide",children:"Created by"}),ye.jsx("div",{className:"rf-mt-1 rf-text-sm rf-font-medium",children:m?ye.jsx("a",{href:m,target:"_blank",rel:"noopener noreferrer",className:"rf-text-black hover:rf-underline",children:f}):f})]}):null,ye.jsxs("div",{children:[ye.jsx("h3",{className:"rf-text-lg rf-font-semibold rf-mb-4",children:"Preview"}),ye.jsxs(OQ,{value:o,onValueChange:g=>s(g),children:[ye.jsxs(A7,{className:"rf-inline-flex rf-h-9 rf-items-center rf-justify-center rf-rounded-lg rf-bg-zinc-100 rf-p-1 rf-text-zinc-500 dark:rf-bg-zinc-800 dark:rf-text-zinc-400",children:[ye.jsx(W5,{value:"pcb",children:"PCB"}),ye.jsx(W5,{value:"schematic",children:"Schematic"})]}),ye.jsxs("div",{className:"rf-mt-4",children:[ye.jsx(Uw,{value:"pcb",className:"rf-border rf-rounded-lg rf-overflow-hidden rf-bg-gray-50",children:u?ye.jsx("img",{src:u,alt:`${h??"package"} PCB preview`,className:"rf-w-full rf-h-full rf-object-contain rf-bg-white rf-p-4"}):null}),ye.jsx(Uw,{value:"schematic",className:"rf-border rf-rounded-lg rf-overflow-hidden rf-bg-gray-50",children:d?ye.jsx("img",{src:d,alt:`${h??"package"} schematic preview`,className:"rf-w-full rf-h-full rf-object-contain rf-bg-white rf-p-4"}):null})]})]})]}),r?.ai_description?ye.jsxs("section",{children:[ye.jsx("h3",{className:"rf-text-lg rf-font-semibold rf-mb-3",children:"AI Description"}),ye.jsx("div",{className:"rf-bg-gray-50 rf-border rf-border-gray-200 rf-rounded-lg rf-p-4",children:ye.jsx("p",{className:"rf-text-sm rf-text-gray-700 rf-leading-relaxed",children:r.ai_description})})]}):null,r?.ai_usage_instructions?ye.jsxs("section",{children:[ye.jsx("h3",{className:"rf-text-lg rf-font-semibold rf-mb-3",children:"Usage Instructions"}),ye.jsx("div",{className:"rf-bg-gray-50 rf-border rf-border-gray-200 rf-rounded-lg rf-p-4",children:ye.jsx("p",{className:"rf-text-sm rf-text-gray-700 rf-leading-relaxed rf-whitespace-pre-wrap",children:r.ai_usage_instructions})})]}):null,i?ye.jsxs("div",{className:"rf-flex rf-justify-center rf-items-center rf-gap-2 rf-text-gray-500",children:[ye.jsx(xM,{className:"rf-h-4 rf-w-4 rf-animate-spin"}),ye.jsx("span",{className:"rf-text-sm",children:"Loading package details..."})]}):null]}),ye.jsxs(sG,{className:"rf-pt-4 rf-border-t rf-flex rf-flex-col sm:rf-flex-row rf-justify-between rf-gap-2",children:[ye.jsx("div",{className:"rf-flex-1",children:y?ye.jsxs(H_,{variant:"outline",size:"sm",className:"rf-gap-2 rf-w-full sm:rf-w-auto",onClick:()=>window.open(y,"_blank"),children:[ye.jsx(Cwn,{className:"rf-h-4 rf-w-4"}),"View on tscircuit.com"]}):null}),ye.jsxs("div",{className:"rf-flex rf-flex-col sm:rf-flex-row rf-gap-2",children:[ye.jsx(H_,{variant:"outline",onClick:()=>t(!1),className:"rf-order-2 sm:rf-order-1",children:"Close"}),ye.jsx(H_,{onClick:c,disabled:a,className:"rf-bg-blue-600 hover:rf-bg-blue-700",children:a?ye.jsx(xM,{className:"rf-h-4 rf-w-4 rf-animate-spin"}):"Import Component"})]})]})]})})},Joi=()=>{const[n,e]=Te.useState(null),[t,i]=Te.useState(!1),r=Te.useCallback(async(s,a)=>{i(!0);try{const c=await fetch(`https://api.tscircuit.com/packages/get?name=${encodeURIComponent(`${s}/${a}`)}`);if(!c.ok)throw new Error(`Failed to load package details: ${c.status}`);const l=await c.json();e(l.package??null)}catch(c){console.error("Failed to fetch package details",c),e(null)}finally{i(!1)}},[]),o=Te.useCallback(()=>{e(null),i(!1)},[]);return{details:n,isLoading:t,fetchDetails:r,reset:o}},esi=async n=>{const e=await fetch("https://registry-api.tscircuit.com/packages/search",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:n})});if(!e.ok)throw new Error(`tscircuit registry error: ${e.status}`);return(await e.json()).packages??[]},tsi=()=>{const[n,e]=Te.useState([]),[t,i]=Te.useState(!1),[r,o]=Te.useState(null),[s,a]=Te.useState(!1),c=Te.useCallback(async u=>{const d=u.trim();if(!d)return[];i(!0),o(null);try{const f=(await esi(d)).map(m=>({source:"tscircuit.com",package:m}));return e(f),f}catch(h){return console.error("Error searching tscircuit packages",h),e([]),o(h instanceof Error?h.message:"Failed to search tscircuit packages"),[]}finally{i(!1),a(!0)}},[]),l=Te.useCallback(()=>{e([]),i(!1),o(null),a(!1)},[]);return{results:n,isSearching:t,error:r,hasSearched:s,search:c,reset:l}},nsi=n=>{const e=n.trim();return/^C\d+/i.test(e)?e.replace(/^C/i,""):e},isi=()=>{const[n,e]=Te.useState([]),[t,i]=Te.useState(!1),[r,o]=Te.useState(null),[s,a]=Te.useState(!1),c=Te.useCallback(async u=>{const d=nsi(u);if(!d)return[];i(!0),o(null);try{const f=(await Voi(d,10)).map(m=>({source:"jlcpcb",component:Goi(m)}));return e(f),f}catch(h){return console.error("Error searching JLCPCB components",h),e([]),o(h instanceof Error?h.message:"Failed to search JLCPCB components"),[]}finally{i(!1),a(!0)}},[]),l=Te.useCallback(()=>{e([]),i(!1),o(null),a(!1)},[]);return{results:n,isSearching:t,error:r,hasSearched:s,search:c,reset:l}};function WT(n){return Array.isArray?Array.isArray(n):Oyt(n)==="[object Array]"}function rsi(n){if(typeof n=="string")return n;let e=n+"";return e=="0"&&1/n==-1/0?"-0":e}function osi(n){return n==null?"":rsi(n)}function M5(n){return typeof n=="string"}function kyt(n){return typeof n=="number"}function ssi(n){return n===!0||n===!1||asi(n)&&Oyt(n)=="[object Boolean]"}function Nyt(n){return typeof n=="object"}function asi(n){return Nyt(n)&&n!==null}function lS(n){return n!=null}function tEe(n){return!n.trim().length}function Oyt(n){return n==null?n===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(n)}const csi="Incorrect 'index' type",lsi=n=>`Invalid value for key ${n}`,usi=n=>`Pattern length exceeds max of ${n}.`,dsi=n=>`Missing ${n} property in key`,hsi=n=>`Property 'weight' in key '${n}' must be a positive integer`,Lyt=Object.prototype.hasOwnProperty;class psi{constructor(e){this._keys=[],this._keyMap={};let t=0;e.forEach(i=>{let r=Dyt(i);this._keys.push(r),this._keyMap[r.id]=r,t+=r.weight}),this._keys.forEach(i=>{i.weight/=t})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function Dyt(n){let e=null,t=null,i=null,r=1,o=null;if(M5(n)||WT(n))i=n,e=zyt(n),t=nEe(n);else{if(!Lyt.call(n,"name"))throw new Error(dsi("name"));const s=n.name;if(i=s,Lyt.call(n,"weight")&&(r=n.weight,r<=0))throw new Error(hsi(s));e=zyt(s),t=nEe(s),o=n.getFn}return{path:e,id:t,weight:r,src:i,getFn:o}}function zyt(n){return WT(n)?n:n.split(".")}function nEe(n){return WT(n)?n.join("."):n}function fsi(n,e){let t=[],i=!1;const r=(o,s,a)=>{if(lS(o))if(!s[a])t.push(o);else{let c=s[a];const l=o[c];if(!lS(l))return;if(a===s.length-1&&(M5(l)||kyt(l)||ssi(l)))t.push(osi(l));else if(WT(l)){i=!0;for(let u=0,d=l.length;u<d;u+=1)r(l[u],s,a+1)}else s.length&&r(l,s,a+1)}};return r(n,M5(e)?e.split("."):e,0),i?t:t[0]}var za={...{isCaseSensitive:!1,ignoreDiacritics:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(n,e)=>n.score===e.score?n.idx<e.idx?-1:1:n.score<e.score?-1:1},...{includeMatches:!1,findAllMatches:!1,minMatchCharLength:1},...{location:0,threshold:.6,distance:100},...{useExtendedSearch:!1,getFn:fsi,ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1}};const msi=/[^ ]+/g;function _si(n=1,e=3){const t=new Map,i=Math.pow(10,e);return{get(r){const o=r.match(msi).length;if(t.has(o))return t.get(o);const s=1/Math.pow(o,.5*n),a=parseFloat(Math.round(s*i)/i);return t.set(o,a),a},clear(){t.clear()}}}class iEe{constructor({getFn:e=za.getFn,fieldNormWeight:t=za.fieldNormWeight}={}){this.norm=_si(t,3),this.getFn=e,this.isCreated=!1,this.setIndexRecords()}setSources(e=[]){this.docs=e}setIndexRecords(e=[]){this.records=e}setKeys(e=[]){this.keys=e,this._keysMap={},e.forEach((t,i)=>{this._keysMap[t.id]=i})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,M5(this.docs[0])?this.docs.forEach((e,t)=>{this._addString(e,t)}):this.docs.forEach((e,t)=>{this._addObject(e,t)}),this.norm.clear())}add(e){const t=this.size();M5(e)?this._addString(e,t):this._addObject(e,t)}removeAt(e){this.records.splice(e,1);for(let t=e,i=this.size();t<i;t+=1)this.records[t].i-=1}getValueForItemAtKeyId(e,t){return e[this._keysMap[t]]}size(){return this.records.length}_addString(e,t){if(!lS(e)||tEe(e))return;let i={v:e,i:t,n:this.norm.get(e)};this.records.push(i)}_addObject(e,t){let i={i:t,$:{}};this.keys.forEach((r,o)=>{let s=r.getFn?r.getFn(e):this.getFn(e,r.path);if(lS(s)){if(WT(s)){let a=[];const c=[{nestedArrIndex:-1,value:s}];for(;c.length;){const{nestedArrIndex:l,value:u}=c.pop();if(lS(u))if(M5(u)&&!tEe(u)){let d={v:u,i:l,n:this.norm.get(u)};a.push(d)}else WT(u)&&u.forEach((d,h)=>{c.push({nestedArrIndex:h,value:d})})}i.$[o]=a}else if(M5(s)&&!tEe(s)){let a={v:s,n:this.norm.get(s)};i.$[o]=a}}}),this.records.push(i)}toJSON(){return{keys:this.keys,records:this.records}}}function $yt(n,e,{getFn:t=za.getFn,fieldNormWeight:i=za.fieldNormWeight}={}){const r=new iEe({getFn:t,fieldNormWeight:i});return r.setKeys(n.map(Dyt)),r.setSources(e),r.create(),r}function ysi(n,{getFn:e=za.getFn,fieldNormWeight:t=za.fieldNormWeight}={}){const{keys:i,records:r}=n,o=new iEe({getFn:e,fieldNormWeight:t});return o.setKeys(i),o.setIndexRecords(r),o}function MW(n,{errors:e=0,currentLocation:t=0,expectedLocation:i=0,distance:r=za.distance,ignoreLocation:o=za.ignoreLocation}={}){const s=e/n.length;if(o)return s;const a=Math.abs(i-t);return r?s+a/r:a?1:s}function gsi(n=[],e=za.minMatchCharLength){let t=[],i=-1,r=-1,o=0;for(let s=n.length;o<s;o+=1){let a=n[o];a&&i===-1?i=o:!a&&i!==-1&&(r=o-1,r-i+1>=e&&t.push([i,r]),i=-1)}return n[o-1]&&o-i>=e&&t.push([i,o-1]),t}const w4=32;function xsi(n,e,t,{location:i=za.location,distance:r=za.distance,threshold:o=za.threshold,findAllMatches:s=za.findAllMatches,minMatchCharLength:a=za.minMatchCharLength,includeMatches:c=za.includeMatches,ignoreLocation:l=za.ignoreLocation}={}){if(e.length>w4)throw new Error(usi(w4));const u=e.length,d=n.length,h=Math.max(0,Math.min(i,d));let f=o,m=h;const y=a>1||c,g=y?Array(d):[];let x;for(;(x=n.indexOf(e,m))>-1;){let R=MW(e,{currentLocation:x,expectedLocation:h,distance:r,ignoreLocation:l});if(f=Math.min(R,f),m=x+u,y){let M=0;for(;M<u;)g[x+M]=1,M+=1}}m=-1;let b=[],w=1,T=u+d;const k=1<<u-1;for(let R=0;R<u;R+=1){let M=0,I=T;for(;M<I;)MW(e,{errors:R,currentLocation:h+I,expectedLocation:h,distance:r,ignoreLocation:l})<=f?M=I:T=I,I=Math.floor((T-M)/2+M);T=I;let A=Math.max(1,h-I+1),B=s?d:Math.min(h+I,d)+u,N=Array(B+2);N[B+1]=(1<<R)-1;for(let X=B;X>=A;X-=1){let W=X-1,K=t[n.charAt(W)];if(y&&(g[W]=+!!K),N[X]=(N[X+1]<<1|1)&K,R&&(N[X]|=(b[X+1]|b[X])<<1|1|b[X+1]),N[X]&k&&(w=MW(e,{errors:R,currentLocation:W,expectedLocation:h,distance:r,ignoreLocation:l}),w<=f)){if(f=w,m=W,m<=h)break;A=Math.max(1,2*h-m)}}if(MW(e,{errors:R+1,currentLocation:h,expectedLocation:h,distance:r,ignoreLocation:l})>f)break;b=N}const P={isMatch:m>=0,score:Math.max(.001,w)};if(y){const R=gsi(g,a);R.length?c&&(P.indices=R):P.isMatch=!1}return P}function vsi(n){let e={};for(let t=0,i=n.length;t<i;t+=1){const r=n.charAt(t);e[r]=(e[r]||0)|1<<i-t-1}return e}const AW=String.prototype.normalize?(n=>n.normalize("NFD").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F]/g,"")):(n=>n);class Fyt{constructor(e,{location:t=za.location,threshold:i=za.threshold,distance:r=za.distance,includeMatches:o=za.includeMatches,findAllMatches:s=za.findAllMatches,minMatchCharLength:a=za.minMatchCharLength,isCaseSensitive:c=za.isCaseSensitive,ignoreDiacritics:l=za.ignoreDiacritics,ignoreLocation:u=za.ignoreLocation}={}){if(this.options={location:t,threshold:i,distance:r,includeMatches:o,findAllMatches:s,minMatchCharLength:a,isCaseSensitive:c,ignoreDiacritics:l,ignoreLocation:u},e=c?e:e.toLowerCase(),e=l?AW(e):e,this.pattern=e,this.chunks=[],!this.pattern.length)return;const d=(f,m)=>{this.chunks.push({pattern:f,alphabet:vsi(f),startIndex:m})},h=this.pattern.length;if(h>w4){let f=0;const m=h%w4,y=h-m;for(;f<y;)d(this.pattern.substr(f,w4),f),f+=w4;if(m){const g=h-w4;d(this.pattern.substr(g),g)}}else d(this.pattern,0)}searchIn(e){const{isCaseSensitive:t,ignoreDiacritics:i,includeMatches:r}=this.options;if(e=t?e:e.toLowerCase(),e=i?AW(e):e,this.pattern===e){let y={isMatch:!0,score:0};return r&&(y.indices=[[0,e.length-1]]),y}const{location:o,distance:s,threshold:a,findAllMatches:c,minMatchCharLength:l,ignoreLocation:u}=this.options;let d=[],h=0,f=!1;this.chunks.forEach(({pattern:y,alphabet:g,startIndex:x})=>{const{isMatch:b,score:w,indices:T}=xsi(e,y,g,{location:o+x,distance:s,threshold:a,findAllMatches:c,minMatchCharLength:l,includeMatches:r,ignoreLocation:u});b&&(f=!0),h+=w,b&&T&&(d=[...d,...T])});let m={isMatch:f,score:f?h/this.chunks.length:1};return f&&r&&(m.indices=d),m}}class iA{constructor(e){this.pattern=e}static isMultiMatch(e){return Uyt(e,this.multiRegex)}static isSingleMatch(e){return Uyt(e,this.singleRegex)}search(){}}function Uyt(n,e){const t=n.match(e);return t?t[1]:null}class bsi extends iA{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}class wsi extends iA{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const i=e.indexOf(this.pattern)===-1;return{isMatch:i,score:i?0:1,indices:[0,e.length-1]}}}class Ssi extends iA{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}class Esi extends iA{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}class Tsi extends iA{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class Msi extends iA{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}class Byt extends iA{constructor(e,{location:t=za.location,threshold:i=za.threshold,distance:r=za.distance,includeMatches:o=za.includeMatches,findAllMatches:s=za.findAllMatches,minMatchCharLength:a=za.minMatchCharLength,isCaseSensitive:c=za.isCaseSensitive,ignoreDiacritics:l=za.ignoreDiacritics,ignoreLocation:u=za.ignoreLocation}={}){super(e),this._bitapSearch=new Fyt(e,{location:t,threshold:i,distance:r,includeMatches:o,findAllMatches:s,minMatchCharLength:a,isCaseSensitive:c,ignoreDiacritics:l,ignoreLocation:u})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class jyt extends iA{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let t=0,i;const r=[],o=this.pattern.length;for(;(i=e.indexOf(this.pattern,t))>-1;)t=i+o,r.push([i,t-1]);const s=!!r.length;return{isMatch:s,score:s?0:1,indices:r}}}const rEe=[bsi,jyt,Ssi,Esi,Msi,Tsi,wsi,Byt],Hyt=rEe.length,Asi=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,Csi="|";function Psi(n,e={}){return n.split(Csi).map(t=>{let i=t.trim().split(Asi).filter(o=>o&&!!o.trim()),r=[];for(let o=0,s=i.length;o<s;o+=1){const a=i[o];let c=!1,l=-1;for(;!c&&++l<Hyt;){const u=rEe[l];let d=u.isMultiMatch(a);d&&(r.push(new u(d,e)),c=!0)}if(!c)for(l=-1;++l<Hyt;){const u=rEe[l];let d=u.isSingleMatch(a);if(d){r.push(new u(d,e));break}}}return r})}const Rsi=new Set([Byt.type,jyt.type]);class Isi{constructor(e,{isCaseSensitive:t=za.isCaseSensitive,ignoreDiacritics:i=za.ignoreDiacritics,includeMatches:r=za.includeMatches,minMatchCharLength:o=za.minMatchCharLength,ignoreLocation:s=za.ignoreLocation,findAllMatches:a=za.findAllMatches,location:c=za.location,threshold:l=za.threshold,distance:u=za.distance}={}){this.query=null,this.options={isCaseSensitive:t,ignoreDiacritics:i,includeMatches:r,minMatchCharLength:o,findAllMatches:a,ignoreLocation:s,location:c,threshold:l,distance:u},e=t?e:e.toLowerCase(),e=i?AW(e):e,this.pattern=e,this.query=Psi(this.pattern,this.options)}static condition(e,t){return t.useExtendedSearch}searchIn(e){const t=this.query;if(!t)return{isMatch:!1,score:1};const{includeMatches:i,isCaseSensitive:r,ignoreDiacritics:o}=this.options;e=r?e:e.toLowerCase(),e=o?AW(e):e;let s=0,a=[],c=0;for(let l=0,u=t.length;l<u;l+=1){const d=t[l];a.length=0,s=0;for(let h=0,f=d.length;h<f;h+=1){const m=d[h],{isMatch:y,indices:g,score:x}=m.search(e);if(y){if(s+=1,c+=x,i){const b=m.constructor.type;Rsi.has(b)?a=[...a,...g]:a.push(g)}}else{c=0,s=0,a.length=0;break}}if(s){let h={isMatch:!0,score:c/s};return i&&(h.indices=a),h}}return{isMatch:!1,score:1}}}const oEe=[];function ksi(...n){oEe.push(...n)}function sEe(n,e){for(let t=0,i=oEe.length;t<i;t+=1){let r=oEe[t];if(r.condition(n,e))return new r(n,e)}return new Fyt(n,e)}const CW={AND:"$and",OR:"$or"},aEe={PATH:"$path",PATTERN:"$val"},cEe=n=>!!(n[CW.AND]||n[CW.OR]),Nsi=n=>!!n[aEe.PATH],Osi=n=>!WT(n)&&Nyt(n)&&!cEe(n),Vyt=n=>({[CW.AND]:Object.keys(n).map(e=>({[e]:n[e]}))});function Gyt(n,e,{auto:t=!0}={}){const i=r=>{let o=Object.keys(r);const s=Nsi(r);if(!s&&o.length>1&&!cEe(r))return i(Vyt(r));if(Osi(r)){const c=s?r[aEe.PATH]:o[0],l=s?r[aEe.PATTERN]:r[c];if(!M5(l))throw new Error(lsi(c));const u={keyId:nEe(c),pattern:l};return t&&(u.searcher=sEe(l,e)),u}let a={children:[],operator:o[0]};return o.forEach(c=>{const l=r[c];WT(l)&&l.forEach(u=>{a.children.push(i(u))})}),a};return cEe(n)||(n=Vyt(n)),i(n)}function Lsi(n,{ignoreFieldNorm:e=za.ignoreFieldNorm}){n.forEach(t=>{let i=1;t.matches.forEach(({key:r,norm:o,score:s})=>{const a=r?r.weight:null;i*=Math.pow(s===0&&a?Number.EPSILON:s,(a||1)*(e?1:o))}),t.score=i})}function Dsi(n,e){const t=n.matches;e.matches=[],lS(t)&&t.forEach(i=>{if(!lS(i.indices)||!i.indices.length)return;const{indices:r,value:o}=i;let s={indices:r,value:o};i.key&&(s.key=i.key.src),i.idx>-1&&(s.refIndex=i.idx),e.matches.push(s)})}function zsi(n,e){e.score=n.score}function $si(n,e,{includeMatches:t=za.includeMatches,includeScore:i=za.includeScore}={}){const r=[];return t&&r.push(Dsi),i&&r.push(zsi),n.map(o=>{const{idx:s}=o,a={item:e[s],refIndex:s};return r.length&&r.forEach(c=>{c(o,a)}),a})}class jI{constructor(e,t={},i){this.options={...za,...t},this.options.useExtendedSearch,this._keyStore=new psi(this.options.keys),this.setCollection(e,i)}setCollection(e,t){if(this._docs=e,t&&!(t instanceof iEe))throw new Error(csi);this._myIndex=t||$yt(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){lS(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const t=[];for(let i=0,r=this._docs.length;i<r;i+=1){const o=this._docs[i];e(o,i)&&(this.removeAt(i),i-=1,r-=1,t.push(o))}return t}removeAt(e){this._docs.splice(e,1),this._myIndex.removeAt(e)}getIndex(){return this._myIndex}search(e,{limit:t=-1}={}){const{includeMatches:i,includeScore:r,shouldSort:o,sortFn:s,ignoreFieldNorm:a}=this.options;let c=M5(e)?M5(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return Lsi(c,{ignoreFieldNorm:a}),o&&c.sort(s),kyt(t)&&t>-1&&(c=c.slice(0,t)),$si(c,this._docs,{includeMatches:i,includeScore:r})}_searchStringList(e){const t=sEe(e,this.options),{records:i}=this._myIndex,r=[];return i.forEach(({v:o,i:s,n:a})=>{if(!lS(o))return;const{isMatch:c,score:l,indices:u}=t.searchIn(o);c&&r.push({item:o,idx:s,matches:[{score:l,value:o,norm:a,indices:u}]})}),r}_searchLogical(e){const t=Gyt(e,this.options),i=(a,c,l)=>{if(!a.children){const{keyId:d,searcher:h}=a,f=this._findMatches({key:this._keyStore.get(d),value:this._myIndex.getValueForItemAtKeyId(c,d),searcher:h});return f&&f.length?[{idx:l,item:c,matches:f}]:[]}const u=[];for(let d=0,h=a.children.length;d<h;d+=1){const f=a.children[d],m=i(f,c,l);if(m.length)u.push(...m);else if(a.operator===CW.AND)return[]}return u},r=this._myIndex.records,o={},s=[];return r.forEach(({$:a,i:c})=>{if(lS(a)){let l=i(t,a,c);l.length&&(o[c]||(o[c]={idx:c,item:a,matches:[]},s.push(o[c])),l.forEach(({matches:u})=>{o[c].matches.push(...u)}))}}),s}_searchObjectList(e){const t=sEe(e,this.options),{keys:i,records:r}=this._myIndex,o=[];return r.forEach(({$:s,i:a})=>{if(!lS(s))return;let c=[];i.forEach((l,u)=>{c.push(...this._findMatches({key:l,value:s[u],searcher:t}))}),c.length&&o.push({idx:a,item:s,matches:c})}),o}_findMatches({key:e,value:t,searcher:i}){if(!lS(t))return[];let r=[];if(WT(t))t.forEach(({v:o,i:s,n:a})=>{if(!lS(o))return;const{isMatch:c,score:l,indices:u}=i.searchIn(o);c&&r.push({score:l,key:e,value:o,idx:s,norm:a,indices:u})});else{const{v:o,n:s}=t,{isMatch:a,score:c,indices:l}=i.searchIn(o);a&&r.push({score:c,key:e,value:o,norm:s,indices:l})}return r}}jI.version="7.1.0",jI.createIndex=$yt,jI.parseIndex=ysi,jI.config=za,jI.parseQuery=Gyt,ksi(Isi);let lEe=null,EL=null,uEe=null;const Fsi=async()=>lEe||EL||(EL=fetch("https://kicad-mod-cache.tscircuit.com/kicad_files.json").then(n=>n.json()).then(n=>(lEe=n,EL=null,n)),EL),Usi=async(n,e=20)=>{const t=await Fsi();return uEe||(uEe=new jI(t)),uEe.search(n).slice(0,e).map(i=>i.item)},Bsi=n=>{const e=n.replace(".pretty/",":").replace(".kicad_mod",""),t=`kicad:${e}`;return{path:n,qualifiedName:t,description:e}},jsi=()=>{const[n,e]=Te.useState([]),[t,i]=Te.useState(!1),[r,o]=Te.useState(null),[s,a]=Te.useState(!1),c=Te.useCallback(async u=>{const d=u.trim();if(!d)return[];i(!0),o(null);try{const f=(await Usi(d,20)).map(m=>({source:"kicad",footprint:Bsi(m)}));return e(f),f}catch(h){return console.error("Error searching KiCad footprints",h),e([]),o(h instanceof Error?h.message:"Failed to search KiCad footprints"),[]}finally{i(!1),a(!0)}},[]),l=Te.useCallback(()=>{e([]),i(!1),o(null),a(!1)},[]);return{results:n,isSearching:t,error:r,hasSearched:s,search:c,reset:l}},Hsi=({onTscircuitPackageSelected:n,onJlcpcbComponentTsxLoaded:e,onKicadStringSelected:t})=>{const i=[];return n&&i.push("tscircuit.com"),e&&i.push("jlcpcb"),t&&i.push("kicad"),i},Vsi=({isOpen:n,onClose:e,jlcpcbProxyRequestHeaders:t,onKicadStringSelected:i,onTscircuitPackageSelected:r,onJlcpcbComponentTsxLoaded:o})=>{tat();const s=Te.useMemo(()=>Hsi({onKicadStringSelected:i,onTscircuitPackageSelected:r,onJlcpcbComponentTsxLoaded:o}),[i,r,o]),a=s.length>0,[c,l]=Te.useState(s[0]??"tscircuit.com"),[u,d]=Te.useState(""),[h,f]=Te.useState(null),{results:m,isSearching:y,error:g,hasSearched:x,search:b,reset:w}=tsi(),{results:T,isSearching:k,error:P,hasSearched:R,search:M,reset:I}=isi(),{results:A,isSearching:B,error:N,hasSearched:V,search:X,reset:W}=jsi(),{details:K,isLoading:te,fetchDetails:se,reset:de}=Joi(),[xe,re]=Te.useState(null),[ue,he]=Te.useState(!1),[Ae,ke]=Te.useState("pcb"),[De,Ge]=Te.useState(null),[Ne,ce]=Te.useState(!1);Te.useEffect(()=>{Ge(null)},[h]);const we=Te.useCallback(()=>{w(),I(),W(),f(null)},[I,W,w]);Te.useEffect(()=>{n||(we(),d(""),he(!1),re(null),Ge(null))},[n,we]),Te.useEffect(()=>{d(""),f(null),c==="tscircuit.com"?w():c==="jlcpcb"?I():c==="kicad"&&W()},[c,I,W,w]);const ve=Re=>{f(Re),re(Re),ke("pcb"),he(!0),de();const We=Re.package.owner_github_username,Le=Re.package.unscoped_name;if(We&&Le){const qe=Le.split("/").pop()??Le;se(We,qe)}},Ye=async()=>{u.trim()&&(f(null),c==="tscircuit.com"?await b(u):c==="jlcpcb"?await M(u):c==="kicad"&&await X(u))},et=async Re=>{try{if(Ge(null),ce(!0),Re.source==="kicad"){if(!i)throw new Error("KiCad handler not provided");await i({result:Re,footprint:Re.footprint.qualifiedName})}else if(Re.source==="jlcpcb"){if(!o)throw new Error("JLCPCB handler not provided");const We=await Yoi(Re.component.partNumber,{headers:t});await o({result:Re,tsx:We})}else if(Re.source==="tscircuit.com"){if(!r)throw new Error("tscircuit package handler not provided");const We=Re.package.owner_github_username,Le=Re.package.unscoped_name;if(!We||!Le)throw new Error("Missing package metadata");const qe=Le.split("/").pop()??Le,Je=`@tsci/${We}.${qe}`;await r({result:Re,fullPackageName:Je})}return!0}catch(We){return console.error("Failed to import component",We),Ge(We instanceof Error?We.message:"Failed to import component"),!1}finally{ce(!1)}};let at=[],Se=!1,ht=null,Qe=!1;c==="tscircuit.com"?(at=m,Se=y,ht=g,Qe=x):c==="jlcpcb"?(at=T,Se=k,ht=P,Qe=R):c==="kicad"&&(at=A,Se=B,ht=N,Qe=V);const Xe=async()=>{if(!h)return;await et(h)&&(e(),we(),d(""))},rt=Re=>{Re||e()},ze=Re=>{he(Re),Re||re(null)};return ye.jsxs(oG,{open:n,onOpenChange:rt,children:[ye.jsxs(I8,{style:{width:"calc(100vw - 2rem)"},className:"rf-rounded-sm rf-max-h-[90vh] rf-overflow-y-auto rf-flex rf-flex-col",children:[ye.jsxs(k8,{children:[ye.jsx(N8,{className:"rf-text-lg sm:rf-text-xl",children:"Import Component"}),ye.jsx(aG,{className:"rf-text-sm",children:a?"Search for components from available sources.":"Import options are disabled because no handlers were provided."})]}),a?ye.jsxs(OQ,{value:c,onValueChange:Re=>l(Re),children:[ye.jsx(A7,{className:"rf-flex rf-w-full rf-gap-2",children:s.map(Re=>ye.jsx(W5,{value:Re,className:"rf-flex-1 rf-text-xs sm:rf-text-sm",children:Oxe[Re].label},Re))}),ye.jsx(qoi,{query:u,placeholder:Oxe[c].placeholder,isSearching:Se,onQueryChange:d,onSubmit:Ye}),ye.jsx("div",{className:"rf-mt-4 rf-flex-1 rf-min-h-[200px] !rf-max-h-[40vh] !rf-overflow-y-auto rf-border rf-rounded-md",children:Se?ye.jsxs("div",{className:"rf-p-8 rf-text-center rf-text-zinc-500",children:[ye.jsx(xM,{className:"rf-h-8 rf-w-8 rf-animate-spin rf-mx-auto rf-mb-2"}),ye.jsx("p",{children:"Searching..."})]}):at.length>0?ye.jsx(Koi,{results:at,selected:h,onSelect:f,onShowDetails:c==="tscircuit.com"?ve:void 0}):ye.jsx("div",{className:"rf-p-8 rf-text-center rf-text-zinc-500",children:ht?`Error: ${ht}`:Qe?Oxe[c].emptyMessage:"Enter a search term to find components"})})]}):null,De?ye.jsx("div",{className:"rf-text-sm rf-text-red-600 rf-mt-2",children:De}):null,ye.jsxs(sG,{className:"rf-flex rf-flex-col sm:rf-flex-row rf-gap-2",children:[ye.jsx(H_,{variant:"outline",onClick:e,className:"rf-order-2 sm:rf-order-1",children:"Cancel"}),ye.jsx(H_,{onClick:Xe,disabled:!h||Ne,className:"rf-order-1 sm:rf-order-2",children:Ne?ye.jsx(xM,{className:"rf-h-4 rf-w-4 rf-animate-spin"}):"Import"})]})]}),ye.jsx(Qoi,{packageResult:xe,isOpen:ue,onOpenChange:ze,isLoading:te,details:K,previewTab:Ae,onPreviewTabChange:Re=>ke(Re),isSubmitting:Ne,onImport:()=>{xe&&et(xe).then(Re=>{Re&&(he(!1),e(),we(),d(""))})}})]})};let Gsi={data:""},Ysi=n=>typeof window=="object"?((n?n.querySelector("#_goober"):window._goober)||Object.assign((n||document.head).appendChild(document.createElement("style")),{innerHTML:" ",id:"_goober"})).firstChild:n||Gsi,qsi=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,Xsi=/\/\*[^]*?\*\/| +/g,Yyt=/\n+/g,rA=(n,e)=>{let t="",i="",r="";for(let o in n){let s=n[o];o[0]=="@"?o[1]=="i"?t=o+" "+s+";":i+=o[1]=="f"?rA(s,o):o+"{"+rA(s,o[1]=="k"?"":e)+"}":typeof s=="object"?i+=rA(s,e?e.replace(/([^,])+/g,a=>o.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,c=>/&/.test(c)?c.replace(/&/g,a):a?a+" "+c:c)):o):s!=null&&(o=/^--/.test(o)?o:o.replace(/[A-Z]/g,"-$&").toLowerCase(),r+=rA.p?rA.p(o,s):o+":"+s+";")}return t+(e&&r?e+"{"+r+"}":r)+i},ZT={},qyt=n=>{if(typeof n=="object"){let e="";for(let t in n)e+=t+qyt(n[t]);return e}return n},Wsi=(n,e,t,i,r)=>{let o=qyt(n),s=ZT[o]||(ZT[o]=(c=>{let l=0,u=11;for(;l<c.length;)u=101*u+c.charCodeAt(l++)>>>0;return"go"+u})(o));if(!ZT[s]){let c=o!==n?n:(l=>{let u,d,h=[{}];for(;u=qsi.exec(l.replace(Xsi,""));)u[4]?h.shift():u[3]?(d=u[3].replace(Yyt," ").trim(),h.unshift(h[0][d]=h[0][d]||{})):h[0][u[1]]=u[2].replace(Yyt," ").trim();return h[0]})(n);ZT[s]=rA(r?{["@keyframes "+s]:c}:c,t?"":"."+s)}let a=t&&ZT.g?ZT.g:null;return t&&(ZT.g=ZT[s]),((c,l,u,d)=>{d?l.data=l.data.replace(d,c):l.data.indexOf(c)===-1&&(l.data=u?c+l.data:l.data+c)})(ZT[s],e,i,a),s},Zsi=(n,e,t)=>n.reduce((i,r,o)=>{let s=e[o];if(s&&s.call){let a=s(t),c=a&&a.props&&a.props.className||/^go/.test(a)&&a;s=c?"."+c:a&&typeof a=="object"?a.props?"":rA(a,""):a===!1?"":a}return i+r+(s??"")},"");function PW(n){let e=this||{},t=n.call?n(e.p):n;return Wsi(t.unshift?t.raw?Zsi(t,[].slice.call(arguments,1),e.p):t.reduce((i,r)=>Object.assign(i,r&&r.call?r(e.p):r),{}):t,Ysi(e.target),e.g,e.o,e.k)}let Xyt,dEe,hEe;PW.bind({g:1});let KT=PW.bind({k:1});function Ksi(n,e,t,i){rA.p=e,Xyt=n,dEe=t,hEe=i}function oA(n,e){let t=this||{};return function(){let i=arguments;function r(o,s){let a=Object.assign({},o),c=a.className||r.className;t.p=Object.assign({theme:dEe&&dEe()},a),t.o=/ *go\d+/.test(c),a.className=PW.apply(t,i)+(c?" "+c:"");let l=n;return n[0]&&(l=a.as||n,delete a.as),hEe&&l[0]&&hEe(a),Xyt(l,a)}return r}}var Qsi=n=>typeof n=="function",RW=(n,e)=>Qsi(n)?n(e):n,Jsi=(()=>{let n=0;return()=>(++n).toString()})(),Wyt=(()=>{let n;return()=>{if(n===void 0&&typeof window<"u"){let e=matchMedia("(prefers-reduced-motion: reduce)");n=!e||e.matches}return n}})(),eai=20,pEe="default",Zyt=(n,e)=>{let{toastLimit:t}=n.settings;switch(e.type){case 0:return{...n,toasts:[e.toast,...n.toasts].slice(0,t)};case 1:return{...n,toasts:n.toasts.map(s=>s.id===e.toast.id?{...s,...e.toast}:s)};case 2:let{toast:i}=e;return Zyt(n,{type:n.toasts.find(s=>s.id===i.id)?1:0,toast:i});case 3:let{toastId:r}=e;return{...n,toasts:n.toasts.map(s=>s.id===r||r===void 0?{...s,dismissed:!0,visible:!1}:s)};case 4:return e.toastId===void 0?{...n,toasts:[]}:{...n,toasts:n.toasts.filter(s=>s.id!==e.toastId)};case 5:return{...n,pausedAt:e.time};case 6:let o=e.time-(n.pausedAt||0);return{...n,pausedAt:void 0,toasts:n.toasts.map(s=>({...s,pauseDuration:s.pauseDuration+o}))}}},IW=[],Kyt={toasts:[],pausedAt:void 0,settings:{toastLimit:eai}},A5={},Qyt=(n,e=pEe)=>{A5[e]=Zyt(A5[e]||Kyt,n),IW.forEach(([t,i])=>{t===e&&i(A5[e])})},Jyt=n=>Object.keys(A5).forEach(e=>Qyt(n,e)),tai=n=>Object.keys(A5).find(e=>A5[e].toasts.some(t=>t.id===n)),kW=(n=pEe)=>e=>{Qyt(e,n)},nai={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},iai=(n={},e=pEe)=>{let[t,i]=Te.useState(A5[e]||Kyt),r=Te.useRef(A5[e]);Te.useEffect(()=>(r.current!==A5[e]&&i(A5[e]),IW.push([e,i]),()=>{let s=IW.findIndex(([a])=>a===e);s>-1&&IW.splice(s,1)}),[e]);let o=t.toasts.map(s=>{var a,c,l;return{...n,...n[s.type],...s,removeDelay:s.removeDelay||((a=n[s.type])==null?void 0:a.removeDelay)||n?.removeDelay,duration:s.duration||((c=n[s.type])==null?void 0:c.duration)||n?.duration||nai[s.type],style:{...n.style,...(l=n[s.type])==null?void 0:l.style,...s.style}}});return{...t,toasts:o}},rai=(n,e="blank",t)=>({createdAt:Date.now(),visible:!0,dismissed:!1,type:e,ariaProps:{role:"status","aria-live":"polite"},message:n,pauseDuration:0,...t,id:t?.id||Jsi()}),TL=n=>(e,t)=>{let i=rai(e,n,t);return kW(i.toasterId||tai(i.id))({type:2,toast:i}),i.id},Qp=(n,e)=>TL("blank")(n,e);Qp.error=TL("error"),Qp.success=TL("success"),Qp.loading=TL("loading"),Qp.custom=TL("custom"),Qp.dismiss=(n,e)=>{let t={type:3,toastId:n};e?kW(e)(t):Jyt(t)},Qp.dismissAll=n=>Qp.dismiss(void 0,n),Qp.remove=(n,e)=>{let t={type:4,toastId:n};e?kW(e)(t):Jyt(t)},Qp.removeAll=n=>Qp.remove(void 0,n),Qp.promise=(n,e,t)=>{let i=Qp.loading(e.loading,{...t,...t?.loading});return typeof n=="function"&&(n=n()),n.then(r=>{let o=e.success?RW(e.success,r):void 0;return o?Qp.success(o,{id:i,...t,...t?.success}):Qp.dismiss(i),r}).catch(r=>{let o=e.error?RW(e.error,r):void 0;o?Qp.error(o,{id:i,...t,...t?.error}):Qp.dismiss(i)}),n};var oai=1e3,sai=(n,e="default")=>{let{toasts:t,pausedAt:i}=iai(n,e),r=Te.useRef(new Map).current,o=Te.useCallback((d,h=oai)=>{if(r.has(d))return;let f=setTimeout(()=>{r.delete(d),s({type:4,toastId:d})},h);r.set(d,f)},[]);Te.useEffect(()=>{if(i)return;let d=Date.now(),h=t.map(f=>{if(f.duration===1/0)return;let m=(f.duration||0)+f.pauseDuration-(d-f.createdAt);if(m<0){f.visible&&Qp.dismiss(f.id);return}return setTimeout(()=>Qp.dismiss(f.id,e),m)});return()=>{h.forEach(f=>f&&clearTimeout(f))}},[t,i,e]);let s=Te.useCallback(kW(e),[e]),a=Te.useCallback(()=>{s({type:5,time:Date.now()})},[s]),c=Te.useCallback((d,h)=>{s({type:1,toast:{id:d,height:h}})},[s]),l=Te.useCallback(()=>{i&&s({type:6,time:Date.now()})},[i,s]),u=Te.useCallback((d,h)=>{let{reverseOrder:f=!1,gutter:m=8,defaultPosition:y}=h||{},g=t.filter(w=>(w.position||y)===(d.position||y)&&w.height),x=g.findIndex(w=>w.id===d.id),b=g.filter((w,T)=>T<x&&w.visible).length;return g.filter(w=>w.visible).slice(...f?[b+1]:[0,b]).reduce((w,T)=>w+(T.height||0)+m,0)},[t]);return Te.useEffect(()=>{t.forEach(d=>{if(d.dismissed)o(d.id,d.removeDelay);else{let h=r.get(d.id);h&&(clearTimeout(h),r.delete(d.id))}})},[t,o]),{toasts:t,handlers:{updateHeight:c,startPause:a,endPause:l,calculateOffset:u}}},aai=KT`
6372
+ */const Voi=async(n,e=10)=>{const t=encodeURIComponent(n),i=await fetch(`https://jlcsearch.tscircuit.com/api/search?limit=${e}&q=${t}`);if(!i.ok)throw new Error(`JLCPCB API error: ${i.status}`);return(await i.json()).components??[]},Goi=n=>({lcscId:n.lcsc,manufacturer:n.mfr,description:n.description,partNumber:`C${n.lcsc}`,package:n.package,price:n.price,stock:n.stock}),Yoi=async(n,e)=>{const t=await Hoi(n,{fetch:(i,r)=>fetch(`${eI}/proxy`,{...r,headers:{...r?.headers,"X-Target-Url":i.toString(),"X-Sender-Origin":r?.headers?.origin??"","X-Sender-Host":r?.headers?.host??"https://easyeda.com","X-Sender-Referer":r?.headers?.referer??"","X-Sender-User-Agent":r?.headers?.userAgent??"","X-Sender-Cookie":r?.headers?.cookie??"",...e?.headers}})});return Uoi(t)},qoi=({query:n,placeholder:e,isSearching:t,onQueryChange:i,onSubmit:r})=>{const o=Te.useCallback(s=>{s.key==="Enter"&&(s.preventDefault(),r())},[r]);return ye.jsxs("div",{className:"rf-flex rf-items-center rf-gap-2 rf-mt-4",children:[ye.jsxs("div",{className:"rf-relative rf-flex-grow",children:[ye.jsx(BQe,{className:"rf-absolute rf-left-2 rf-top-2.5 rf-h-4 rf-w-4 rf-text-muted-foreground"}),ye.jsx(nge,{placeholder:e,className:"rf-pl-8",spellCheck:!1,autoComplete:"off",value:n,onChange:s=>i(s.target.value),onKeyDown:o})]}),ye.jsx(H_,{onClick:r,disabled:t||n.trim().length<1,className:"sm:rf-px-4 rf-px-3",children:t?ye.jsx(xM,{className:"rf-h-4 rf-w-4 rf-animate-spin"}):ye.jsxs(ye.Fragment,{children:[ye.jsx(BQe,{className:"rf-h-4 rf-w-4 sm:rf-hidden"}),ye.jsx("span",{className:"rf-hidden sm:rf-inline",children:"Search"})]})})]})},Ryt=n=>{switch(n.source){case"tscircuit.com":{const e=n.package;return`tscircuit-${e.package_id??`${e.owner_github_username??"unknown"}-${e.unscoped_name??e.name??"package"}`}`}case"jlcpcb":return`jlc-${n.component.lcscId}`;case"kicad":return`kicad-${n.footprint.path}`;default:return"unknown"}},Xoi=n=>{switch(n.source){case"tscircuit.com":return n.package.unscoped_name;case"jlcpcb":return n.component.manufacturer;case"kicad":return n.footprint.qualifiedName}},Woi=n=>{switch(n.source){case"tscircuit.com":return n.package.description||(n.package.owner_github_username?`Component by ${n.package.owner_github_username}`:void 0);case"jlcpcb":return n.component.description;case"kicad":return n.footprint.description}},Zoi=n=>{switch(n.source){case"tscircuit.com":return n.package.name;case"jlcpcb":return n.component.partNumber;case"kicad":return}},Koi=({results:n,selected:e,onSelect:t,onShowDetails:i})=>{const r=e?Ryt(e):null;return ye.jsx("div",{className:"rf-divide-y",children:n.map(o=>{const s=Ryt(o),a=r===s,c=Xoi(o),l=Woi(o),u=Zoi(o),d=o.source==="jlcpcb"?o.component.stock:null;return ye.jsxs("div",{className:`rf-p-3 rf-flex rf-flex-col sm:rf-grid sm:rf-grid-cols-[1fr_auto] rf-items-start sm:rf-items-center rf-cursor-pointer hover:rf-bg-zinc-100 rf-gap-2 ${a?"rf-bg-zinc-100":""}`,onClick:()=>t(o),children:[ye.jsxs("div",{className:"rf-min-w-0 rf-overflow-hidden rf-w-full",children:[ye.jsxs("div",{className:"rf-flex rf-items-start rf-gap-2",children:[ye.jsx("div",{className:"rf-font-medium rf-text-sm rf-truncate rf-flex-1 rf-min-w-0",children:c}),o.source==="jlcpcb"&&d!=null?ye.jsxs("div",{className:"rf-text-xs rf-text-zinc-500 rf-font-medium rf-whitespace-nowrap sm:rf-hidden",children:[d.toLocaleString()," in stock"]}):null]}),ye.jsxs("div",{className:"rf-text-xs rf-text-zinc-500 rf-truncate",children:[u?ye.jsx("span",{className:"rf-mr-2",children:u}):null,l]})]}),o.source==="tscircuit.com"&&i?ye.jsx("div",{className:"rf-flex rf-gap-2 rf-flex-shrink-0 rf-w-full sm:rf-w-auto",children:ye.jsx(H_,{variant:"outline",size:"sm",className:"rf-text-xs rf-w-full sm:rf-w-auto",onClick:h=>{h.stopPropagation(),i(o)},children:"See Details"})}):o.source==="jlcpcb"&&d!=null?ye.jsxs("div",{className:"rf-hidden sm:rf-block rf-text-xs rf-text-zinc-500 rf-font-medium rf-w-full sm:rf-w-auto sm:rf-text-right sm:rf-justify-self-end rf-whitespace-nowrap",children:[d.toLocaleString()," in stock"]}):null]},s)})})},Iyt=(n,e)=>!n?.owner_github_username||!n?.unscoped_name?null:`https://registry-api.tscircuit.com/packages/images/${n.owner_github_username}/${n.unscoped_name}/${e}.png`,Qoi=({packageResult:n,isOpen:e,onOpenChange:t,isLoading:i,details:r,previewTab:o,onPreviewTabChange:s,isSubmitting:a,onImport:c})=>{const l=n?.package??null,u=Iyt(l,"pcb"),d=Iyt(l,"schematic"),h=l?.unscoped_name?.split("/").pop()??l?.unscoped_name,f=l?.owner_github_username??void 0,m=f?`https://tscircuit.com/${f}`:void 0,y=f&&h?`https://tscircuit.com/${f}/${h}`:void 0;return ye.jsx(oG,{open:e,onOpenChange:t,children:ye.jsxs(I8,{showOverlay:!1,style:{width:"calc(100vw - 2rem)"},className:"rf-max-w-5xl !rf-overflow-y-auto rf-max-h-[90vh] rf-overflow-hidden rf-flex rf-flex-col rf-rounded-sm",children:[ye.jsx(k8,{className:"rf-pb-4 rf-border-b",children:ye.jsx("div",{className:"rf-flex rf-items-start rf-justify-between rf-gap-4",children:ye.jsxs("div",{className:"rf-flex-1 rf-min-w-0",children:[ye.jsx(N8,{className:"rf-text-xl rf-font-semibold rf-truncate",children:h}),ye.jsx(aG,{children:l?.description})]})})}),ye.jsxs("div",{className:"rf-flex-1 rf-overflow-y-auto rf-py-4 rf-space-y-6",children:[f?ye.jsxs("div",{children:[ye.jsx("span",{className:"rf-text-xs rf-font-medium rf-text-gray-500 rf-uppercase rf-tracking-wide",children:"Created by"}),ye.jsx("div",{className:"rf-mt-1 rf-text-sm rf-font-medium",children:m?ye.jsx("a",{href:m,target:"_blank",rel:"noopener noreferrer",className:"rf-text-black hover:rf-underline",children:f}):f})]}):null,ye.jsxs("div",{children:[ye.jsx("h3",{className:"rf-text-lg rf-font-semibold rf-mb-4",children:"Preview"}),ye.jsxs(OQ,{value:o,onValueChange:g=>s(g),children:[ye.jsxs(A7,{className:"rf-inline-flex rf-h-9 rf-items-center rf-justify-center rf-rounded-lg rf-bg-zinc-100 rf-p-1 rf-text-zinc-500 dark:rf-bg-zinc-800 dark:rf-text-zinc-400",children:[ye.jsx(W5,{value:"pcb",children:"PCB"}),ye.jsx(W5,{value:"schematic",children:"Schematic"})]}),ye.jsxs("div",{className:"rf-mt-4",children:[ye.jsx(Uw,{value:"pcb",className:"rf-border rf-rounded-lg rf-overflow-hidden rf-bg-gray-50",children:u?ye.jsx("img",{src:u,alt:`${h??"package"} PCB preview`,className:"rf-w-full rf-h-full rf-object-contain rf-bg-white rf-p-4"}):null}),ye.jsx(Uw,{value:"schematic",className:"rf-border rf-rounded-lg rf-overflow-hidden rf-bg-gray-50",children:d?ye.jsx("img",{src:d,alt:`${h??"package"} schematic preview`,className:"rf-w-full rf-h-full rf-object-contain rf-bg-white rf-p-4"}):null})]})]})]}),r?.ai_description?ye.jsxs("section",{children:[ye.jsx("h3",{className:"rf-text-lg rf-font-semibold rf-mb-3",children:"AI Description"}),ye.jsx("div",{className:"rf-bg-gray-50 rf-border rf-border-gray-200 rf-rounded-lg rf-p-4",children:ye.jsx("p",{className:"rf-text-sm rf-text-gray-700 rf-leading-relaxed",children:r.ai_description})})]}):null,r?.ai_usage_instructions?ye.jsxs("section",{children:[ye.jsx("h3",{className:"rf-text-lg rf-font-semibold rf-mb-3",children:"Usage Instructions"}),ye.jsx("div",{className:"rf-bg-gray-50 rf-border rf-border-gray-200 rf-rounded-lg rf-p-4",children:ye.jsx("p",{className:"rf-text-sm rf-text-gray-700 rf-leading-relaxed rf-whitespace-pre-wrap",children:r.ai_usage_instructions})})]}):null,i?ye.jsxs("div",{className:"rf-flex rf-justify-center rf-items-center rf-gap-2 rf-text-gray-500",children:[ye.jsx(xM,{className:"rf-h-4 rf-w-4 rf-animate-spin"}),ye.jsx("span",{className:"rf-text-sm",children:"Loading package details..."})]}):null]}),ye.jsxs(sG,{className:"rf-pt-4 rf-border-t rf-flex rf-flex-col sm:rf-flex-row rf-justify-between rf-gap-2",children:[ye.jsx("div",{className:"rf-flex-1",children:y?ye.jsxs(H_,{variant:"outline",size:"sm",className:"rf-gap-2 rf-w-full sm:rf-w-auto",onClick:()=>window.open(y,"_blank"),children:[ye.jsx(Cwn,{className:"rf-h-4 rf-w-4"}),"View on tscircuit.com"]}):null}),ye.jsxs("div",{className:"rf-flex rf-flex-col sm:rf-flex-row rf-gap-2",children:[ye.jsx(H_,{variant:"outline",onClick:()=>t(!1),className:"rf-order-2 sm:rf-order-1",children:"Close"}),ye.jsx(H_,{onClick:c,disabled:a,className:"rf-bg-blue-600 hover:rf-bg-blue-700",children:a?ye.jsx(xM,{className:"rf-h-4 rf-w-4 rf-animate-spin"}):"Import Component"})]})]})]})})},Joi=()=>{const[n,e]=Te.useState(null),[t,i]=Te.useState(!1),r=Te.useCallback(async(s,a)=>{i(!0);try{const c=await fetch(`https://api.tscircuit.com/packages/get?name=${encodeURIComponent(`${s}/${a}`)}`);if(!c.ok)throw new Error(`Failed to load package details: ${c.status}`);const l=await c.json();e(l.package??null)}catch(c){console.error("Failed to fetch package details",c),e(null)}finally{i(!1)}},[]),o=Te.useCallback(()=>{e(null),i(!1)},[]);return{details:n,isLoading:t,fetchDetails:r,reset:o}},esi=async n=>{const e=await fetch("https://registry-api.tscircuit.com/packages/search",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:n})});if(!e.ok)throw new Error(`tscircuit registry error: ${e.status}`);return(await e.json()).packages??[]},tsi=()=>{const[n,e]=Te.useState([]),[t,i]=Te.useState(!1),[r,o]=Te.useState(null),[s,a]=Te.useState(!1),c=Te.useCallback(async u=>{const d=u.trim();if(!d)return[];i(!0),o(null);try{const f=(await esi(d)).map(m=>({source:"tscircuit.com",package:m}));return e(f),f}catch(h){return console.error("Error searching tscircuit packages",h),e([]),o(h instanceof Error?h.message:"Failed to search tscircuit packages"),[]}finally{i(!1),a(!0)}},[]),l=Te.useCallback(()=>{e([]),i(!1),o(null),a(!1)},[]);return{results:n,isSearching:t,error:r,hasSearched:s,search:c,reset:l}},nsi=n=>{const e=n.trim();return/^C\d+/i.test(e)?e.replace(/^C/i,""):e},isi=()=>{const[n,e]=Te.useState([]),[t,i]=Te.useState(!1),[r,o]=Te.useState(null),[s,a]=Te.useState(!1),c=Te.useCallback(async u=>{const d=nsi(u);if(!d)return[];i(!0),o(null);try{const f=(await Voi(d,10)).map(m=>({source:"jlcpcb",component:Goi(m)}));return e(f),f}catch(h){return console.error("Error searching JLCPCB components",h),e([]),o(h instanceof Error?h.message:"Failed to search JLCPCB components"),[]}finally{i(!1),a(!0)}},[]),l=Te.useCallback(()=>{e([]),i(!1),o(null),a(!1)},[]);return{results:n,isSearching:t,error:r,hasSearched:s,search:c,reset:l}};function WT(n){return Array.isArray?Array.isArray(n):Oyt(n)==="[object Array]"}function rsi(n){if(typeof n=="string")return n;let e=n+"";return e=="0"&&1/n==-1/0?"-0":e}function osi(n){return n==null?"":rsi(n)}function M5(n){return typeof n=="string"}function kyt(n){return typeof n=="number"}function ssi(n){return n===!0||n===!1||asi(n)&&Oyt(n)=="[object Boolean]"}function Nyt(n){return typeof n=="object"}function asi(n){return Nyt(n)&&n!==null}function lS(n){return n!=null}function tEe(n){return!n.trim().length}function Oyt(n){return n==null?n===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(n)}const csi="Incorrect 'index' type",lsi=n=>`Invalid value for key ${n}`,usi=n=>`Pattern length exceeds max of ${n}.`,dsi=n=>`Missing ${n} property in key`,hsi=n=>`Property 'weight' in key '${n}' must be a positive integer`,Lyt=Object.prototype.hasOwnProperty;class psi{constructor(e){this._keys=[],this._keyMap={};let t=0;e.forEach(i=>{let r=Dyt(i);this._keys.push(r),this._keyMap[r.id]=r,t+=r.weight}),this._keys.forEach(i=>{i.weight/=t})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function Dyt(n){let e=null,t=null,i=null,r=1,o=null;if(M5(n)||WT(n))i=n,e=zyt(n),t=nEe(n);else{if(!Lyt.call(n,"name"))throw new Error(dsi("name"));const s=n.name;if(i=s,Lyt.call(n,"weight")&&(r=n.weight,r<=0))throw new Error(hsi(s));e=zyt(s),t=nEe(s),o=n.getFn}return{path:e,id:t,weight:r,src:i,getFn:o}}function zyt(n){return WT(n)?n:n.split(".")}function nEe(n){return WT(n)?n.join("."):n}function fsi(n,e){let t=[],i=!1;const r=(o,s,a)=>{if(lS(o))if(!s[a])t.push(o);else{let c=s[a];const l=o[c];if(!lS(l))return;if(a===s.length-1&&(M5(l)||kyt(l)||ssi(l)))t.push(osi(l));else if(WT(l)){i=!0;for(let u=0,d=l.length;u<d;u+=1)r(l[u],s,a+1)}else s.length&&r(l,s,a+1)}};return r(n,M5(e)?e.split("."):e,0),i?t:t[0]}var za={...{isCaseSensitive:!1,ignoreDiacritics:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(n,e)=>n.score===e.score?n.idx<e.idx?-1:1:n.score<e.score?-1:1},...{includeMatches:!1,findAllMatches:!1,minMatchCharLength:1},...{location:0,threshold:.6,distance:100},...{useExtendedSearch:!1,getFn:fsi,ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1}};const msi=/[^ ]+/g;function _si(n=1,e=3){const t=new Map,i=Math.pow(10,e);return{get(r){const o=r.match(msi).length;if(t.has(o))return t.get(o);const s=1/Math.pow(o,.5*n),a=parseFloat(Math.round(s*i)/i);return t.set(o,a),a},clear(){t.clear()}}}class iEe{constructor({getFn:e=za.getFn,fieldNormWeight:t=za.fieldNormWeight}={}){this.norm=_si(t,3),this.getFn=e,this.isCreated=!1,this.setIndexRecords()}setSources(e=[]){this.docs=e}setIndexRecords(e=[]){this.records=e}setKeys(e=[]){this.keys=e,this._keysMap={},e.forEach((t,i)=>{this._keysMap[t.id]=i})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,M5(this.docs[0])?this.docs.forEach((e,t)=>{this._addString(e,t)}):this.docs.forEach((e,t)=>{this._addObject(e,t)}),this.norm.clear())}add(e){const t=this.size();M5(e)?this._addString(e,t):this._addObject(e,t)}removeAt(e){this.records.splice(e,1);for(let t=e,i=this.size();t<i;t+=1)this.records[t].i-=1}getValueForItemAtKeyId(e,t){return e[this._keysMap[t]]}size(){return this.records.length}_addString(e,t){if(!lS(e)||tEe(e))return;let i={v:e,i:t,n:this.norm.get(e)};this.records.push(i)}_addObject(e,t){let i={i:t,$:{}};this.keys.forEach((r,o)=>{let s=r.getFn?r.getFn(e):this.getFn(e,r.path);if(lS(s)){if(WT(s)){let a=[];const c=[{nestedArrIndex:-1,value:s}];for(;c.length;){const{nestedArrIndex:l,value:u}=c.pop();if(lS(u))if(M5(u)&&!tEe(u)){let d={v:u,i:l,n:this.norm.get(u)};a.push(d)}else WT(u)&&u.forEach((d,h)=>{c.push({nestedArrIndex:h,value:d})})}i.$[o]=a}else if(M5(s)&&!tEe(s)){let a={v:s,n:this.norm.get(s)};i.$[o]=a}}}),this.records.push(i)}toJSON(){return{keys:this.keys,records:this.records}}}function $yt(n,e,{getFn:t=za.getFn,fieldNormWeight:i=za.fieldNormWeight}={}){const r=new iEe({getFn:t,fieldNormWeight:i});return r.setKeys(n.map(Dyt)),r.setSources(e),r.create(),r}function ysi(n,{getFn:e=za.getFn,fieldNormWeight:t=za.fieldNormWeight}={}){const{keys:i,records:r}=n,o=new iEe({getFn:e,fieldNormWeight:t});return o.setKeys(i),o.setIndexRecords(r),o}function MW(n,{errors:e=0,currentLocation:t=0,expectedLocation:i=0,distance:r=za.distance,ignoreLocation:o=za.ignoreLocation}={}){const s=e/n.length;if(o)return s;const a=Math.abs(i-t);return r?s+a/r:a?1:s}function gsi(n=[],e=za.minMatchCharLength){let t=[],i=-1,r=-1,o=0;for(let s=n.length;o<s;o+=1){let a=n[o];a&&i===-1?i=o:!a&&i!==-1&&(r=o-1,r-i+1>=e&&t.push([i,r]),i=-1)}return n[o-1]&&o-i>=e&&t.push([i,o-1]),t}const w4=32;function xsi(n,e,t,{location:i=za.location,distance:r=za.distance,threshold:o=za.threshold,findAllMatches:s=za.findAllMatches,minMatchCharLength:a=za.minMatchCharLength,includeMatches:c=za.includeMatches,ignoreLocation:l=za.ignoreLocation}={}){if(e.length>w4)throw new Error(usi(w4));const u=e.length,d=n.length,h=Math.max(0,Math.min(i,d));let f=o,m=h;const y=a>1||c,g=y?Array(d):[];let x;for(;(x=n.indexOf(e,m))>-1;){let R=MW(e,{currentLocation:x,expectedLocation:h,distance:r,ignoreLocation:l});if(f=Math.min(R,f),m=x+u,y){let M=0;for(;M<u;)g[x+M]=1,M+=1}}m=-1;let b=[],w=1,T=u+d;const k=1<<u-1;for(let R=0;R<u;R+=1){let M=0,I=T;for(;M<I;)MW(e,{errors:R,currentLocation:h+I,expectedLocation:h,distance:r,ignoreLocation:l})<=f?M=I:T=I,I=Math.floor((T-M)/2+M);T=I;let A=Math.max(1,h-I+1),B=s?d:Math.min(h+I,d)+u,N=Array(B+2);N[B+1]=(1<<R)-1;for(let X=B;X>=A;X-=1){let W=X-1,K=t[n.charAt(W)];if(y&&(g[W]=+!!K),N[X]=(N[X+1]<<1|1)&K,R&&(N[X]|=(b[X+1]|b[X])<<1|1|b[X+1]),N[X]&k&&(w=MW(e,{errors:R,currentLocation:W,expectedLocation:h,distance:r,ignoreLocation:l}),w<=f)){if(f=w,m=W,m<=h)break;A=Math.max(1,2*h-m)}}if(MW(e,{errors:R+1,currentLocation:h,expectedLocation:h,distance:r,ignoreLocation:l})>f)break;b=N}const P={isMatch:m>=0,score:Math.max(.001,w)};if(y){const R=gsi(g,a);R.length?c&&(P.indices=R):P.isMatch=!1}return P}function vsi(n){let e={};for(let t=0,i=n.length;t<i;t+=1){const r=n.charAt(t);e[r]=(e[r]||0)|1<<i-t-1}return e}const AW=String.prototype.normalize?(n=>n.normalize("NFD").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F]/g,"")):(n=>n);class Fyt{constructor(e,{location:t=za.location,threshold:i=za.threshold,distance:r=za.distance,includeMatches:o=za.includeMatches,findAllMatches:s=za.findAllMatches,minMatchCharLength:a=za.minMatchCharLength,isCaseSensitive:c=za.isCaseSensitive,ignoreDiacritics:l=za.ignoreDiacritics,ignoreLocation:u=za.ignoreLocation}={}){if(this.options={location:t,threshold:i,distance:r,includeMatches:o,findAllMatches:s,minMatchCharLength:a,isCaseSensitive:c,ignoreDiacritics:l,ignoreLocation:u},e=c?e:e.toLowerCase(),e=l?AW(e):e,this.pattern=e,this.chunks=[],!this.pattern.length)return;const d=(f,m)=>{this.chunks.push({pattern:f,alphabet:vsi(f),startIndex:m})},h=this.pattern.length;if(h>w4){let f=0;const m=h%w4,y=h-m;for(;f<y;)d(this.pattern.substr(f,w4),f),f+=w4;if(m){const g=h-w4;d(this.pattern.substr(g),g)}}else d(this.pattern,0)}searchIn(e){const{isCaseSensitive:t,ignoreDiacritics:i,includeMatches:r}=this.options;if(e=t?e:e.toLowerCase(),e=i?AW(e):e,this.pattern===e){let y={isMatch:!0,score:0};return r&&(y.indices=[[0,e.length-1]]),y}const{location:o,distance:s,threshold:a,findAllMatches:c,minMatchCharLength:l,ignoreLocation:u}=this.options;let d=[],h=0,f=!1;this.chunks.forEach(({pattern:y,alphabet:g,startIndex:x})=>{const{isMatch:b,score:w,indices:T}=xsi(e,y,g,{location:o+x,distance:s,threshold:a,findAllMatches:c,minMatchCharLength:l,includeMatches:r,ignoreLocation:u});b&&(f=!0),h+=w,b&&T&&(d=[...d,...T])});let m={isMatch:f,score:f?h/this.chunks.length:1};return f&&r&&(m.indices=d),m}}class iA{constructor(e){this.pattern=e}static isMultiMatch(e){return Uyt(e,this.multiRegex)}static isSingleMatch(e){return Uyt(e,this.singleRegex)}search(){}}function Uyt(n,e){const t=n.match(e);return t?t[1]:null}class bsi extends iA{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}class wsi extends iA{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const i=e.indexOf(this.pattern)===-1;return{isMatch:i,score:i?0:1,indices:[0,e.length-1]}}}class Ssi extends iA{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}class Esi extends iA{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}class Tsi extends iA{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class Msi extends iA{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}class Byt extends iA{constructor(e,{location:t=za.location,threshold:i=za.threshold,distance:r=za.distance,includeMatches:o=za.includeMatches,findAllMatches:s=za.findAllMatches,minMatchCharLength:a=za.minMatchCharLength,isCaseSensitive:c=za.isCaseSensitive,ignoreDiacritics:l=za.ignoreDiacritics,ignoreLocation:u=za.ignoreLocation}={}){super(e),this._bitapSearch=new Fyt(e,{location:t,threshold:i,distance:r,includeMatches:o,findAllMatches:s,minMatchCharLength:a,isCaseSensitive:c,ignoreDiacritics:l,ignoreLocation:u})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class jyt extends iA{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let t=0,i;const r=[],o=this.pattern.length;for(;(i=e.indexOf(this.pattern,t))>-1;)t=i+o,r.push([i,t-1]);const s=!!r.length;return{isMatch:s,score:s?0:1,indices:r}}}const rEe=[bsi,jyt,Ssi,Esi,Msi,Tsi,wsi,Byt],Hyt=rEe.length,Asi=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,Csi="|";function Psi(n,e={}){return n.split(Csi).map(t=>{let i=t.trim().split(Asi).filter(o=>o&&!!o.trim()),r=[];for(let o=0,s=i.length;o<s;o+=1){const a=i[o];let c=!1,l=-1;for(;!c&&++l<Hyt;){const u=rEe[l];let d=u.isMultiMatch(a);d&&(r.push(new u(d,e)),c=!0)}if(!c)for(l=-1;++l<Hyt;){const u=rEe[l];let d=u.isSingleMatch(a);if(d){r.push(new u(d,e));break}}}return r})}const Rsi=new Set([Byt.type,jyt.type]);class Isi{constructor(e,{isCaseSensitive:t=za.isCaseSensitive,ignoreDiacritics:i=za.ignoreDiacritics,includeMatches:r=za.includeMatches,minMatchCharLength:o=za.minMatchCharLength,ignoreLocation:s=za.ignoreLocation,findAllMatches:a=za.findAllMatches,location:c=za.location,threshold:l=za.threshold,distance:u=za.distance}={}){this.query=null,this.options={isCaseSensitive:t,ignoreDiacritics:i,includeMatches:r,minMatchCharLength:o,findAllMatches:a,ignoreLocation:s,location:c,threshold:l,distance:u},e=t?e:e.toLowerCase(),e=i?AW(e):e,this.pattern=e,this.query=Psi(this.pattern,this.options)}static condition(e,t){return t.useExtendedSearch}searchIn(e){const t=this.query;if(!t)return{isMatch:!1,score:1};const{includeMatches:i,isCaseSensitive:r,ignoreDiacritics:o}=this.options;e=r?e:e.toLowerCase(),e=o?AW(e):e;let s=0,a=[],c=0;for(let l=0,u=t.length;l<u;l+=1){const d=t[l];a.length=0,s=0;for(let h=0,f=d.length;h<f;h+=1){const m=d[h],{isMatch:y,indices:g,score:x}=m.search(e);if(y){if(s+=1,c+=x,i){const b=m.constructor.type;Rsi.has(b)?a=[...a,...g]:a.push(g)}}else{c=0,s=0,a.length=0;break}}if(s){let h={isMatch:!0,score:c/s};return i&&(h.indices=a),h}}return{isMatch:!1,score:1}}}const oEe=[];function ksi(...n){oEe.push(...n)}function sEe(n,e){for(let t=0,i=oEe.length;t<i;t+=1){let r=oEe[t];if(r.condition(n,e))return new r(n,e)}return new Fyt(n,e)}const CW={AND:"$and",OR:"$or"},aEe={PATH:"$path",PATTERN:"$val"},cEe=n=>!!(n[CW.AND]||n[CW.OR]),Nsi=n=>!!n[aEe.PATH],Osi=n=>!WT(n)&&Nyt(n)&&!cEe(n),Vyt=n=>({[CW.AND]:Object.keys(n).map(e=>({[e]:n[e]}))});function Gyt(n,e,{auto:t=!0}={}){const i=r=>{let o=Object.keys(r);const s=Nsi(r);if(!s&&o.length>1&&!cEe(r))return i(Vyt(r));if(Osi(r)){const c=s?r[aEe.PATH]:o[0],l=s?r[aEe.PATTERN]:r[c];if(!M5(l))throw new Error(lsi(c));const u={keyId:nEe(c),pattern:l};return t&&(u.searcher=sEe(l,e)),u}let a={children:[],operator:o[0]};return o.forEach(c=>{const l=r[c];WT(l)&&l.forEach(u=>{a.children.push(i(u))})}),a};return cEe(n)||(n=Vyt(n)),i(n)}function Lsi(n,{ignoreFieldNorm:e=za.ignoreFieldNorm}){n.forEach(t=>{let i=1;t.matches.forEach(({key:r,norm:o,score:s})=>{const a=r?r.weight:null;i*=Math.pow(s===0&&a?Number.EPSILON:s,(a||1)*(e?1:o))}),t.score=i})}function Dsi(n,e){const t=n.matches;e.matches=[],lS(t)&&t.forEach(i=>{if(!lS(i.indices)||!i.indices.length)return;const{indices:r,value:o}=i;let s={indices:r,value:o};i.key&&(s.key=i.key.src),i.idx>-1&&(s.refIndex=i.idx),e.matches.push(s)})}function zsi(n,e){e.score=n.score}function $si(n,e,{includeMatches:t=za.includeMatches,includeScore:i=za.includeScore}={}){const r=[];return t&&r.push(Dsi),i&&r.push(zsi),n.map(o=>{const{idx:s}=o,a={item:e[s],refIndex:s};return r.length&&r.forEach(c=>{c(o,a)}),a})}class jI{constructor(e,t={},i){this.options={...za,...t},this.options.useExtendedSearch,this._keyStore=new psi(this.options.keys),this.setCollection(e,i)}setCollection(e,t){if(this._docs=e,t&&!(t instanceof iEe))throw new Error(csi);this._myIndex=t||$yt(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){lS(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const t=[];for(let i=0,r=this._docs.length;i<r;i+=1){const o=this._docs[i];e(o,i)&&(this.removeAt(i),i-=1,r-=1,t.push(o))}return t}removeAt(e){this._docs.splice(e,1),this._myIndex.removeAt(e)}getIndex(){return this._myIndex}search(e,{limit:t=-1}={}){const{includeMatches:i,includeScore:r,shouldSort:o,sortFn:s,ignoreFieldNorm:a}=this.options;let c=M5(e)?M5(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return Lsi(c,{ignoreFieldNorm:a}),o&&c.sort(s),kyt(t)&&t>-1&&(c=c.slice(0,t)),$si(c,this._docs,{includeMatches:i,includeScore:r})}_searchStringList(e){const t=sEe(e,this.options),{records:i}=this._myIndex,r=[];return i.forEach(({v:o,i:s,n:a})=>{if(!lS(o))return;const{isMatch:c,score:l,indices:u}=t.searchIn(o);c&&r.push({item:o,idx:s,matches:[{score:l,value:o,norm:a,indices:u}]})}),r}_searchLogical(e){const t=Gyt(e,this.options),i=(a,c,l)=>{if(!a.children){const{keyId:d,searcher:h}=a,f=this._findMatches({key:this._keyStore.get(d),value:this._myIndex.getValueForItemAtKeyId(c,d),searcher:h});return f&&f.length?[{idx:l,item:c,matches:f}]:[]}const u=[];for(let d=0,h=a.children.length;d<h;d+=1){const f=a.children[d],m=i(f,c,l);if(m.length)u.push(...m);else if(a.operator===CW.AND)return[]}return u},r=this._myIndex.records,o={},s=[];return r.forEach(({$:a,i:c})=>{if(lS(a)){let l=i(t,a,c);l.length&&(o[c]||(o[c]={idx:c,item:a,matches:[]},s.push(o[c])),l.forEach(({matches:u})=>{o[c].matches.push(...u)}))}}),s}_searchObjectList(e){const t=sEe(e,this.options),{keys:i,records:r}=this._myIndex,o=[];return r.forEach(({$:s,i:a})=>{if(!lS(s))return;let c=[];i.forEach((l,u)=>{c.push(...this._findMatches({key:l,value:s[u],searcher:t}))}),c.length&&o.push({idx:a,item:s,matches:c})}),o}_findMatches({key:e,value:t,searcher:i}){if(!lS(t))return[];let r=[];if(WT(t))t.forEach(({v:o,i:s,n:a})=>{if(!lS(o))return;const{isMatch:c,score:l,indices:u}=i.searchIn(o);c&&r.push({score:l,key:e,value:o,idx:s,norm:a,indices:u})});else{const{v:o,n:s}=t,{isMatch:a,score:c,indices:l}=i.searchIn(o);a&&r.push({score:c,key:e,value:o,norm:s,indices:l})}return r}}jI.version="7.1.0",jI.createIndex=$yt,jI.parseIndex=ysi,jI.config=za,jI.parseQuery=Gyt,ksi(Isi);let lEe=null,EL=null,uEe=null;const Fsi=async()=>lEe||EL||(EL=fetch("https://kicad-mod-cache.tscircuit.com/kicad_files.json").then(n=>n.json()).then(n=>(lEe=n,EL=null,n)),EL),Usi=async(n,e=20)=>{const t=await Fsi();return uEe||(uEe=new jI(t)),uEe.search(n).slice(0,e).map(i=>i.item)},Bsi=n=>{const e=n.replace(".pretty/",":").replace(".kicad_mod",""),t=`kicad:${e}`;return{path:n,qualifiedName:t,description:e}},jsi=()=>{const[n,e]=Te.useState([]),[t,i]=Te.useState(!1),[r,o]=Te.useState(null),[s,a]=Te.useState(!1),c=Te.useCallback(async u=>{const d=u.trim();if(!d)return[];i(!0),o(null);try{const f=(await Usi(d,20)).map(m=>({source:"kicad",footprint:Bsi(m)}));return e(f),f}catch(h){return console.error("Error searching KiCad footprints",h),e([]),o(h instanceof Error?h.message:"Failed to search KiCad footprints"),[]}finally{i(!1),a(!0)}},[]),l=Te.useCallback(()=>{e([]),i(!1),o(null),a(!1)},[]);return{results:n,isSearching:t,error:r,hasSearched:s,search:c,reset:l}},Hsi=({onTscircuitPackageSelected:n,onJlcpcbComponentTsxLoaded:e,onKicadStringSelected:t})=>{const i=[];return n&&i.push("tscircuit.com"),e&&i.push("jlcpcb"),t&&i.push("kicad"),i},Vsi=({isOpen:n,onClose:e,jlcpcbProxyRequestHeaders:t,onKicadStringSelected:i,onTscircuitPackageSelected:r,onJlcpcbComponentTsxLoaded:o})=>{tat();const s=Te.useMemo(()=>Hsi({onKicadStringSelected:i,onTscircuitPackageSelected:r,onJlcpcbComponentTsxLoaded:o}),[i,r,o]),a=s.length>0,[c,l]=Te.useState(s[0]??"tscircuit.com"),[u,d]=Te.useState(""),[h,f]=Te.useState(null),{results:m,isSearching:y,error:g,hasSearched:x,search:b,reset:w}=tsi(),{results:T,isSearching:k,error:P,hasSearched:R,search:M,reset:I}=isi(),{results:A,isSearching:B,error:N,hasSearched:V,search:X,reset:W}=jsi(),{details:K,isLoading:te,fetchDetails:se,reset:de}=Joi(),[xe,re]=Te.useState(null),[ue,he]=Te.useState(!1),[Ae,ke]=Te.useState("pcb"),[De,Ge]=Te.useState(null),[Ne,ce]=Te.useState(!1);Te.useEffect(()=>{Ge(null)},[h]);const we=Te.useCallback(()=>{w(),I(),W(),f(null)},[I,W,w]);Te.useEffect(()=>{n||(we(),d(""),he(!1),re(null),Ge(null))},[n,we]),Te.useEffect(()=>{d(""),f(null),c==="tscircuit.com"?w():c==="jlcpcb"?I():c==="kicad"&&W()},[c,I,W,w]);const ve=Re=>{f(Re),re(Re),ke("pcb"),he(!0),de();const We=Re.package.owner_github_username,Le=Re.package.unscoped_name;if(We&&Le){const qe=Le.split("/").pop()??Le;se(We,qe)}},Ye=async()=>{u.trim()&&(f(null),c==="tscircuit.com"?await b(u):c==="jlcpcb"?await M(u):c==="kicad"&&await X(u))},et=async Re=>{try{if(Ge(null),ce(!0),Re.source==="kicad"){if(!i)throw new Error("KiCad handler not provided");await i({result:Re,footprint:Re.footprint.qualifiedName})}else if(Re.source==="jlcpcb"){if(!o)throw new Error("JLCPCB handler not provided");const We=await Yoi(Re.component.partNumber,{headers:t});await o({result:Re,tsx:We})}else if(Re.source==="tscircuit.com"){if(!r)throw new Error("tscircuit package handler not provided");const We=Re.package.owner_github_username,Le=Re.package.unscoped_name;if(!We||!Le)throw new Error("Missing package metadata");const qe=Le.split("/").pop()??Le,Je=`@tsci/${We}.${qe}`;await r({result:Re,fullPackageName:Je})}return!0}catch(We){return console.error("Failed to import component",We),Ge(We instanceof Error?We.message:"Failed to import component"),!1}finally{ce(!1)}};let at=[],Se=!1,ht=null,Qe=!1;c==="tscircuit.com"?(at=m,Se=y,ht=g,Qe=x):c==="jlcpcb"?(at=T,Se=k,ht=P,Qe=R):c==="kicad"&&(at=A,Se=B,ht=N,Qe=V);const Xe=async()=>{if(!h)return;await et(h)&&(e(),we(),d(""))},rt=Re=>{Re||e()},ze=Re=>{he(Re),Re||re(null)};return ye.jsxs(oG,{open:n,onOpenChange:rt,children:[ye.jsxs(I8,{style:{width:"calc(100vw - 2rem)"},className:"rf-rounded-sm rf-max-h-[90vh] rf-overflow-y-auto rf-flex rf-flex-col",children:[ye.jsxs(k8,{children:[ye.jsx(N8,{className:"rf-text-lg sm:rf-text-xl",children:"Import Component"}),ye.jsx(aG,{className:"rf-text-sm",children:a?"Search for components from available sources.":"Import options are disabled because no handlers were provided."})]}),a?ye.jsxs(OQ,{value:c,onValueChange:Re=>l(Re),children:[ye.jsx(A7,{className:"rf-flex rf-w-full rf-gap-2",children:s.map(Re=>ye.jsx(W5,{value:Re,className:"rf-flex-1 rf-text-xs sm:rf-text-sm",children:Oxe[Re].label},Re))}),ye.jsx(qoi,{query:u,placeholder:Oxe[c].placeholder,isSearching:Se,onQueryChange:d,onSubmit:Ye}),ye.jsx("div",{className:"rf-mt-4 rf-flex-1 rf-min-h-[200px] !rf-max-h-[40vh] !rf-overflow-y-auto rf-border rf-rounded-md",children:Se?ye.jsxs("div",{className:"rf-p-8 rf-text-center rf-text-zinc-500",children:[ye.jsx(xM,{className:"rf-h-8 rf-w-8 rf-animate-spin rf-mx-auto rf-mb-2"}),ye.jsx("p",{children:"Searching..."})]}):at.length>0?ye.jsx(Koi,{results:at,selected:h,onSelect:f,onShowDetails:c==="tscircuit.com"?ve:void 0}):ye.jsx("div",{className:"rf-p-8 rf-text-center rf-text-zinc-500",children:ht?`Error: ${ht}`:Qe?Oxe[c].emptyMessage:"Enter a search term to find components"})})]}):null,De?ye.jsx("div",{className:"rf-text-sm rf-text-red-600 rf-mt-2",children:De}):null,ye.jsxs(sG,{className:"rf-flex rf-flex-col sm:rf-flex-row rf-gap-2",children:[ye.jsx(H_,{variant:"outline",onClick:e,className:"rf-order-2 sm:rf-order-1",children:"Cancel"}),ye.jsx(H_,{onClick:Xe,disabled:!h||Ne,className:"rf-order-1 sm:rf-order-2",children:Ne?ye.jsx(xM,{className:"rf-h-4 rf-w-4 rf-animate-spin"}):"Import"})]})]}),ye.jsx(Qoi,{packageResult:xe,isOpen:ue,onOpenChange:ze,isLoading:te,details:K,previewTab:Ae,onPreviewTabChange:Re=>ke(Re),isSubmitting:Ne,onImport:()=>{xe&&et(xe).then(Re=>{Re&&(he(!1),e(),we(),d(""))})}})]})};let Gsi={data:""},Ysi=n=>typeof window=="object"?((n?n.querySelector("#_goober"):window._goober)||Object.assign((n||document.head).appendChild(document.createElement("style")),{innerHTML:" ",id:"_goober"})).firstChild:n||Gsi,qsi=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,Xsi=/\/\*[^]*?\*\/| +/g,Yyt=/\n+/g,rA=(n,e)=>{let t="",i="",r="";for(let o in n){let s=n[o];o[0]=="@"?o[1]=="i"?t=o+" "+s+";":i+=o[1]=="f"?rA(s,o):o+"{"+rA(s,o[1]=="k"?"":e)+"}":typeof s=="object"?i+=rA(s,e?e.replace(/([^,])+/g,a=>o.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,c=>/&/.test(c)?c.replace(/&/g,a):a?a+" "+c:c)):o):s!=null&&(o=/^--/.test(o)?o:o.replace(/[A-Z]/g,"-$&").toLowerCase(),r+=rA.p?rA.p(o,s):o+":"+s+";")}return t+(e&&r?e+"{"+r+"}":r)+i},ZT={},qyt=n=>{if(typeof n=="object"){let e="";for(let t in n)e+=t+qyt(n[t]);return e}return n},Wsi=(n,e,t,i,r)=>{let o=qyt(n),s=ZT[o]||(ZT[o]=(c=>{let l=0,u=11;for(;l<c.length;)u=101*u+c.charCodeAt(l++)>>>0;return"go"+u})(o));if(!ZT[s]){let c=o!==n?n:(l=>{let u,d,h=[{}];for(;u=qsi.exec(l.replace(Xsi,""));)u[4]?h.shift():u[3]?(d=u[3].replace(Yyt," ").trim(),h.unshift(h[0][d]=h[0][d]||{})):h[0][u[1]]=u[2].replace(Yyt," ").trim();return h[0]})(n);ZT[s]=rA(r?{["@keyframes "+s]:c}:c,t?"":"."+s)}let a=t&&ZT.g?ZT.g:null;return t&&(ZT.g=ZT[s]),((c,l,u,d)=>{d?l.data=l.data.replace(d,c):l.data.indexOf(c)===-1&&(l.data=u?c+l.data:l.data+c)})(ZT[s],e,i,a),s},Zsi=(n,e,t)=>n.reduce((i,r,o)=>{let s=e[o];if(s&&s.call){let a=s(t),c=a&&a.props&&a.props.className||/^go/.test(a)&&a;s=c?"."+c:a&&typeof a=="object"?a.props?"":rA(a,""):a===!1?"":a}return i+r+(s??"")},"");function PW(n){let e=this||{},t=n.call?n(e.p):n;return Wsi(t.unshift?t.raw?Zsi(t,[].slice.call(arguments,1),e.p):t.reduce((i,r)=>Object.assign(i,r&&r.call?r(e.p):r),{}):t,Ysi(e.target),e.g,e.o,e.k)}let Xyt,dEe,hEe;PW.bind({g:1});let KT=PW.bind({k:1});function Ksi(n,e,t,i){rA.p=e,Xyt=n,dEe=t,hEe=i}function oA(n,e){let t=this||{};return function(){let i=arguments;function r(o,s){let a=Object.assign({},o),c=a.className||r.className;t.p=Object.assign({theme:dEe&&dEe()},a),t.o=/ *go\d+/.test(c),a.className=PW.apply(t,i)+(c?" "+c:"");let l=n;return n[0]&&(l=a.as||n,delete a.as),hEe&&l[0]&&hEe(a),Xyt(l,a)}return r}}var Qsi=n=>typeof n=="function",RW=(n,e)=>Qsi(n)?n(e):n,Jsi=(()=>{let n=0;return()=>(++n).toString()})(),Wyt=(()=>{let n;return()=>{if(n===void 0&&typeof window<"u"){let e=matchMedia("(prefers-reduced-motion: reduce)");n=!e||e.matches}return n}})(),eai=20,pEe="default",Zyt=(n,e)=>{let{toastLimit:t}=n.settings;switch(e.type){case 0:return{...n,toasts:[e.toast,...n.toasts].slice(0,t)};case 1:return{...n,toasts:n.toasts.map(s=>s.id===e.toast.id?{...s,...e.toast}:s)};case 2:let{toast:i}=e;return Zyt(n,{type:n.toasts.find(s=>s.id===i.id)?1:0,toast:i});case 3:let{toastId:r}=e;return{...n,toasts:n.toasts.map(s=>s.id===r||r===void 0?{...s,dismissed:!0,visible:!1}:s)};case 4:return e.toastId===void 0?{...n,toasts:[]}:{...n,toasts:n.toasts.filter(s=>s.id!==e.toastId)};case 5:return{...n,pausedAt:e.time};case 6:let o=e.time-(n.pausedAt||0);return{...n,pausedAt:void 0,toasts:n.toasts.map(s=>({...s,pauseDuration:s.pauseDuration+o}))}}},IW=[],Kyt={toasts:[],pausedAt:void 0,settings:{toastLimit:eai}},A5={},Qyt=(n,e=pEe)=>{A5[e]=Zyt(A5[e]||Kyt,n),IW.forEach(([t,i])=>{t===e&&i(A5[e])})},Jyt=n=>Object.keys(A5).forEach(e=>Qyt(n,e)),tai=n=>Object.keys(A5).find(e=>A5[e].toasts.some(t=>t.id===n)),kW=(n=pEe)=>e=>{Qyt(e,n)},nai={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},iai=(n={},e=pEe)=>{let[t,i]=Te.useState(A5[e]||Kyt),r=Te.useRef(A5[e]);Te.useEffect(()=>(r.current!==A5[e]&&i(A5[e]),IW.push([e,i]),()=>{let s=IW.findIndex(([a])=>a===e);s>-1&&IW.splice(s,1)}),[e]);let o=t.toasts.map(s=>{var a,c,l;return{...n,...n[s.type],...s,removeDelay:s.removeDelay||((a=n[s.type])==null?void 0:a.removeDelay)||n?.removeDelay,duration:s.duration||((c=n[s.type])==null?void 0:c.duration)||n?.duration||nai[s.type],style:{...n.style,...(l=n[s.type])==null?void 0:l.style,...s.style}}});return{...t,toasts:o}},rai=(n,e="blank",t)=>({createdAt:Date.now(),visible:!0,dismissed:!1,type:e,ariaProps:{role:"status","aria-live":"polite"},message:n,pauseDuration:0,...t,id:t?.id||Jsi()}),TL=n=>(e,t)=>{let i=rai(e,n,t);return kW(i.toasterId||tai(i.id))({type:2,toast:i}),i.id},Qp=(n,e)=>TL("blank")(n,e);Qp.error=TL("error"),Qp.success=TL("success"),Qp.loading=TL("loading"),Qp.custom=TL("custom"),Qp.dismiss=(n,e)=>{let t={type:3,toastId:n};e?kW(e)(t):Jyt(t)},Qp.dismissAll=n=>Qp.dismiss(void 0,n),Qp.remove=(n,e)=>{let t={type:4,toastId:n};e?kW(e)(t):Jyt(t)},Qp.removeAll=n=>Qp.remove(void 0,n),Qp.promise=(n,e,t)=>{let i=Qp.loading(e.loading,{...t,...t?.loading});return typeof n=="function"&&(n=n()),n.then(r=>{let o=e.success?RW(e.success,r):void 0;return o?Qp.success(o,{id:i,...t,...t?.success}):Qp.dismiss(i),r}).catch(r=>{let o=e.error?RW(e.error,r):void 0;o?Qp.error(o,{id:i,...t,...t?.error}):Qp.dismiss(i)}),n};var oai=1e3,sai=(n,e="default")=>{let{toasts:t,pausedAt:i}=iai(n,e),r=Te.useRef(new Map).current,o=Te.useCallback((d,h=oai)=>{if(r.has(d))return;let f=setTimeout(()=>{r.delete(d),s({type:4,toastId:d})},h);r.set(d,f)},[]);Te.useEffect(()=>{if(i)return;let d=Date.now(),h=t.map(f=>{if(f.duration===1/0)return;let m=(f.duration||0)+f.pauseDuration-(d-f.createdAt);if(m<0){f.visible&&Qp.dismiss(f.id);return}return setTimeout(()=>Qp.dismiss(f.id,e),m)});return()=>{h.forEach(f=>f&&clearTimeout(f))}},[t,i,e]);let s=Te.useCallback(kW(e),[e]),a=Te.useCallback(()=>{s({type:5,time:Date.now()})},[s]),c=Te.useCallback((d,h)=>{s({type:1,toast:{id:d,height:h}})},[s]),l=Te.useCallback(()=>{i&&s({type:6,time:Date.now()})},[i,s]),u=Te.useCallback((d,h)=>{let{reverseOrder:f=!1,gutter:m=8,defaultPosition:y}=h||{},g=t.filter(w=>(w.position||y)===(d.position||y)&&w.height),x=g.findIndex(w=>w.id===d.id),b=g.filter((w,T)=>T<x&&w.visible).length;return g.filter(w=>w.visible).slice(...f?[b+1]:[0,b]).reduce((w,T)=>w+(T.height||0)+m,0)},[t]);return Te.useEffect(()=>{t.forEach(d=>{if(d.dismissed)o(d.id,d.removeDelay);else{let h=r.get(d.id);h&&(clearTimeout(h),r.delete(d.id))}})},[t,o]),{toasts:t,handlers:{updateHeight:c,startPause:a,endPause:l,calculateOffset:u}}},aai=KT`
6373
6373
  from {
6374
6374
  transform: scale(0) rotate(45deg);
6375
6375
  opacity: 0;