@getvision/core 0.0.2 → 0.0.4-a88ad97-develop

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.
@@ -231,7 +231,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
231
231
  `,children:N.response.status||"ERROR"}),N.requestTime&&E("span",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[g(Du,{className:"w-3 h-3"}),N.requestTime,"ms"]})]}),g(Et,{variant:"ghost",size:"sm",onClick:()=>navigator.clipboard.writeText(JSON.stringify(N.response.data,null,2)),children:g(Iv,{className:"w-4 h-4"})})]})}),g(ht,{children:g(Mi,{data:N.response.data||N.response.error})})]}),N.response&&E(dt,{children:[g(Tt,{children:g(Lt,{className:"text-base font-semibold",children:"Request Logs"})}),g(ht,{children:E("div",{className:"bg-gray-900 dark:bg-gray-950 rounded-md p-4 font-mono text-xs space-y-1 border",children:[E("div",{className:"text-blue-400 dark:text-blue-300",children:["INF starting request endpoint=",(Q=N.route)==null?void 0:Q.path," service=",(B=N.route)==null?void 0:B.handler]}),E("div",{className:"text-green-400 dark:text-green-300",children:["INF request completed code=",N.response.status," duration=",N.requestTime,"ms"]})]})})]})]}):g("div",{className:"flex items-center justify-center h-full text-muted-foreground",children:g("p",{className:"text-sm",children:"Select an endpoint from the sidebar to get started"})})})]}),g(Gw,{sessionId:N.sessionId})]})}function Kw(l){const r=[...l].sort((c,f)=>c.startTime-f.startTime),i=new Map(r.map(c=>[c.id,{...c,children:[]}])),s=[];for(const c of r){const f=i.get(c.id);if(c.parentId){const d=i.get(c.parentId);d?d.children.push(f):s.push(f)}else s.push(f)}for(const[c,f]of i)f.children&&f.children.length>1&&f.children.sort((d,m)=>d.startTime-m.startTime);return s}function Zw(l){return l.startsWith("http.")?{bg:"bg-gradient-to-r from-blue-500/90 to-blue-600/90",border:"border-blue-500/30",text:"text-blue-50"}:l.startsWith("db.")?{bg:"bg-gradient-to-r from-purple-500/90 to-purple-600/90",border:"border-purple-500/30",text:"text-purple-50"}:{bg:"bg-gradient-to-r from-emerald-500/90 to-emerald-600/90",border:"border-emerald-500/30",text:"text-emerald-50"}}function Jw(l){return l.startsWith("http.")?g(c2,{className:"w-3.5 h-3.5"}):l.startsWith("db.")?g(nd,{className:"w-3.5 h-3.5"}):g(Cr,{className:"w-3.5 h-3.5"})}function Qy({span:l,depth:r,totalDuration:i,t0:s,formatDuration:c}){var M;const[f,d]=y.useState(!0),m=(((M=l.children)==null?void 0:M.length)||0)>0,v=(l.startTime-s)/i*100,p=(l.duration||0)/i*100,x=l.attributes&&Object.keys(l.attributes).length>0,[S,N]=y.useState(!1),O=Zw(l.name),Y=Jw(l.name);return E(Zt,{children:[g("div",{className:"group hover:bg-muted/50 transition-colors rounded-lg",children:E("div",{className:"flex items-start gap-3 p-3",children:[E("div",{className:"flex items-center gap-2 min-w-0 flex-shrink-0",style:{paddingLeft:`${r*20}px`},children:[m?g("button",{onClick:()=>d(!f),className:"p-0.5 hover:bg-muted rounded transition-colors",children:f?g(Wv,{className:"w-3.5 h-3.5 text-muted-foreground"}):g(Pv,{className:"w-3.5 h-3.5 text-muted-foreground"})}):g("div",{className:"w-4"}),g("div",{className:`p-1.5 rounded-md ${O.bg.replace("/90","/20")} ${O.border} border`,children:Y})]}),E("div",{className:"flex-1 min-w-0 space-y-2.5",children:[E("div",{className:"flex items-center justify-between gap-4",children:[E("div",{className:"flex items-center gap-3 min-w-0",children:[g("span",{className:"text-sm font-semibold font-mono truncate",children:l.name}),x&&E("button",{onClick:()=>N(!S),className:"text-xs px-2 py-0.5 rounded-full bg-muted hover:bg-muted/80 transition-colors font-medium",children:[Object.keys(l.attributes||{}).length," attrs"]})]}),g("div",{className:"flex items-center gap-2 flex-shrink-0",children:g("span",{className:"text-sm font-mono font-semibold tabular-nums",children:c(l.duration)})})]}),g("div",{className:"relative h-8 bg-muted/50 rounded-lg overflow-hidden border border-border/50",children:g("div",{className:`absolute h-full ${O.bg} ${O.border} border-2 flex items-center px-2.5 shadow-lg transition-all duration-200 group-hover:shadow-xl`,style:{left:`${v}%`,width:`${Math.max(p,.5)}%`},children:g("span",{className:`text-xs font-mono font-semibold ${O.text} truncate drop-shadow-sm`,children:l.name})})}),S&&x&&g("div",{className:"mt-2 p-3 bg-muted/30 rounded-lg border border-border/50 space-y-1.5",children:Object.entries(l.attributes||{}).map(([R,L])=>R==="http.request"||R==="http.response"?null:typeof L=="object"&&L!==null?E("div",{className:"font-mono text-xs flex items-start gap-2",children:[E("span",{className:"text-muted-foreground font-semibold",children:[R,":"]}),g("span",{className:"text-muted-foreground italic",children:"[object]"})]},R):E("div",{className:"font-mono text-xs flex items-start gap-2",children:[E("span",{className:"text-muted-foreground font-semibold min-w-[120px]",children:[R,":"]}),g("span",{className:"text-foreground break-all",children:String(L)})]},R))})]})]})}),f&&m&&g("div",{className:"space-y-1",children:l.children.map(R=>g(Qy,{span:R,depth:r+1,totalDuration:i,t0:s,formatDuration:c},R.id))})]})}function Fw({spans:l,formatDuration:r}){if(l.length===0)return g("div",{className:"text-center py-12 text-sm text-muted-foreground",children:"No spans recorded"});const i=Math.min(...l.map(d=>d.startTime)),c=Math.max(...l.map(d=>d.endTime||d.startTime))-i||1,f=Kw(l);return console.log("[SpansWaterfall] Tree:",f.map(d=>{var m;return{name:d.name,id:d.id.slice(0,8),parentId:(m=d.parentId)==null?void 0:m.slice(0,8),duration:d.duration}})),console.log("[SpansWaterfall] All spans:",l.map(d=>{var m;return{name:d.name,id:d.id.slice(0,8),parentId:(m=d.parentId)==null?void 0:m.slice(0,8),duration:d.duration}})),E("div",{className:"space-y-3",children:[E("div",{className:"flex justify-between items-center px-4 py-2 bg-muted/30 rounded-lg border border-border/50",children:[E("div",{className:"flex items-center gap-2",children:[g("span",{className:"text-xs font-semibold text-muted-foreground",children:"Timeline"}),E("span",{className:"text-xs px-2 py-0.5 rounded-full bg-primary/10 text-primary font-mono font-semibold",children:[l.length," ",l.length===1?"span":"spans"]})]}),E("div",{className:"flex items-center gap-4 text-xs font-mono font-semibold tabular-nums",children:[g("span",{className:"text-muted-foreground",children:"0ms"}),g("div",{className:"w-px h-4 bg-border"}),g("span",{className:"text-foreground",children:r(c)})]})]}),g("div",{className:"space-y-1",children:f.map(d=>g(Qy,{span:d,depth:0,totalDuration:c,t0:i,formatDuration:r},d.id))})]})}function $w({trace:l,formatDuration:r}){var d,m,v,p;const i=l.spans.find(x=>x.name==="http.request"),s=((d=l.metadata)==null?void 0:d.request)||((m=i==null?void 0:i.attributes)==null?void 0:m["http.request"]),c=((v=l.metadata)==null?void 0:v.response)||((p=i==null?void 0:i.attributes)==null?void 0:p["http.response"]),f=x=>x?x>=200&&x<300?"bg-green-100 dark:bg-green-900 text-green-700 dark:text-green-300":x>=400?"bg-red-100 dark:bg-red-900 text-red-700 dark:text-red-300":"bg-yellow-100 dark:bg-yellow-900 text-yellow-700 dark:text-yellow-300":"bg-gray-100 dark:bg-gray-800 text-gray-600 dark:text-gray-400";return E("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[E(dt,{children:[g(Tt,{className:"bg-muted",children:g(Lt,{className:"text-base font-semibold",children:"Request"})}),g(ht,{className:"pt-4",children:E("div",{className:"space-y-3",children:[E("div",{className:"text-sm",children:[g(Me,{className:"font-mono text-xs mr-2",children:l.method}),g("span",{className:"font-mono text-sm break-all",children:(s==null?void 0:s.url)||l.path})]}),(s==null?void 0:s.headers)&&E("div",{children:[g("p",{className:"text-xs font-medium text-muted-foreground mb-2",children:"Headers"}),g(Mi,{data:s.headers})]}),(s==null?void 0:s.body)!==void 0&&E("div",{children:[g("p",{className:"text-xs font-medium text-muted-foreground mb-2",children:"Body"}),g(Mi,{data:s.body})]})]})})]}),E(dt,{children:[g(Tt,{className:"bg-muted",children:g(Lt,{className:"text-base font-semibold",children:"Response"})}),g(ht,{className:"pt-4",children:E("div",{className:"space-y-3",children:[E("div",{className:"flex items-center gap-2 text-sm",children:[g(Me,{className:`font-mono text-xs ${f(l.statusCode)}`,children:l.statusCode||(c==null?void 0:c.status)||"-"}),g("span",{className:"text-xs text-muted-foreground",children:r(l.duration)})]}),(c==null?void 0:c.headers)&&E("div",{children:[g("p",{className:"text-xs font-medium text-muted-foreground mb-2",children:"Headers"}),g(Mi,{data:c.headers})]}),(c==null?void 0:c.body)!==void 0&&E("div",{children:[g("p",{className:"text-xs font-medium text-muted-foreground mb-2",children:"Body"}),g(Mi,{data:c.body})]})]})})]})]})}function Ww(){const{data:l=[]}=ny({limit:100}),r=x2(),i=S2(),{traceId:s}=Wf(),{addToast:c}=dd(),f=y.useRef(null),d=y.useRef(l.length);y.useEffect(()=>{l.length>d.current&&f.current&&(f.current.scrollTop=0),d.current=l.length},[l.length]);const m=async()=>{if(!(l.length===0||!window.confirm(`Remove ${l.length} trace${l.length===1?"":"s"}?`)))try{await r.mutateAsync()}catch(x){console.error("Failed to clear traces:",x),c("Failed to clear traces","error")}};return E("div",{className:"h-full grid grid-cols-12 gap-0",children:[E("div",{className:"col-span-4 border-r bg-muted h-full flex flex-col",children:[g("div",{className:"px-6 py-4 border-b bg-background",children:E("div",{className:"flex items-center justify-between gap-3",children:[E("div",{children:[g("h1",{className:"text-lg font-semibold",children:"Traces"}),g("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Recent requests"})]}),E("div",{className:"flex gap-2",children:[E(Et,{variant:"outline",size:"sm",onClick:async()=>{try{const p=await i.mutateAsync({format:"json"}),x=typeof p=="string"?p:JSON.stringify(p,null,2),S=new Blob([x],{type:"application/json"}),N=URL.createObjectURL(S),O=document.createElement("a");O.href=N;const Y=new Date().toISOString().replace(/[:.]/g,"-");O.download=`vision-traces-${Y}.json`,document.body.appendChild(O),O.click(),document.body.removeChild(O),URL.revokeObjectURL(N)}catch(p){console.error("Failed to export traces:",p),c("Failed to export traces","error")}},disabled:i.isPending||l.length===0,className:"text-sm",children:[g(o2,{className:"w-4 h-4 mr-1.5"}),"Export"]}),E(Et,{variant:"outline",size:"sm",onClick:m,disabled:r.isPending||l.length===0,className:"text-sm",children:[g(ty,{className:"w-4 h-4 mr-1.5"}),"Clear"]})]})]})}),g(qi,{className:"flex-1",ref:f,children:l.length===0?E("div",{className:"flex flex-col items-center justify-center py-20 px-6 text-muted-foreground",children:[g(Cr,{className:"w-12 h-12 mb-4 opacity-30"}),g("p",{className:"text-sm",children:"No traces yet"}),g("p",{className:"text-xs mt-1",children:"Make some API calls to see traces here"})]}):g("div",{className:"p-4 space-y-2",children:l.map((p,x)=>E("div",{children:[g(zu,{to:`/traces/${p.id}`,children:g(Pw,{trace:p,isActive:p.id===s})}),x<l.length-1&&g(_u,{className:"my-2"})]},p.id))})})]}),g("div",{className:"col-span-8 h-full overflow-y-auto p-6",children:g(Vv,{})})]})}function Pw({trace:l,isActive:r}){const i=d=>{switch(d){case"GET":return"bg-blue-100 dark:bg-blue-900 text-blue-700 dark:text-blue-300 hover:bg-blue-100 dark:hover:bg-blue-900";case"POST":return"bg-green-100 dark:bg-green-900 text-green-700 dark:text-green-300 hover:bg-green-100 dark:hover:bg-green-900";case"PUT":return"bg-yellow-100 dark:bg-yellow-900 text-yellow-700 dark:text-yellow-300 hover:bg-yellow-100 dark:hover:bg-yellow-900";case"DELETE":return"bg-red-100 dark:bg-red-900 text-red-700 dark:text-red-300 hover:bg-red-100 dark:hover:bg-red-900";default:return"bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300"}},s=d=>d?d>=200&&d<300?"bg-green-100 dark:bg-green-900 text-green-700 dark:text-green-300 hover:bg-green-100 dark:hover:bg-green-900":d>=400?"bg-red-100 dark:bg-red-900 text-red-700 dark:text-red-300 hover:bg-red-100 dark:hover:bg-red-900":"bg-yellow-100 dark:bg-yellow-900 text-yellow-700 dark:text-yellow-300 hover:bg-yellow-100 dark:hover:bg-yellow-900":"bg-gray-100 dark:bg-gray-800 text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800",c=d=>d==null?"-":d<1?"< 1ms":d<1e3?`${Math.round(d)}ms`:`${(d/1e3).toFixed(2)}s`,f=d=>new Date(d).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3});return E("div",{className:`w-full bg-background rounded-md border p-3 transition-all text-left cursor-pointer ${r?"border-primary ring-2 ring-primary/20":"border-border hover:border-primary/50"}`,children:[E("div",{className:"flex items-center gap-2 mb-2",children:[g(Me,{className:`text-xs font-mono px-1.5 py-0 ${i(l.method)}`,children:l.method}),g(Me,{className:`text-xs font-mono px-1.5 py-0 ${s(l.statusCode)}`,children:l.statusCode||"..."}),l.spans.length>0&&E("span",{className:"text-xs text-muted-foreground ml-auto",children:[l.spans.length," span",l.spans.length>1?"s":""]})]}),g("div",{className:"font-mono text-sm text-foreground truncate mb-2",children:l.path}),E("div",{className:"flex items-center gap-3 text-xs text-muted-foreground",children:[E("div",{className:"flex items-center gap-1",children:[g(Du,{className:"w-3 h-3"}),g("span",{children:f(l.timestamp)})]}),E("div",{className:"flex items-center gap-1",children:[g(Cr,{className:"w-3 h-3"}),g("span",{className:l.duration&&l.duration>1e3?"text-orange-600 dark:text-orange-400 font-medium":"",children:c(l.duration)})]})]})]})}function Iw({trace:l,onBack:r}){var v;const i=Vi(),s=ly(),c=async()=>{var p;try{const x=l.spans.find(Q=>{var B;return Q.name==="http.request"||!!((B=Q.attributes)!=null&&B["http.url"])}),S=((p=x==null?void 0:x.attributes)==null?void 0:p["http.url"])||l.path,N=Date.now();let O;try{new URL(S),O=S}catch{O=`http://localhost:3000${S.startsWith("/")?"":"/"}${S}`}const M=vt().on("trace.new",Q=>{Q.method===l.method&&Q.timestamp>=N&&(i(`/traces/${Q.id}`),M())}),R=Date.now(),L=await fetch(O,{method:l.method,headers:{"Content-Type":"application/json"}}),H=Date.now()-R,j=L.headers.get("X-Vision-Trace-Id");j&&s.mutate({traceId:j,clientDuration:H})}catch(x){console.error("Failed to replay request:",x)}},f=p=>p?p<1?"< 1ms":p<1e3?`${Math.round(p)}ms`:`${(p/1e3).toFixed(2)}s`:"-",d=p=>new Date(p).toLocaleString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3,hour12:!1}),m=p=>p?p>=200&&p<300?"bg-green-100 dark:bg-green-900 text-green-700 dark:text-green-300":p>=400?"bg-red-100 dark:bg-red-900 text-red-700 dark:text-red-300":"bg-yellow-100 dark:bg-yellow-900 text-yellow-700 dark:text-yellow-300":"bg-gray-100 dark:bg-gray-800 text-gray-600 dark:text-gray-400";return E("div",{className:"max-w-5xl",children:[E("div",{className:"flex items-center justify-between mb-6",children:[r&&E(Et,{variant:"ghost",size:"sm",onClick:r,className:"text-sm font-medium",children:[g(r2,{className:"w-4 h-4 mr-2"}),"Back to Traces"]}),g(Et,{onClick:c,size:"sm",className:"text-sm font-medium",children:"Replay Request"})]}),E("div",{className:"space-y-4",children:[E(dt,{children:[g(Tt,{children:g(Lt,{className:"text-base font-semibold",children:"Request Overview"})}),g(ht,{children:E("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-6",children:[E("div",{children:[g("p",{className:"text-xs text-muted-foreground mb-1",children:"Method"}),g("p",{className:"font-mono text-sm font-medium",children:l.method})]}),E("div",{className:"col-span-2",children:[g("p",{className:"text-xs text-muted-foreground mb-1",children:"Path"}),g("p",{className:"font-mono text-sm font-medium truncate",children:l.path})]}),E("div",{children:[g("p",{className:"text-xs text-muted-foreground mb-1",children:"Status"}),g(Me,{className:`text-xs font-mono ${m(l.statusCode)}`,children:l.statusCode||"Pending"})]}),E("div",{children:[g("p",{className:"text-xs text-muted-foreground mb-1",children:"Duration"}),(v=l.metadata)!=null&&v.clientDuration?E("div",{className:"space-y-1",children:[E("div",{className:"flex items-center gap-2",children:[g("span",{className:"text-xs text-muted-foreground",children:"Server:"}),g("span",{className:"font-mono text-sm",children:f(l.duration)})]}),E("div",{className:"flex items-center gap-2",children:[g("span",{className:"text-xs text-muted-foreground",children:"Total:"}),g("span",{className:"font-mono text-sm font-medium",children:f(l.metadata.clientDuration)})]}),E("div",{className:"flex items-center gap-2",children:[g("span",{className:"text-xs text-muted-foreground",children:"Network:"}),g("span",{className:"font-mono text-sm text-blue-600 dark:text-blue-400",children:f(l.metadata.clientDuration-(l.duration||0))})]})]}):g("p",{className:`font-mono text-sm font-medium ${l.duration&&l.duration>1e3?"text-orange-600 dark:text-orange-400":""}`,children:f(l.duration)})]}),E("div",{className:"col-span-2",children:[g("p",{className:"text-xs text-muted-foreground mb-1",children:"Timestamp"}),g("p",{className:"font-mono text-sm",children:d(l.timestamp)})]}),E("div",{children:[g("p",{className:"text-xs text-muted-foreground mb-1",children:"Trace ID"}),g("p",{className:"font-mono text-xs text-muted-foreground",children:l.id})]})]})})]}),g($w,{trace:l,formatDuration:f}),l.spans.length>0&&E(dt,{children:[g(Tt,{children:E(Lt,{className:"text-base font-semibold",children:["Spans Timeline (",l.spans.length,")"]})}),g(ht,{children:g(Fw,{spans:l.spans,formatDuration:f})})]})]})]})}function rr(l,r,i){let s=i.initialDeps??[],c;function f(){var d,m,v,p;let x;i.key&&((d=i.debug)!=null&&d.call(i))&&(x=Date.now());const S=l();if(!(S.length!==s.length||S.some((Y,M)=>s[M]!==Y)))return c;s=S;let O;if(i.key&&((m=i.debug)!=null&&m.call(i))&&(O=Date.now()),c=r(...S),i.key&&((v=i.debug)!=null&&v.call(i))){const Y=Math.round((Date.now()-x)*100)/100,M=Math.round((Date.now()-O)*100)/100,R=M/16,L=(H,j)=>{for(H=String(H);H.length<j;)H=" "+H;return H};console.info(`%c⏱ ${L(M,5)} /${L(Y,5)} ms`,`
232
232
  font-size: .6rem;
233
233
  font-weight: bold;
234
- color: hsl(${Math.max(0,Math.min(120-120*R,120))}deg 100% 31%);`,i==null?void 0:i.key)}return(p=i==null?void 0:i.onChange)==null||p.call(i,c),c}return f.updateDeps=d=>{s=d},f}function av(l,r){if(l===void 0)throw new Error("Unexpected undefined");return l}const eE=(l,r)=>Math.abs(l-r)<1.01,tE=(l,r,i)=>{let s;return function(...c){l.clearTimeout(s),s=l.setTimeout(()=>r.apply(this,c),i)}},rv=l=>{const{offsetWidth:r,offsetHeight:i}=l;return{width:r,height:i}},nE=l=>l,lE=l=>{const r=Math.max(l.startIndex-l.overscan,0),i=Math.min(l.endIndex+l.overscan,l.count-1),s=[];for(let c=r;c<=i;c++)s.push(c);return s},aE=(l,r)=>{const i=l.scrollElement;if(!i)return;const s=l.targetWindow;if(!s)return;const c=d=>{const{width:m,height:v}=d;r({width:Math.round(m),height:Math.round(v)})};if(c(rv(i)),!s.ResizeObserver)return()=>{};const f=new s.ResizeObserver(d=>{const m=()=>{const v=d[0];if(v!=null&&v.borderBoxSize){const p=v.borderBoxSize[0];if(p){c({width:p.inlineSize,height:p.blockSize});return}}c(rv(i))};l.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(m):m()});return f.observe(i,{box:"border-box"}),()=>{f.unobserve(i)}},iv={passive:!0},sv=typeof window>"u"?!0:"onscrollend"in window,rE=(l,r)=>{const i=l.scrollElement;if(!i)return;const s=l.targetWindow;if(!s)return;let c=0;const f=l.options.useScrollendEvent&&sv?()=>{}:tE(s,()=>{r(c,!1)},l.options.isScrollingResetDelay),d=x=>()=>{const{horizontal:S,isRtl:N}=l.options;c=S?i.scrollLeft*(N&&-1||1):i.scrollTop,f(),r(c,x)},m=d(!0),v=d(!1);v(),i.addEventListener("scroll",m,iv);const p=l.options.useScrollendEvent&&sv;return p&&i.addEventListener("scrollend",v,iv),()=>{i.removeEventListener("scroll",m),p&&i.removeEventListener("scrollend",v)}},iE=(l,r,i)=>{if(r!=null&&r.borderBoxSize){const s=r.borderBoxSize[0];if(s)return Math.round(s[i.options.horizontal?"inlineSize":"blockSize"])}return l[i.options.horizontal?"offsetWidth":"offsetHeight"]},sE=(l,{adjustments:r=0,behavior:i},s)=>{var c,f;const d=l+r;(f=(c=s.scrollElement)==null?void 0:c.scrollTo)==null||f.call(c,{[s.options.horizontal?"left":"top"]:d,behavior:i})};class uE{constructor(r){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.measurementsCache=[],this.itemSizeCache=new Map,this.pendingMeasuredCacheIndexes=[],this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.observer=(()=>{let i=null;const s=()=>i||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:i=new this.targetWindow.ResizeObserver(c=>{c.forEach(f=>{const d=()=>{this._measureElement(f.target,f)};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(d):d()})}));return{disconnect:()=>{var c;(c=s())==null||c.disconnect(),i=null},observe:c=>{var f;return(f=s())==null?void 0:f.observe(c,{box:"border-box"})},unobserve:c=>{var f;return(f=s())==null?void 0:f.unobserve(c)}}})(),this.range=null,this.setOptions=i=>{Object.entries(i).forEach(([s,c])=>{typeof c>"u"&&delete i[s]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:nE,rangeExtractor:lE,onChange:()=>{},measureElement:iE,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,...i}},this.notify=i=>{var s,c;(c=(s=this.options).onChange)==null||c.call(s,this,i)},this.maybeNotify=rr(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),i=>{this.notify(i)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(i=>i()),this.unsubs=[],this.observer.disconnect(),this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var i;const s=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==s){if(this.cleanup(),!s){this.maybeNotify();return}this.scrollElement=s,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((i=this.scrollElement)==null?void 0:i.window)??null,this.elementsCache.forEach(c=>{this.observer.observe(c)}),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0}),this.unsubs.push(this.options.observeElementRect(this,c=>{this.scrollRect=c,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(c,f)=>{this.scrollAdjustments=0,this.scrollDirection=f?this.getScrollOffset()<c?"forward":"backward":null,this.scrollOffset=c,this.isScrolling=f,this.maybeNotify()}))}},this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(i,s)=>{const c=new Map,f=new Map;for(let d=s-1;d>=0;d--){const m=i[d];if(c.has(m.lane))continue;const v=f.get(m.lane);if(v==null||m.end>v.end?f.set(m.lane,m):m.end<v.end&&c.set(m.lane,!0),c.size===this.options.lanes)break}return f.size===this.options.lanes?Array.from(f.values()).sort((d,m)=>d.end===m.end?d.index-m.index:d.end-m.end)[0]:void 0},this.getMeasurementOptions=rr(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled],(i,s,c,f,d)=>(this.pendingMeasuredCacheIndexes=[],{count:i,paddingStart:s,scrollMargin:c,getItemKey:f,enabled:d}),{key:!1}),this.getMeasurements=rr(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:i,paddingStart:s,scrollMargin:c,getItemKey:f,enabled:d},m)=>{if(!d)return this.measurementsCache=[],this.itemSizeCache.clear(),[];this.measurementsCache.length===0&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(x=>{this.itemSizeCache.set(x.key,x.size)}));const v=this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[];const p=this.measurementsCache.slice(0,v);for(let x=v;x<i;x++){const S=f(x),N=this.options.lanes===1?p[x-1]:this.getFurthestMeasurement(p,x),O=N?N.end+this.options.gap:s+c,Y=m.get(S),M=typeof Y=="number"?Y:this.options.estimateSize(x),R=O+M,L=N?N.lane:x%this.options.lanes;p[x]={index:x,start:O,size:M,end:R,key:S,lane:L}}return this.measurementsCache=p,p},{key:!1,debug:()=>this.options.debug}),this.calculateRange=rr(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(i,s,c,f)=>this.range=i.length>0&&s>0?oE({measurements:i,outerSize:s,scrollOffset:c,lanes:f}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=rr(()=>{let i=null,s=null;const c=this.calculateRange();return c&&(i=c.startIndex,s=c.endIndex),this.maybeNotify.updateDeps([this.isScrolling,i,s]),[this.options.rangeExtractor,this.options.overscan,this.options.count,i,s]},(i,s,c,f,d)=>f===null||d===null?[]:i({startIndex:f,endIndex:d,overscan:s,count:c}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=i=>{const s=this.options.indexAttribute,c=i.getAttribute(s);return c?parseInt(c,10):(console.warn(`Missing attribute name '${s}={index}' on measured element.`),-1)},this._measureElement=(i,s)=>{const c=this.indexFromElement(i),f=this.measurementsCache[c];if(!f)return;const d=f.key,m=this.elementsCache.get(d);m!==i&&(m&&this.observer.unobserve(m),this.observer.observe(i),this.elementsCache.set(d,i)),i.isConnected&&this.resizeItem(c,this.options.measureElement(i,s,this))},this.resizeItem=(i,s)=>{const c=this.measurementsCache[i];if(!c)return;const f=this.itemSizeCache.get(c.key)??c.size,d=s-f;d!==0&&((this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(c,d,this):c.start<this.getScrollOffset()+this.scrollAdjustments)&&this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=d,behavior:void 0}),this.pendingMeasuredCacheIndexes.push(c.index),this.itemSizeCache=new Map(this.itemSizeCache.set(c.key,s)),this.notify(!1))},this.measureElement=i=>{if(!i){this.elementsCache.forEach((s,c)=>{s.isConnected||(this.observer.unobserve(s),this.elementsCache.delete(c))});return}this._measureElement(i,void 0)},this.getVirtualItems=rr(()=>[this.getVirtualIndexes(),this.getMeasurements()],(i,s)=>{const c=[];for(let f=0,d=i.length;f<d;f++){const m=i[f],v=s[m];c.push(v)}return c},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=i=>{const s=this.getMeasurements();if(s.length!==0)return av(s[Gy(0,s.length-1,c=>av(s[c]).start,i)])},this.getOffsetForAlignment=(i,s,c=0)=>{const f=this.getSize(),d=this.getScrollOffset();s==="auto"&&(s=i>=d+f?"end":"start"),s==="center"?i+=(c-f)/2:s==="end"&&(i-=f);const m=this.getTotalSize()+this.options.scrollMargin-f;return Math.max(Math.min(m,i),0)},this.getOffsetForIndex=(i,s="auto")=>{i=Math.max(0,Math.min(i,this.options.count-1));const c=this.measurementsCache[i];if(!c)return;const f=this.getSize(),d=this.getScrollOffset();if(s==="auto")if(c.end>=d+f-this.options.scrollPaddingEnd)s="end";else if(c.start<=d+this.options.scrollPaddingStart)s="start";else return[d,s];const m=s==="end"?c.end+this.options.scrollPaddingEnd:c.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(m,s,c.size),s]},this.isDynamicMode=()=>this.elementsCache.size>0,this.scrollToOffset=(i,{align:s="start",behavior:c}={})=>{c==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getOffsetForAlignment(i,s),{adjustments:void 0,behavior:c})},this.scrollToIndex=(i,{align:s="auto",behavior:c}={})=>{c==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),i=Math.max(0,Math.min(i,this.options.count-1));let f=0;const d=10,m=p=>{if(!this.targetWindow)return;const x=this.getOffsetForIndex(i,p);if(!x){console.warn("Failed to get offset for index:",i);return}const[S,N]=x;this._scrollToOffset(S,{adjustments:void 0,behavior:c}),this.targetWindow.requestAnimationFrame(()=>{const O=this.getScrollOffset(),Y=this.getOffsetForIndex(i,N);if(!Y){console.warn("Failed to get offset for index:",i);return}eE(Y[0],O)||v(N)})},v=p=>{this.targetWindow&&(f++,f<d?this.targetWindow.requestAnimationFrame(()=>m(p)):console.warn(`Failed to scroll to index ${i} after ${d} attempts.`))};m(s)},this.scrollBy=(i,{behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getScrollOffset()+i,{adjustments:void 0,behavior:s})},this.getTotalSize=()=>{var i;const s=this.getMeasurements();let c;if(s.length===0)c=this.options.paddingStart;else if(this.options.lanes===1)c=((i=s[s.length-1])==null?void 0:i.end)??0;else{const f=Array(this.options.lanes).fill(null);let d=s.length-1;for(;d>=0&&f.some(m=>m===null);){const m=s[d];f[m.lane]===null&&(f[m.lane]=m.end),d--}c=Math.max(...f.filter(m=>m!==null))}return Math.max(c-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(i,{adjustments:s,behavior:c})=>{this.options.scrollToFn(i,{behavior:c,adjustments:s},this)},this.measure=()=>{this.itemSizeCache=new Map,this.notify(!1)},this.setOptions(r)}}const Gy=(l,r,i,s)=>{for(;l<=r;){const c=(l+r)/2|0,f=i(c);if(f<s)l=c+1;else if(f>s)r=c-1;else return c}return l>0?l-1:0};function oE({measurements:l,outerSize:r,scrollOffset:i,lanes:s}){const c=l.length-1,f=v=>l[v].start;if(l.length<=s)return{startIndex:0,endIndex:c};let d=Gy(0,c,f,i),m=d;if(s===1)for(;m<c&&l[m].end<i+r;)m++;else if(s>1){const v=Array(s).fill(0);for(;m<c&&v.some(x=>x<i+r);){const x=l[m];v[x.lane]=x.end,m++}const p=Array(s).fill(i+r);for(;d>=0&&p.some(x=>x>=i);){const x=l[d];p[x.lane]=x.start,d--}d=Math.max(0,d-d%s),m=Math.min(c,m+(s-1-m%s))}return{startIndex:d,endIndex:m}}const uv=typeof document<"u"?y.useLayoutEffect:y.useEffect;function cE(l){const r=y.useReducer(()=>({}),{})[1],i={...l,onChange:(c,f)=>{var d;f?e2.flushSync(r):r(),(d=l.onChange)==null||d.call(l,c,f)}},[s]=y.useState(()=>new uE(i));return s.setOptions(i),uv(()=>s._didMount(),[]),uv(()=>s._willUpdate()),s}function fE(l){return cE({observeElementRect:aE,observeElementOffset:rE,scrollToFn:sE,...l})}function dE(){const[l,r]=y.useState("all"),[i,s]=y.useState(""),c=w2(),f=Vi(),{data:d=[]}=N2({limit:1e4,level:l==="all"?void 0:l,search:i||void 0}),m=y.useRef(null),v=fE({count:d.length,getScrollElement:()=>m.current,estimateSize:()=>72,overscan:8,measureElement:M=>M.getBoundingClientRect().height}),p=()=>{confirm("Clear all logs?")&&c.mutate()},x=M=>{var j;const L=(M.message||"").match(/traceId=([^\s]+)/);if(L)return L[1];const H=(j=M==null?void 0:M.args)==null?void 0:j.find(Q=>Q&&typeof Q=="object"&&"traceId"in Q);return H==null?void 0:H.traceId},S=M=>{const R=M.message||"",L=/(\w+)=([^\s]+)/g,H=[...R.matchAll(L)];if(H.length===0)return;const j={};return H.forEach(([,Q,B])=>{if(B.startsWith("{")||B.startsWith("["))try{j[Q]=JSON.parse(B)}catch{j[Q]=B}else j[Q]=B}),Object.keys(j).length?j:void 0},N=M=>{switch(M){case"error":return g(Ui,{className:"w-4 h-4 text-red-500"});case"warn":return g(g2,{className:"w-4 h-4 text-yellow-500"});case"info":return g(Gp,{className:"w-4 h-4 text-blue-500"});case"debug":return g(i2,{className:"w-4 h-4 text-gray-500"});default:return g(Gp,{className:"w-4 h-4 text-gray-400"})}},O=M=>{switch(M){case"error":return"bg-red-50 dark:bg-red-950 border-red-200 dark:border-red-800";case"warn":return"bg-yellow-50 dark:bg-yellow-950 border-yellow-200 dark:border-yellow-800";case"info":return"bg-blue-50 dark:bg-blue-950 border-blue-200 dark:border-blue-800";case"debug":return"bg-gray-50 dark:bg-gray-900 border-gray-200 dark:border-gray-800";default:return"bg-background border-border"}},Y=M=>new Date(M).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3});return E("div",{className:"h-full flex flex-col",children:[E("div",{className:"bg-background border-b px-6 py-4",children:[E("div",{className:"flex items-center justify-between mb-4",children:[g("h1",{className:"text-lg font-semibold",children:"Logs"}),g("div",{className:"flex gap-2",children:E(Et,{variant:"outline",size:"sm",onClick:p,className:"text-sm font-medium",children:[g(ty,{className:"w-4 h-4 mr-1.5"}),"Clear All"]})})]}),E("div",{className:"flex gap-4",children:[g("div",{className:"flex gap-1",children:["all","log","info","warn","error","debug"].map(M=>g(Et,{variant:l===M?"default":"outline",size:"sm",onClick:()=>r(M),className:"text-sm font-medium",children:M.charAt(0).toUpperCase()+M.slice(1)},M))}),E("div",{className:"flex-1 max-w-md relative",children:[g(h2,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),g(id,{type:"text",placeholder:"Search logs...",value:i,onChange:M=>s(M.target.value),className:"pl-10 text-sm"})]}),E(Me,{variant:"secondary",className:"text-sm",children:[d.length.toLocaleString()," entries"]})]})]}),g("div",{ref:m,className:"flex-1 overflow-auto bg-muted px-6 py-4",children:d.length===0?E(dt,{children:[g(Tt,{children:g(Lt,{className:"text-sm",children:"No logs yet"})}),g(ht,{children:g("p",{className:"text-sm text-gray-600",children:"Logs will appear here as your application runs. Try making some API calls or use console.log() in your code."})})]}):g("div",{style:{height:`${v.getTotalSize()}px`,width:"100%",position:"relative"},children:v.getVirtualItems().map(M=>{const R=d[M.index],L=x(R),H=S(R);return g("div",{"data-index":M.index,ref:v.measureElement,style:{position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${M.start}px)`},children:g("div",{className:`mb-2 p-3 border rounded-lg ${O(R.level)}`,children:E("div",{className:"flex items-start gap-3",children:[g("div",{className:"mt-0.5",children:N(R.level)}),g("div",{className:"text-xs font-mono text-muted-foreground w-24 flex-shrink-0 mt-0.5",children:Y(R.timestamp)}),E("div",{className:"flex-1 min-w-0",children:[E("div",{className:"flex items-start gap-2",children:[g("div",{className:"flex-1",children:E("div",{className:"flex items-center gap-2 flex-wrap",children:[g("span",{className:"text-sm font-mono",children:R.message}),H&&E(Zt,{children:[H.method&&g(Me,{className:"font-mono text-xs",children:H.method}),H.endpoint&&g(Me,{variant:"secondary",className:"font-mono text-xs",children:H.endpoint}),H.code!==void 0&&E(Me,{variant:"secondary",className:"font-mono text-xs",children:["code=",H.code]}),H.duration&&E(Me,{variant:"secondary",className:"font-mono text-xs",children:["duration=",H.duration]}),H.sessionId&&E(Me,{variant:"outline",className:"font-mono text-xs",children:["session=",H.sessionId]}),H.params&&typeof H.params=="object"&&g(Zt,{children:Object.entries(H.params).map(([j,Q])=>E(Me,{variant:"outline",className:"font-mono text-xs",children:[j,"=",String(Q)]},j))}),H.query&&typeof H.query=="object"&&g(Zt,{children:Object.entries(H.query).map(([j,Q])=>E(Me,{variant:"outline",className:"font-mono text-xs",children:[j,"=",String(Q)]},j))})]})]})}),L&&g(Et,{variant:"outline",size:"sm",onClick:()=>f(`/traces/${L}`),className:"text-xs font-medium",children:"Go to trace"})]}),R.stack&&E("details",{className:"mt-2",onToggle:j=>{const Q=j.currentTarget.closest("[data-index]")||void 0;Q&&v.measureElement(Q)},children:[g("summary",{className:"text-xs text-muted-foreground cursor-pointer hover:text-foreground",children:"Stack trace"}),g("pre",{className:"mt-2 text-xs bg-background p-2 rounded border overflow-auto whitespace-pre-wrap select-text",children:R.stack})]})]})]})})},M.key)})})})]})}function hE(l){const r=l+"CollectionProvider",[i,s]=Lu(r),[c,f]=i(r,{collectionRef:{current:null},itemMap:new Map}),d=M=>{const{scope:R,children:L}=M,H=wt.useRef(null),j=wt.useRef(new Map).current;return g(c,{scope:R,itemMap:j,collectionRef:H,children:L})};d.displayName=r;const m=l+"CollectionSlot",v=qf(m),p=wt.forwardRef((M,R)=>{const{scope:L,children:H}=M,j=f(m,L),Q=Tn(R,j.collectionRef);return g(v,{ref:Q,children:H})});p.displayName=m;const x=l+"CollectionItemSlot",S="data-radix-collection-item",N=qf(x),O=wt.forwardRef((M,R)=>{const{scope:L,children:H,...j}=M,Q=wt.useRef(null),B=Tn(R,Q),k=f(x,L);return wt.useEffect(()=>(k.itemMap.set(Q,{ref:Q,...j}),()=>void k.itemMap.delete(Q))),g(N,{[S]:"",ref:B,children:H})});O.displayName=x;function Y(M){const R=f(l+"CollectionConsumer",M);return wt.useCallback(()=>{const H=R.collectionRef.current;if(!H)return[];const j=Array.from(H.querySelectorAll(`[${S}]`));return Array.from(R.itemMap.values()).sort((k,K)=>j.indexOf(k.ref.current)-j.indexOf(K.ref.current))},[R.collectionRef,R.itemMap])}return[{Provider:d,Slot:p,ItemSlot:O},Y,s]}var mE=Sv[" useId ".trim().toString()]||(()=>{}),gE=0;function Yy(l){const[r,i]=y.useState(mE());return ji(()=>{i(s=>s??String(gE++))},[l]),r?`radix-${r}`:""}var pE=Sv[" useInsertionEffect ".trim().toString()]||ji;function Vy({prop:l,defaultProp:r,onChange:i=()=>{},caller:s}){const[c,f,d]=vE({defaultProp:r,onChange:i}),m=l!==void 0,v=m?l:c;{const x=y.useRef(l!==void 0);y.useEffect(()=>{const S=x.current;S!==m&&console.warn(`${s} is changing from ${S?"controlled":"uncontrolled"} to ${m?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),x.current=m},[m,s])}const p=y.useCallback(x=>{var S;if(m){const N=yE(x)?x(l):x;N!==l&&((S=d.current)==null||S.call(d,N))}else f(x)},[m,l,f,d]);return[v,p]}function vE({defaultProp:l,onChange:r}){const[i,s]=y.useState(l),c=y.useRef(i),f=y.useRef(r);return pE(()=>{f.current=r},[r]),y.useEffect(()=>{var d;c.current!==i&&((d=f.current)==null||d.call(f,i),c.current=i)},[i,c]),[i,s,f]}function yE(l){return typeof l=="function"}var bf="rovingFocusGroup.onEntryFocus",bE={bubbles:!1,cancelable:!0},Zi="RovingFocusGroup",[Hf,Xy,xE]=hE(Zi),[SE,Ky]=Lu(Zi,[xE]),[NE,wE]=SE(Zi),Zy=y.forwardRef((l,r)=>g(Hf.Provider,{scope:l.__scopeRovingFocusGroup,children:g(Hf.Slot,{scope:l.__scopeRovingFocusGroup,children:g(EE,{...l,ref:r})})}));Zy.displayName=Zi;var EE=y.forwardRef((l,r)=>{const{__scopeRovingFocusGroup:i,orientation:s,loop:c=!1,dir:f,currentTabStopId:d,defaultCurrentTabStopId:m,onCurrentTabStopIdChange:v,onEntryFocus:p,preventScrollOnEntryFocus:x=!1,...S}=l,N=y.useRef(null),O=Tn(r,N),Y=sd(f),[M,R]=Vy({prop:d,defaultProp:m??null,onChange:v,caller:Zi}),[L,H]=y.useState(!1),j=Ol(p),Q=Xy(i),B=y.useRef(!1),[k,K]=y.useState(0);return y.useEffect(()=>{const W=N.current;if(W)return W.addEventListener(bf,j),()=>W.removeEventListener(bf,j)},[j]),g(NE,{scope:i,orientation:s,dir:Y,loop:c,currentTabStopId:M,onItemFocus:y.useCallback(W=>R(W),[R]),onItemShiftTab:y.useCallback(()=>H(!0),[]),onFocusableItemAdd:y.useCallback(()=>K(W=>W+1),[]),onFocusableItemRemove:y.useCallback(()=>K(W=>W-1),[]),children:g(Jt.div,{tabIndex:L||k===0?-1:0,"data-orientation":s,...S,ref:O,style:{outline:"none",...l.style},onMouseDown:pt(l.onMouseDown,()=>{B.current=!0}),onFocus:pt(l.onFocus,W=>{const P=!B.current;if(W.target===W.currentTarget&&P&&!L){const F=new CustomEvent(bf,bE);if(W.currentTarget.dispatchEvent(F),!F.defaultPrevented){const oe=Q().filter(D=>D.focusable),ie=oe.find(D=>D.active),qe=oe.find(D=>D.id===M),le=[ie,qe,...oe].filter(Boolean).map(D=>D.ref.current);$y(le,x)}}B.current=!1}),onBlur:pt(l.onBlur,()=>H(!1))})})}),Jy="RovingFocusGroupItem",Fy=y.forwardRef((l,r)=>{const{__scopeRovingFocusGroup:i,focusable:s=!0,active:c=!1,tabStopId:f,children:d,...m}=l,v=Yy(),p=f||v,x=wE(Jy,i),S=x.currentTabStopId===p,N=Xy(i),{onFocusableItemAdd:O,onFocusableItemRemove:Y,currentTabStopId:M}=x;return y.useEffect(()=>{if(s)return O(),()=>Y()},[s,O,Y]),g(Hf.ItemSlot,{scope:i,id:p,focusable:s,active:c,children:g(Jt.span,{tabIndex:S?0:-1,"data-orientation":x.orientation,...m,ref:r,onMouseDown:pt(l.onMouseDown,R=>{s?x.onItemFocus(p):R.preventDefault()}),onFocus:pt(l.onFocus,()=>x.onItemFocus(p)),onKeyDown:pt(l.onKeyDown,R=>{if(R.key==="Tab"&&R.shiftKey){x.onItemShiftTab();return}if(R.target!==R.currentTarget)return;const L=AE(R,x.orientation,x.dir);if(L!==void 0){if(R.metaKey||R.ctrlKey||R.altKey||R.shiftKey)return;R.preventDefault();let j=N().filter(Q=>Q.focusable).map(Q=>Q.ref.current);if(L==="last")j.reverse();else if(L==="prev"||L==="next"){L==="prev"&&j.reverse();const Q=j.indexOf(R.currentTarget);j=x.loop?RE(j,Q+1):j.slice(Q+1)}setTimeout(()=>$y(j))}}),children:typeof d=="function"?d({isCurrentTabStop:S,hasTabStop:M!=null}):d})})});Fy.displayName=Jy;var TE={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function CE(l,r){return r!=="rtl"?l:l==="ArrowLeft"?"ArrowRight":l==="ArrowRight"?"ArrowLeft":l}function AE(l,r,i){const s=CE(l.key,i);if(!(r==="vertical"&&["ArrowLeft","ArrowRight"].includes(s))&&!(r==="horizontal"&&["ArrowUp","ArrowDown"].includes(s)))return TE[s]}function $y(l,r=!1){const i=document.activeElement;for(const s of l)if(s===i||(s.focus({preventScroll:r}),document.activeElement!==i))return}function RE(l,r){return l.map((i,s)=>l[(r+s)%l.length])}var OE=Zy,ME=Fy,Hu="Tabs",[zE]=Lu(Hu,[Ky]),Wy=Ky(),[DE,hd]=zE(Hu),Py=y.forwardRef((l,r)=>{const{__scopeTabs:i,value:s,onValueChange:c,defaultValue:f,orientation:d="horizontal",dir:m,activationMode:v="automatic",...p}=l,x=sd(m),[S,N]=Vy({prop:s,onChange:c,defaultProp:f??"",caller:Hu});return g(DE,{scope:i,baseId:Yy(),value:S,onValueChange:N,orientation:d,dir:x,activationMode:v,children:g(Jt.div,{dir:x,"data-orientation":d,...p,ref:r})})});Py.displayName=Hu;var Iy="TabsList",e0=y.forwardRef((l,r)=>{const{__scopeTabs:i,loop:s=!0,...c}=l,f=hd(Iy,i),d=Wy(i);return g(OE,{asChild:!0,...d,orientation:f.orientation,dir:f.dir,loop:s,children:g(Jt.div,{role:"tablist","aria-orientation":f.orientation,...c,ref:r})})});e0.displayName=Iy;var t0="TabsTrigger",n0=y.forwardRef((l,r)=>{const{__scopeTabs:i,value:s,disabled:c=!1,...f}=l,d=hd(t0,i),m=Wy(i),v=r0(d.baseId,s),p=i0(d.baseId,s),x=s===d.value;return g(ME,{asChild:!0,...m,focusable:!c,active:x,children:g(Jt.button,{type:"button",role:"tab","aria-selected":x,"aria-controls":p,"data-state":x?"active":"inactive","data-disabled":c?"":void 0,disabled:c,id:v,...f,ref:r,onMouseDown:pt(l.onMouseDown,S=>{!c&&S.button===0&&S.ctrlKey===!1?d.onValueChange(s):S.preventDefault()}),onKeyDown:pt(l.onKeyDown,S=>{[" ","Enter"].includes(S.key)&&d.onValueChange(s)}),onFocus:pt(l.onFocus,()=>{const S=d.activationMode!=="manual";!x&&!c&&S&&d.onValueChange(s)})})})});n0.displayName=t0;var l0="TabsContent",a0=y.forwardRef((l,r)=>{const{__scopeTabs:i,value:s,forceMount:c,children:f,...d}=l,m=hd(l0,i),v=r0(m.baseId,s),p=i0(m.baseId,s),x=s===m.value,S=y.useRef(x);return y.useEffect(()=>{const N=requestAnimationFrame(()=>S.current=!1);return()=>cancelAnimationFrame(N)},[]),g(Rr,{present:c||x,children:({present:N})=>g(Jt.div,{"data-state":x?"active":"inactive","data-orientation":m.orientation,role:"tabpanel","aria-labelledby":v,hidden:!N,id:p,tabIndex:0,...d,ref:r,style:{...l.style,animationDuration:S.current?"0s":void 0},children:N&&f})})});a0.displayName=l0;function r0(l,r){return`${l}-trigger-${r}`}function i0(l,r){return`${l}-content-${r}`}var _E=Py,s0=e0,u0=n0,o0=a0;const UE=_E,c0=y.forwardRef(({className:l,...r},i)=>g(s0,{ref:i,className:mt("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",l),...r}));c0.displayName=s0.displayName;const Bf=y.forwardRef(({className:l,...r},i)=>g(u0,{ref:i,className:mt("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",l),...r}));Bf.displayName=u0.displayName;const kf=y.forwardRef(({className:l,...r},i)=>g(o0,{ref:i,className:mt("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",l),...r}));kf.displayName=o0.displayName;function LE(){const{data:l=[],isLoading:r}=ay(),{data:i=[],isLoading:s}=C2(),c=r||s,f=m=>m?new Date(m).toLocaleString():"Never",d=(m,v)=>m===0?0:Math.round((m-v)/m*100);return c?g("div",{className:"flex items-center justify-center h-96",children:E("div",{className:"text-center",children:[g("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary mx-auto mb-4"}),g("p",{className:"text-gray-600",children:"Loading events and cron jobs..."})]})}):E("div",{className:"space-y-4",children:[E("div",{className:"bg-background border-b px-6 py-4",children:[g("h1",{className:"text-lg font-semibold",children:"Events & Cron Jobs"}),g("p",{className:"text-sm text-muted-foreground mt-1.5",children:"Monitor your event-driven architecture and scheduled tasks"})]}),g("div",{className:"bg-background border-b px-6 py-4",children:E(UE,{defaultValue:"events",className:"w-full",children:[E(c0,{className:"grid w-full grid-cols-2",children:[E(Bf,{value:"events",children:[g(Cr,{className:"w-4 h-4 mr-2"}),"Events (",l.length,")"]}),E(Bf,{value:"crons",children:[g(Du,{className:"w-4 h-4 mr-2"}),"Cron Jobs (",i.length,")"]})]}),g(kf,{value:"events",className:"space-y-4",children:l.length===0?g(dt,{children:g(ht,{className:"pt-4",children:g("p",{className:"text-gray-500 text-center",children:"No events registered yet"})})}):l.map(m=>E(dt,{className:"hover:shadow-md transition-shadow",children:[g(Tt,{className:"pb-3",children:E("div",{className:"flex items-start justify-between",children:[E("div",{className:"flex items-start gap-3 flex-1",children:[g("div",{className:"text-xl mt-0.5",children:m.icon||"📡"}),E("div",{className:"flex-1",children:[g(Lt,{className:"text-base font-semibold",children:m.name}),m.description&&g("p",{className:"text-sm text-muted-foreground mt-1",children:m.description})]})]}),E("div",{className:"text-right",children:[g("div",{className:"text-xl font-semibold text-primary",children:m.totalCount}),g("p",{className:"text-xs text-gray-500",children:"total events"})]})]})}),E(ht,{className:"space-y-3",children:[E("div",{className:"grid grid-cols-2 gap-3",children:[E("div",{children:[g("p",{className:"text-xs text-gray-500 mb-1",children:"Handlers"}),g("p",{className:"text-sm font-medium",children:m.handlers})]}),E("div",{children:[g("p",{className:"text-xs text-gray-500 mb-1",children:"Success Rate"}),E("div",{className:"flex items-center gap-2",children:[g("div",{className:"flex-1 bg-gray-200 rounded-full h-2",children:g("div",{className:"bg-green-500 h-2 rounded-full",style:{width:`${d(m.totalCount,m.failedCount)}%`}})}),E("span",{className:"text-sm font-medium",children:[d(m.totalCount,m.failedCount),"%"]})]})]})]}),E("div",{className:"grid grid-cols-2 gap-4 pt-2 border-t",children:[E("div",{children:[g("p",{className:"text-xs text-gray-500 mb-1",children:"Last Triggered"}),g("p",{className:"text-sm",children:f(m.lastTriggered)})]}),E("div",{children:[g("p",{className:"text-xs text-gray-500 mb-1",children:"Failed Events"}),g("div",{className:"flex items-center gap-2",children:m.failedCount>0?E(Zt,{children:[g(Ui,{className:"w-4 h-4 text-red-500"}),g("span",{className:"text-sm font-medium text-red-600",children:m.failedCount})]}):E(Zt,{children:[g(Qp,{className:"w-4 h-4 text-green-500"}),g("span",{className:"text-sm text-green-600",children:"No failures"})]})})]})]}),m.tags&&m.tags.length>0&&E("div",{className:"pt-2 border-t",children:[g("p",{className:"text-xs text-gray-500 mb-2",children:"Tags"}),g("div",{className:"flex flex-wrap gap-2",children:m.tags.map(v=>E(Me,{variant:"secondary",className:"text-xs",children:[g(Vp,{className:"w-3 h-3 mr-1"}),v]},v))})]})]})]},m.name))}),g(kf,{value:"crons",className:"space-y-4",children:i.length===0?g(dt,{children:g(ht,{className:"pt-4",children:g("p",{className:"text-gray-500 text-center",children:"No cron jobs scheduled"})})}):i.map(m=>E(dt,{className:"hover:shadow-md transition-shadow",children:[g(Tt,{className:"pb-3",children:E("div",{className:"flex items-start justify-between",children:[E("div",{className:"flex items-start gap-3 flex-1",children:[g("div",{className:"text-xl mt-0.5",children:m.icon||"⏰"}),E("div",{className:"flex-1",children:[g(Lt,{className:"text-base font-semibold",children:m.name}),m.description&&g("p",{className:"text-sm text-muted-foreground mt-1",children:m.description}),E("div",{className:"mt-2 flex items-center gap-2",children:[g(s2,{className:"w-4 h-4 text-gray-500"}),g("code",{className:"text-xs bg-gray-100 px-2 py-1 rounded font-mono",children:m.schedule})]})]})]}),E("div",{className:"text-right",children:[g("div",{className:"text-xl font-semibold text-primary",children:m.totalRuns}),g("p",{className:"text-xs text-gray-500",children:"total runs"})]})]})}),E(ht,{className:"space-y-3",children:[E("div",{className:"grid grid-cols-2 gap-3",children:[E("div",{children:[g("p",{className:"text-xs text-gray-500 mb-1",children:"Success Rate"}),E("div",{className:"flex items-center gap-2",children:[g("div",{className:"flex-1 bg-gray-200 rounded-full h-2",children:g("div",{className:"bg-green-500 h-2 rounded-full",style:{width:`${d(m.totalRuns,m.failedRuns)}%`}})}),E("span",{className:"text-sm font-medium",children:[d(m.totalRuns,m.failedRuns),"%"]})]})]}),E("div",{children:[g("p",{className:"text-xs text-gray-500 mb-1",children:"Failed Runs"}),g("div",{className:"flex items-center gap-2",children:m.failedRuns>0?E(Zt,{children:[g(Ui,{className:"w-4 h-4 text-red-500"}),g("span",{className:"text-sm font-medium text-red-600",children:m.failedRuns})]}):E(Zt,{children:[g(Qp,{className:"w-4 h-4 text-green-500"}),g("span",{className:"text-sm text-green-600",children:"No failures"})]})})]})]}),E("div",{className:"grid grid-cols-2 gap-4 pt-2 border-t",children:[E("div",{children:[g("p",{className:"text-xs text-gray-500 mb-1",children:"Last Run"}),g("p",{className:"text-sm",children:f(m.lastRun)})]}),E("div",{children:[g("p",{className:"text-xs text-gray-500 mb-1",children:"Next Run"}),g("p",{className:"text-sm",children:f(m.nextRun)})]})]}),m.tags&&m.tags.length>0&&E("div",{className:"pt-2 border-t",children:[g("p",{className:"text-xs text-gray-500 mb-2",children:"Tags"}),g("div",{className:"flex flex-wrap gap-2",children:m.tags.map(v=>E(Me,{variant:"secondary",className:"text-xs",children:[g(Vp,{className:"w-3 h-3 mr-1"}),v]},v))})]})]})]},m.name))})]})})]})}function jE(){var H,j,Q;const{data:l}=ld(),{data:r=[]}=T2(),i=Vi(),[s,c]=y.useState(null),[f,d]=y.useState(new Set),m=(H=l==null?void 0:l.metadata)==null?void 0:H.integrations,v=B=>{const k=new Set(f);k.has(B)?k.delete(B):k.add(B),d(k)},p=(B,k,K)=>{c({service:B,method:k,path:K})},x=()=>{s&&i(`/api-explorer?method=${s.method}&path=${s.path}`)},S=r.reduce((B,k)=>B+k.routes.length,0),N=s?(j=r.find(B=>B.name===s.service))==null?void 0:j.routes.find(B=>B.method===s.method&&B.path===s.path):null,O=B=>{const k=B==null?void 0:B.match(/:(\w+)/g);return k?k.map(K=>K.slice(1)):[]},Y=B=>{switch(B){case"GET":return"bg-blue-100 dark:bg-blue-900 text-blue-700 dark:text-blue-300";case"POST":return"bg-green-100 dark:bg-green-900 text-green-700 dark:text-green-300";case"PUT":return"bg-yellow-100 dark:bg-yellow-900 text-yellow-700 dark:text-yellow-300";case"DELETE":return"bg-red-100 dark:bg-red-900 text-red-700 dark:text-red-300";case"PATCH":return"bg-purple-100 dark:bg-purple-900 text-purple-700 dark:text-purple-300";default:return"bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300"}},M=B=>B.includes("database")||B.includes("postgres")||B.includes("mysql")?g(nd,{className:"w-4 h-4"}):g(Yp,{className:"w-4 h-4"}),R=B=>{try{const k=new URL(B);return k.password&&(k.password="***"),k.toString()}catch{return B}},L=O(s==null?void 0:s.path);return E("div",{className:"h-full flex bg-background",children:[E("div",{className:"w-80 border-r bg-muted flex flex-col",children:[g("div",{className:"px-4 py-3 border-b bg-background",children:E("div",{className:"flex items-center justify-between",children:[g("h2",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wide",children:"Services"}),g(Me,{variant:"secondary",className:"text-xs",children:r.length})]})}),g(qi,{className:"flex-1",children:g("div",{className:"p-3",children:r.length===0?E("div",{className:"text-center text-sm text-muted-foreground py-12",children:[g(Yp,{className:"w-8 h-8 mx-auto mb-3 opacity-30"}),g("p",{className:"text-sm",children:"No services discovered yet"})]}):g("div",{className:"space-y-2",children:r.map(B=>E("div",{children:[E("button",{className:"w-full flex items-center gap-2 px-2 py-1.5 text-sm text-left hover:bg-gray-100 dark:hover:bg-primary dark:hover:text-primary-foreground rounded",onClick:()=>v(B.name),children:[f.has(B.name)?g(Wv,{className:"w-4 h-4 flex-shrink-0"}):g(Pv,{className:"w-4 h-4 flex-shrink-0"}),g("span",{className:"font-medium",children:B.name}),g("span",{className:"text-xs text-gray-500 ml-auto",children:B.routes.length})]}),f.has(B.name)&&g("div",{className:"ml-6 mt-1 space-y-0.5",children:B.routes.map((k,K)=>E("button",{className:`w-full flex items-center gap-2 px-2 py-1.5 text-sm text-left rounded ${(s==null?void 0:s.service)===B.name&&(s==null?void 0:s.method)===k.method&&(s==null?void 0:s.path)===k.path?"bg-blue-50 text-blue-700":"hover:bg-gray-50 dark:hover:bg-primary dark:hover:text-primary-foreground"}`,onClick:()=>p(B.name,k.method,k.path),children:[g(Me,{className:`text-[10px] font-mono w-12 flex items-center justify-center px-1.5 py-0 ${Y(k.method)}`,children:k.method}),g("span",{className:"text-xs truncate",children:k.path})]},`${k.method}-${k.path}-${K}`))})]},B.name))})})})]}),g(qi,{className:"flex-1",children:E("div",{className:"p-6",children:[g("h1",{className:"text-lg font-semibold mb-6",children:"Service Catalog"}),E(dt,{className:"mb-6",children:[g(Tt,{children:E(Lt,{className:"flex items-center gap-2 text-base font-semibold",children:[g(a2,{className:"w-5 h-5"}),(l==null?void 0:l.name)||"Unknown Service"]})}),E(ht,{children:[E("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-6",children:[E("div",{children:[g("p",{className:"text-xs text-muted-foreground mb-1",children:"Version"}),g("p",{className:"text-sm font-medium",children:(l==null?void 0:l.version)||"N/A"})]}),E("div",{children:[g("p",{className:"text-xs text-muted-foreground mb-1",children:"Framework"}),g("p",{className:"text-sm font-medium",children:((Q=l==null?void 0:l.metadata)==null?void 0:Q.framework)||"N/A"})]}),E("div",{children:[g("p",{className:"text-xs text-muted-foreground mb-1",children:"Status"}),g(Me,{variant:l!=null&&l.running?"default":"secondary",className:l!=null&&l.running?"bg-green-600":"",children:l!=null&&l.running?"Running":"Stopped"})]}),E("div",{children:[g("p",{className:"text-xs text-muted-foreground mb-1",children:"Endpoints"}),g("p",{className:"text-sm font-medium",children:S})]})]}),(l==null?void 0:l.description)&&E("div",{className:"mt-4 pt-4 border-t",children:[g("p",{className:"text-xs text-muted-foreground mb-1",children:"Description"}),g("p",{className:"text-sm",children:l.description})]})]})]}),m&&Object.keys(m).length>0&&E(dt,{className:"mb-6",children:[g(Tt,{children:g(Lt,{className:"text-base font-semibold",children:"Integrations"})}),g(ht,{children:g("div",{className:"space-y-3",children:Object.entries(m).map(([B,k])=>E("div",{className:"flex items-start gap-3 p-3 bg-muted rounded-lg border",children:[g("div",{className:"mt-0.5",children:M(B)}),E("div",{className:"flex-1 min-w-0",children:[g("p",{className:"text-sm font-medium capitalize",children:B}),g("p",{className:"text-xs text-muted-foreground font-mono truncate",title:k,children:R(k)})]})]},B))})})]}),s&&E(dt,{children:[g(Tt,{className:"border-b",children:E("div",{className:"flex items-center justify-between",children:[E("div",{className:"flex items-center gap-3",children:[g(Me,{className:`text-xs font-mono ${Y(s.method)}`,children:s.method}),E("div",{children:[g("div",{className:"font-mono text-md font-semibold",children:s.path}),E("div",{className:"text-sm text-muted-foreground mt-0.5",children:[s.service," service"]})]})]}),E(Et,{onClick:x,className:"bg-blue-600 hover:bg-blue-700 text-white text-xs",size:"sm",children:[g(ey,{className:"w-4 h-4 mr-2"}),"Test in API Explorer"]})]})}),g(ht,{className:"pt-6",children:E("div",{className:"space-y-6",children:[L.length>0?E("div",{children:[g("h3",{className:"text-sm font-semibold mb-3",children:"Path Parameters"}),g("div",{className:"space-y-2",children:L.map(B=>E("div",{className:"flex items-start gap-3 p-3 bg-muted rounded-lg border",children:[g("code",{className:"text-sm font-mono font-semibold text-primary",children:B}),g("span",{className:"text-xs text-muted-foreground mt-0.5",children:"string"})]},B))})]}):null,s.method==="GET"&&E("div",{children:[g("h3",{className:"text-sm font-semibold mb-3",children:"Query Parameters"}),g("div",{className:"p-4 bg-muted rounded-lg border",children:g("p",{className:"text-sm text-muted-foreground",children:"Optional query parameters can be added in API Explorer"})})]}),["POST","PUT","PATCH"].includes(s.method)&&E("div",{children:[g("h3",{className:"text-sm font-semibold mb-3",children:"Request Body Schema"}),N!=null&&N.requestBody?E("div",{className:"space-y-3",children:[g("div",{className:"space-y-2",children:N.requestBody.fields.map(B=>g("div",{className:"flex items-start gap-3 p-3 bg-muted rounded-lg border",children:E("div",{className:"flex-1",children:[E("div",{className:"flex items-center gap-2",children:[g("code",{className:"text-sm font-mono font-semibold",children:B.name}),g(Me,{variant:"outline",className:"text-xs",children:B.type}),B.required&&g(Me,{variant:"destructive",className:"text-xs",children:"required"})]}),B.description&&g("p",{className:"text-xs text-muted-foreground mt-1",children:B.description})]})},B.name))}),g("p",{className:"text-xs text-muted-foreground",children:"Auto-generated from Zod schema"})]}):g("div",{className:"p-4 bg-muted rounded-lg border",children:g("p",{className:"text-sm text-muted-foreground",children:"No schema defined. Configure request body in API Explorer"})})]}),(N==null?void 0:N.responseBody)&&E("div",{children:[g("h3",{className:"text-sm font-semibold mb-3",children:"Response Body Schema"}),E("div",{className:"space-y-3",children:[g("div",{className:"space-y-2",children:N.responseBody.fields.map(B=>g("div",{className:"flex items-start gap-3 p-3 bg-muted rounded-lg border",children:E("div",{className:"flex-1",children:[E("div",{className:"flex items-center gap-2",children:[g("code",{className:"text-sm font-mono font-semibold",children:B.name}),g(Me,{variant:"outline",className:"text-xs",children:B.type}),B.required&&g(Me,{variant:"secondary",className:"text-xs",children:"always present"})]}),B.description&&g("p",{className:"text-xs text-muted-foreground mt-1",children:B.description})]})},B.name))}),g("p",{className:"text-xs text-muted-foreground",children:"Auto-generated from Zod schema"})]})]}),(N==null?void 0:N.handler)&&N.handler!=="anonymous"&&E("div",{children:[g("h3",{className:"text-sm font-semibold mb-3",children:"Handler"}),g("code",{className:"text-sm bg-muted px-3 py-1.5 rounded border inline-block",children:N.handler})]})]})})]})]})})]})}const qE=ad("relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"}},defaultVariants:{variant:"default"}}),f0=y.forwardRef(({className:l,variant:r,...i},s)=>g("div",{ref:s,role:"alert",className:mt(qE({variant:r}),l),...i}));f0.displayName="Alert";const HE=y.forwardRef(({className:l,...r},i)=>g("h5",{ref:i,className:mt("mb-1 font-medium leading-none tracking-tight",l),...r}));HE.displayName="AlertTitle";const d0=y.forwardRef(({className:l,...r},i)=>g("div",{ref:i,className:mt("text-sm [&_p]:leading-relaxed",l),...r}));d0.displayName="AlertDescription";function BE(){var s,c,f;const{data:l}=ld(),r=(s=l==null?void 0:l.metadata)==null?void 0:s.drizzle;if(!(r!=null&&r.detected))return g("div",{className:"h-full flex items-center justify-center bg-muted p-6",children:E(dt,{className:"max-w-lg",children:[g(Tt,{children:E(Lt,{className:"flex items-center gap-2 text-base",children:[g(Ui,{className:"w-5 h-5 text-yellow-600 dark:text-yellow-500"}),"No Database Detected"]})}),E(ht,{className:"space-y-4",children:[g("p",{className:"text-sm text-muted-foreground",children:"Vision couldn't detect a Drizzle configuration file."}),E("div",{className:"space-y-3",children:[g("p",{className:"text-sm font-medium",children:"To enable database features:"}),E("ol",{className:"list-decimal list-inside space-y-2 text-sm text-muted-foreground",children:[E("li",{children:["Create ",g("code",{className:"bg-muted px-1.5 py-0.5 rounded text-xs font-mono border",children:"drizzle.config.ts"})]}),g("li",{children:"Enable auto-start in Vision config:"})]}),g("pre",{className:"bg-gray-900 dark:bg-gray-950 text-gray-300 dark:text-gray-400 p-4 rounded-md text-xs overflow-x-auto font-mono border",children:`app.use('*', visionAdapter({
234
+ color: hsl(${Math.max(0,Math.min(120-120*R,120))}deg 100% 31%);`,i==null?void 0:i.key)}return(p=i==null?void 0:i.onChange)==null||p.call(i,c),c}return f.updateDeps=d=>{s=d},f}function av(l,r){if(l===void 0)throw new Error("Unexpected undefined");return l}const eE=(l,r)=>Math.abs(l-r)<1.01,tE=(l,r,i)=>{let s;return function(...c){l.clearTimeout(s),s=l.setTimeout(()=>r.apply(this,c),i)}},rv=l=>{const{offsetWidth:r,offsetHeight:i}=l;return{width:r,height:i}},nE=l=>l,lE=l=>{const r=Math.max(l.startIndex-l.overscan,0),i=Math.min(l.endIndex+l.overscan,l.count-1),s=[];for(let c=r;c<=i;c++)s.push(c);return s},aE=(l,r)=>{const i=l.scrollElement;if(!i)return;const s=l.targetWindow;if(!s)return;const c=d=>{const{width:m,height:v}=d;r({width:Math.round(m),height:Math.round(v)})};if(c(rv(i)),!s.ResizeObserver)return()=>{};const f=new s.ResizeObserver(d=>{const m=()=>{const v=d[0];if(v!=null&&v.borderBoxSize){const p=v.borderBoxSize[0];if(p){c({width:p.inlineSize,height:p.blockSize});return}}c(rv(i))};l.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(m):m()});return f.observe(i,{box:"border-box"}),()=>{f.unobserve(i)}},iv={passive:!0},sv=typeof window>"u"?!0:"onscrollend"in window,rE=(l,r)=>{const i=l.scrollElement;if(!i)return;const s=l.targetWindow;if(!s)return;let c=0;const f=l.options.useScrollendEvent&&sv?()=>{}:tE(s,()=>{r(c,!1)},l.options.isScrollingResetDelay),d=x=>()=>{const{horizontal:S,isRtl:N}=l.options;c=S?i.scrollLeft*(N&&-1||1):i.scrollTop,f(),r(c,x)},m=d(!0),v=d(!1);v(),i.addEventListener("scroll",m,iv);const p=l.options.useScrollendEvent&&sv;return p&&i.addEventListener("scrollend",v,iv),()=>{i.removeEventListener("scroll",m),p&&i.removeEventListener("scrollend",v)}},iE=(l,r,i)=>{if(r!=null&&r.borderBoxSize){const s=r.borderBoxSize[0];if(s)return Math.round(s[i.options.horizontal?"inlineSize":"blockSize"])}return l[i.options.horizontal?"offsetWidth":"offsetHeight"]},sE=(l,{adjustments:r=0,behavior:i},s)=>{var c,f;const d=l+r;(f=(c=s.scrollElement)==null?void 0:c.scrollTo)==null||f.call(c,{[s.options.horizontal?"left":"top"]:d,behavior:i})};class uE{constructor(r){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.measurementsCache=[],this.itemSizeCache=new Map,this.pendingMeasuredCacheIndexes=[],this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.observer=(()=>{let i=null;const s=()=>i||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:i=new this.targetWindow.ResizeObserver(c=>{c.forEach(f=>{const d=()=>{this._measureElement(f.target,f)};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(d):d()})}));return{disconnect:()=>{var c;(c=s())==null||c.disconnect(),i=null},observe:c=>{var f;return(f=s())==null?void 0:f.observe(c,{box:"border-box"})},unobserve:c=>{var f;return(f=s())==null?void 0:f.unobserve(c)}}})(),this.range=null,this.setOptions=i=>{Object.entries(i).forEach(([s,c])=>{typeof c>"u"&&delete i[s]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:nE,rangeExtractor:lE,onChange:()=>{},measureElement:iE,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,...i}},this.notify=i=>{var s,c;(c=(s=this.options).onChange)==null||c.call(s,this,i)},this.maybeNotify=rr(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),i=>{this.notify(i)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(i=>i()),this.unsubs=[],this.observer.disconnect(),this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var i;const s=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==s){if(this.cleanup(),!s){this.maybeNotify();return}this.scrollElement=s,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((i=this.scrollElement)==null?void 0:i.window)??null,this.elementsCache.forEach(c=>{this.observer.observe(c)}),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0}),this.unsubs.push(this.options.observeElementRect(this,c=>{this.scrollRect=c,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(c,f)=>{this.scrollAdjustments=0,this.scrollDirection=f?this.getScrollOffset()<c?"forward":"backward":null,this.scrollOffset=c,this.isScrolling=f,this.maybeNotify()}))}},this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(i,s)=>{const c=new Map,f=new Map;for(let d=s-1;d>=0;d--){const m=i[d];if(c.has(m.lane))continue;const v=f.get(m.lane);if(v==null||m.end>v.end?f.set(m.lane,m):m.end<v.end&&c.set(m.lane,!0),c.size===this.options.lanes)break}return f.size===this.options.lanes?Array.from(f.values()).sort((d,m)=>d.end===m.end?d.index-m.index:d.end-m.end)[0]:void 0},this.getMeasurementOptions=rr(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled],(i,s,c,f,d)=>(this.pendingMeasuredCacheIndexes=[],{count:i,paddingStart:s,scrollMargin:c,getItemKey:f,enabled:d}),{key:!1}),this.getMeasurements=rr(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:i,paddingStart:s,scrollMargin:c,getItemKey:f,enabled:d},m)=>{if(!d)return this.measurementsCache=[],this.itemSizeCache.clear(),[];this.measurementsCache.length===0&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(x=>{this.itemSizeCache.set(x.key,x.size)}));const v=this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[];const p=this.measurementsCache.slice(0,v);for(let x=v;x<i;x++){const S=f(x),N=this.options.lanes===1?p[x-1]:this.getFurthestMeasurement(p,x),O=N?N.end+this.options.gap:s+c,Y=m.get(S),M=typeof Y=="number"?Y:this.options.estimateSize(x),R=O+M,L=N?N.lane:x%this.options.lanes;p[x]={index:x,start:O,size:M,end:R,key:S,lane:L}}return this.measurementsCache=p,p},{key:!1,debug:()=>this.options.debug}),this.calculateRange=rr(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(i,s,c,f)=>this.range=i.length>0&&s>0?oE({measurements:i,outerSize:s,scrollOffset:c,lanes:f}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=rr(()=>{let i=null,s=null;const c=this.calculateRange();return c&&(i=c.startIndex,s=c.endIndex),this.maybeNotify.updateDeps([this.isScrolling,i,s]),[this.options.rangeExtractor,this.options.overscan,this.options.count,i,s]},(i,s,c,f,d)=>f===null||d===null?[]:i({startIndex:f,endIndex:d,overscan:s,count:c}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=i=>{const s=this.options.indexAttribute,c=i.getAttribute(s);return c?parseInt(c,10):(console.warn(`Missing attribute name '${s}={index}' on measured element.`),-1)},this._measureElement=(i,s)=>{const c=this.indexFromElement(i),f=this.measurementsCache[c];if(!f)return;const d=f.key,m=this.elementsCache.get(d);m!==i&&(m&&this.observer.unobserve(m),this.observer.observe(i),this.elementsCache.set(d,i)),i.isConnected&&this.resizeItem(c,this.options.measureElement(i,s,this))},this.resizeItem=(i,s)=>{const c=this.measurementsCache[i];if(!c)return;const f=this.itemSizeCache.get(c.key)??c.size,d=s-f;d!==0&&((this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(c,d,this):c.start<this.getScrollOffset()+this.scrollAdjustments)&&this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=d,behavior:void 0}),this.pendingMeasuredCacheIndexes.push(c.index),this.itemSizeCache=new Map(this.itemSizeCache.set(c.key,s)),this.notify(!1))},this.measureElement=i=>{if(!i){this.elementsCache.forEach((s,c)=>{s.isConnected||(this.observer.unobserve(s),this.elementsCache.delete(c))});return}this._measureElement(i,void 0)},this.getVirtualItems=rr(()=>[this.getVirtualIndexes(),this.getMeasurements()],(i,s)=>{const c=[];for(let f=0,d=i.length;f<d;f++){const m=i[f],v=s[m];c.push(v)}return c},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=i=>{const s=this.getMeasurements();if(s.length!==0)return av(s[Gy(0,s.length-1,c=>av(s[c]).start,i)])},this.getOffsetForAlignment=(i,s,c=0)=>{const f=this.getSize(),d=this.getScrollOffset();s==="auto"&&(s=i>=d+f?"end":"start"),s==="center"?i+=(c-f)/2:s==="end"&&(i-=f);const m=this.getTotalSize()+this.options.scrollMargin-f;return Math.max(Math.min(m,i),0)},this.getOffsetForIndex=(i,s="auto")=>{i=Math.max(0,Math.min(i,this.options.count-1));const c=this.measurementsCache[i];if(!c)return;const f=this.getSize(),d=this.getScrollOffset();if(s==="auto")if(c.end>=d+f-this.options.scrollPaddingEnd)s="end";else if(c.start<=d+this.options.scrollPaddingStart)s="start";else return[d,s];const m=s==="end"?c.end+this.options.scrollPaddingEnd:c.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(m,s,c.size),s]},this.isDynamicMode=()=>this.elementsCache.size>0,this.scrollToOffset=(i,{align:s="start",behavior:c}={})=>{c==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getOffsetForAlignment(i,s),{adjustments:void 0,behavior:c})},this.scrollToIndex=(i,{align:s="auto",behavior:c}={})=>{c==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),i=Math.max(0,Math.min(i,this.options.count-1));let f=0;const d=10,m=p=>{if(!this.targetWindow)return;const x=this.getOffsetForIndex(i,p);if(!x){console.warn("Failed to get offset for index:",i);return}const[S,N]=x;this._scrollToOffset(S,{adjustments:void 0,behavior:c}),this.targetWindow.requestAnimationFrame(()=>{const O=this.getScrollOffset(),Y=this.getOffsetForIndex(i,N);if(!Y){console.warn("Failed to get offset for index:",i);return}eE(Y[0],O)||v(N)})},v=p=>{this.targetWindow&&(f++,f<d?this.targetWindow.requestAnimationFrame(()=>m(p)):console.warn(`Failed to scroll to index ${i} after ${d} attempts.`))};m(s)},this.scrollBy=(i,{behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getScrollOffset()+i,{adjustments:void 0,behavior:s})},this.getTotalSize=()=>{var i;const s=this.getMeasurements();let c;if(s.length===0)c=this.options.paddingStart;else if(this.options.lanes===1)c=((i=s[s.length-1])==null?void 0:i.end)??0;else{const f=Array(this.options.lanes).fill(null);let d=s.length-1;for(;d>=0&&f.some(m=>m===null);){const m=s[d];f[m.lane]===null&&(f[m.lane]=m.end),d--}c=Math.max(...f.filter(m=>m!==null))}return Math.max(c-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(i,{adjustments:s,behavior:c})=>{this.options.scrollToFn(i,{behavior:c,adjustments:s},this)},this.measure=()=>{this.itemSizeCache=new Map,this.notify(!1)},this.setOptions(r)}}const Gy=(l,r,i,s)=>{for(;l<=r;){const c=(l+r)/2|0,f=i(c);if(f<s)l=c+1;else if(f>s)r=c-1;else return c}return l>0?l-1:0};function oE({measurements:l,outerSize:r,scrollOffset:i,lanes:s}){const c=l.length-1,f=v=>l[v].start;if(l.length<=s)return{startIndex:0,endIndex:c};let d=Gy(0,c,f,i),m=d;if(s===1)for(;m<c&&l[m].end<i+r;)m++;else if(s>1){const v=Array(s).fill(0);for(;m<c&&v.some(x=>x<i+r);){const x=l[m];v[x.lane]=x.end,m++}const p=Array(s).fill(i+r);for(;d>=0&&p.some(x=>x>=i);){const x=l[d];p[x.lane]=x.start,d--}d=Math.max(0,d-d%s),m=Math.min(c,m+(s-1-m%s))}return{startIndex:d,endIndex:m}}const uv=typeof document<"u"?y.useLayoutEffect:y.useEffect;function cE(l){const r=y.useReducer(()=>({}),{})[1],i={...l,onChange:(c,f)=>{var d;f?e2.flushSync(r):r(),(d=l.onChange)==null||d.call(l,c,f)}},[s]=y.useState(()=>new uE(i));return s.setOptions(i),uv(()=>s._didMount(),[]),uv(()=>s._willUpdate()),s}function fE(l){return cE({observeElementRect:aE,observeElementOffset:rE,scrollToFn:sE,...l})}function dE(){const[l,r]=y.useState("all"),[i,s]=y.useState(""),c=w2(),f=Vi(),{data:d=[]}=N2({limit:1e4,level:l==="all"?void 0:l,search:i||void 0}),m=y.useRef(null),v=fE({count:d.length,getScrollElement:()=>m.current,estimateSize:()=>72,overscan:8,measureElement:M=>M.getBoundingClientRect().height}),p=()=>{confirm("Clear all logs?")&&c.mutate()},x=M=>{var j;const L=(M.message||"").match(/traceId=([^\s]+)/);if(L)return L[1];const H=(j=M==null?void 0:M.args)==null?void 0:j.find(Q=>Q&&typeof Q=="object"&&"traceId"in Q);return H==null?void 0:H.traceId},S=M=>{const R=M.message||"",L=/(\w+)=([^\s]+)/g,H=[...R.matchAll(L)];if(H.length===0)return;const j={};return H.forEach(([,Q,B])=>{if(B.startsWith("{")||B.startsWith("["))try{j[Q]=JSON.parse(B)}catch{j[Q]=B}else j[Q]=B}),Object.keys(j).length?j:void 0},N=M=>{switch(M){case"error":return g(Ui,{className:"w-4 h-4 text-red-500"});case"warn":return g(g2,{className:"w-4 h-4 text-yellow-500"});case"info":return g(Gp,{className:"w-4 h-4 text-blue-500"});case"debug":return g(i2,{className:"w-4 h-4 text-gray-500"});default:return g(Gp,{className:"w-4 h-4 text-gray-400"})}},O=M=>{switch(M){case"error":return"bg-red-50 dark:bg-red-950 border-red-200 dark:border-red-800";case"warn":return"bg-yellow-50 dark:bg-yellow-950 border-yellow-200 dark:border-yellow-800";case"info":return"bg-blue-50 dark:bg-blue-950 border-blue-200 dark:border-blue-800";case"debug":return"bg-gray-50 dark:bg-gray-900 border-gray-200 dark:border-gray-800";default:return"bg-background border-border"}},Y=M=>new Date(M).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3});return E("div",{className:"h-full flex flex-col",children:[E("div",{className:"bg-background border-b px-6 py-4",children:[E("div",{className:"flex items-center justify-between mb-4",children:[g("h1",{className:"text-lg font-semibold",children:"Logs"}),g("div",{className:"flex gap-2",children:E(Et,{variant:"outline",size:"sm",onClick:p,className:"text-sm font-medium",children:[g(ty,{className:"w-4 h-4 mr-1.5"}),"Clear All"]})})]}),E("div",{className:"flex gap-4",children:[g("div",{className:"flex gap-1",children:["all","log","info","warn","error","debug"].map(M=>g(Et,{variant:l===M?"default":"outline",size:"sm",onClick:()=>r(M),className:"text-sm font-medium",children:M.charAt(0).toUpperCase()+M.slice(1)},M))}),E("div",{className:"flex-1 max-w-md relative",children:[g(h2,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),g(id,{type:"text",placeholder:"Search logs...",value:i,onChange:M=>s(M.target.value),className:"pl-10 text-sm"})]}),E(Me,{variant:"secondary",className:"text-sm",children:[d.length.toLocaleString()," entries"]})]})]}),g("div",{ref:m,className:"flex-1 overflow-auto bg-muted px-6 py-4",children:d.length===0?E(dt,{children:[g(Tt,{children:g(Lt,{className:"text-sm",children:"No logs yet"})}),g(ht,{children:g("p",{className:"text-sm text-gray-600",children:"Logs will appear here as your application runs. Try making some API calls or use console.log() in your code."})})]}):g("div",{style:{height:`${v.getTotalSize()}px`,width:"100%",position:"relative"},children:v.getVirtualItems().map(M=>{const R=d[M.index],L=x(R),H=S(R);return g("div",{"data-index":M.index,ref:v.measureElement,style:{position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${M.start}px)`},children:g("div",{className:`mb-2 p-3 border rounded-lg ${O(R.level)}`,children:E("div",{className:"flex items-start gap-3",children:[g("div",{className:"mt-0.5",children:N(R.level)}),g("div",{className:"text-xs font-mono text-muted-foreground w-24 flex-shrink-0 mt-0.5",children:Y(R.timestamp)}),E("div",{className:"flex-1 min-w-0",children:[E("div",{className:"flex items-start gap-2",children:[g("div",{className:"flex-1",children:E("div",{className:"flex items-center gap-2 flex-wrap",children:[g("span",{className:"text-sm font-mono",children:R.message}),H&&E(Zt,{children:[H.method&&g(Me,{className:"font-mono text-xs",children:H.method}),H.endpoint&&g(Me,{variant:"secondary",className:"font-mono text-xs",children:H.endpoint}),H.code!==void 0&&E(Me,{variant:"secondary",className:"font-mono text-xs",children:["code=",H.code]}),H.duration&&E(Me,{variant:"secondary",className:"font-mono text-xs",children:["duration=",H.duration]}),H.sessionId&&E(Me,{variant:"outline",className:"font-mono text-xs",children:["session=",H.sessionId]}),H.params&&typeof H.params=="object"&&g(Zt,{children:Object.entries(H.params).map(([j,Q])=>E(Me,{variant:"outline",className:"font-mono text-xs",children:[j,"=",String(Q)]},j))}),H.query&&typeof H.query=="object"&&g(Zt,{children:Object.entries(H.query).map(([j,Q])=>E(Me,{variant:"outline",className:"font-mono text-xs",children:[j,"=",String(Q)]},j))})]})]})}),L&&g(Et,{variant:"outline",size:"sm",onClick:()=>f(`/traces/${L}`),className:"text-xs font-medium",children:"Go to trace"})]}),R.stack&&E("details",{className:"mt-2",onToggle:j=>{const Q=j.currentTarget.closest("[data-index]")||void 0;Q&&v.measureElement(Q)},children:[g("summary",{className:"text-xs text-muted-foreground cursor-pointer hover:text-foreground",children:"Stack trace"}),g("pre",{className:"mt-2 text-xs bg-background p-2 rounded border overflow-auto whitespace-pre-wrap select-text",children:R.stack})]})]})]})})},M.key)})})})]})}function hE(l){const r=l+"CollectionProvider",[i,s]=Lu(r),[c,f]=i(r,{collectionRef:{current:null},itemMap:new Map}),d=M=>{const{scope:R,children:L}=M,H=wt.useRef(null),j=wt.useRef(new Map).current;return g(c,{scope:R,itemMap:j,collectionRef:H,children:L})};d.displayName=r;const m=l+"CollectionSlot",v=qf(m),p=wt.forwardRef((M,R)=>{const{scope:L,children:H}=M,j=f(m,L),Q=Tn(R,j.collectionRef);return g(v,{ref:Q,children:H})});p.displayName=m;const x=l+"CollectionItemSlot",S="data-radix-collection-item",N=qf(x),O=wt.forwardRef((M,R)=>{const{scope:L,children:H,...j}=M,Q=wt.useRef(null),B=Tn(R,Q),k=f(x,L);return wt.useEffect(()=>(k.itemMap.set(Q,{ref:Q,...j}),()=>void k.itemMap.delete(Q))),g(N,{[S]:"",ref:B,children:H})});O.displayName=x;function Y(M){const R=f(l+"CollectionConsumer",M);return wt.useCallback(()=>{const H=R.collectionRef.current;if(!H)return[];const j=Array.from(H.querySelectorAll(`[${S}]`));return Array.from(R.itemMap.values()).sort((k,K)=>j.indexOf(k.ref.current)-j.indexOf(K.ref.current))},[R.collectionRef,R.itemMap])}return[{Provider:d,Slot:p,ItemSlot:O},Y,s]}var mE=Sv[" useId ".trim().toString()]||(()=>{}),gE=0;function Yy(l){const[r,i]=y.useState(mE());return ji(()=>{i(s=>s??String(gE++))},[l]),r?`radix-${r}`:""}var pE=Sv[" useInsertionEffect ".trim().toString()]||ji;function Vy({prop:l,defaultProp:r,onChange:i=()=>{},caller:s}){const[c,f,d]=vE({defaultProp:r,onChange:i}),m=l!==void 0,v=m?l:c;{const x=y.useRef(l!==void 0);y.useEffect(()=>{const S=x.current;S!==m&&console.warn(`${s} is changing from ${S?"controlled":"uncontrolled"} to ${m?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),x.current=m},[m,s])}const p=y.useCallback(x=>{var S;if(m){const N=yE(x)?x(l):x;N!==l&&((S=d.current)==null||S.call(d,N))}else f(x)},[m,l,f,d]);return[v,p]}function vE({defaultProp:l,onChange:r}){const[i,s]=y.useState(l),c=y.useRef(i),f=y.useRef(r);return pE(()=>{f.current=r},[r]),y.useEffect(()=>{var d;c.current!==i&&((d=f.current)==null||d.call(f,i),c.current=i)},[i,c]),[i,s,f]}function yE(l){return typeof l=="function"}var bf="rovingFocusGroup.onEntryFocus",bE={bubbles:!1,cancelable:!0},Zi="RovingFocusGroup",[Hf,Xy,xE]=hE(Zi),[SE,Ky]=Lu(Zi,[xE]),[NE,wE]=SE(Zi),Zy=y.forwardRef((l,r)=>g(Hf.Provider,{scope:l.__scopeRovingFocusGroup,children:g(Hf.Slot,{scope:l.__scopeRovingFocusGroup,children:g(EE,{...l,ref:r})})}));Zy.displayName=Zi;var EE=y.forwardRef((l,r)=>{const{__scopeRovingFocusGroup:i,orientation:s,loop:c=!1,dir:f,currentTabStopId:d,defaultCurrentTabStopId:m,onCurrentTabStopIdChange:v,onEntryFocus:p,preventScrollOnEntryFocus:x=!1,...S}=l,N=y.useRef(null),O=Tn(r,N),Y=sd(f),[M,R]=Vy({prop:d,defaultProp:m??null,onChange:v,caller:Zi}),[L,H]=y.useState(!1),j=Ol(p),Q=Xy(i),B=y.useRef(!1),[k,K]=y.useState(0);return y.useEffect(()=>{const W=N.current;if(W)return W.addEventListener(bf,j),()=>W.removeEventListener(bf,j)},[j]),g(NE,{scope:i,orientation:s,dir:Y,loop:c,currentTabStopId:M,onItemFocus:y.useCallback(W=>R(W),[R]),onItemShiftTab:y.useCallback(()=>H(!0),[]),onFocusableItemAdd:y.useCallback(()=>K(W=>W+1),[]),onFocusableItemRemove:y.useCallback(()=>K(W=>W-1),[]),children:g(Jt.div,{tabIndex:L||k===0?-1:0,"data-orientation":s,...S,ref:O,style:{outline:"none",...l.style},onMouseDown:pt(l.onMouseDown,()=>{B.current=!0}),onFocus:pt(l.onFocus,W=>{const P=!B.current;if(W.target===W.currentTarget&&P&&!L){const F=new CustomEvent(bf,bE);if(W.currentTarget.dispatchEvent(F),!F.defaultPrevented){const oe=Q().filter(D=>D.focusable),ie=oe.find(D=>D.active),qe=oe.find(D=>D.id===M),le=[ie,qe,...oe].filter(Boolean).map(D=>D.ref.current);$y(le,x)}}B.current=!1}),onBlur:pt(l.onBlur,()=>H(!1))})})}),Jy="RovingFocusGroupItem",Fy=y.forwardRef((l,r)=>{const{__scopeRovingFocusGroup:i,focusable:s=!0,active:c=!1,tabStopId:f,children:d,...m}=l,v=Yy(),p=f||v,x=wE(Jy,i),S=x.currentTabStopId===p,N=Xy(i),{onFocusableItemAdd:O,onFocusableItemRemove:Y,currentTabStopId:M}=x;return y.useEffect(()=>{if(s)return O(),()=>Y()},[s,O,Y]),g(Hf.ItemSlot,{scope:i,id:p,focusable:s,active:c,children:g(Jt.span,{tabIndex:S?0:-1,"data-orientation":x.orientation,...m,ref:r,onMouseDown:pt(l.onMouseDown,R=>{s?x.onItemFocus(p):R.preventDefault()}),onFocus:pt(l.onFocus,()=>x.onItemFocus(p)),onKeyDown:pt(l.onKeyDown,R=>{if(R.key==="Tab"&&R.shiftKey){x.onItemShiftTab();return}if(R.target!==R.currentTarget)return;const L=AE(R,x.orientation,x.dir);if(L!==void 0){if(R.metaKey||R.ctrlKey||R.altKey||R.shiftKey)return;R.preventDefault();let j=N().filter(Q=>Q.focusable).map(Q=>Q.ref.current);if(L==="last")j.reverse();else if(L==="prev"||L==="next"){L==="prev"&&j.reverse();const Q=j.indexOf(R.currentTarget);j=x.loop?RE(j,Q+1):j.slice(Q+1)}setTimeout(()=>$y(j))}}),children:typeof d=="function"?d({isCurrentTabStop:S,hasTabStop:M!=null}):d})})});Fy.displayName=Jy;var TE={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function CE(l,r){return r!=="rtl"?l:l==="ArrowLeft"?"ArrowRight":l==="ArrowRight"?"ArrowLeft":l}function AE(l,r,i){const s=CE(l.key,i);if(!(r==="vertical"&&["ArrowLeft","ArrowRight"].includes(s))&&!(r==="horizontal"&&["ArrowUp","ArrowDown"].includes(s)))return TE[s]}function $y(l,r=!1){const i=document.activeElement;for(const s of l)if(s===i||(s.focus({preventScroll:r}),document.activeElement!==i))return}function RE(l,r){return l.map((i,s)=>l[(r+s)%l.length])}var OE=Zy,ME=Fy,Hu="Tabs",[zE]=Lu(Hu,[Ky]),Wy=Ky(),[DE,hd]=zE(Hu),Py=y.forwardRef((l,r)=>{const{__scopeTabs:i,value:s,onValueChange:c,defaultValue:f,orientation:d="horizontal",dir:m,activationMode:v="automatic",...p}=l,x=sd(m),[S,N]=Vy({prop:s,onChange:c,defaultProp:f??"",caller:Hu});return g(DE,{scope:i,baseId:Yy(),value:S,onValueChange:N,orientation:d,dir:x,activationMode:v,children:g(Jt.div,{dir:x,"data-orientation":d,...p,ref:r})})});Py.displayName=Hu;var Iy="TabsList",e0=y.forwardRef((l,r)=>{const{__scopeTabs:i,loop:s=!0,...c}=l,f=hd(Iy,i),d=Wy(i);return g(OE,{asChild:!0,...d,orientation:f.orientation,dir:f.dir,loop:s,children:g(Jt.div,{role:"tablist","aria-orientation":f.orientation,...c,ref:r})})});e0.displayName=Iy;var t0="TabsTrigger",n0=y.forwardRef((l,r)=>{const{__scopeTabs:i,value:s,disabled:c=!1,...f}=l,d=hd(t0,i),m=Wy(i),v=r0(d.baseId,s),p=i0(d.baseId,s),x=s===d.value;return g(ME,{asChild:!0,...m,focusable:!c,active:x,children:g(Jt.button,{type:"button",role:"tab","aria-selected":x,"aria-controls":p,"data-state":x?"active":"inactive","data-disabled":c?"":void 0,disabled:c,id:v,...f,ref:r,onMouseDown:pt(l.onMouseDown,S=>{!c&&S.button===0&&S.ctrlKey===!1?d.onValueChange(s):S.preventDefault()}),onKeyDown:pt(l.onKeyDown,S=>{[" ","Enter"].includes(S.key)&&d.onValueChange(s)}),onFocus:pt(l.onFocus,()=>{const S=d.activationMode!=="manual";!x&&!c&&S&&d.onValueChange(s)})})})});n0.displayName=t0;var l0="TabsContent",a0=y.forwardRef((l,r)=>{const{__scopeTabs:i,value:s,forceMount:c,children:f,...d}=l,m=hd(l0,i),v=r0(m.baseId,s),p=i0(m.baseId,s),x=s===m.value,S=y.useRef(x);return y.useEffect(()=>{const N=requestAnimationFrame(()=>S.current=!1);return()=>cancelAnimationFrame(N)},[]),g(Rr,{present:c||x,children:({present:N})=>g(Jt.div,{"data-state":x?"active":"inactive","data-orientation":m.orientation,role:"tabpanel","aria-labelledby":v,hidden:!N,id:p,tabIndex:0,...d,ref:r,style:{...l.style,animationDuration:S.current?"0s":void 0},children:N&&f})})});a0.displayName=l0;function r0(l,r){return`${l}-trigger-${r}`}function i0(l,r){return`${l}-content-${r}`}var _E=Py,s0=e0,u0=n0,o0=a0;const UE=_E,c0=y.forwardRef(({className:l,...r},i)=>g(s0,{ref:i,className:mt("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",l),...r}));c0.displayName=s0.displayName;const Bf=y.forwardRef(({className:l,...r},i)=>g(u0,{ref:i,className:mt("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",l),...r}));Bf.displayName=u0.displayName;const kf=y.forwardRef(({className:l,...r},i)=>g(o0,{ref:i,className:mt("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",l),...r}));kf.displayName=o0.displayName;function LE(){const{data:l=[],isLoading:r}=ay(),{data:i=[],isLoading:s}=C2(),c=r||s,f=m=>m?new Date(m).toLocaleString():"Never",d=(m,v)=>m===0?0:Math.round((m-v)/m*100);return c?g("div",{className:"flex items-center justify-center h-96",children:E("div",{className:"text-center",children:[g("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary mx-auto mb-4"}),g("p",{className:"text-gray-600",children:"Loading events and cron jobs..."})]})}):E("div",{className:"flex flex-col h-full",children:[E("div",{className:"bg-background border-b px-6 py-4 flex-shrink-0",children:[g("h1",{className:"text-lg font-semibold",children:"Events & Cron Jobs"}),g("p",{className:"text-sm text-muted-foreground mt-1.5",children:"Monitor your event-driven architecture and scheduled tasks"})]}),g("div",{className:"bg-background px-6 py-4 flex-1 min-h-0",children:E(UE,{defaultValue:"events",className:"w-full h-full flex flex-col",children:[E(c0,{className:"grid w-full grid-cols-2",children:[E(Bf,{value:"events",children:[g(Cr,{className:"w-4 h-4 mr-2"}),"Events (",l.length,")"]}),E(Bf,{value:"crons",children:[g(Du,{className:"w-4 h-4 mr-2"}),"Cron Jobs (",i.length,")"]})]}),g(kf,{value:"events",className:"flex-1 overflow-y-auto mt-4",children:l.length===0?g(dt,{children:g(ht,{className:"pt-4",children:g("p",{className:"text-gray-500 text-center",children:"No events registered yet"})})}):g("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(m=>E(dt,{className:"hover:shadow-md transition-shadow",children:[g(Tt,{className:"pb-3",children:E("div",{className:"flex items-start justify-between",children:[E("div",{className:"flex items-start gap-3 flex-1",children:[g("div",{className:"text-xl mt-0.5",children:m.icon||"📡"}),E("div",{className:"flex-1",children:[g(Lt,{className:"text-base font-semibold",children:m.name}),m.description&&g("p",{className:"text-sm text-muted-foreground mt-1",children:m.description})]})]}),E("div",{className:"text-right",children:[g("div",{className:"text-xl font-semibold text-primary",children:m.totalCount}),g("p",{className:"text-xs text-gray-500",children:"total events"})]})]})}),E(ht,{className:"space-y-3",children:[E("div",{className:"grid grid-cols-2 gap-3",children:[E("div",{children:[g("p",{className:"text-xs text-gray-500 mb-1",children:"Handlers"}),g("p",{className:"text-sm font-medium",children:m.handlers})]}),E("div",{children:[g("p",{className:"text-xs text-gray-500 mb-1",children:"Success Rate"}),E("div",{className:"flex items-center gap-2",children:[g("div",{className:"flex-1 bg-muted rounded-full h-2",children:g("div",{className:"bg-green-500 h-2 rounded-full",style:{width:`${d(m.totalCount,m.failedCount)}%`}})}),E("span",{className:"text-sm font-medium",children:[d(m.totalCount,m.failedCount),"%"]})]})]})]}),E("div",{className:"grid grid-cols-2 gap-4 pt-2 border-t",children:[E("div",{children:[g("p",{className:"text-xs text-gray-500 mb-1",children:"Last Triggered"}),g("p",{className:"text-sm",children:f(m.lastTriggered)})]}),E("div",{children:[g("p",{className:"text-xs text-gray-500 mb-1",children:"Failed Events"}),g("div",{className:"flex items-center gap-2",children:m.failedCount>0?E(Zt,{children:[g(Ui,{className:"w-4 h-4 text-red-500"}),g("span",{className:"text-sm font-medium text-red-600",children:m.failedCount})]}):E(Zt,{children:[g(Qp,{className:"w-4 h-4 text-green-500"}),g("span",{className:"text-sm text-green-600",children:"No failures"})]})})]})]}),m.tags&&m.tags.length>0&&E("div",{className:"pt-2 border-t",children:[g("p",{className:"text-xs text-gray-500 mb-2",children:"Tags"}),g("div",{className:"flex flex-wrap gap-2",children:m.tags.map(v=>E(Me,{variant:"secondary",className:"text-xs",children:[g(Vp,{className:"w-3 h-3 mr-1"}),v]},v))})]})]})]},m.name))})}),g(kf,{value:"crons",className:"flex-1 overflow-y-auto mt-4",children:i.length===0?g(dt,{children:g(ht,{className:"pt-4",children:g("p",{className:"text-gray-500 text-center",children:"No cron jobs scheduled"})})}):g("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:i.map(m=>E(dt,{className:"hover:shadow-md transition-shadow",children:[g(Tt,{className:"pb-3",children:E("div",{className:"flex items-start justify-between",children:[E("div",{className:"flex items-start gap-3 flex-1",children:[g("div",{className:"text-xl mt-0.5",children:m.icon||"⏰"}),E("div",{className:"flex-1",children:[g(Lt,{className:"text-base font-semibold",children:m.name}),m.description&&g("p",{className:"text-sm text-muted-foreground mt-1",children:m.description}),E("div",{className:"mt-2 flex items-center gap-2",children:[g(s2,{className:"w-4 h-4 text-gray-500"}),g("code",{className:"text-xs bg-muted px-2 py-1 rounded font-mono",children:m.schedule})]})]})]}),E("div",{className:"text-right",children:[g("div",{className:"text-xl font-semibold text-primary",children:m.totalRuns}),g("p",{className:"text-xs text-gray-500",children:"total runs"})]})]})}),E(ht,{className:"space-y-3",children:[E("div",{className:"grid grid-cols-2 gap-3",children:[E("div",{children:[g("p",{className:"text-xs text-gray-500 mb-1",children:"Success Rate"}),E("div",{className:"flex items-center gap-2",children:[g("div",{className:"flex-1 bg-muted rounded-full h-2",children:g("div",{className:"bg-green-500 h-2 rounded-full",style:{width:`${d(m.totalRuns,m.failedRuns)}%`}})}),E("span",{className:"text-sm font-medium",children:[d(m.totalRuns,m.failedRuns),"%"]})]})]}),E("div",{children:[g("p",{className:"text-xs text-gray-500 mb-1",children:"Failed Runs"}),g("div",{className:"flex items-center gap-2",children:m.failedRuns>0?E(Zt,{children:[g(Ui,{className:"w-4 h-4 text-red-500"}),g("span",{className:"text-sm font-medium text-red-600",children:m.failedRuns})]}):E(Zt,{children:[g(Qp,{className:"w-4 h-4 text-green-500"}),g("span",{className:"text-sm text-green-600",children:"No failures"})]})})]})]}),E("div",{className:"grid grid-cols-2 gap-4 pt-2 border-t",children:[E("div",{children:[g("p",{className:"text-xs text-gray-500 mb-1",children:"Last Run"}),g("p",{className:"text-sm",children:f(m.lastRun)})]}),E("div",{children:[g("p",{className:"text-xs text-gray-500 mb-1",children:"Next Run"}),g("p",{className:"text-sm",children:f(m.nextRun)})]})]}),m.tags&&m.tags.length>0&&E("div",{className:"pt-2 border-t",children:[g("p",{className:"text-xs text-gray-500 mb-2",children:"Tags"}),g("div",{className:"flex flex-wrap gap-2",children:m.tags.map(v=>E(Me,{variant:"secondary",className:"text-xs",children:[g(Vp,{className:"w-3 h-3 mr-1"}),v]},v))})]})]})]},m.name))})})]})})]})}function jE(){var H,j,Q;const{data:l}=ld(),{data:r=[]}=T2(),i=Vi(),[s,c]=y.useState(null),[f,d]=y.useState(new Set),m=(H=l==null?void 0:l.metadata)==null?void 0:H.integrations,v=B=>{const k=new Set(f);k.has(B)?k.delete(B):k.add(B),d(k)},p=(B,k,K)=>{c({service:B,method:k,path:K})},x=()=>{s&&i(`/api-explorer?method=${s.method}&path=${s.path}`)},S=r.reduce((B,k)=>B+k.routes.length,0),N=s?(j=r.find(B=>B.name===s.service))==null?void 0:j.routes.find(B=>B.method===s.method&&B.path===s.path):null,O=B=>{const k=B==null?void 0:B.match(/:(\w+)/g);return k?k.map(K=>K.slice(1)):[]},Y=B=>{switch(B){case"GET":return"bg-blue-100 dark:bg-blue-900 text-blue-700 dark:text-blue-300";case"POST":return"bg-green-100 dark:bg-green-900 text-green-700 dark:text-green-300";case"PUT":return"bg-yellow-100 dark:bg-yellow-900 text-yellow-700 dark:text-yellow-300";case"DELETE":return"bg-red-100 dark:bg-red-900 text-red-700 dark:text-red-300";case"PATCH":return"bg-purple-100 dark:bg-purple-900 text-purple-700 dark:text-purple-300";default:return"bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300"}},M=B=>B.includes("database")||B.includes("postgres")||B.includes("mysql")?g(nd,{className:"w-4 h-4"}):g(Yp,{className:"w-4 h-4"}),R=B=>{try{const k=new URL(B);return k.password&&(k.password="***"),k.toString()}catch{return B}},L=O(s==null?void 0:s.path);return E("div",{className:"h-full flex bg-background",children:[E("div",{className:"w-80 border-r bg-muted flex flex-col",children:[g("div",{className:"px-4 py-3 border-b bg-background",children:E("div",{className:"flex items-center justify-between",children:[g("h2",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wide",children:"Services"}),g(Me,{variant:"secondary",className:"text-xs",children:r.length})]})}),g(qi,{className:"flex-1",children:g("div",{className:"p-3",children:r.length===0?E("div",{className:"text-center text-sm text-muted-foreground py-12",children:[g(Yp,{className:"w-8 h-8 mx-auto mb-3 opacity-30"}),g("p",{className:"text-sm",children:"No services discovered yet"})]}):g("div",{className:"space-y-2",children:r.map(B=>E("div",{children:[E("button",{className:"w-full flex items-center gap-2 px-2 py-1.5 text-sm text-left hover:bg-gray-100 dark:hover:bg-primary dark:hover:text-primary-foreground rounded",onClick:()=>v(B.name),children:[f.has(B.name)?g(Wv,{className:"w-4 h-4 flex-shrink-0"}):g(Pv,{className:"w-4 h-4 flex-shrink-0"}),g("span",{className:"font-medium",children:B.name}),g("span",{className:"text-xs text-gray-500 ml-auto",children:B.routes.length})]}),f.has(B.name)&&g("div",{className:"ml-6 mt-1 space-y-0.5",children:B.routes.map((k,K)=>E("button",{className:`w-full flex items-center gap-2 px-2 py-1.5 text-sm text-left rounded ${(s==null?void 0:s.service)===B.name&&(s==null?void 0:s.method)===k.method&&(s==null?void 0:s.path)===k.path?"bg-blue-50 text-blue-700":"hover:bg-gray-50 dark:hover:bg-primary dark:hover:text-primary-foreground"}`,onClick:()=>p(B.name,k.method,k.path),children:[g(Me,{className:`text-[10px] font-mono w-12 flex items-center justify-center px-1.5 py-0 ${Y(k.method)}`,children:k.method}),g("span",{className:"text-xs truncate",children:k.path})]},`${k.method}-${k.path}-${K}`))})]},B.name))})})})]}),g(qi,{className:"flex-1",children:E("div",{className:"p-6",children:[g("h1",{className:"text-lg font-semibold mb-6",children:"Service Catalog"}),E(dt,{className:"mb-6",children:[g(Tt,{children:E(Lt,{className:"flex items-center gap-2 text-base font-semibold",children:[g(a2,{className:"w-5 h-5"}),(l==null?void 0:l.name)||"Unknown Service"]})}),E(ht,{children:[E("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-6",children:[E("div",{children:[g("p",{className:"text-xs text-muted-foreground mb-1",children:"Version"}),g("p",{className:"text-sm font-medium",children:(l==null?void 0:l.version)||"N/A"})]}),E("div",{children:[g("p",{className:"text-xs text-muted-foreground mb-1",children:"Framework"}),g("p",{className:"text-sm font-medium",children:((Q=l==null?void 0:l.metadata)==null?void 0:Q.framework)||"N/A"})]}),E("div",{children:[g("p",{className:"text-xs text-muted-foreground mb-1",children:"Status"}),g(Me,{variant:l!=null&&l.running?"default":"secondary",className:l!=null&&l.running?"bg-green-600":"",children:l!=null&&l.running?"Running":"Stopped"})]}),E("div",{children:[g("p",{className:"text-xs text-muted-foreground mb-1",children:"Endpoints"}),g("p",{className:"text-sm font-medium",children:S})]})]}),(l==null?void 0:l.description)&&E("div",{className:"mt-4 pt-4 border-t",children:[g("p",{className:"text-xs text-muted-foreground mb-1",children:"Description"}),g("p",{className:"text-sm",children:l.description})]})]})]}),m&&Object.keys(m).length>0&&E(dt,{className:"mb-6",children:[g(Tt,{children:g(Lt,{className:"text-base font-semibold",children:"Integrations"})}),g(ht,{children:g("div",{className:"space-y-3",children:Object.entries(m).map(([B,k])=>E("div",{className:"flex items-start gap-3 p-3 bg-muted rounded-lg border",children:[g("div",{className:"mt-0.5",children:M(B)}),E("div",{className:"flex-1 min-w-0",children:[g("p",{className:"text-sm font-medium capitalize",children:B}),g("p",{className:"text-xs text-muted-foreground font-mono truncate",title:k,children:R(k)})]})]},B))})})]}),s&&E(dt,{children:[g(Tt,{className:"border-b",children:E("div",{className:"flex items-center justify-between",children:[E("div",{className:"flex items-center gap-3",children:[g(Me,{className:`text-xs font-mono ${Y(s.method)}`,children:s.method}),E("div",{children:[g("div",{className:"font-mono text-md font-semibold",children:s.path}),E("div",{className:"text-sm text-muted-foreground mt-0.5",children:[s.service," service"]})]})]}),E(Et,{onClick:x,className:"bg-blue-600 hover:bg-blue-700 text-white text-xs",size:"sm",children:[g(ey,{className:"w-4 h-4 mr-2"}),"Test in API Explorer"]})]})}),g(ht,{className:"pt-6",children:E("div",{className:"space-y-6",children:[L.length>0?E("div",{children:[g("h3",{className:"text-sm font-semibold mb-3",children:"Path Parameters"}),g("div",{className:"space-y-2",children:L.map(B=>E("div",{className:"flex items-start gap-3 p-3 bg-muted rounded-lg border",children:[g("code",{className:"text-sm font-mono font-semibold text-primary",children:B}),g("span",{className:"text-xs text-muted-foreground mt-0.5",children:"string"})]},B))})]}):null,s.method==="GET"&&E("div",{children:[g("h3",{className:"text-sm font-semibold mb-3",children:"Query Parameters"}),g("div",{className:"p-4 bg-muted rounded-lg border",children:g("p",{className:"text-sm text-muted-foreground",children:"Optional query parameters can be added in API Explorer"})})]}),["POST","PUT","PATCH"].includes(s.method)&&E("div",{children:[g("h3",{className:"text-sm font-semibold mb-3",children:"Request Body Schema"}),N!=null&&N.requestBody?E("div",{className:"space-y-3",children:[g("div",{className:"space-y-2",children:N.requestBody.fields.map(B=>g("div",{className:"flex items-start gap-3 p-3 bg-muted rounded-lg border",children:E("div",{className:"flex-1",children:[E("div",{className:"flex items-center gap-2",children:[g("code",{className:"text-sm font-mono font-semibold",children:B.name}),g(Me,{variant:"outline",className:"text-xs",children:B.type}),B.required&&g(Me,{variant:"destructive",className:"text-xs",children:"required"})]}),B.description&&g("p",{className:"text-xs text-muted-foreground mt-1",children:B.description})]})},B.name))}),g("p",{className:"text-xs text-muted-foreground",children:"Auto-generated from Zod schema"})]}):g("div",{className:"p-4 bg-muted rounded-lg border",children:g("p",{className:"text-sm text-muted-foreground",children:"No schema defined. Configure request body in API Explorer"})})]}),(N==null?void 0:N.responseBody)&&E("div",{children:[g("h3",{className:"text-sm font-semibold mb-3",children:"Response Body Schema"}),E("div",{className:"space-y-3",children:[g("div",{className:"space-y-2",children:N.responseBody.fields.map(B=>g("div",{className:"flex items-start gap-3 p-3 bg-muted rounded-lg border",children:E("div",{className:"flex-1",children:[E("div",{className:"flex items-center gap-2",children:[g("code",{className:"text-sm font-mono font-semibold",children:B.name}),g(Me,{variant:"outline",className:"text-xs",children:B.type}),B.required&&g(Me,{variant:"secondary",className:"text-xs",children:"always present"})]}),B.description&&g("p",{className:"text-xs text-muted-foreground mt-1",children:B.description})]})},B.name))}),g("p",{className:"text-xs text-muted-foreground",children:"Auto-generated from Zod schema"})]})]}),(N==null?void 0:N.handler)&&N.handler!=="anonymous"&&E("div",{children:[g("h3",{className:"text-sm font-semibold mb-3",children:"Handler"}),g("code",{className:"text-sm bg-muted px-3 py-1.5 rounded border inline-block",children:N.handler})]})]})})]})]})})]})}const qE=ad("relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"}},defaultVariants:{variant:"default"}}),f0=y.forwardRef(({className:l,variant:r,...i},s)=>g("div",{ref:s,role:"alert",className:mt(qE({variant:r}),l),...i}));f0.displayName="Alert";const HE=y.forwardRef(({className:l,...r},i)=>g("h5",{ref:i,className:mt("mb-1 font-medium leading-none tracking-tight",l),...r}));HE.displayName="AlertTitle";const d0=y.forwardRef(({className:l,...r},i)=>g("div",{ref:i,className:mt("text-sm [&_p]:leading-relaxed",l),...r}));d0.displayName="AlertDescription";function BE(){var s,c,f;const{data:l}=ld(),r=(s=l==null?void 0:l.metadata)==null?void 0:s.drizzle;if(!(r!=null&&r.detected))return g("div",{className:"h-full flex items-center justify-center bg-muted p-6",children:E(dt,{className:"max-w-lg",children:[g(Tt,{children:E(Lt,{className:"flex items-center gap-2 text-base",children:[g(Ui,{className:"w-5 h-5 text-yellow-600 dark:text-yellow-500"}),"No Database Detected"]})}),E(ht,{className:"space-y-4",children:[g("p",{className:"text-sm text-muted-foreground",children:"Vision couldn't detect a Drizzle configuration file."}),E("div",{className:"space-y-3",children:[g("p",{className:"text-sm font-medium",children:"To enable database features:"}),E("ol",{className:"list-decimal list-inside space-y-2 text-sm text-muted-foreground",children:[E("li",{children:["Create ",g("code",{className:"bg-muted px-1.5 py-0.5 rounded text-xs font-mono border",children:"drizzle.config.ts"})]}),g("li",{children:"Enable auto-start in Vision config:"})]}),g("pre",{className:"bg-gray-900 dark:bg-gray-950 text-gray-300 dark:text-gray-400 p-4 rounded-md text-xs overflow-x-auto font-mono border",children:`app.use('*', visionAdapter({
235
235
  drizzle: {
236
236
  autoStart: true, // Auto-start Drizzle Studio
237
237
  port: 4983 // Optional, default: 4983
@@ -0,0 +1 @@
1
+ *,:before,:after{--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: rgb(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: rgb(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: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;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;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color: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,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 48 33% 96%;--foreground: 222 15% 16%;--card: 0 0% 100%;--card-foreground: 222 15% 16%;--popover: 0 0% 100%;--popover-foreground: 222 15% 16%;--primary: 221 70% 55%;--primary-foreground: 210 40% 98%;--secondary: 48 22% 92%;--secondary-foreground: 222 20% 20%;--muted: 48 20% 92%;--muted-foreground: 222 12% 40%;--accent: 48 22% 92%;--accent-foreground: 222 20% 20%;--destructive: 0 70% 54%;--destructive-foreground: 210 40% 98%;--border: 48 16% 85%;--input: 48 16% 85%;--ring: 221 70% 55%;--radius: .5rem}.dark{--background: 220 16% 10%;--foreground: 210 20% 95%;--card: 220 16% 14%;--card-foreground: 210 20% 95%;--popover: 220 16% 14%;--popover-foreground: 210 20% 95%;--primary: 221 65% 58%;--primary-foreground: 222 47% 11%;--secondary: 220 14% 17%;--secondary-foreground: 210 20% 95%;--muted: 220 14% 17%;--muted-foreground: 210 12% 70%;--accent: 220 14% 17%;--accent-foreground: 210 20% 95%;--destructive: 0 62% 45%;--destructive-foreground: 210 20% 95%;--border: 220 14% 23%;--input: 220 14% 23%;--ring: 221 65% 58%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:hsl(var(--foreground))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.left-0{left:0}.left-2{left:.5rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-2{right:.5rem}.right-4{right:1rem}.top-1\/2{top:50%}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-50{z-index:50}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-span-4{grid-column:span 4 / span 4}.col-span-8{grid-column:span 8 / span 8}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.-mr-1{margin-right:-.25rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-\[1px\]{height:1px}.h-\[2px\]{height:2px}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[var\(--radix-dropdown-menu-content-available-height\)\]{max-height:var(--radix-dropdown-menu-content-available-height)}.min-h-0{min-height:0px}.w-12{width:3rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-64{width:16rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[1px\]{width:1px}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[120px\]{min-width:120px}.min-w-\[300px\]{min-width:300px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-\[200px\]{max-width:200px}.max-w-\[400px\]{max-width:400px}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-none{flex:none}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-\[--radix-dropdown-menu-content-transform-origin\]{transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x: 100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-t-md{border-top-left-radius:calc(var(--radius) - 2px);border-top-right-radius:calc(var(--radius) - 2px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-x{border-left-width:1px;border-right-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-500\/30{border-color:#3b82f64d}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-destructive\/50{border-color:hsl(var(--destructive) / .5)}.border-emerald-500\/30{border-color:#10b9814d}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-purple-500\/30{border-color:#a855f74d}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-background{background-color:hsl(var(--background))}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/90{background-color:hsl(var(--primary) / .9)}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/80{background-color:hsl(var(--secondary) / .8)}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-500\/90{--tw-gradient-from: rgb(59 130 246 / .9) var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-500\/90{--tw-gradient-from: rgb(16 185 129 / .9) var(--tw-gradient-from-position);--tw-gradient-to: rgb(16 185 129 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500\/90{--tw-gradient-from: rgb(168 85 247 / .9) var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-blue-600\/90{--tw-gradient-to: rgb(37 99 235 / .9) var(--tw-gradient-to-position)}.to-emerald-600\/90{--tw-gradient-to: rgb(5 150 105 / .9) var(--tw-gradient-to-position)}.to-purple-600\/90{--tw-gradient-to: rgb(147 51 234 / .9) var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-\[1px\]{padding:1px}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-0{padding-bottom:0}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-8{padding-left:2rem}.pr-2{padding-right:.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-50{--tw-text-opacity: 1;color:rgb(239 246 255 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-50{--tw-text-opacity: 1;color:rgb(236 253 245 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-purple-50{--tw-text-opacity: 1;color:rgb(250 245 255 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/80{color:#fffc}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(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)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.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)}.ring-primary\/20{--tw-ring-color: hsl(var(--primary) / .2)}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.drop-shadow-sm{--tw-drop-shadow: drop-shadow(0 1px 1px rgb(0 0 0 / .05));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.glass{border-width:1px;border-color:#ffffff1a;background-color:hsl(var(--background) / .6);--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.glass-strong{border-width:1px;border-color:#ffffff1a;background-color:hsl(var(--background) / .4);--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(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);--tw-backdrop-blur: blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.glass-muted{border-width:1px;border-color:hsl(var(--border) / .6);background-color:hsl(var(--muted) / .5);--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-blue-100:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-destructive\/80:hover{background-color:hsl(var(--destructive) / .8)}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-green-100:hover{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-muted\/80:hover{background-color:hsl(var(--muted) / .8)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-yellow-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-foreground\/90:hover{color:hsl(var(--foreground) / .9)}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1: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(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\: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\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\: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\: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\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(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)}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-destructive:is(.dark *){border-color:hsl(var(--destructive))}.dark\:border-gray-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.dark\:border-red-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(153 27 27 / var(--tw-border-opacity, 1))}.dark\:border-yellow-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(133 77 14 / var(--tw-border-opacity, 1))}.dark\:bg-blue-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-green-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(20 83 45 / var(--tw-bg-opacity, 1))}.dark\:bg-purple-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(88 28 135 / var(--tw-bg-opacity, 1))}.dark\:bg-red-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.dark\:bg-red-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(69 10 10 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(66 32 6 / var(--tw-bg-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-blue-500:is(.dark *){--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.dark\:text-orange-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.dark\:text-purple-300:is(.dark *){--tw-text-opacity: 1;color:rgb(216 180 254 / var(--tw-text-opacity, 1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-500:is(.dark *){--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-blue-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-blue-900:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-green-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-green-900:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(20 83 45 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-primary:hover:is(.dark *){background-color:hsl(var(--primary))}.dark\:hover\:bg-red-900:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-yellow-900:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:hover\:text-primary-foreground:hover:is(.dark *){color:hsl(var(--primary-foreground))}@media (min-width: 640px){.sm\:inline{display:inline}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:text-left{text-align:left}}@media (min-width: 768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-4>svg{width:1rem;height:1rem}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-destructive>svg{color:hsl(var(--destructive))}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}
@@ -5,8 +5,8 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>Vision Dashboard</title>
8
- <script type="module" crossorigin src="/assets/index-DIWmJAHA.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-CVA0UgYl.css">
8
+ <script type="module" crossorigin src="/assets/index-D8TdCKo0.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-DpEPFY0x.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="app"></div>
package/package.json CHANGED
@@ -1,23 +1,29 @@
1
1
  {
2
2
  "name": "@getvision/core",
3
- "version": "0.0.2",
3
+ "version": "0.0.4-a88ad97-develop",
4
4
  "type": "module",
5
+ "types": "dist/index.d.ts",
6
+ "module": "dist/index.js",
5
7
  "exports": {
6
8
  ".": {
7
9
  "types": "./dist/index.d.ts",
8
- "import": "./dist/index.js"
10
+ "import": "./dist/index.js",
11
+ "default": "./dist/index.js"
9
12
  },
10
13
  "./server": {
11
14
  "types": "./dist/server/index.d.ts",
12
- "import": "./dist/server/index.js"
15
+ "import": "./dist/server/index.js",
16
+ "default": "./dist/server/index.js"
13
17
  },
14
18
  "./tracing": {
15
19
  "types": "./dist/tracing/index.d.ts",
16
- "import": "./dist/tracing/index.js"
20
+ "import": "./dist/tracing/index.js",
21
+ "default": "./dist/tracing/index.js"
17
22
  },
18
23
  "./types": {
19
24
  "types": "./dist/types/index.d.ts",
20
- "import": "./dist/types/index.js"
25
+ "import": "./dist/types/index.js",
26
+ "default": "./dist/types/index.js"
21
27
  }
22
28
  },
23
29
  "scripts": {
@@ -1 +0,0 @@
1
- *,:before,:after{--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: rgb(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: rgb(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: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;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;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color: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,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 48 33% 96%;--foreground: 222 15% 16%;--card: 0 0% 100%;--card-foreground: 222 15% 16%;--popover: 0 0% 100%;--popover-foreground: 222 15% 16%;--primary: 221 70% 55%;--primary-foreground: 210 40% 98%;--secondary: 48 22% 92%;--secondary-foreground: 222 20% 20%;--muted: 48 20% 92%;--muted-foreground: 222 12% 40%;--accent: 48 22% 92%;--accent-foreground: 222 20% 20%;--destructive: 0 70% 54%;--destructive-foreground: 210 40% 98%;--border: 48 16% 85%;--input: 48 16% 85%;--ring: 221 70% 55%;--radius: .5rem}.dark{--background: 220 16% 10%;--foreground: 210 20% 95%;--card: 220 16% 14%;--card-foreground: 210 20% 95%;--popover: 220 16% 14%;--popover-foreground: 210 20% 95%;--primary: 221 65% 58%;--primary-foreground: 222 47% 11%;--secondary: 220 14% 17%;--secondary-foreground: 210 20% 95%;--muted: 220 14% 17%;--muted-foreground: 210 12% 70%;--accent: 220 14% 17%;--accent-foreground: 210 20% 95%;--destructive: 0 62% 45%;--destructive-foreground: 210 20% 95%;--border: 220 14% 23%;--input: 220 14% 23%;--ring: 221 65% 58%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:hsl(var(--foreground))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.left-0{left:0}.left-2{left:.5rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-2{right:.5rem}.right-4{right:1rem}.top-1\/2{top:50%}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-50{z-index:50}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-span-4{grid-column:span 4 / span 4}.col-span-8{grid-column:span 8 / span 8}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.-mr-1{margin-right:-.25rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-\[1px\]{height:1px}.h-\[2px\]{height:2px}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[var\(--radix-dropdown-menu-content-available-height\)\]{max-height:var(--radix-dropdown-menu-content-available-height)}.w-12{width:3rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-64{width:16rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[1px\]{width:1px}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[120px\]{min-width:120px}.min-w-\[300px\]{min-width:300px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-\[200px\]{max-width:200px}.max-w-\[400px\]{max-width:400px}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-none{flex:none}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-\[--radix-dropdown-menu-content-transform-origin\]{transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x: 100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-t-md{border-top-left-radius:calc(var(--radius) - 2px);border-top-right-radius:calc(var(--radius) - 2px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-x{border-left-width:1px;border-right-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-500\/30{border-color:#3b82f64d}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-destructive\/50{border-color:hsl(var(--destructive) / .5)}.border-emerald-500\/30{border-color:#10b9814d}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-purple-500\/30{border-color:#a855f74d}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-background{background-color:hsl(var(--background))}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/90{background-color:hsl(var(--primary) / .9)}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/80{background-color:hsl(var(--secondary) / .8)}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-500\/90{--tw-gradient-from: rgb(59 130 246 / .9) var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-500\/90{--tw-gradient-from: rgb(16 185 129 / .9) var(--tw-gradient-from-position);--tw-gradient-to: rgb(16 185 129 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500\/90{--tw-gradient-from: rgb(168 85 247 / .9) var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-blue-600\/90{--tw-gradient-to: rgb(37 99 235 / .9) var(--tw-gradient-to-position)}.to-emerald-600\/90{--tw-gradient-to: rgb(5 150 105 / .9) var(--tw-gradient-to-position)}.to-purple-600\/90{--tw-gradient-to: rgb(147 51 234 / .9) var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-\[1px\]{padding:1px}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-0{padding-bottom:0}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-8{padding-left:2rem}.pr-2{padding-right:.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-50{--tw-text-opacity: 1;color:rgb(239 246 255 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-50{--tw-text-opacity: 1;color:rgb(236 253 245 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-purple-50{--tw-text-opacity: 1;color:rgb(250 245 255 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/80{color:#fffc}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(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)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.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)}.ring-primary\/20{--tw-ring-color: hsl(var(--primary) / .2)}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.drop-shadow-sm{--tw-drop-shadow: drop-shadow(0 1px 1px rgb(0 0 0 / .05));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.glass{border-width:1px;border-color:#ffffff1a;background-color:hsl(var(--background) / .6);--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.glass-strong{border-width:1px;border-color:#ffffff1a;background-color:hsl(var(--background) / .4);--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(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);--tw-backdrop-blur: blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.glass-muted{border-width:1px;border-color:hsl(var(--border) / .6);background-color:hsl(var(--muted) / .5);--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-blue-100:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-destructive\/80:hover{background-color:hsl(var(--destructive) / .8)}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-green-100:hover{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-muted\/80:hover{background-color:hsl(var(--muted) / .8)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-yellow-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-foreground\/90:hover{color:hsl(var(--foreground) / .9)}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1: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(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\: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\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\: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\: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\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(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)}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-destructive:is(.dark *){border-color:hsl(var(--destructive))}.dark\:border-gray-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.dark\:border-red-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(153 27 27 / var(--tw-border-opacity, 1))}.dark\:border-yellow-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(133 77 14 / var(--tw-border-opacity, 1))}.dark\:bg-blue-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-green-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(20 83 45 / var(--tw-bg-opacity, 1))}.dark\:bg-purple-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(88 28 135 / var(--tw-bg-opacity, 1))}.dark\:bg-red-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.dark\:bg-red-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(69 10 10 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(66 32 6 / var(--tw-bg-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-blue-500:is(.dark *){--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.dark\:text-orange-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.dark\:text-purple-300:is(.dark *){--tw-text-opacity: 1;color:rgb(216 180 254 / var(--tw-text-opacity, 1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-500:is(.dark *){--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-blue-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-blue-900:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-green-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-green-900:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(20 83 45 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-primary:hover:is(.dark *){background-color:hsl(var(--primary))}.dark\:hover\:bg-red-900:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-yellow-900:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:hover\:text-primary-foreground:hover:is(.dark *){color:hsl(var(--primary-foreground))}@media (min-width: 640px){.sm\:inline{display:inline}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:text-left{text-align:left}}@media (min-width: 768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-4>svg{width:1rem;height:1rem}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-destructive>svg{color:hsl(var(--destructive))}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}