shraga 0.1.105 → 0.1.107

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -194,6 +194,13 @@ with:
194
194
  - **Your Claude subscription (recommended).** Run `claude auth login` once and leave
195
195
  `ANTHROPIC_API_KEY` unset. The agent runs on your plan, with no metered API charges.
196
196
  - **An API key.** Set `ANTHROPIC_API_KEY` in `.env` if you would rather pay per token.
197
+ - **Per-user subscriptions (optional).** A requester whose email resolves to a contact with a
198
+ `workspace/users/<contactId>/.claude` folder runs on that folder's login; everyone else keeps the default.
199
+ The folder is data-sync ignored and hidden from the workspace UI. Log each user in once:
200
+ `CLAUDE_CONFIG_DIR=<DATA_DIR>/workspace/users/<contactId>/.claude claude auth login`.
201
+ A folder without a login fails the run with the CLI's 401 — it never falls back to the default account.
202
+ Routed runs don't feed the usage gauge. Same trust model as the default login: the agent's Bash can
203
+ read a routed login just as it can read the default one.
197
204
 
198
205
  ## Configuration
199
206
 
@@ -1844,7 +1844,7 @@ https://github.com/highlightjs/highlight.js/issues/2277`),dn=ge,_t=je),rt===void
1844
1844
  `)},cM=function(){var e=parseInt(document.body.getAttribute(du)||"0",10);return isFinite(e)?e:0},sne=function(){y.useEffect(function(){return document.body.setAttribute(du,(cM()+1).toString()),function(){var e=cM()-1;e<=0?document.body.removeAttribute(du):document.body.setAttribute(du,e.toString())}},[])},lne=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?"margin":r;sne();var a=y.useMemo(function(){return ine(i)},[i]);return y.createElement(ane,{styles:one(a,!t,i,n?"":"!important")})},Pw=!1;if(typeof window<"u")try{var lm=Object.defineProperty({},"passive",{get:function(){return Pw=!0,!0}});window.addEventListener("test",lm,lm),window.removeEventListener("test",lm,lm)}catch{Pw=!1}var Uc=Pw?{passive:!1}:!1,cne=function(e){return e.tagName==="TEXTAREA"},Mz=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!cne(e)&&n[t]==="visible")},une=function(e){return Mz(e,"overflowY")},fne=function(e){return Mz(e,"overflowX")},uM=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var i=Iz(e,r);if(i){var a=Rz(e,r),s=a[1],c=a[2];if(s>c)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},dne=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},hne=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},Iz=function(e,t){return e==="v"?une(t):fne(t)},Rz=function(e,t){return e==="v"?dne(t):hne(t)},pne=function(e,t){return e==="h"&&t==="rtl"?-1:1},mne=function(e,t,n,r,i){var a=pne(e,window.getComputedStyle(t).direction),s=a*r,c=n.target,u=t.contains(c),f=!1,h=s>0,p=0,m=0;do{if(!c)break;var v=Rz(e,c),x=v[0],b=v[1],S=v[2],_=b-S-a*x;(x||_)&&Iz(e,c)&&(p+=_,m+=x);var O=c.parentNode;c=O&&O.nodeType===Node.DOCUMENT_FRAGMENT_NODE?O.host:O}while(!u&&c!==document.body||u&&(t.contains(c)||t===c));return(h&&Math.abs(p)<1||!h&&Math.abs(m)<1)&&(f=!0),f},cm=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},fM=function(e){return[e.deltaX,e.deltaY]},dM=function(e){return e&&"current"in e?e.current:e},gne=function(e,t){return e[0]===t[0]&&e[1]===t[1]},vne=function(e){return`
1845
1845
  .block-interactivity-`.concat(e,` {pointer-events: none;}
1846
1846
  .allow-interactivity-`).concat(e,` {pointer-events: all;}
1847
- `)},yne=0,Fc=[];function bne(e){var t=y.useRef([]),n=y.useRef([0,0]),r=y.useRef(),i=y.useState(yne++)[0],a=y.useState(Nz)[0],s=y.useRef(e);y.useEffect(function(){s.current=e},[e]),y.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(i));var b=qH([e.lockRef.current],(e.shards||[]).map(dM),!0).filter(Boolean);return b.forEach(function(S){return S.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),b.forEach(function(S){return S.classList.remove("allow-interactivity-".concat(i))})}}},[e.inert,e.lockRef.current,e.shards]);var c=y.useCallback(function(b,S){if("touches"in b&&b.touches.length===2||b.type==="wheel"&&b.ctrlKey)return!s.current.allowPinchZoom;var _=cm(b),O=n.current,k="deltaX"in b?b.deltaX:O[0]-_[0],T="deltaY"in b?b.deltaY:O[1]-_[1],C,N=b.target,P=Math.abs(k)>Math.abs(T)?"h":"v";if("touches"in b&&P==="h"&&N.type==="range")return!1;var D=window.getSelection(),j=D&&D.anchorNode,R=j?j===N||j.contains(N):!1;if(R)return!1;var F=uM(P,N);if(!F)return!0;if(F?C=P:(C=P==="v"?"h":"v",F=uM(P,N)),!F)return!1;if(!r.current&&"changedTouches"in b&&(k||T)&&(r.current=C),!C)return!0;var I=r.current||C;return mne(I,S,b,I==="h"?k:T)},[]),u=y.useCallback(function(b){var S=b;if(!(!Fc.length||Fc[Fc.length-1]!==a)){var _="deltaY"in S?fM(S):cm(S),O=t.current.filter(function(C){return C.name===S.type&&(C.target===S.target||S.target===C.shadowParent)&&gne(C.delta,_)})[0];if(O&&O.should){S.cancelable&&S.preventDefault();return}if(!O){var k=(s.current.shards||[]).map(dM).filter(Boolean).filter(function(C){return C.contains(S.target)}),T=k.length>0?c(S,k[0]):!s.current.noIsolation;T&&S.cancelable&&S.preventDefault()}}},[]),f=y.useCallback(function(b,S,_,O){var k={name:b,delta:S,target:_,should:O,shadowParent:xne(_)};t.current.push(k),setTimeout(function(){t.current=t.current.filter(function(T){return T!==k})},1)},[]),h=y.useCallback(function(b){n.current=cm(b),r.current=void 0},[]),p=y.useCallback(function(b){f(b.type,fM(b),b.target,c(b,e.lockRef.current))},[]),m=y.useCallback(function(b){f(b.type,cm(b),b.target,c(b,e.lockRef.current))},[]);y.useEffect(function(){return Fc.push(a),e.setCallbacks({onScrollCapture:p,onWheelCapture:p,onTouchMoveCapture:m}),document.addEventListener("wheel",u,Uc),document.addEventListener("touchmove",u,Uc),document.addEventListener("touchstart",h,Uc),function(){Fc=Fc.filter(function(b){return b!==a}),document.removeEventListener("wheel",u,Uc),document.removeEventListener("touchmove",u,Uc),document.removeEventListener("touchstart",h,Uc)}},[]);var v=e.removeScrollBar,x=e.inert;return y.createElement(y.Fragment,null,x?y.createElement(a,{styles:vne(i)}):null,v?y.createElement(lne,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function xne(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const wne=Yte(Tz,bne);var GE=y.forwardRef(function(e,t){return y.createElement(Av,oa({},e,{ref:t,sideCar:wne}))});GE.classNames=Av.classNames;var Ene=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Hc=new WeakMap,um=new WeakMap,fm={},px=0,Pz=function(e){return e&&(e.host||Pz(e.parentNode))},Sne=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=Pz(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},_ne=function(e,t,n,r){var i=Sne(t,Array.isArray(e)?e:[e]);fm[n]||(fm[n]=new WeakMap);var a=fm[n],s=[],c=new Set,u=new Set(i),f=function(p){!p||c.has(p)||(c.add(p),f(p.parentNode))};i.forEach(f);var h=function(p){!p||u.has(p)||Array.prototype.forEach.call(p.children,function(m){if(c.has(m))h(m);else try{var v=m.getAttribute(r),x=v!==null&&v!=="false",b=(Hc.get(m)||0)+1,S=(a.get(m)||0)+1;Hc.set(m,b),a.set(m,S),s.push(m),b===1&&x&&um.set(m,!0),S===1&&m.setAttribute(n,"true"),x||m.setAttribute(r,"true")}catch(_){console.error("aria-hidden: cannot operate on ",m,_)}})};return h(t),c.clear(),px++,function(){s.forEach(function(p){var m=Hc.get(p)-1,v=a.get(p)-1;Hc.set(p,m),a.set(p,v),m||(um.has(p)||p.removeAttribute(r),um.delete(p)),v||p.removeAttribute(n)}),px--,px||(Hc=new WeakMap,Hc=new WeakMap,um=new WeakMap,fm={})}},Dz=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),i=Ene(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll("[aria-live], script"))),_ne(r,i,n,"aria-hidden")):function(){return null}},kv="Dialog",[jz]=Ij(kv),[Ane,Bi]=jz(kv),Lz=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:s=!0}=e,c=y.useRef(null),u=y.useRef(null),[f,h]=xte({prop:r,defaultProp:i??!1,onChange:a,caller:kv});return w.jsx(Ane,{scope:t,triggerRef:c,contentRef:u,contentId:lx(),titleId:lx(),descriptionId:lx(),open:f,onOpenChange:h,onOpenToggle:y.useCallback(()=>h(p=>!p),[h]),modal:s,children:n})};Lz.displayName=kv;var zz="DialogTrigger",$z=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,i=Bi(zz,n),a=ri(t,i.triggerRef);return w.jsx(Dr.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":ZE(i.open),...r,ref:a,onClick:gr(e.onClick,i.onOpenToggle)})});$z.displayName=zz;var VE="DialogPortal",[kne,Bz]=jz(VE,{forceMount:void 0}),Uz=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:i}=e,a=Bi(VE,t);return w.jsx(kne,{scope:t,forceMount:n,children:y.Children.map(r,s=>w.jsx(Ps,{present:n||a.open,children:w.jsx(Oz,{asChild:!0,container:i,children:s})}))})};Uz.displayName=VE;var mg="DialogOverlay",WE=y.forwardRef((e,t)=>{const n=Bz(mg,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Bi(mg,e.__scopeDialog);return a.modal?w.jsx(Ps,{present:r||a.open,children:w.jsx(Cne,{...i,ref:t})}):null});WE.displayName=mg;var One=wE("DialogOverlay.RemoveScroll"),Cne=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,i=Bi(mg,n),a=Cte(),s=ri(t,a);return w.jsx(GE,{as:One,allowPinchZoom:!0,shards:[i.contentRef],children:w.jsx(Dr.div,{"data-state":ZE(i.open),...r,ref:s,style:{pointerEvents:"auto",...r.style}})})}),Su="DialogContent",YE=y.forwardRef((e,t)=>{const n=Bz(Su,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Bi(Su,e.__scopeDialog);return w.jsx(Ps,{present:r||a.open,children:a.modal?w.jsx(Tne,{...i,ref:t}):w.jsx(Nne,{...i,ref:t})})});YE.displayName=Su;var Tne=y.forwardRef((e,t)=>{const n=Bi(Su,e.__scopeDialog),r=y.useRef(null),i=ri(t,n.contentRef,r);return y.useEffect(()=>{const a=r.current;if(a)return Dz(a)},[]),w.jsx(Fz,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,onCloseAutoFocus:gr(e.onCloseAutoFocus,a=>{var s;a.preventDefault(),(s=n.triggerRef.current)==null||s.focus()}),onPointerDownOutside:gr(e.onPointerDownOutside,a=>{const s=a.detail.originalEvent,c=s.button===0&&s.ctrlKey===!0;(s.button===2||c)&&a.preventDefault()}),onFocusOutside:gr(e.onFocusOutside,a=>a.preventDefault())})}),Nne=y.forwardRef((e,t)=>{const n=Bi(Su,e.__scopeDialog),r=y.useRef(!1),i=y.useRef(!1);return w.jsx(Fz,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:a=>{var s,c;(s=e.onCloseAutoFocus)==null||s.call(e,a),a.defaultPrevented||(r.current||(c=n.triggerRef.current)==null||c.focus(),a.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:a=>{var u,f;(u=e.onInteractOutside)==null||u.call(e,a),a.defaultPrevented||(r.current=!0,a.detail.originalEvent.type==="pointerdown"&&(i.current=!0));const s=a.target;((f=n.triggerRef.current)==null?void 0:f.contains(s))&&a.preventDefault(),a.detail.originalEvent.type==="focusin"&&i.current&&a.preventDefault()}})}),Fz=y.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,...s}=e,c=Bi(Su,n);return Bte(),w.jsx(w.Fragment,{children:w.jsx(Az,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:w.jsx(Sz,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":ZE(c.open),...s,ref:t,deferPointerDownOutside:!0,onDismiss:()=>c.onOpenChange(!1)})})})}),Hz="DialogTitle",XE=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,i=Bi(Hz,n);return w.jsx(Dr.h2,{id:i.titleId,...r,ref:t})});XE.displayName=Hz;var Kz="DialogDescription",Mne=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,i=Bi(Kz,n);return w.jsx(Dr.p,{id:i.descriptionId,...r,ref:t})});Mne.displayName=Kz;var qz="DialogClose",Gz=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,i=Bi(qz,n);return w.jsx(Dr.button,{type:"button",...r,ref:t,onClick:gr(e.onClick,()=>i.onOpenChange(!1))})});Gz.displayName=qz;function ZE(e){return e?"open":"closed"}const Ss=Lz,uh=$z,Ine=Uz,Vz=y.forwardRef(({className:e,...t},n)=>w.jsx(WE,{ref:n,className:Ue("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));Vz.displayName=WE.displayName;const fo=y.forwardRef(({className:e,children:t,...n},r)=>w.jsxs(Ine,{children:[w.jsx(Vz,{}),w.jsxs(YE,{ref:r,className:Ue("fixed left-[50%] top-[50%] z-50 flex flex-col w-[calc(100vw-2rem)] max-w-lg max-h-[85dvh] overflow-y-auto translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-4 sm:p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg",e),...n,children:[t,w.jsxs(Gz,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[w.jsx(Dl,{className:"h-4 w-4"}),w.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));fo.displayName=YE.displayName;function Ll({className:e,...t}){return w.jsx("div",{className:Ue("shrink-0 flex flex-col space-y-1.5 text-center sm:text-left",e),...t})}function Wz({className:e,...t}){return w.jsx("div",{"data-dialog-body":!0,className:Ue("flex-1 min-h-0 overflow-y-auto -mx-4 px-4 sm:-mx-6 sm:px-6",e),...t})}function Yz({className:e,...t}){return w.jsx("div",{className:Ue("shrink-0 -mx-4 px-4 pt-3 border-t sm:-mx-6 sm:px-6","flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t})}const _s=y.forwardRef(({className:e,...t},n)=>w.jsx(XE,{ref:n,className:Ue("text-lg font-semibold leading-none tracking-tight",e),...t}));_s.displayName=XE.displayName;const Rne=new Set(["png","jpg","jpeg","gif","webp","svg","ico","bmp","avif"]),Pne=new Set(["pdf","mp4","webm","mp3","ogg","wav"]);async function Dne(e,t){const n=await t();if(!n)return[];const r=await fetch(`/api/workspace/ls?path=${encodeURIComponent(e)}`,{headers:{Authorization:`Bearer ${n}`}});return r.ok?(await r.json()).entries??[]:[]}function jne({getToken:e,onRefresh:t,refreshKey:n}){const[r,i]=y.useState(new Map),[a,s]=y.useState(()=>new Set),[c,u]=y.useState(null),[f,h]=y.useState(!1),[p,m]=y.useState("fit"),[v,x]=y.useState(null),[b,S]=y.useState(null),_=y.useRef(null),[O,k]=y.useState(null),[T,C]=y.useState(!1),[N,P]=y.useState([]),D=y.useCallback(async B=>{const Y=await Dne(B,e);i(H=>new Map(H).set(B,Y))},[e]);y.useEffect(()=>{D(""),a.forEach(B=>D(B))},[D,n]);const j=r.get("")??[],R=y.useCallback(B=>{try{const Y=B.contentDocument;if(!(Y!=null&&Y.body))return;const H=Math.max(Y.body.offsetWidth,Y.body.scrollWidth),K=Math.max(Y.body.offsetHeight,Y.body.scrollHeight);H&&K&&S({w:H,h:K})}catch{}},[]),F=y.useCallback(()=>{const B=_.current,Y=b;if(!B||!Y)return;const H=16,K=B.clientWidth-H,L=B.clientHeight-H,U=Math.min(K/Y.w,L/Y.h,1);x({scale:U,w:Y.w,h:Y.h})},[b]);y.useEffect(()=>{if(!(c!=null&&c.html)||p!=="fit"){x(null);return}const B=_.current;if(!B)return;const Y=new ResizeObserver(()=>requestAnimationFrame(F));return Y.observe(B),()=>Y.disconnect()},[c==null?void 0:c.html,f,p,F]),y.useEffect(()=>{T&&e().then(B=>{B&&fetch("/api/data-sync/log",{headers:{Authorization:`Bearer ${B}`}}).then(Y=>Y.json()).then(P).catch(()=>{})})},[T]);const I=B=>{s(Y=>{const H=new Set(Y);return H.has(B)?H.delete(B):(H.add(B),r.has(B)||D(B)),H})},G=(B,Y)=>{const H=new URLSearchParams({path:B});return O&&H.set("token",O),Y&&H.set("dl","1"),`/api/workspace/raw?${H}`},V=async B=>{var K;const Y=await e();if(!Y)return;k(Y);const H=((K=B.split(".").pop())==null?void 0:K.toLowerCase())??"";if(H==="html"||H==="htm"){u({path:B,content:"",binary:!1,html:!0});return}if(Rne.has(H)){u({path:B,content:"",binary:!1,image:!0});return}if(Pne.has(H)){u({path:B,content:"",binary:!1,html:!0});return}try{const L=await fetch(`/api/workspace/file?path=${encodeURIComponent(B)}`,{headers:{Authorization:`Bearer ${Y}`}});if(!L.ok)return;const U=await L.json();u({path:B,content:U.content,binary:!!U.binary})}catch{}},q=(B,Y)=>w.jsx(w.Fragment,{children:B.map(H=>{const K=H.path.split("/").pop();return w.jsxs("div",{children:[H.type==="dir"?w.jsxs("button",{onClick:()=>I(H.path),className:"w-full flex items-center gap-1 px-2 py-1 rounded hover:bg-accent/50 text-left text-sm",style:{paddingLeft:8+Y*12},children:[w.jsx(Rs,{className:Ue("w-3 h-3 shrink-0 transition-transform",a.has(H.path)&&"rotate-90")}),w.jsx(eG,{className:"w-3.5 h-3.5 shrink-0 text-muted-foreground"}),w.jsx("span",{className:"truncate",children:K})]}):w.jsxs("button",{onClick:()=>V(H.path),className:"w-full flex items-center gap-1 px-2 py-1 rounded hover:bg-accent/50 text-left text-sm",style:{paddingLeft:8+Y*12+12},title:H.oneLiner||H.path,children:[w.jsx(gE,{className:"w-3.5 h-3.5 shrink-0 text-muted-foreground"}),w.jsx("span",{className:"truncate",children:K})]}),H.type==="dir"&&a.has(H.path)&&q(r.get(H.path)??[],Y+1)]},H.path)})});return w.jsxs(w.Fragment,{children:[w.jsxs("div",{className:"flex items-center justify-between px-3 pt-2 pb-1 shrink-0",children:[w.jsx("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Workspace"}),w.jsxs("div",{className:"flex items-center gap-0.5",children:[w.jsx("button",{onClick:()=>C(!0),className:"p-0.5 rounded hover:bg-accent text-muted-foreground",title:"Activity log",children:w.jsx(nG,{className:"w-3 h-3"})}),w.jsx("button",{onClick:()=>{D(""),a.forEach(B=>D(B)),t==null||t()},className:"p-0.5 rounded hover:bg-accent text-muted-foreground",title:"Refresh",children:w.jsx(fG,{className:"w-3 h-3"})})]})]}),w.jsx("div",{className:"px-1 pb-2 overflow-y-auto min-h-0",children:j.length===0?w.jsx("p",{className:"text-xs text-muted-foreground px-3 py-2",children:"Empty. Drop .md files into data/workspace/ or ask the agent to create some."}):q(j,0)}),w.jsx(Ss,{open:!!c,onOpenChange:B=>{B||(u(null),h(!1),m("fit"),S(null))},children:w.jsxs(fo,{className:Ue(c!=null&&c.html?Ue("!flex !flex-col !p-0 !gap-0 overflow-hidden",f?"max-w-none w-[100vw] h-[100vh] rounded-none border-0":"max-w-[90vw] w-[90vw] h-[85vh]"):"max-w-3xl max-h-[80vh] !flex !flex-col overflow-hidden"),children:[w.jsxs("div",{className:"absolute right-12 top-4 flex items-center gap-1.5 z-10",children:[(c==null?void 0:c.html)&&w.jsxs(w.Fragment,{children:[w.jsx("button",{onClick:()=>m(B=>B==="fit"?"scroll":"fit"),className:"rounded-sm opacity-70 hover:opacity-100 text-muted-foreground",title:p==="fit"?"Switch to scrollable (1:1)":"Switch to scale-to-fit",children:p==="fit"?w.jsx(sG,{className:"w-4 h-4"}):w.jsx(hG,{className:"w-4 h-4"})}),w.jsx("button",{onClick:()=>h(B=>!B),className:"rounded-sm opacity-70 hover:opacity-100 text-muted-foreground",title:f?"Restore":"Maximize",children:f?w.jsx(yE,{className:"w-4 h-4"}):w.jsx(vE,{className:"w-4 h-4"})})]}),c&&w.jsx("a",{href:G(c.path,!0),download:!0,className:"rounded-sm opacity-70 hover:opacity-100 text-muted-foreground",title:"Download",children:w.jsx(Oj,{className:"w-4 h-4"})})]}),w.jsx(Ll,{className:Ue((c==null?void 0:c.html)&&"px-4 py-3 shrink-0 border-b"),children:w.jsx(_s,{className:"font-mono text-sm truncate pr-16",children:c==null?void 0:c.path})}),w.jsx("div",{ref:c!=null&&c.html?_:void 0,className:Ue(c!=null&&c.html?Ue("flex-1 min-h-0 bg-muted/10",p==="fit"?"overflow-hidden flex items-center justify-center":"overflow-auto"):"flex-1 min-h-0 overflow-y-auto"),children:c!=null&&c.html?p==="fit"?w.jsx("div",{style:v?{width:v.w*v.scale,height:v.h*v.scale}:{width:"100%",height:"100%"},children:w.jsx("iframe",{src:G(c.path),className:"border-0 bg-white origin-top-left",title:c.path,onLoad:B=>{R(B.currentTarget),F()},style:v?{width:v.w,height:v.h,transform:`scale(${v.scale})`}:{width:"100%",height:"100%"}})}):w.jsx("iframe",{src:G(c.path),className:"border-0 bg-white mx-auto block",title:c.path,onLoad:B=>R(B.currentTarget),style:{width:(b==null?void 0:b.w)||"100%",height:(b==null?void 0:b.h)||"100%"}}):c!=null&&c.image?w.jsx("div",{className:"flex items-center justify-center p-4",children:w.jsx("img",{src:G(c.path),alt:c.path,className:"max-w-full max-h-[70vh] object-contain"})}):c!=null&&c.binary?w.jsx("p",{className:"text-sm text-muted-foreground",children:"(binary file — preview unavailable)"}):c!=null&&c.path.toLowerCase().endsWith(".md")||c!=null&&c.path.toLowerCase().endsWith(".markdown")?w.jsx("div",{className:"text-sm",children:w.jsx(NL,{remarkPlugins:[ez],rehypePlugins:[Ez],className:"prose prose-sm max-w-none dark:prose-invert prose-pre:bg-muted prose-pre:border prose-code:before:content-none prose-code:after:content-none",children:c.content})}):w.jsx("pre",{className:"text-xs whitespace-pre-wrap break-all",children:c==null?void 0:c.content})})]})}),w.jsx(Ss,{open:T,onOpenChange:C,children:w.jsxs(fo,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[w.jsx(Ll,{children:w.jsx(_s,{className:"text-sm",children:"Activity Log"})}),w.jsxs("div",{className:"overflow-y-auto flex-1 space-y-2",children:[N.map(B=>w.jsxs("div",{className:"border-b border-border/50 pb-2 last:border-0",children:[w.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[w.jsx("span",{className:"text-sm text-foreground",children:B.message}),w.jsx("span",{className:"text-[10px] text-muted-foreground shrink-0",children:Lne(B.date)})]}),B.files.length>0&&w.jsx("div",{className:"text-[11px] text-muted-foreground mt-0.5",children:B.files.map(Y=>w.jsx("span",{className:"inline-block mr-2 font-mono",children:Y},Y))})]},B.hash)),N.length===0&&w.jsx("p",{className:"text-sm text-muted-foreground py-4 text-center",children:"No activity yet"})]})]})})]})}function Lne(e){const t=new Date(e),r=new Date().getTime()-t.getTime(),i=Math.floor(r/6e4);if(i<60)return`${i}m ago`;const a=Math.floor(i/60);return a<24?`${a}h ago`:t.toLocaleDateString(void 0,{month:"short",day:"numeric"})}function Um(e,t=Date.now()){if(!e)return null;const n=new Date(e).getTime()-t;if(!Number.isFinite(n)||n<=0)return null;const r=Math.round(n/6e4);if(r<1)return"1m";if(r<60)return`${r}m`;const i=Math.floor(r/60),a=r%60;if(i<48)return a?`${i}h ${a}m`:`${i}h`;const s=Math.floor(i/24),c=i%24;return c?`${s}d ${c}h`:`${s}d`}const zne=/resets\s+(\d{1,2})(?::(\d{2}))?\s*(am|pm)?\s*\(UTC\)/i;function $ne(e,t=Date.now(),n=Date.now()){var p;const r=e.match(zne);if(!r)return e;let i=Number(r[1]);const a=r[2]?Number(r[2]):0,s=(p=r[3])==null?void 0:p.toLowerCase();if(s==="pm"&&i<12&&(i+=12),s==="am"&&i===12&&(i=0),i>23||a>59)return e;const c=new Date(t),u=new Date(Date.UTC(c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate(),i,a));u.getTime()<=t&&u.setUTCDate(u.getUTCDate()+1);const f=u.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"}),h=Um(u.toISOString(),n);return e.replace(r[0],`resets ${f}${h?` (in ${h})`:""}`)}var Bne=Object.defineProperty,zu=(e,t)=>Bne(e,"name",{value:t,configurable:!0}),Xz=!!(typeof window<"u"&&window.document&&window.document.createElement);function bs(e,t,{checkForDefaultPrevented:n=!0}={}){return zu(function(i){if(e==null||e(i),n===!1||!i||!i.defaultPrevented)return t==null?void 0:t(i)},"handleEvent")}zu(bs,"composeEventHandlers");function Une(e){var t;if(!Xz)throw new Error("Cannot access window outside of the DOM");return((t=e==null?void 0:e.ownerDocument)==null?void 0:t.defaultView)??window}zu(Une,"getOwnerWindow");function Dw(e){if(!Xz)throw new Error("Cannot access document outside of the DOM");return(e==null?void 0:e.ownerDocument)??document}zu(Dw,"getOwnerDocument");function Zz(e,t=!1){const{activeElement:n}=Dw(e);if(!(n!=null&&n.nodeName))return null;if(Qz(n)&&n.contentDocument)return Zz(n.contentDocument.body,t);if(t){const r=n.getAttribute("aria-activedescendant");if(r){const i=Dw(n).getElementById(r);if(i)return i}}return n}zu(Zz,"getActiveElement");function Qz(e){return e.tagName==="IFRAME"}zu(Qz,"isFrame");var Fne=Object.defineProperty,QE=(e,t)=>Fne(e,"name",{value:t,configurable:!0});function jw(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}QE(jw,"setRef");function Jz(...e){return t=>{let n=!1;const r=e.map(i=>{const a=jw(i,t);return!n&&typeof a=="function"&&(n=!0),a});if(n)return()=>{for(let i=0;i<r.length;i++){const a=r[i];typeof a=="function"?a():jw(e[i],null)}}}}QE(Jz,"composeRefs");function $u(...e){return y.useCallback(Jz(...e),e)}QE($u,"useComposedRefs");var Hne=Object.defineProperty,wi=(e,t)=>Hne(e,"name",{value:t,configurable:!0});function Kne(e,t){const n=y.createContext(t);n.displayName=e+"Context";const r=wi(a=>{const{children:s,...c}=a,u=y.useMemo(()=>c,Object.values(c));return w.jsx(n.Provider,{value:u,children:s})},"Provider");r.displayName=e+"Provider";function i(a,s={}){const{optional:c=!1}=s,u=y.useContext(n);if(u)return u;if(t!==void 0)return t;if(!c)throw new Error(`\`${a}\` must be used within \`${e}\``)}return wi(i,"useContext"),[r,i]}wi(Kne,"createContext");function e3(e,t=[]){let n=[];function r(a,s){const c=y.createContext(s);c.displayName=a+"Context";const u=n.length;n=[...n,s];const f=wi(p=>{var _;const{scope:m,children:v,...x}=p,b=((_=m==null?void 0:m[e])==null?void 0:_[u])||c,S=y.useMemo(()=>x,Object.values(x));return w.jsx(b.Provider,{value:S,children:v})},"Provider");f.displayName=a+"Provider";function h(p,m,v={}){var _;const{optional:x=!1}=v,b=((_=m==null?void 0:m[e])==null?void 0:_[u])||c,S=y.useContext(b);if(S)return S;if(s!==void 0)return s;if(!x)throw new Error(`\`${p}\` must be used within \`${a}\``)}return wi(h,"useContext"),[f,h]}wi(r,"createContext");const i=wi(()=>{const a=n.map(s=>y.createContext(s));return wi(function(c){const u=(c==null?void 0:c[e])||a;return y.useMemo(()=>({[`__scope${e}`]:{...c,[e]:u}}),[c,u])},"useScope")},"createScope");return i.scopeName=e,[r,t3(i,...t)]}wi(e3,"createContextScope");function t3(...e){const t=e[0];if(e.length===1)return t;const n=wi(()=>{const r=e.map(i=>({useScope:i(),scopeName:i.scopeName}));return wi(function(a){const s=r.reduce((c,{useScope:u,scopeName:f})=>{const p=u(a)[`__scope${f}`];return{...c,...p}},{});return y.useMemo(()=>({[`__scope${t.scopeName}`]:s}),[s])},"useComposedScopes")},"createScope");return n.scopeName=t.scopeName,n}wi(t3,"composeContextScopes");var qne=Object.defineProperty,Ui=(e,t)=>qne(e,"name",{value:t,configurable:!0});function JE(e){const t=y.forwardRef((n,r)=>{let{children:i,...a}=n,s=null,c=!1;const u=[];Lw(i)&&typeof dm=="function"&&(i=dm(i._payload)),y.Children.forEach(i,m=>{var v;if(a3(m)){c=!0;const x=m;let b="child"in x.props?x.props.child:x.props.children;Lw(b)&&typeof dm=="function"&&(b=dm(b._payload)),s=Vne(x,b),u.push((v=s==null?void 0:s.props)==null?void 0:v.children)}else u.push(m)}),s?s=y.cloneElement(s,void 0,u):!c&&y.Children.count(i)===1&&y.isValidElement(i)&&(s=i);const f=s?i3(s):void 0,h=$u(r,f);if(!s){if(i||i===0)throw new Error(c?Xne(e):Yne(e));return i}const p=r3(a,s.props??{});return s.type!==y.Fragment&&(p.ref=r?h:f),y.cloneElement(s,p)});return t.displayName=`${e}.Slot`,t}Ui(JE,"createSlot");var n3=Symbol.for("radix.slottable");function Gne(e){const t=Ui(n=>"child"in n?n.children(n.child):n.children,"Slottable");return t.displayName=`${e}.Slottable`,t.__radixId=n3,t}Ui(Gne,"createSlottable");var Vne=Ui((e,t)=>{if("child"in e.props){const n=e.props.child;return y.isValidElement(n)?y.cloneElement(n,void 0,e.props.children(n.props.children)):null}return y.isValidElement(t)?t:null},"getSlottableElementFromSlottable");function r3(e,t){const n={...t};for(const r in t){const i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...c)=>{const u=a(...c);return i(...c),u}:i&&(n[r]=i):r==="style"?n[r]={...i,...a}:r==="className"&&(n[r]=[i,a].filter(Boolean).join(" "))}return{...e,...n}}Ui(r3,"mergeProps");function i3(e){var r,i;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(i=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:i.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}Ui(i3,"getElementRef");function a3(e){return y.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===n3}Ui(a3,"isSlottable");var Wne=Symbol.for("react.lazy");function Lw(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===Wne&&"_payload"in e&&o3(e._payload)}Ui(Lw,"isLazyComponent");function o3(e){return typeof e=="object"&&e!==null&&"then"in e}Ui(o3,"isPromiseLike");var Yne=Ui(e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,"createSlotError"),Xne=Ui(e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,"createSlottableError"),dm=Ea[" use ".trim().toString()],Zne=Object.defineProperty,Qne=(e,t)=>Zne(e,"name",{value:t,configurable:!0}),Jne=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Ov=Jne.reduce((e,t)=>{const n=JE(`Primitive.${t}`),r=y.forwardRef((i,a)=>{const{asChild:s,...c}=i,u=s?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),w.jsx(u,{...c,ref:a})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function s3(e,t){e&&Sa.flushSync(()=>e.dispatchEvent(t))}Qne(s3,"dispatchDiscreteCustomEvent");var ere=Object.defineProperty,tre=(e,t)=>ere(e,"name",{value:t,configurable:!0});function Cv(e){const t=y.useRef(e);return y.useEffect(()=>{t.current=e}),y.useMemo(()=>((...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)}),[])}tre(Cv,"useCallbackRef");var nre=Object.defineProperty,$n=(e,t)=>nre(e,"name",{value:t,configurable:!0}),zw="dismissableLayer.update",rre="dismissableLayer.pointerDownOutside",ire="dismissableLayer.focusOutside",hM,l3=y.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),are=y.forwardRef($n(function(t,n){const{disableOutsidePointerEvents:r=!1,deferPointerDownOutside:i=!1,onEscapeKeyDown:a,onPointerDownOutside:s,onFocusOutside:c,onInteractOutside:u,onDismiss:f,...h}=t,p=y.useContext(l3),[m,v]=y.useState(null),x=(m==null?void 0:m.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,b]=y.useState({}),S=$u(n,v),_=Array.from(p.layers),[O]=[...p.layersWithOutsidePointerEventsDisabled].slice(-1),k=O?_.indexOf(O):-1,T=m?_.indexOf(m):-1,C=p.layersWithOutsidePointerEventsDisabled.size>0,N=T>=k,P=y.useRef(!1),D=c3(I=>{s==null||s(I),u==null||u(I),I.defaultPrevented||f==null||f()},{ownerDocument:x,deferPointerDownOutside:i,isDeferredPointerDownOutsideRef:P,dismissableSurfaces:p.dismissableSurfaces,shouldHandlePointerDownOutside:y.useCallback(I=>{if(!(I instanceof Node))return!1;const G=[...p.branches].some(V=>V.contains(I));return N&&!G},[p.branches,N])}),j=u3(I=>{if(i&&P.current)return;const G=I.target;[...p.branches].some(q=>q.contains(G))||(c==null||c(I),u==null||u(I),I.defaultPrevented||f==null||f())},x),R=m?T===_.length-1:!1,F=Cv(I=>{I.key==="Escape"&&(a==null||a(I),!I.defaultPrevented&&f&&(I.preventDefault(),f()))});return y.useEffect(()=>{if(R)return x.addEventListener("keydown",F,{capture:!0}),()=>x.removeEventListener("keydown",F,{capture:!0})},[x,R,F]),y.useEffect(()=>{if(m)return r&&(p.layersWithOutsidePointerEventsDisabled.size===0&&(hM=x.body.style.pointerEvents,x.body.style.pointerEvents="none"),p.layersWithOutsidePointerEventsDisabled.add(m)),p.layers.add(m),$w(),()=>{r&&(p.layersWithOutsidePointerEventsDisabled.delete(m),p.layersWithOutsidePointerEventsDisabled.size===0&&(x.body.style.pointerEvents=hM))}},[m,x,r,p]),y.useEffect(()=>()=>{m&&(p.layers.delete(m),p.layersWithOutsidePointerEventsDisabled.delete(m),$w())},[m,p]),y.useEffect(()=>{const I=$n(()=>b({}),"handleUpdate");return document.addEventListener(zw,I),()=>document.removeEventListener(zw,I)},[]),w.jsx(Ov.div,{...h,ref:S,style:{pointerEvents:C?N?"auto":"none":void 0,...t.style},onFocusCapture:bs(t.onFocusCapture,j.onFocusCapture),onBlurCapture:bs(t.onBlurCapture,j.onBlurCapture),onPointerDownCapture:bs(t.onPointerDownCapture,D.onPointerDownCapture)})},"DismissableLayer"));function ore(){const e=y.useContext(l3),[t,n]=y.useState(null);return y.useEffect(()=>{if(t)return e.dismissableSurfaces.add(t),()=>{e.dismissableSurfaces.delete(t)}},[t,e.dismissableSurfaces]),n}$n(ore,"useDismissableLayerSurface");var sre=$n(()=>!0,"IS_TRUE");function c3(e,t){const{ownerDocument:n=globalThis==null?void 0:globalThis.document,deferPointerDownOutside:r=!1,isDeferredPointerDownOutsideRef:i,dismissableSurfaces:a,shouldHandlePointerDownOutside:s=sre}=t,c=Cv(e),u=y.useRef(!1),f=y.useRef(!1),h=y.useRef(new Map),p=y.useRef(()=>{});return y.useEffect(()=>{function m(){f.current=!1,i.current=!1,h.current.clear()}$n(m,"resetOutsideInteraction");function v(){return Array.from(h.current.values()).some(Boolean)}$n(v,"isOutsideInteractionIntercepted");function x(k){if(!f.current)return;const T=k.target;T instanceof Node&&[...a].some(N=>N.contains(T))||h.current.set(k.type,!0),k.type==="click"&&window.setTimeout(()=>{f.current&&p.current()},0)}$n(x,"handleInteractionCapture");function b(k){f.current&&h.current.set(k.type,!1)}$n(b,"handleInteractionBubble");const S=$n(k=>{if(k.target&&!u.current){let T=function(){n.removeEventListener("click",p.current);const N=v();m(),N||eS(rre,c,C,{discrete:!0})};if($n(T,"handleAndDispatchPointerDownOutsideEvent"),!s(k.target)){n.removeEventListener("click",p.current),m(),u.current=!1;return}const C={originalEvent:k};f.current=!0,i.current=r&&k.button===0,h.current.clear(),!r||k.button!==0?T():(n.removeEventListener("click",p.current),p.current=T,n.addEventListener("click",p.current,{once:!0}))}else n.removeEventListener("click",p.current),m();u.current=!1},"handlePointerDown"),_=["pointerup","mousedown","mouseup","touchstart","touchend","click"];for(const k of _)n.addEventListener(k,x,!0),n.addEventListener(k,b);const O=window.setTimeout(()=>{n.addEventListener("pointerdown",S)},0);return()=>{window.clearTimeout(O),n.removeEventListener("pointerdown",S),n.removeEventListener("click",p.current);for(const k of _)n.removeEventListener(k,x,!0),n.removeEventListener(k,b)}},[n,c,r,i,a,s]),{onPointerDownCapture:$n(()=>u.current=!0,"onPointerDownCapture")}}$n(c3,"usePointerDownOutside");function u3(e,t=globalThis==null?void 0:globalThis.document){const n=Cv(e),r=y.useRef(!1);return y.useEffect(()=>{const i=$n(a=>{a.target&&!r.current&&eS(ire,n,{originalEvent:a},{discrete:!1})},"handleFocus");return t.addEventListener("focusin",i),()=>t.removeEventListener("focusin",i)},[t,n]),{onFocusCapture:$n(()=>r.current=!0,"onFocusCapture"),onBlurCapture:$n(()=>r.current=!1,"onBlurCapture")}}$n(u3,"useFocusOutside");function $w(){const e=new CustomEvent(zw);document.dispatchEvent(e)}$n($w,"dispatchUpdate");function eS(e,t,n,{discrete:r}){const i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?s3(i,a):i.dispatchEvent(a)}$n(eS,"handleAndDispatchCustomEvent");var lre=Object.defineProperty,tS=(e,t)=>lre(e,"name",{value:t,configurable:!0}),hm=0,Zi=null;function cre(e){return nS(),e.children}tS(cre,"FocusGuards");function nS(){y.useEffect(()=>{Zi||(Zi={start:Bw(),end:Bw()});const{start:e,end:t}=Zi;return document.body.firstElementChild!==e&&document.body.insertAdjacentElement("afterbegin",e),document.body.lastElementChild!==t&&document.body.insertAdjacentElement("beforeend",t),hm++,()=>{hm===1&&(Zi==null||Zi.start.remove(),Zi==null||Zi.end.remove(),Zi=null),hm=Math.max(0,hm-1)}},[])}tS(nS,"useFocusGuards");function Bw(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}tS(Bw,"createFocusGuard");var ure=Object.defineProperty,fre=(e,t)=>ure(e,"name",{value:t,configurable:!0});function Uw(e){const t=y.useRef(e);return y.useEffect(()=>{t.current=e}),y.useMemo(()=>((...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)}),[])}fre(Uw,"useCallbackRef");var dre=Object.defineProperty,pr=(e,t)=>dre(e,"name",{value:t,configurable:!0}),mx="focusScope.autoFocusOnMount",gx="focusScope.autoFocusOnUnmount",pM={bubbles:!1,cancelable:!0},hre=y.forwardRef(pr(function(t,n){const{loop:r=!1,trapped:i=!1,onMountAutoFocus:a,onUnmountAutoFocus:s,...c}=t,[u,f]=y.useState(null),h=Uw(a),p=Uw(s),m=y.useRef(null),v=$u(n,f),x=y.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;y.useEffect(()=>{if(i){let S=function(T){if(x.paused||!u)return;const C=T.target;u.contains(C)?m.current=C:Xa(m.current,{select:!0})},_=function(T){if(x.paused||!u)return;const C=T.relatedTarget;C!==null&&(u.contains(C)||Xa(m.current,{select:!0}))},O=function(T){if(document.activeElement===document.body)for(const N of T)N.removedNodes.length>0&&Xa(u)};pr(S,"handleFocusIn"),pr(_,"handleFocusOut"),pr(O,"handleMutations"),document.addEventListener("focusin",S),document.addEventListener("focusout",_);const k=new MutationObserver(O);return u&&k.observe(u,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",S),document.removeEventListener("focusout",_),k.disconnect()}}},[i,u,x.paused]),y.useEffect(()=>{if(u){mM.add(x);const S=document.activeElement;if(!u.contains(S)){const O=new CustomEvent(mx,pM);u.addEventListener(mx,h),u.dispatchEvent(O),O.defaultPrevented||(f3(g3(rS(u)),{select:!0}),document.activeElement===S&&Xa(u))}return()=>{u.removeEventListener(mx,h),setTimeout(()=>{const O=new CustomEvent(gx,pM);u.addEventListener(gx,p),u.dispatchEvent(O),O.defaultPrevented||Xa(S??document.body,{select:!0}),u.removeEventListener(gx,p),mM.remove(x)},0)}}},[u,h,p,x]);const b=y.useCallback(S=>{if(!r&&!i||x.paused)return;const _=S.key==="Tab"&&!S.altKey&&!S.ctrlKey&&!S.metaKey,O=document.activeElement;if(_&&O){const k=S.currentTarget,[T,C]=d3(k);T&&C?!S.shiftKey&&O===C?(S.preventDefault(),r&&Xa(T,{select:!0})):S.shiftKey&&O===T&&(S.preventDefault(),r&&Xa(C,{select:!0})):O===k&&S.preventDefault()}},[r,i,x.paused]);return w.jsx(Ov.div,{tabIndex:-1,...c,ref:v,onKeyDown:b})},"FocusScope"));function f3(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(Xa(r,{select:t}),document.activeElement!==n)return}pr(f3,"focusFirst");function d3(e){const t=rS(e),n=Fw(t,e),r=Fw(t.reverse(),e);return[n,r]}pr(d3,"getTabbableEdges");function rS(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:pr(r=>{const i=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||i?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP},"acceptNode")});for(;n.nextNode();)t.push(n.currentNode);return t}pr(rS,"getTabbableCandidates");function Fw(e,t){const n=typeof t.checkVisibility=="function"&&t.checkVisibility({checkVisibilityCSS:!0});for(const r of e)if(!(n?!r.checkVisibility({checkVisibilityCSS:!0}):h3(r,{upTo:t})))return r}pr(Fw,"findVisible");function h3(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}pr(h3,"isHidden");function p3(e){return e instanceof HTMLInputElement&&"select"in e}pr(p3,"isSelectableInput");function Xa(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&p3(e)&&t&&e.select()}}pr(Xa,"focus");var mM=m3();function m3(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=Hw(e,t),e.unshift(t)},remove(t){var n;e=Hw(e,t),(n=e[0])==null||n.resume()}}}pr(m3,"createFocusScopesStack");function Hw(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}pr(Hw,"arrayRemove");function g3(e){return e.filter(t=>t.tagName!=="A")}pr(g3,"removeLinks");var pre=globalThis!=null&&globalThis.document?y.useLayoutEffect:()=>{},mre=Object.defineProperty,gre=(e,t)=>mre(e,"name",{value:t,configurable:!0}),vre=Ea[" useId ".trim().toString()]||(()=>{}),yre=0;function v3(e){const[t,n]=y.useState(vre());return pre(()=>{e||n(r=>r??String(yre++))},[e]),e||(t?`radix-${t}`:"")}gre(v3,"useId");const bre=["top","right","bottom","left"],As=Math.min,ao=Math.max,gg=Math.round,pm=Math.floor,oo=e=>({x:e,y:e}),xre={left:"right",right:"left",bottom:"top",top:"bottom"};function y3(e,t,n){return ao(e,As(t,n))}function ho(e,t){return typeof e=="function"?e(t):e}function ks(e){return e.split("-")[0]}function Bu(e){return e.split("-")[1]}function iS(e){return e==="x"?"y":"x"}function aS(e){return e==="y"?"height":"width"}function sa(e){const t=e[0];return t==="t"||t==="b"?"y":"x"}function oS(e){return iS(sa(e))}function wre(e,t,n){n===void 0&&(n=!1);const r=Bu(e),i=oS(e),a=aS(i);let s=i==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[a]>t.floating[a]&&(s=vg(s)),[s,vg(s)]}function Ere(e){const t=vg(e);return[Kw(e),t,Kw(t)]}function Kw(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const gM=["left","right"],vM=["right","left"],Sre=["top","bottom"],_re=["bottom","top"];function Are(e,t,n){switch(e){case"top":case"bottom":return n?t?vM:gM:t?gM:vM;case"left":case"right":return t?Sre:_re;default:return[]}}function kre(e,t,n,r){const i=Bu(e);let a=Are(ks(e),n==="start",r);return i&&(a=a.map(s=>s+"-"+i),t&&(a=a.concat(a.map(Kw)))),a}function vg(e){const t=ks(e);return xre[t]+e.slice(t.length)}function Ore(e){var t,n,r,i;return{top:(t=e.top)!=null?t:0,right:(n=e.right)!=null?n:0,bottom:(r=e.bottom)!=null?r:0,left:(i=e.left)!=null?i:0}}function b3(e){return typeof e!="number"?Ore(e):{top:e,right:e,bottom:e,left:e}}function yg(e){const{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function yM(e,t,n){let{reference:r,floating:i}=e;const a=sa(t),s=oS(t),c=aS(s),u=ks(t),f=a==="y",h=r.x+r.width/2-i.width/2,p=r.y+r.height/2-i.height/2,m=r[c]/2-i[c]/2;let v;switch(u){case"top":v={x:h,y:r.y-i.height};break;case"bottom":v={x:h,y:r.y+r.height};break;case"right":v={x:r.x+r.width,y:p};break;case"left":v={x:r.x-i.width,y:p};break;default:v={x:r.x,y:r.y}}const x=Bu(t);return x&&(v[s]+=m*(x==="end"?1:-1)*(n&&f?-1:1)),v}async function Cre(e,t){var n;t===void 0&&(t={});const{x:r,y:i,platform:a,rects:s,elements:c,strategy:u}=e,{boundary:f="clippingAncestors",rootBoundary:h="viewport",elementContext:p="floating",altBoundary:m=!1,padding:v=0}=ho(t,e),x=b3(v),S=c[m?p==="floating"?"reference":"floating":p],_=yg(await a.getClippingRect({element:(n=await(a.isElement==null?void 0:a.isElement(S)))==null||n?S:S.contextElement||await(a.getDocumentElement==null?void 0:a.getDocumentElement(c.floating)),boundary:f,rootBoundary:h,strategy:u})),O=p==="floating"?{x:r,y:i,width:s.floating.width,height:s.floating.height}:s.reference,k=await(a.getOffsetParent==null?void 0:a.getOffsetParent(c.floating)),T=await(a.isElement==null?void 0:a.isElement(k))&&await(a.getScale==null?void 0:a.getScale(k))||{x:1,y:1},C=yg(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:c,rect:O,offsetParent:k,strategy:u}):O);return{top:(_.top-C.top+x.top)/T.y,bottom:(C.bottom-_.bottom+x.bottom)/T.y,left:(_.left-C.left+x.left)/T.x,right:(C.right-_.right+x.right)/T.x}}const Tre=50,Nre=async(e,t,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:a=[],platform:s}=n,c=s.detectOverflow?s:{...s,detectOverflow:Cre},u=await(s.isRTL==null?void 0:s.isRTL(t));let f=await s.getElementRects({reference:e,floating:t,strategy:i}),{x:h,y:p}=yM(f,r,u),m=r,v=0;const x={};for(let b=0;b<a.length;b++){const S=a[b];if(!S)continue;const{name:_,fn:O}=S,{x:k,y:T,data:C,reset:N}=await O({x:h,y:p,initialPlacement:r,placement:m,strategy:i,middlewareData:x,rects:f,platform:c,elements:{reference:e,floating:t}});h=k??h,p=T??p,x[_]={...x[_],...C},N&&v<Tre&&(v++,typeof N=="object"&&(N.placement&&(m=N.placement),N.rects&&(f=N.rects===!0?await s.getElementRects({reference:e,floating:t,strategy:i}):N.rects),{x:h,y:p}=yM(f,m,u)),b=-1)}return{x:h,y:p,placement:m,strategy:i,middlewareData:x}},Mre=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:i,rects:a,platform:s,elements:c,middlewareData:u}=t,{element:f,padding:h=0}=ho(e,t)||{};if(f==null)return{};const p=b3(h),m={x:n,y:r},v=oS(i),x=aS(v),b=await s.getDimensions(f),S=v==="y",_=S?"top":"left",O=S?"bottom":"right",k=S?"clientHeight":"clientWidth",T=a.reference[x]+a.reference[v]-m[v]-a.floating[x],C=m[v]-a.reference[v],N=await(s.getOffsetParent==null?void 0:s.getOffsetParent(f));let P=N?N[k]:0;(!P||!await(s.isElement==null?void 0:s.isElement(N)))&&(P=c.floating[k]||a.floating[x]);const D=T/2-C/2,j=P/2-b[x]/2-1,R=As(p[_],j),F=As(p[O],j),I=P-b[x]-F,G=P/2-b[x]/2+D,V=y3(R,G,I),q=!u.arrow&&Bu(i)!=null&&G!==V&&a.reference[x]/2-(G<R?R:F)-b[x]/2<0,B=q?G<R?G-R:G-I:0;return{[v]:m[v]+B,data:{[v]:V,centerOffset:G-V-B,...q&&{alignmentOffset:B}},reset:q}}}),Ire=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,r;const{placement:i,middlewareData:a,rects:s,initialPlacement:c,platform:u,elements:f}=t,{mainAxis:h=!0,crossAxis:p=!0,fallbackPlacements:m,fallbackStrategy:v="bestFit",fallbackAxisSideDirection:x="none",flipAlignment:b=!0,...S}=ho(e,t);if((n=a.arrow)!=null&&n.alignmentOffset)return{};const _=ks(i),O=sa(c),k=ks(c)===c,T=await(u.isRTL==null?void 0:u.isRTL(f.floating)),C=m||(k||!b?[vg(c)]:Ere(c)),N=x!=="none";!m&&N&&C.push(...kre(c,b,x,T));const P=[c,...C],D=await u.detectOverflow(t,S),j=[];let R=((r=a.flip)==null?void 0:r.overflows)||[];if(h&&j.push(D[_]),p){const V=wre(i,s,T);j.push(D[V[0]],D[V[1]])}if(R=[...R,{placement:i,overflows:j}],!j.every(V=>V<=0)){var F,I;const V=(((F=a.flip)==null?void 0:F.index)||0)+1,q=P[V];if(q&&(!(p==="alignment"?O!==sa(q):!1)||R.every(H=>sa(H.placement)===O?H.overflows[0]>0:!0)))return{data:{index:V,overflows:R},reset:{placement:q}};let B=(I=R.filter(Y=>Y.overflows[0]<=0).sort((Y,H)=>Y.overflows[1]-H.overflows[1])[0])==null?void 0:I.placement;if(!B)switch(v){case"bestFit":{var G;const Y=(G=R.filter(H=>{if(N){const K=sa(H.placement);return K===O||K==="y"}return!0}).map(H=>[H.placement,H.overflows.filter(K=>K>0).reduce((K,L)=>K+L,0)]).sort((H,K)=>H[1]-K[1])[0])==null?void 0:G[0];Y&&(B=Y);break}case"initialPlacement":B=c;break}if(i!==B)return{reset:{placement:B}}}return{}}}};function bM(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function xM(e){return bre.some(t=>e[t]>=0)}const Rre=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n,platform:r}=t,{strategy:i="referenceHidden",...a}=ho(e,t);switch(i){case"referenceHidden":{const s=await r.detectOverflow(t,{...a,elementContext:"reference"}),c=bM(s,n.reference);return{data:{referenceHiddenOffsets:c,referenceHidden:xM(c)}}}case"escaped":{const s=await r.detectOverflow(t,{...a,altBoundary:!0}),c=bM(s,n.floating);return{data:{escapedOffsets:c,escaped:xM(c)}}}default:return{}}}}},x3=new Set(["left","top"]);async function Pre(e,t){const{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),s=ks(n),c=Bu(n),u=sa(n)==="y",f=x3.has(s)?-1:1,h=a&&u?-1:1,p=ho(t,e);let{mainAxis:m,crossAxis:v,alignmentAxis:x}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:p.mainAxis||0,crossAxis:p.crossAxis||0,alignmentAxis:p.alignmentAxis};return c&&typeof x=="number"&&(v=c==="end"?x*-1:x),u?{x:v*h,y:m*f}:{x:m*f,y:v*h}}const Dre=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:i,y:a,placement:s,middlewareData:c}=t,u=await Pre(t,e);return s===((n=c.offset)==null?void 0:n.placement)&&(r=c.arrow)!=null&&r.alignmentOffset?{}:{x:i+u.x,y:a+u.y,data:{...u,placement:s}}}}},jre=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:i,platform:a}=t,{mainAxis:s=!0,crossAxis:c=!1,limiter:u={fn:O=>{let{x:k,y:T}=O;return{x:k,y:T}}},...f}=ho(e,t),h={x:n,y:r},p=await a.detectOverflow(t,f),m=sa(i),v=iS(m);let x=h[v],b=h[m];const S=(O,k)=>y3(k+p[O==="y"?"top":"left"],k,k-p[O==="y"?"bottom":"right"]);s&&(x=S(v,x)),c&&(b=S(m,b));const _=u.fn({...t,[v]:x,[m]:b});return{..._,data:{x:_.x-n,y:_.y-r,enabled:{[v]:s,[m]:c}}}}}},Lre=function(e){return e===void 0&&(e={}),{options:e,fn(t){var n,r;const{x:i,y:a,placement:s,rects:c,middlewareData:u}=t,{offset:f=0,mainAxis:h=!0,crossAxis:p=!0}=ho(e,t),m={x:i,y:a},v=sa(s),x=iS(v);let b=m[x],S=m[v];const _=ho(f,t),O=typeof _=="number"?{mainAxis:_,crossAxis:0}:{mainAxis:(n=_.mainAxis)!=null?n:0,crossAxis:(r=_.crossAxis)!=null?r:0};if(h){const C=x==="y"?"height":"width",N=c.reference[x]-c.floating[C]+O.mainAxis,P=c.reference[x]+c.reference[C]-O.mainAxis;b<N?b=N:b>P&&(b=P)}if(p){var k,T;const C=x==="y"?"width":"height",N=x3.has(ks(s)),P=c.reference[v]-c.floating[C]+(N&&((k=u.offset)==null?void 0:k[v])||0)+(N?0:O.crossAxis),D=c.reference[v]+c.reference[C]+(N?0:((T=u.offset)==null?void 0:T[v])||0)-(N?O.crossAxis:0);S<P?S=P:S>D&&(S=D)}return{[x]:b,[v]:S}}}},zre=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:i,elements:a}=t,{apply:s=()=>{},...c}=ho(e,t),u=await i.detectOverflow(t,c),f=ks(n),h=Bu(n),p=sa(n)==="y",{width:m,height:v}=r.floating;let x,b;f==="top"||f==="bottom"?(x=f,b=h===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?"start":"end")?"left":"right"):(b=f,x=h==="end"?"top":"bottom");const S=v-u.top-u.bottom,_=m-u.left-u.right,O=As(v-u[x],S),k=As(m-u[b],_),T=t.middlewareData.shift,C=!T;let N=O,P=k;T!=null&&T.enabled.x&&(P=_),T!=null&&T.enabled.y&&(N=S),C&&!h&&(p?P=m-2*ao(u.left,u.right):N=v-2*ao(u.top,u.bottom)),await s({...t,availableWidth:P,availableHeight:N});const D=await i.getDimensions(a.floating);return m!==D.width||v!==D.height?{reset:{rects:!0}}:{}}}};function Tv(){return typeof window<"u"}function Uu(e){return w3(e)?(e.nodeName||"").toLowerCase():"#document"}function Pr(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function xo(e){var t;return(t=(w3(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function w3(e){return Tv()?e instanceof Node||e instanceof Pr(e).Node:!1}function ma(e){return Tv()?e instanceof Element||e instanceof Pr(e).Element:!1}function js(e){return Tv()?e instanceof HTMLElement||e instanceof Pr(e).HTMLElement:!1}function wM(e){return!Tv()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Pr(e).ShadowRoot}function Nv(e){const{overflow:t,overflowX:n,overflowY:r,display:i}=ga(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!=="inline"&&i!=="contents"}function $re(e){return/^(table|td|th)$/.test(Uu(e))}function Mv(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}const Bre=/transform|translate|scale|rotate|perspective|filter/,Ure=/paint|layout|strict|content/,cl=e=>!!e&&e!=="none";let vx;function sS(e){const t=ma(e)?ga(e):e;return cl(t.transform)||cl(t.translate)||cl(t.scale)||cl(t.rotate)||cl(t.perspective)||!lS()&&(cl(t.backdropFilter)||cl(t.filter))||Bre.test(t.willChange||"")||Ure.test(t.contain||"")}function Fre(e){let t=zl(e);for(;js(t)&&!zd(t);){if(sS(t))return t;if(Mv(t))return null;t=zl(t)}return null}function lS(){return vx==null&&(vx=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),vx}function zd(e){return/^(html|body|#document)$/.test(Uu(e))}function ga(e){return Pr(e).getComputedStyle(e)}function Iv(e){return ma(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function zl(e){if(Uu(e)==="html")return e;const t=e.assignedSlot||e.parentNode||wM(e)&&e.host||xo(e);return wM(t)?t.host:t}function E3(e){const t=zl(e);return zd(t)?(e.ownerDocument||e).body:js(t)&&Nv(t)?t:E3(t)}function $d(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const i=E3(e),a=i===((r=e.ownerDocument)==null?void 0:r.body),s=Pr(i);if(a){const c=qw(s);return t.concat(s,s.visualViewport||[],Nv(i)?i:[],c&&n?$d(c):[])}else return t.concat(i,$d(i,[],n))}function qw(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function S3(e){const t=ga(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const i=js(e),a=i?e.offsetWidth:n,s=i?e.offsetHeight:r,c=gg(n)!==a||gg(r)!==s;return c&&(n=a,r=s),{width:n,height:r,$:c}}function cS(e){return ma(e)?e:e.contextElement}function hu(e){const t=cS(e);if(!js(t))return oo(1);const n=t.getBoundingClientRect(),{width:r,height:i,$:a}=S3(t);let s=(a?gg(n.width):n.width)/r,c=(a?gg(n.height):n.height)/i;return(!s||!Number.isFinite(s))&&(s=1),(!c||!Number.isFinite(c))&&(c=1),{x:s,y:c}}const Hre=oo(0);function _3(e){const t=Pr(e);return!lS()||!t.visualViewport?Hre:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Kre(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===Pr(e)}function $l(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const i=e.getBoundingClientRect(),a=cS(e);let s=oo(1);t&&(r?ma(r)&&(s=hu(r)):s=hu(e));const c=Kre(a,n,r)?_3(a):oo(0);let u=(i.left+c.x)/s.x,f=(i.top+c.y)/s.y,h=i.width/s.x,p=i.height/s.y;if(a&&r){const m=Pr(a),v=ma(r)?Pr(r):r;let x=m,b=qw(x);for(;b&&v!==x;){const S=hu(b),_=b.getBoundingClientRect(),O=ga(b),k=_.left+(b.clientLeft+parseFloat(O.paddingLeft))*S.x,T=_.top+(b.clientTop+parseFloat(O.paddingTop))*S.y;u*=S.x,f*=S.y,h*=S.x,p*=S.y,u+=k,f+=T,x=Pr(b),b=qw(x)}}return yg({width:h,height:p,x:u,y:f})}function Rv(e,t){const n=Iv(e).scrollLeft;return t?t.left+n:$l(xo(e)).left+n}function A3(e,t){const n=e.getBoundingClientRect(),r=n.left+t.scrollLeft-Rv(e,n),i=n.top+t.scrollTop;return{x:r,y:i}}function qre(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e;const a=i==="fixed",s=xo(r),c=t?Mv(t.floating):!1;if(r===s||c&&a)return n;let u={scrollLeft:0,scrollTop:0},f=oo(1);const h=oo(0),p=js(r);if((p||!a)&&((Uu(r)!=="body"||Nv(s))&&(u=Iv(r)),p)){const v=$l(r);f=hu(r),h.x=v.x+r.clientLeft,h.y=v.y+r.clientTop}const m=s&&!p&&!a?A3(s,u):oo(0);return{width:n.width*f.x,height:n.height*f.y,x:n.x*f.x-u.scrollLeft*f.x+h.x+m.x,y:n.y*f.y-u.scrollTop*f.y+h.y+m.y}}function Gre(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function Vre(e){const t=Iv(e),n=e.ownerDocument.body,r=ao(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=ao(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight);let a=-t.scrollLeft+Rv(e);const s=-t.scrollTop;return ga(n).direction==="rtl"&&(a+=ao(e.clientWidth,n.clientWidth)-r),{width:r,height:i,x:a,y:s}}const Wre=25;function Yre(e,t,n){n===void 0&&(n="viewport");const r=n==="layoutViewport",i=Pr(e),a=xo(e),s=i.visualViewport;let c=a.clientWidth,u=a.clientHeight,f=0,h=0;if(s){const m=!lS()||t==="fixed";r?m||(f=-s.offsetLeft,h=-s.offsetTop):(c=s.width,u=s.height,m&&(f=s.offsetLeft,h=s.offsetTop))}if(Rv(a)<=0){const m=a.ownerDocument,v=m.body,x=getComputedStyle(v),b=m.compatMode==="CSS1Compat"&&parseFloat(x.marginLeft)+parseFloat(x.marginRight)||0,S=Math.abs(a.clientWidth-v.clientWidth-b),_=getComputedStyle(a).scrollbarGutter==="stable both-edges"?S/2:S;_<=Wre&&(c-=_)}return{width:c,height:u,x:f,y:h}}function Xre(e,t){const n=$l(e,!0,t==="fixed"),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=hu(e),s=e.clientWidth*a.x,c=e.clientHeight*a.y,u=i*a.x,f=r*a.y;return{width:s,height:c,x:u,y:f}}function EM(e,t,n){let r;if(t==="viewport"||t==="layoutViewport")r=Yre(e,n,t);else if(t==="document")r=Vre(xo(e));else if(ma(t))r=Xre(t,n);else{const i=_3(e);r={x:t.x-i.x,y:t.y-i.y,width:t.width,height:t.height}}return yg(r)}function Zre(e,t){const n=t.get(e);if(n)return n;let r=$d(e,[],!1).filter(c=>ma(c)&&Uu(c)!=="body"),i=null;const a=ga(e).position==="fixed";let s=a?zl(e):e;for(;ma(s)&&!zd(s);){const c=ga(s),u=sS(s),f=i?i.position:a?"fixed":"";!u&&(f==="fixed"||f==="absolute"&&c.position==="static")?r=r.filter(p=>p!==s):i=c,s=zl(s)}return t.set(e,r),r}function Qre(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e;const s=[...n==="clippingAncestors"?Mv(t)?[]:Zre(t,this._c):[].concat(n),r],c=EM(t,s[0],i);let u=c.top,f=c.right,h=c.bottom,p=c.left;for(let m=1;m<s.length;m++){const v=EM(t,s[m],i);u=ao(v.top,u),f=As(v.right,f),h=As(v.bottom,h),p=ao(v.left,p)}return{width:f-p,height:h-u,x:p,y:u}}function Jre(e){const{width:t,height:n}=S3(e);return{width:t,height:n}}function eie(e,t,n){const r=js(t),i=xo(t),a=n==="fixed",s=$l(e,!0,a,t);let c={scrollLeft:0,scrollTop:0};const u=oo(0);if((r||!a)&&((Uu(t)!=="body"||Nv(i))&&(c=Iv(t)),r)){const m=$l(t,!0,a,t);u.x=m.x+t.clientLeft,u.y=m.y+t.clientTop}!r&&i&&(u.x=Rv(i));const f=i&&!r&&!a?A3(i,c):oo(0),h=s.left+c.scrollLeft-u.x-f.x,p=s.top+c.scrollTop-u.y-f.y;return{x:h,y:p,width:s.width,height:s.height}}function yx(e){return ga(e).position==="static"}function SM(e,t){if(!js(e)||ga(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return xo(e)===n&&(n=n.ownerDocument.body),n}function k3(e,t){const n=Pr(e);if(Mv(e))return n;if(!js(e)){let i=zl(e);for(;i&&!zd(i);){if(ma(i)&&!yx(i))return i;i=zl(i)}return n}let r=SM(e,t);for(;r&&$re(r)&&yx(r);)r=SM(r,t);return r&&zd(r)&&yx(r)&&!sS(r)?n:r||Fre(e)||n}const tie=async function(e){const t=this.getOffsetParent||k3,n=this.getDimensions,r=await n(e.floating);return{reference:eie(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function nie(e){return ga(e).direction==="rtl"}const rie={convertOffsetParentRelativeRectToViewportRelativeRect:qre,getDocumentElement:xo,getClippingRect:Qre,getOffsetParent:k3,getElementRects:tie,getClientRects:Gre,getDimensions:Jre,getScale:hu,isElement:ma,isRTL:nie};function O3(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function iie(e,t,n){let r=null,i;const a=xo(e);function s(){var h;clearTimeout(i),(h=r)==null||h.disconnect(),r=null}function c(h,p){h===void 0&&(h=!1),p===void 0&&(p=1),s();const m=e.getBoundingClientRect(),{left:v,top:x,width:b,height:S}=m;if(h||t(),!b||!S)return;const _=pm(x),O=pm(a.clientWidth-(v+b)),k=pm(a.clientHeight-(x+S)),T=pm(v),N={rootMargin:-_+"px "+-O+"px "+-k+"px "+-T+"px",threshold:ao(0,As(1,p))||1};let P=!0;function D(j){const R=j[0].intersectionRatio;if(!O3(m,e.getBoundingClientRect()))return c();if(R!==p){if(!P)return c();R?c(!1,R):i=setTimeout(()=>{c(!1,1e-7)},1e3)}P=!1}try{r=new IntersectionObserver(D,{...N,root:a.ownerDocument})}catch{r=new IntersectionObserver(D,N)}r.observe(e)}const u=Pr(e),f=()=>c(n);return u.addEventListener("resize",f),c(!0),()=>{u.removeEventListener("resize",f),s()}}function aie(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:s=typeof ResizeObserver=="function",layoutShift:c=typeof IntersectionObserver=="function",animationFrame:u=!1}=r,f=cS(e),h=i||a?[...f?$d(f):[],...t?$d(t):[]]:[];h.forEach(_=>{i&&_.addEventListener("scroll",n),a&&_.addEventListener("resize",n)});const p=f&&c?iie(f,n,a):null;let m=-1,v=null;s&&(v=new ResizeObserver(_=>{let[O]=_;O&&O.target===f&&v&&t&&(v.unobserve(t),cancelAnimationFrame(m),m=requestAnimationFrame(()=>{var k;(k=v)==null||k.observe(t)})),n()}),f&&!u&&v.observe(f),t&&v.observe(t));let x,b=u?$l(e):null;u&&S();function S(){const _=$l(e);b&&!O3(b,_)&&n(),b=_,x=requestAnimationFrame(S)}return n(),()=>{var _;h.forEach(O=>{i&&O.removeEventListener("scroll",n),a&&O.removeEventListener("resize",n)}),p==null||p(),(_=v)==null||_.disconnect(),v=null,u&&cancelAnimationFrame(x)}}const oie=Dre,sie=jre,lie=Ire,cie=zre,uie=Rre,_M=Mre,fie=Lre,die=(e,t,n)=>{const r=new Map,i=n??{},a={...rie,...i.platform,_c:r};return Nre(e,t,{...i,platform:a})};var hie=typeof document<"u",pie=function(){},Fm=hie?y.useLayoutEffect:pie;function bg(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!bg(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){const a=i[r];if(!(a==="_owner"&&e.$$typeof)&&!bg(e[a],t[a]))return!1}return!0}return e!==e&&t!==t}function C3(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function AM(e,t){const n=C3(e);return Math.round(t*n)/n}function bx(e){const t=y.useRef(e);return Fm(()=>{t.current=e}),t}function mie(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:i,elements:{reference:a,floating:s}={},transform:c=!0,whileElementsMounted:u,open:f}=e,[h,p]=y.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[m,v]=y.useState(r);bg(m,r)||v(r);const[x,b]=y.useState(null),[S,_]=y.useState(null),O=y.useCallback(H=>{H!==N.current&&(N.current=H,b(H))},[]),k=y.useCallback(H=>{H!==P.current&&(P.current=H,_(H))},[]),T=a||x,C=s||S,N=y.useRef(null),P=y.useRef(null),D=y.useRef(h),j=u!=null,R=bx(u),F=bx(i),I=bx(f),G=y.useCallback(()=>{if(!N.current||!P.current)return;const H={placement:t,strategy:n,middleware:m};F.current&&(H.platform=F.current),die(N.current,P.current,H).then(K=>{const L={...K,isPositioned:I.current!==!1};V.current&&!bg(D.current,L)&&(D.current=L,Sa.flushSync(()=>{p(L)}))})},[m,t,n,F,I]);Fm(()=>{f===!1&&D.current.isPositioned&&(D.current.isPositioned=!1,p(H=>({...H,isPositioned:!1})))},[f]);const V=y.useRef(!1);Fm(()=>(V.current=!0,()=>{V.current=!1}),[]),Fm(()=>{if(T&&(N.current=T),C&&(P.current=C),T&&C){if(R.current)return R.current(T,C,G);G()}},[T,C,G,R,j]);const q=y.useMemo(()=>({reference:N,floating:P,setReference:O,setFloating:k}),[O,k]),B=y.useMemo(()=>({reference:T,floating:C}),[T,C]),Y=y.useMemo(()=>{const H={position:n,left:0,top:0};if(!B.floating)return H;const K=AM(B.floating,h.x),L=AM(B.floating,h.y);return c?{...H,transform:"translate("+K+"px, "+L+"px)",...C3(B.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:K,top:L}},[n,c,B.floating,h.x,h.y]);return y.useMemo(()=>({...h,update:G,refs:q,elements:B,floatingStyles:Y}),[h,G,q,B,Y])}const gie=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:r,padding:i}=typeof e=="function"?e(n):e;return r&&t(r)?r.current!=null?_M({element:r.current,padding:i}).fn(n):{}:r?_M({element:r,padding:i}).fn(n):{}}}},vie=(e,t)=>{const n=oie(e);return{name:n.name,fn:n.fn,options:[e,t]}},yie=(e,t)=>{const n=sie(e);return{name:n.name,fn:n.fn,options:[e,t]}},bie=(e,t)=>({fn:fie(e).fn,options:[e,t]}),xie=(e,t)=>{const n=lie(e);return{name:n.name,fn:n.fn,options:[e,t]}},wie=(e,t)=>{const n=cie(e);return{name:n.name,fn:n.fn,options:[e,t]}},Eie=(e,t)=>{const n=uie(e);return{name:n.name,fn:n.fn,options:[e,t]}},Sie=(e,t)=>{const n=gie(e);return{name:n.name,fn:n.fn,options:[e,t]}};var _ie=Object.defineProperty,uS=(e,t)=>_ie(e,"name",{value:t,configurable:!0});function Gw(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}uS(Gw,"setRef");function T3(...e){return t=>{let n=!1;const r=e.map(i=>{const a=Gw(i,t);return!n&&typeof a=="function"&&(n=!0),a});if(n)return()=>{for(let i=0;i<r.length;i++){const a=r[i];typeof a=="function"?a():Gw(e[i],null)}}}}uS(T3,"composeRefs");function Pv(...e){return y.useCallback(T3(...e),e)}uS(Pv,"useComposedRefs");var Aie=Object.defineProperty,Ei=(e,t)=>Aie(e,"name",{value:t,configurable:!0});function kie(e,t){const n=y.createContext(t);n.displayName=e+"Context";const r=Ei(a=>{const{children:s,...c}=a,u=y.useMemo(()=>c,Object.values(c));return w.jsx(n.Provider,{value:u,children:s})},"Provider");r.displayName=e+"Provider";function i(a,s={}){const{optional:c=!1}=s,u=y.useContext(n);if(u)return u;if(t!==void 0)return t;if(!c)throw new Error(`\`${a}\` must be used within \`${e}\``)}return Ei(i,"useContext"),[r,i]}Ei(kie,"createContext");function N3(e,t=[]){let n=[];function r(a,s){const c=y.createContext(s);c.displayName=a+"Context";const u=n.length;n=[...n,s];const f=Ei(p=>{var _;const{scope:m,children:v,...x}=p,b=((_=m==null?void 0:m[e])==null?void 0:_[u])||c,S=y.useMemo(()=>x,Object.values(x));return w.jsx(b.Provider,{value:S,children:v})},"Provider");f.displayName=a+"Provider";function h(p,m,v={}){var _;const{optional:x=!1}=v,b=((_=m==null?void 0:m[e])==null?void 0:_[u])||c,S=y.useContext(b);if(S)return S;if(s!==void 0)return s;if(!x)throw new Error(`\`${p}\` must be used within \`${a}\``)}return Ei(h,"useContext"),[f,h]}Ei(r,"createContext");const i=Ei(()=>{const a=n.map(s=>y.createContext(s));return Ei(function(c){const u=(c==null?void 0:c[e])||a;return y.useMemo(()=>({[`__scope${e}`]:{...c,[e]:u}}),[c,u])},"useScope")},"createScope");return i.scopeName=e,[r,M3(i,...t)]}Ei(N3,"createContextScope");function M3(...e){const t=e[0];if(e.length===1)return t;const n=Ei(()=>{const r=e.map(i=>({useScope:i(),scopeName:i.scopeName}));return Ei(function(a){const s=r.reduce((c,{useScope:u,scopeName:f})=>{const p=u(a)[`__scope${f}`];return{...c,...p}},{});return y.useMemo(()=>({[`__scope${t.scopeName}`]:s}),[s])},"useComposedScopes")},"createScope");return n.scopeName=t.scopeName,n}Ei(M3,"composeContextScopes");var Oie=Object.defineProperty,Fi=(e,t)=>Oie(e,"name",{value:t,configurable:!0});function I3(e){const t=y.forwardRef((n,r)=>{let{children:i,...a}=n,s=null,c=!1;const u=[];Vw(i)&&typeof mm=="function"&&(i=mm(i._payload)),y.Children.forEach(i,m=>{var v;if(j3(m)){c=!0;const x=m;let b="child"in x.props?x.props.child:x.props.children;Vw(b)&&typeof mm=="function"&&(b=mm(b._payload)),s=Tie(x,b),u.push((v=s==null?void 0:s.props)==null?void 0:v.children)}else u.push(m)}),s?s=y.cloneElement(s,void 0,u):!c&&y.Children.count(i)===1&&y.isValidElement(i)&&(s=i);const f=s?D3(s):void 0,h=Pv(r,f);if(!s){if(i||i===0)throw new Error(c?Iie(e):Mie(e));return i}const p=P3(a,s.props??{});return s.type!==y.Fragment&&(p.ref=r?h:f),y.cloneElement(s,p)});return t.displayName=`${e}.Slot`,t}Fi(I3,"createSlot");var R3=Symbol.for("radix.slottable");function Cie(e){const t=Fi(n=>"child"in n?n.children(n.child):n.children,"Slottable");return t.displayName=`${e}.Slottable`,t.__radixId=R3,t}Fi(Cie,"createSlottable");var Tie=Fi((e,t)=>{if("child"in e.props){const n=e.props.child;return y.isValidElement(n)?y.cloneElement(n,void 0,e.props.children(n.props.children)):null}return y.isValidElement(t)?t:null},"getSlottableElementFromSlottable");function P3(e,t){const n={...t};for(const r in t){const i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...c)=>{const u=a(...c);return i(...c),u}:i&&(n[r]=i):r==="style"?n[r]={...i,...a}:r==="className"&&(n[r]=[i,a].filter(Boolean).join(" "))}return{...e,...n}}Fi(P3,"mergeProps");function D3(e){var r,i;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(i=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:i.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}Fi(D3,"getElementRef");function j3(e){return y.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===R3}Fi(j3,"isSlottable");var Nie=Symbol.for("react.lazy");function Vw(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===Nie&&"_payload"in e&&L3(e._payload)}Fi(Vw,"isLazyComponent");function L3(e){return typeof e=="object"&&e!==null&&"then"in e}Fi(L3,"isPromiseLike");var Mie=Fi(e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,"createSlotError"),Iie=Fi(e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,"createSlottableError"),mm=Ea[" use ".trim().toString()],Rie=Object.defineProperty,Pie=(e,t)=>Rie(e,"name",{value:t,configurable:!0}),Die=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],z3=Die.reduce((e,t)=>{const n=I3(`Primitive.${t}`),r=y.forwardRef((i,a)=>{const{asChild:s,...c}=i,u=s?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),w.jsx(u,{...c,ref:a})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function jie(e,t){e&&Sa.flushSync(()=>e.dispatchEvent(t))}Pie(jie,"dispatchDiscreteCustomEvent");var Lie=Object.defineProperty,zie=(e,t)=>Lie(e,"name",{value:t,configurable:!0});function $3(e){const t=y.useRef(e);return y.useEffect(()=>{t.current=e}),y.useMemo(()=>((...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)}),[])}zie($3,"useCallbackRef");var xx=globalThis!=null&&globalThis.document?y.useLayoutEffect:()=>{},$ie=globalThis!=null&&globalThis.document?y.useLayoutEffect:()=>{},Bie=Object.defineProperty,Uie=(e,t)=>Bie(e,"name",{value:t,configurable:!0});function B3(e){const[t,n]=y.useState(void 0);return $ie(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(i=>{if(!Array.isArray(i)||!i.length)return;const a=i[0];let s,c;if("borderBoxSize"in a){const u=a.borderBoxSize,f=Array.isArray(u)?u[0]:u;s=f.inlineSize,c=f.blockSize}else s=e.offsetWidth,c=e.offsetHeight;n({width:s,height:c})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else n(void 0)},[e]),t}Uie(B3,"useSize");var Fie=Object.defineProperty,xs=(e,t)=>Fie(e,"name",{value:t,configurable:!0}),U3="Popper",[F3,H3]=N3(U3),[Hie,K3]=F3(U3),Kie=xs(e=>{const{__scopePopper:t,children:n}=e,[r,i]=y.useState(null),[a,s]=y.useState(void 0);return w.jsx(Hie,{scope:t,anchor:r,onAnchorChange:i,placementState:a,setPlacementState:s,children:n})},"Popper"),qie="PopperAnchor",Gie=y.forwardRef(xs(function(t,n){const{__scopePopper:r,virtualRef:i,...a}=t,s=K3(qie,r),c=y.useRef(null),u=s.onAnchorChange,f=y.useCallback(b=>{c.current=b,b&&u(b)},[u]),h=Pv(n,f),p=y.useRef(null);y.useEffect(()=>{if(!i)return;const b=p.current;p.current=i.current,b!==p.current&&u(p.current)});const m=s.placementState&&Dv(s.placementState),v=m==null?void 0:m[0],x=m==null?void 0:m[1];return i?null:w.jsx(z3.div,{"data-radix-popper-side":v,"data-radix-popper-align":x,...a,ref:h})},"PopperAnchor")),q3="PopperContent",[Vie,jOe]=F3(q3),Wie=y.forwardRef(xs(function(t,n){var he,ke,we,fe,pt,qe,Oe;const{__scopePopper:r,side:i="bottom",sideOffset:a=0,align:s="center",alignOffset:c=0,arrowPadding:u=0,avoidCollisions:f=!0,collisionBoundary:h=[],collisionPadding:p=0,sticky:m="partial",hideWhenDetached:v=!1,updatePositionStrategy:x="optimized",onPlaced:b,...S}=t,_=K3(q3,r),[O,k]=y.useState(null),T=Pv(n,k),[C,N]=y.useState(null),P=B3(C),D=(P==null?void 0:P.width)??0,j=(P==null?void 0:P.height)??0,R=i+(s!=="center"?"-"+s:""),F=typeof p=="number"?p:{top:0,right:0,bottom:0,left:0,...p},I=Array.isArray(h)?h:[h],G=I.length>0,V={padding:F,boundary:I.filter(G3),altBoundary:G},{refs:q,floatingStyles:B,placement:Y,isPositioned:H,middlewareData:K}=mie({strategy:"fixed",placement:R,whileElementsMounted:xs((...De)=>aie(...De,{animationFrame:x==="always"}),"whileElementsMounted"),elements:{reference:_.anchor},middleware:[vie({mainAxis:a+j,alignmentAxis:c}),f&&yie({mainAxis:!0,crossAxis:!1,limiter:m==="partial"?bie():void 0,...V}),f&&xie({...V}),wie({...V,apply:xs(({elements:De,rects:Pt,availableWidth:mn,availableHeight:br})=>{const{width:Hn,height:zr}=Pt.reference,ii=De.floating.style;ii.setProperty("--radix-popper-available-width",`${mn}px`),ii.setProperty("--radix-popper-available-height",`${br}px`),ii.setProperty("--radix-popper-anchor-width",`${Hn}px`),ii.setProperty("--radix-popper-anchor-height",`${zr}px`)},"apply")}),C&&Sie({element:C,padding:u}),Yie({arrowWidth:D,arrowHeight:j}),v&&Eie({strategy:"referenceHidden",...V,boundary:G?V.boundary:void 0})]}),L=_.setPlacementState;xx(()=>(L(Y),()=>{L(void 0)}),[Y,L]);const[U,Q]=Dv(Y),z=$3(b);xx(()=>{H&&(z==null||z())},[H,z]);const ce=(he=K.arrow)==null?void 0:he.x,me=(ke=K.arrow)==null?void 0:ke.y,de=((we=K.arrow)==null?void 0:we.centerOffset)!==0,[Ee,Ge]=y.useState();return xx(()=>{O&&Ge(window.getComputedStyle(O).zIndex)},[O]),w.jsx("div",{ref:q.setFloating,"data-radix-popper-content-wrapper":"",style:{...B,transform:H?B.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Ee,"--radix-popper-transform-origin":[(fe=K.transformOrigin)==null?void 0:fe.x,(pt=K.transformOrigin)==null?void 0:pt.y].join(" "),...((qe=K.hide)==null?void 0:qe.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:t.dir,children:w.jsx(Vie,{scope:r,placedSide:U,placedAlign:Q,onArrowChange:N,arrowX:ce,arrowY:me,shouldHideArrow:de,children:w.jsx(z3.div,{"data-side":U,"data-align":Q,...S,ref:T,style:{...S.style,animation:H?(Oe=S.style)==null?void 0:Oe.animation:"none"}})})})},"PopperContent"));function G3(e){return e!==null}xs(G3,"isNotNull");var Yie=xs(e=>({name:"transformOrigin",options:e,fn(t){var S,_,O;const{placement:n,rects:r,middlewareData:i}=t,s=((S=i.arrow)==null?void 0:S.centerOffset)!==0,c=s?0:e.arrowWidth,u=s?0:e.arrowHeight,[f,h]=Dv(n),p={start:"0%",center:"50%",end:"100%"}[h],m=(((_=i.arrow)==null?void 0:_.x)??0)+c/2,v=(((O=i.arrow)==null?void 0:O.y)??0)+u/2;let x="",b="";return f==="bottom"?(x=s?p:`${m}px`,b=`${-u}px`):f==="top"?(x=s?p:`${m}px`,b=`${r.floating.height+u}px`):f==="right"?(x=`${-u}px`,b=s?p:`${v}px`):f==="left"&&(x=`${r.floating.width+u}px`,b=s?p:`${v}px`),{data:{x,y:b}}}}),"transformOrigin");function Dv(e){const[t,n="center"]=e.split("-");return[t,n]}xs(Dv,"getSideAndAlignFromPlacement");var Xie=Kie,Zie=Gie,Qie=Wie,Jie=globalThis!=null&&globalThis.document?y.useLayoutEffect:()=>{},eae=Object.defineProperty,tae=(e,t)=>eae(e,"name",{value:t,configurable:!0}),nae=y.forwardRef(tae(function(t,n){var u;const{container:r,...i}=t,[a,s]=y.useState(!1);Jie(()=>s(!0),[]);const c=r||a&&((u=globalThis==null?void 0:globalThis.document)==null?void 0:u.body);return c?Sa.createPortal(w.jsx(Ov.div,{...i,ref:n}),c):null},"Portal")),kM=globalThis!=null&&globalThis.document?y.useLayoutEffect:()=>{},rae=Object.defineProperty,po=(e,t)=>rae(e,"name",{value:t,configurable:!0});function V3(e,t){return y.useReducer((n,r)=>t[n][r]??n,e)}po(V3,"useStateMachine");var W3=po(e=>{const{present:t,children:n}=e,r=Y3(t),i=typeof n=="function"?n({present:r.isPresent}):y.Children.only(n),a=X3(r.ref,Z3(i));return typeof n=="function"||r.isPresent?y.cloneElement(i,{ref:a}):null},"Presence");function Y3(e){const[t,n]=y.useState(),r=y.useRef(null),i=y.useRef(e),a=y.useRef("none"),s=y.useRef(void 0),c=e?"mounted":"unmounted",[u,f]=V3(c,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return y.useEffect(()=>{u==="mounted"?(a.current=s.current??nu(r.current),s.current=void 0):a.current="none"},[u]),kM(()=>{const h=r.current,p=i.current;if(p!==e){const v=a.current,x=nu(h);e?(s.current=x,f("MOUNT")):x==="none"||(h==null?void 0:h.display)==="none"?f("UNMOUNT"):f(p&&v!==x?"ANIMATION_OUT":"UNMOUNT"),i.current=e}},[e,f]),kM(()=>{if(t){let h;const p=t.ownerDocument.defaultView??window,m=po(x=>{const S=nu(r.current).includes(CSS.escape(x.animationName));if(x.target===t&&S&&(f("ANIMATION_END"),!i.current)){const _=t.style.animationFillMode;t.style.animationFillMode="forwards",h=p.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=_)})}},"handleAnimationEnd"),v=po(x=>{x.target===t&&(a.current=nu(r.current))},"handleAnimationStart");return t.addEventListener("animationstart",v),t.addEventListener("animationcancel",m),t.addEventListener("animationend",m),()=>{p.clearTimeout(h),t.removeEventListener("animationstart",v),t.removeEventListener("animationcancel",m),t.removeEventListener("animationend",m)}}else f("ANIMATION_END")},[t,f]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:y.useCallback(h=>{if(h){const p=getComputedStyle(h);r.current=p,s.current=nu(p)}else r.current=null;n(h)},[])}}po(Y3,"usePresence");function Ww(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}po(Ww,"setRef");function X3(...e){const t=y.useRef(e);return t.current=e,y.useCallback(n=>{const r=t.current;let i=!1;const a=r.map(s=>{const c=Ww(s,n);return!i&&typeof c=="function"&&(i=!0),c});if(i)return()=>{for(let s=0;s<a.length;s++){const c=a[s];typeof c=="function"?c():Ww(r[s],null)}}},[])}po(X3,"useStableComposedRefs");function nu(e){return(e==null?void 0:e.animationName)||"none"}po(nu,"getAnimationName");function Z3(e){var r,i;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(i=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:i.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}po(Z3,"getElementRef");var Q3=globalThis!=null&&globalThis.document?y.useLayoutEffect:()=>{},iae=Object.defineProperty,aae=(e,t)=>iae(e,"name",{value:t,configurable:!0}),OM=Ea[" useEffectEvent ".trim().toString()],CM=Ea[" useInsertionEffect ".trim().toString()];function J3(e){if(typeof OM=="function")return OM(e);const t=y.useRef(()=>{throw new Error("Cannot call an event handler while rendering.")});return typeof CM=="function"?CM(()=>{t.current=e}):Q3(()=>{t.current=e}),y.useMemo(()=>((...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)}),[])}aae(J3,"useEffectEvent");var oae=Object.defineProperty,fh=(e,t)=>oae(e,"name",{value:t,configurable:!0}),sae=Ea[" useInsertionEffect ".trim().toString()]||Q3;function e$({prop:e,defaultProp:t,onChange:n=fh(()=>{},"onChange"),caller:r}){const[i,a,s]=t$({defaultProp:t,onChange:n}),c=e!==void 0,u=c?e:i,f=y.useCallback(h=>{var p;if(c){const m=n$(h)?h(e):h;m!==e&&((p=s.current)==null||p.call(s,m))}else a(h)},[c,e,a,s]);return[u,f]}fh(e$,"useControllableState");function t$({defaultProp:e,onChange:t}){const[n,r]=y.useState(e),i=y.useRef(n),a=y.useRef(t);return sae(()=>{a.current=t},[t]),y.useEffect(()=>{var s;i.current!==n&&((s=a.current)==null||s.call(a,n),i.current=n)},[n,i]),[n,r,a]}fh(t$,"useUncontrolledState");function n$(e){return typeof e=="function"}fh(n$,"isFunction");var TM=Symbol("RADIX:SYNC_STATE");function lae(e,t,n,r){const{prop:i,defaultProp:a,onChange:s,caller:c}=t,u=i!==void 0,f=J3(s),h=[{...n,state:a}];r&&h.push(r);const[p,m]=y.useReducer((S,_)=>{if(_.type===TM)return{...S,state:_.state};const O=e(S,_);return u&&!Object.is(O.state,S.state)&&f(O.state),O},...h),v=p.state,x=y.useRef(v);y.useEffect(()=>{x.current!==v&&(x.current=v,u||f(v))},[v,x,u]);const b=y.useMemo(()=>i!==void 0?{...p,state:i}:p,[p,i]);return y.useEffect(()=>{u&&!Object.is(i,p.state)&&m({type:TM,state:i})},[i,p.state,u]),[b,m]}fh(lae,"useControllableStateReducer");var cae=Object.defineProperty,Ls=(e,t)=>cae(e,"name",{value:t,configurable:!0}),fS="Popover",[r$,LOe]=e3(fS,[H3]),dS=H3(),[uae,Fu]=r$(fS),fae=Ls(e=>{const{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:s=!1}=e,c=dS(t),u=y.useRef(null),[f,h]=y.useState(!1),[p,m]=e$({prop:r,defaultProp:i??!1,onChange:a,caller:fS});return w.jsx(Xie,{...c,children:w.jsx(uae,{scope:t,contentId:v3(),triggerRef:u,open:p,onOpenChange:m,onOpenToggle:y.useCallback(()=>m(v=>!v),[m]),hasCustomAnchor:f,onCustomAnchorAdd:y.useCallback(()=>h(!0),[]),onCustomAnchorRemove:y.useCallback(()=>h(!1),[]),modal:s,children:n})})},"Popover"),dae="PopoverTrigger",hae=y.forwardRef(Ls(function(t,n){const{__scopePopover:r,...i}=t,a=Fu(dae,r),s=dS(r),c=$u(n,a.triggerRef),u=w.jsx(Ov.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":hS(a.open),...i,ref:c,onClick:bs(t.onClick,a.onOpenToggle)});return a.hasCustomAnchor?u:w.jsx(Zie,{asChild:!0,...s,children:u})},"PopoverTrigger")),i$="PopoverPortal",[pae,mae]=r$(i$,{forceMount:void 0}),gae=Ls(e=>{const{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=Fu(i$,t);return w.jsx(pae,{scope:t,forceMount:n,children:w.jsx(W3,{present:n||a.open,children:w.jsx(nae,{asChild:!0,container:i,children:r})})})},"PopoverPortal"),Bd="PopoverContent",vae=y.forwardRef(Ls(function(t,n){const r=mae(Bd,t.__scopePopover),{forceMount:i=r.forceMount,...a}=t,s=Fu(Bd,t.__scopePopover);return w.jsx(W3,{present:i||s.open,children:s.modal?w.jsx(bae,{...a,ref:n}):w.jsx(xae,{...a,ref:n})})},"PopoverContent")),yae=JE("PopoverContent.RemoveScroll"),bae=y.forwardRef(Ls(function(t,n){const r=Fu(Bd,t.__scopePopover),i=y.useRef(null),a=$u(n,i),s=y.useRef(!1);return y.useEffect(()=>{const c=i.current;if(c)return Dz(c)},[]),w.jsx(GE,{as:yae,allowPinchZoom:!0,children:w.jsx(a$,{...t,ref:a,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:bs(t.onCloseAutoFocus,c=>{var u;c.preventDefault(),s.current||(u=r.triggerRef.current)==null||u.focus()}),onPointerDownOutside:bs(t.onPointerDownOutside,c=>{const u=c.detail.originalEvent,f=u.button===0&&u.ctrlKey===!0,h=u.button===2||f;s.current=h},{checkForDefaultPrevented:!1}),onFocusOutside:bs(t.onFocusOutside,c=>c.preventDefault(),{checkForDefaultPrevented:!1})})})},"PopoverContentModal")),xae=y.forwardRef(Ls(function(t,n){const r=Fu(Bd,t.__scopePopover),i=y.useRef(!1),a=y.useRef(!1);return w.jsx(a$,{...t,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{var c,u;(c=t.onCloseAutoFocus)==null||c.call(t,s),s.defaultPrevented||(i.current||(u=r.triggerRef.current)==null||u.focus(),s.preventDefault()),i.current=!1,a.current=!1},onInteractOutside:s=>{var f,h;(f=t.onInteractOutside)==null||f.call(t,s),s.defaultPrevented||(i.current=!0,s.detail.originalEvent.type==="pointerdown"&&(a.current=!0));const c=s.target;((h=r.triggerRef.current)==null?void 0:h.contains(c))&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&a.current&&s.preventDefault()}})},"PopoverContentNonModal")),a$=y.forwardRef(Ls(function(t,n){const{__scopePopover:r,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:s,disableOutsidePointerEvents:c,onEscapeKeyDown:u,onPointerDownOutside:f,onFocusOutside:h,onInteractOutside:p,...m}=t,v=Fu(Bd,r),x=dS(r);return nS(),w.jsx(hre,{asChild:!0,loop:!0,trapped:i,onMountAutoFocus:a,onUnmountAutoFocus:s,children:w.jsx(are,{asChild:!0,disableOutsidePointerEvents:c,onInteractOutside:p,onEscapeKeyDown:u,onPointerDownOutside:f,onFocusOutside:h,onDismiss:()=>v.onOpenChange(!1),deferPointerDownOutside:!0,children:w.jsx(Qie,{"data-state":hS(v.open),role:"dialog",id:v.contentId,...x,...m,ref:n,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})},"PopoverContentImpl"));function hS(e){return e?"open":"closed"}Ls(hS,"getState");var wae=fae,Eae=hae,Sae=gae,o$=vae;const _ae=wae,Aae=Eae,s$=y.forwardRef(({className:e,align:t="start",side:n="top",sideOffset:r=8,collisionPadding:i=8,...a},s)=>w.jsx(Sae,{children:w.jsx(o$,{ref:s,align:t,side:n,sideOffset:r,collisionPadding:i,className:Ue("z-50 w-64 max-w-[calc(100vw-1rem)] rounded-md border bg-card p-3 text-card-foreground shadow-md outline-none","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...a})}));s$.displayName=o$.displayName;const l$=92,c$=96;function wx(e){if(!Number.isFinite(e)||e<0)return"?";const t=["B","KB","MB","GB","TB","PB"];let n=0;for(;e>=1024&&n<t.length-1;)e/=1024,n++;return`${e<10&&n>0?e.toFixed(1):Math.round(e)} ${t[n]}`}const NM=3e5;function kae({socket:e,getToken:t}){const[n,r]=y.useState([]);if(y.useEffect(()=>{t().then(a=>a?fetch("/api/stats",{headers:{Authorization:`Bearer ${a}`}}):null).then(a=>a==null?void 0:a.json()).then(a=>(a==null?void 0:a.samples)&&r(a.samples)).catch(a=>console.warn("[MachineStats] seed failed",a))},[t]),y.useEffect(()=>{if(!e)return;const a=e.on(s=>{s.type==="stats"&&r(c=>[...c,s.sample].slice(-120))});return()=>{a()}},[e]),!n.length)return null;const i=n[n.length-1];return w.jsxs("div",{className:"w-full flex flex-wrap items-center justify-center gap-x-2 gap-y-0.5 text-[10px] text-muted-foreground/60",children:[w.jsx(Hm,{label:"cpu",value:i.cpu,series:n.map(a=>a.cpu)}),w.jsx(Hm,{label:"mem",value:i.mem,series:n.map(a=>a.mem)}),i.disk>=0&&w.jsx(Hm,{label:"disk",value:i.disk,severity:Pae(i.disk),title:jae(i)}),w.jsx(Oae,{getToken:t})]})}function Oae({getToken:e}){const[t,n]=y.useState(null);return y.useEffect(()=>{let r=!0,i=0;const a=async()=>{var f;try{const h=await e();if(!h)return;i=Date.now();const p=await fetch("/api/claude-usage",{headers:{Authorization:`Bearer ${h}`}});if(!r)return;if(p.status===204){n(null);return}if(p.status!==200)return;const m=await p.json();if(!r||!((f=m==null?void 0:m.limits)!=null&&f.length))return;n(m)}catch(h){console.warn("[MachineStats] claude usage poll failed",h)}},s=()=>{document.visibilityState==="visible"&&a()},c=()=>{document.visibilityState==="visible"&&Date.now()-i>=NM&&a()};s();const u=setInterval(s,NM);return document.addEventListener("visibilitychange",c),()=>{r=!1,clearInterval(u),document.removeEventListener("visibilitychange",c)}},[e]),w.jsx(Cae,{usage:t})}function Cae({usage:e}){const t=e&&u$(e.limits),[n,r]=y.useState(Yw),i=y.useRef(null),a=()=>{i.current&&(clearTimeout(i.current),i.current=null)},s=y.useCallback((c,u=0)=>{if(a(),!u){r(f=>IM(f,c));return}i.current=setTimeout(()=>{i.current=null,r(f=>IM(f,c))},u)},[]);return y.useEffect(()=>a,[]),!e||!t?null:w.jsxs(_ae,{open:n.open,onOpenChange:c=>s(c?{type:"activate"}:{type:"dismiss"}),children:[w.jsx(Aae,{asChild:!0,children:w.jsx("button",{type:"button","aria-label":"claude usage breakdown",className:"cursor-default rounded-sm outline-none focus-visible:ring-1 focus-visible:ring-ring",onPointerEnter:c=>s({type:"pointerenter",pointerType:c.pointerType},Tae),onPointerLeave:c=>s({type:"pointerleave",pointerType:c.pointerType},MM),children:w.jsx(Hm,{label:"usage",value:t.percent,severity:t.severity})})}),w.jsx(s$,{onOpenAutoFocus:c=>c.preventDefault(),onPointerEnter:()=>a(),onPointerLeave:c=>s({type:"pointerleave",pointerType:c.pointerType},MM),children:w.jsx(Nae,{usage:e})})]})}const Tae=120,MM=80,Yw={open:!1,byHover:!1};function IM(e,t){switch(t.type){case"pointerenter":return RM(t.pointerType)?{open:!0,byHover:!0}:e;case"pointerleave":return RM(t.pointerType)&&e.byHover?Yw:e;case"activate":return{open:!0,byHover:!1};case"dismiss":return Yw}}const RM=e=>e==="mouse"||e==="";function Nae({usage:e}){const t=u$(e.limits);return w.jsxs("div",{className:"text-[11px] leading-tight",children:[w.jsxs("div",{className:"flex items-baseline justify-between gap-2 pb-2 text-muted-foreground",children:[w.jsx("span",{className:"uppercase tracking-wide",children:"claude usage"}),e.subscriptionType&&w.jsxs("span",{className:"tabular-nums",children:[e.subscriptionType," plan"]})]}),w.jsxs("div",{className:"-mt-1 flex items-baseline justify-between gap-2 pb-2 text-[10px] text-muted-foreground",children:[e.account&&w.jsx("span",{className:"truncate",title:e.account,children:e.account}),w.jsx("span",{className:Ue("shrink-0",e.stale&&"text-amber-500"),children:Iae(e)})]}),e.stale&&e.error&&w.jsxs("div",{"data-refresh-error":!0,className:"-mt-1 pb-2 text-[10px] text-amber-500 break-words",children:[e.error,Um(e.retryAt??null)&&` · retrying in ${Um(e.retryAt??null)}`]}),w.jsx("div",{className:"flex flex-col gap-3",children:e.limits.map((n,r)=>{const i=Um(n.resetsAt),a=n===t;return w.jsxs("div",{"data-headline":a||void 0,className:Ue("flex flex-col gap-1",!a&&"opacity-60"),children:[w.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[w.jsxs("span",{className:Ue("truncate",a&&"font-medium"),children:[a&&w.jsx("span",{className:"mr-1 text-muted-foreground","aria-hidden":!0,children:"▸"}),Mae(n)]}),w.jsxs("span",{className:Ue("tabular-nums shrink-0",Xw(n.percent,n.severity)),children:[n.percent,"%"]})]}),w.jsx(f$,{value:n.percent,className:Ue("w-full",Xw(n.percent,n.severity))}),w.jsx("span",{className:"text-[10px] text-muted-foreground",children:i?`resets in ${i}`:"no reset reported"})]},`${n.kind}-${r}`)})}),w.jsx("div",{className:"mt-3 border-t pt-2 text-[10px] text-muted-foreground",children:"▸ is the window the strip is showing"})]})}function Mae(e){return e.scopeLabel?`${e.scopeLabel} window`:e.kind==="session"?"current session":e.kind==="weekly_all"?"all models":e.kind.replace(/_/g," ")}function u$(e){return e.reduce((t,n)=>!t||n.percent>t.percent?n:t,null)}function Iae(e){const t=Rae(e.fetchedAt);return t?e.stale?`${t} old — refresh failed`:`updated ${t} ago`:e.stale?"last reading — refresh failed":"updated just now"}function Rae(e){if(!e)return null;const t=Date.now()-new Date(e).getTime();if(!Number.isFinite(t))return null;const n=Math.round(Math.max(0,t)/6e4);if(n<1)return null;if(n<60)return`${n}m`;const r=Math.floor(n/60),i=n%60;return r<24?i?`${r}h ${i}m`:`${r}h`:`${Math.floor(r/24)}d`}function Pae(e){return e>=c$?"critical":e>=l$?"warning":"ok"}const Dae={critical:"text-red-500",exceeded:"text-red-500",warning:"text-amber-500",warn:"text-amber-500",ok:"text-emerald-500"};function Xw(e,t){const n=t?Dae[t]:void 0;return n||(e>=90?"text-red-500":e>=75?"text-amber-500":"text-emerald-500")}function jae(e){const t=`warn at ${l$}%, critical at ${c$}%`;if(e.diskUsedBytes==null||e.diskTotalBytes==null)return`disk ${e.disk}% used — ${t}`;const n=Math.max(0,e.diskTotalBytes-e.diskUsedBytes);return`disk ${e.disk}% used — ${wx(e.diskUsedBytes)} of ${wx(e.diskTotalBytes)}, ${wx(n)} free — ${t}`}function Hm({label:e,value:t,series:n,title:r,severity:i}){const a=Xw(t,i),s=r??(n?`${e} ${t}% — last ${n.length} samples`:void 0);return w.jsxs("span",{className:"flex items-center gap-1",title:s,children:[w.jsx("span",{className:"uppercase tracking-wide",children:e}),n?w.jsx(Lae,{series:n,className:a}):w.jsx(f$,{value:t,className:a}),w.jsxs("span",{className:Ue("tabular-nums",a),children:[t,"%"]})]})}function f$({value:e,className:t}){const i=Math.max(0,Math.min(100,e))/100*40;return w.jsxs("svg",{width:40,height:12,viewBox:"0 0 40 12",className:Ue("overflow-visible",t),preserveAspectRatio:"none",children:[w.jsx("rect",{x:0,y:12/2-2,width:40,height:4,rx:2,fill:"currentColor",opacity:.2}),i>0&&w.jsx("rect",{x:0,y:12/2-2,width:i,height:4,rx:2,fill:"currentColor"})]})}function Lae({series:e,className:t}){const i=e.length;if(i<2)return null;const a=e.map((s,c)=>{const u=i>1?c/(i-1)*40:0,f=12-Math.max(0,Math.min(100,s))/100*12;return`${u.toFixed(1)},${f.toFixed(1)}`}).join(" ");return w.jsx("svg",{width:40,height:12,viewBox:"0 0 40 12",className:Ue("overflow-visible",t),preserveAspectRatio:"none",children:w.jsx("polyline",{points:a,fill:"none",stroke:"currentColor",strokeWidth:1,strokeLinejoin:"round",strokeLinecap:"round"})})}const ad=50;function zae({getToken:e,filter:t,refreshKey:n,hydrateIds:r}){const[i,a]=y.useState([]),[s,c]=y.useState(null),[u,f]=y.useState(!1),[h,p]=y.useState({}),m=y.useRef(new Set),v=y.useRef(null),x=y.useRef(null),b=y.useRef(t);b.current=t;const S=y.useRef(ad),_=y.useRef(t);_.current!==t&&(_.current=t,S.current=ad);const O=y.useCallback(async(P,D)=>{const j=await e();if(!j||D!=null&&D.aborted)return null;const R=await fetch(`/api/sessions?${new URLSearchParams(P)}`,{signal:D,headers:{Authorization:`Bearer ${j}`}});if(!R.ok)return null;const F=await R.json();return Array.isArray(F==null?void 0:F.sessions)?F:null},[e]),k=y.useCallback(async(P,D,j)=>{const R=[];let F,I=null;for(;R.length<P;){const G={filter:D,limit:String(Math.min(ad,P-R.length))};F&&(G.before=F);const V=await O(G,j);if(!V)return null;if(R.push(...V.sessions),I=V.nextCursor,!I||!V.sessions.length)break;F=I}return{sessions:R,nextCursor:I}},[O]);y.useEffect(()=>{var D,j;(D=v.current)==null||D.abort(),(j=x.current)==null||j.abort();const P=new AbortController;return v.current=P,f(!0),m.current.clear(),p({}),k(S.current,t,P.signal).then(R=>{!R||P.signal.aborted||(a(R.sessions),c(R.nextCursor))}).catch(()=>{}).finally(()=>{P.signal.aborted||f(!1)}),()=>P.abort()},[k,t,n]);const T=y.useCallback(()=>{var j;if(!s||u)return;(j=x.current)==null||j.abort();const P=new AbortController;x.current=P;const D=b.current;f(!0),O({filter:D,limit:String(ad),before:s},P.signal).then(R=>{!R||P.signal.aborted||D!==b.current||(a(F=>{const I=new Set(F.map(V=>V.sessionId)),G=[...F,...R.sessions.filter(V=>!I.has(V.sessionId))];return S.current=Math.max(ad,G.length),G}),c(R.nextCursor))}).catch(()=>{}).finally(()=>{P.signal.aborted||f(!1)})},[s,u,O]),C=y.useMemo(()=>{const P=new Map;for(const D of Object.values(h))P.set(D.sessionId,D);for(const D of i)P.set(D.sessionId,D);return P},[i,h]),N=r.join(",");return y.useEffect(()=>{const P=r.filter(j=>!!j&&!C.has(j)&&!m.current.has(j)).slice(0,200);if(!P.length)return;for(const j of P)m.current.add(j);let D=!1;return O({ids:P.join(",")}).then(j=>{!j||D||p(R=>{const F={...R};for(const I of j.sessions)F[I.sessionId]=I;return F})}).catch(()=>{}),()=>{D=!0}},[N,C,O]),{sessions:i,cursor:s,loading:u,byId:C,loadMore:T}}const od="0.1.105";function $ae(e){const t=Date.now()-e,n=Math.floor(t/6e4);if(n<1)return"just now";if(n<60)return`${n}m ago`;const r=Math.floor(n/60);if(r<24)return`${r}h ago`;const i=Math.floor(r/24);return i<7?`${i}d ago`:new Date(e).toLocaleDateString(void 0,{month:"short",day:"numeric"})}const sd="w-4 h-4 mt-0.5 shrink-0";function Bae(e){const t=e.slackContext;return(t==null?void 0:t.type)==="dm"?w.jsx(oG,{className:`${sd} text-purple-400`}):(t==null?void 0:t.type)==="mention"?w.jsx(Wq,{className:`${sd} text-blue-400`}):(t==null?void 0:t.type)==="channel"?w.jsx(tG,{className:`${sd} text-green-400`}):e.sessionId.startsWith("slack-")?w.jsx(xw,{className:`${sd} text-yellow-400`}):w.jsx(xw,{className:`${sd} text-muted-foreground`})}function Uae(e){const t=e.slackContext;return(t==null?void 0:t.type)==="dm"?`DM${t.userName?` · ${t.userName}`:""}`:(t==null?void 0:t.type)==="mention"?`@mention${t.channelName?` · #${t.channelName}`:""}`:(t==null?void 0:t.type)==="channel"?`#${t.channelName||"channel"}`:e.sessionId.startsWith("slack-")?"Slack":null}function Fae(e,t,n){return Object.keys(e).map(r=>t.get(r)).filter(r=>!!r&&(n==="all"||r.mine!==!1))}const PM="chats-filter",DM="chats-unread-filter";function Hae({getToken:e,activeSessionId:t,onSelect:n,onNew:r,refreshKey:i,workspaceRefreshKey:a,onRefreshWorkspace:s,unreads:c={},busySessions:u=new Set,socket:f}){var H;const h=_a(),[p,m]=y.useState(()=>localStorage.getItem(PM)||"mine"),[v,x]=y.useState(()=>localStorage.getItem(DM)==="true"),[b,S]=y.useState(""),_=y.useRef(null);function O(K){m(K),localStorage.setItem(PM,K)}function k(){const K=!v;x(K),localStorage.setItem(DM,String(K))}const T=y.useMemo(()=>[t,...Object.keys(c)].filter(K=>!!K),[t,c]),{sessions:C,cursor:N,loading:P,byId:D,loadMore:j}=zae({getToken:e,filter:p,refreshKey:i,hydrateIds:T}),R=y.useMemo(()=>Fae(c,D,p),[c,D,p]),F=R.length,I=y.useMemo(()=>v?[...R].sort((K,L)=>L.lastModified-K.lastModified):C,[v,R,C]),G=t&&!I.some(K=>K.sessionId===t)?D.get(t):void 0;y.useEffect(()=>{_.current&&_.current.scrollIntoView({block:"nearest"})},[t,I,G]);const V=y.useRef(null),q=y.useRef(j);q.current=j,y.useEffect(()=>{const K=V.current;if(!K||!N||v)return;const L=new IntersectionObserver(U=>{U.some(Q=>Q.isIntersecting)&&q.current()},{rootMargin:"300px"});return L.observe(K),()=>L.disconnect()},[N,P,v]),y.useEffect(()=>{e().then(K=>K?fetch("/api/version",{headers:{Authorization:`Bearer ${K}`}}):null).then(K=>K==null?void 0:K.json()).then(K=>K&&S(K.version)).catch(()=>{})},[]);const B=!!b&&b!=="unknown"&&od!=="dev"&&b!==od;y.useEffect(()=>{B&&console.warn(`[shraga] stale client bundle: built from v${od}, server runs v${b} — rebuild dist/client`)},[B,b]);function Y(K){const L=c[K.sessionId],U=u.has(K.sessionId)||K.runStatus==="running"||K.scheduleRunStatus==="running",Q=!U&&(!!K.lastStopReason||K.scheduleRunStatus==="error"||K.scheduleRunStatus==="aborted"),z=U?"border-amber-500":Q?"border-red-500":L?"border-blue-500":"",ce=!!(U||Q||L);return w.jsx("button",{ref:K.sessionId===t?_:void 0,onClick:()=>n(K.sessionId,K.title),className:Ue("w-full text-left px-3 py-2.5 text-sm transition-colors hover:bg-accent/50 group",ce?`rounded-r-lg border-l-[3px] ${z}`:"rounded-lg",t===K.sessionId&&"bg-accent"),children:w.jsxs("div",{className:"flex items-start gap-2",children:[Bae(K),w.jsxs("div",{className:"min-w-0 flex-1",children:[w.jsx("span",{className:Ue("block truncate text-sm leading-snug",L&&"font-semibold"),children:K.title||"New session"}),w.jsxs("div",{className:"flex items-center gap-1.5 mt-0.5",children:[w.jsx("span",{className:"text-[10px] text-muted-foreground font-medium",children:Uae(K)||K.userName}),w.jsx("span",{className:"text-[10px] text-muted-foreground/50",children:"·"}),w.jsx("span",{className:"text-[10px] text-muted-foreground",children:$ae(K.lastModified)})]})]})]})},K.sessionId)}return w.jsxs("div",{className:"flex flex-col h-full bg-muted/30",children:[w.jsx("div",{className:"p-3",children:w.jsxs(Re,{variant:"outline",size:"sm",className:"w-full gap-2 justify-start",onClick:r,title:"New Chat (Ctrl+N)",children:[w.jsx(vv,{className:"w-4 h-4"})," New Chat",w.jsx("span",{className:"ml-auto flex items-center gap-0.5 text-[10px] text-muted-foreground/50 font-mono",children:"⌃N"})]})}),w.jsx("div",{className:"border-b shrink-0 flex flex-col max-h-[40vh]",children:w.jsx(jne,{getToken:e,onRefresh:s,refreshKey:a})}),w.jsxs("div",{className:"flex items-center justify-between px-3 pt-2 pb-1",children:[w.jsx("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Chats"}),w.jsxs("div",{className:"flex gap-0.5",children:[["mine","all"].map(K=>w.jsx("button",{onClick:()=>O(K),className:Ue("text-[10px] px-1.5 rounded-full transition-colors capitalize leading-none",p===K?"text-foreground font-medium":"text-muted-foreground/60 hover:text-muted-foreground"),children:K},K)),w.jsxs("button",{onClick:k,className:Ue("text-[10px] px-1.5 rounded-full transition-colors leading-none",v?"text-blue-600 dark:text-blue-400 font-medium":"text-muted-foreground/60 hover:text-muted-foreground"),children:["unread",F>0&&w.jsx("span",{className:"inline-block w-1.5 h-1.5 ml-1 rounded-full bg-blue-500 align-middle"})]})]})]}),w.jsx(Gj,{className:"flex-1",children:w.jsxs("div",{className:"px-2 pb-2 space-y-0.5",children:[I.length===0&&!G&&w.jsx("p",{className:"text-xs text-muted-foreground px-3 py-6 text-center",children:P?"Loading…":v?"No unread conversations":"No conversations yet"}),G&&Y(G),I.map(Y),!v&&N&&w.jsx("div",{ref:V,className:"py-3 text-center text-[11px] text-muted-foreground/60",children:P?"Loading older…":"···"})]})}),w.jsxs("div",{className:"px-4 py-2 flex flex-col items-center gap-1",children:[w.jsx(kae,{socket:f??null,getToken:e}),(H=h.sidebarExtras)==null?void 0:H.call(h),b&&(B?w.jsxs("button",{onClick:()=>location.reload(),title:`This page was built from v${od}, the server runs v${b} — reload to update`,className:"text-[10px] text-amber-400 hover:text-amber-300 text-center underline decoration-dotted",children:["⚠️ stale page (v",od," → v",b,") · reload"]}):w.jsxs("div",{className:"text-[10px] text-muted-foreground/50 text-center",children:["v",b]}))]})]})}function Yr(e,t){const n=e[e.length-1];if((n==null?void 0:n.role)==="assistant"){if(t.type==="text"||t.type==="thinking"){const r=[...n.blocks],i=r[r.length-1];return(i==null?void 0:i.type)===t.type?(r[r.length-1]={...i,text:i.text+t.text},[...e.slice(0,-1),{...n,blocks:r}]):[...e.slice(0,-1),{...n,blocks:[...r,t]}]}return[...e.slice(0,-1),{...n,blocks:[...n.blocks,t]}]}return[...e,{id:gs(),role:"assistant",blocks:[t]}]}function jM(e,t,n="text"){const r=e[e.length-1],i={type:n,text:t};return(r==null?void 0:r.role)==="assistant"?[...e.slice(0,-1),{...r,blocks:[...r.blocks,i]}]:[...e,{id:gs(),role:"assistant",blocks:[i]}]}function d$(e,t,n){for(let r=e.length-1;r>=0;r--){const i=e[r];if(i.role!=="assistant")continue;const a=i.blocks.findIndex(c=>c.type==="tool_use"&&c.toolUseId===t);if(a===-1)continue;const s=[...i.blocks];return s[a]={...s[a],input:n},[...e.slice(0,r),{...i,blocks:s},...e.slice(r+1)]}return e}function Kae(e,t){const[n,r]=y.useState([]),[i,a]=y.useState(!1),[s,c]=y.useState([]),u=y.useRef(t.initialSessionId),f=y.useRef(!1),h=y.useRef(s);h.current=s;const p=y.useRef(t.getToken);p.current=t.getToken;const m=y.useRef(t.onNewSession);m.current=t.onNewSession;const v=y.useRef(t.onDirectivesChanged);v.current=t.onDirectivesChanged;const x=y.useRef(t.onParticipantsChanged);x.current=t.onParticipantsChanged;const b=y.useRef(t.onEvent);b.current=t.onEvent;const S=y.useRef(e);S.current=e;const _=y.useCallback(I=>I!=null&&I===u.current,[]),O=y.useCallback(async()=>{var G;const I=u.current;if(I)try{const q=await(await xl(`/api/sessions/${I}/messages`,p.current)).json();r(Ej(q)),a(!!q.busy),(G=x.current)==null||G.call(x,Array.isArray(q.participants)&&q.participants.length>1)}catch{}},[]);y.useEffect(()=>{if(!e)return;const I=e.on(G=>{var q,B,Y,H,K,L;(q=b.current)==null||q.call(b,G);const V=G;if(V.type==="compact_marker")return _(V.sessionId)?r(U=>[...U,{id:gs(),role:"assistant",blocks:[{type:"compact_marker",summary:V.summary??"",compactedCount:V.compactedCount??0}]}]):void 0;switch(G.type){case"thinking_delta":return _(G.sessionId)?r(U=>Yr(U,{type:"thinking",text:G.text})):void 0;case"text_delta":return _(G.sessionId)?r(U=>Yr(U,{type:"text",text:G.text})):void 0;case"tool_use":return _(G.sessionId)?r(U=>Yr(U,{type:"tool_use",tool:G.tool,toolUseId:G.toolUseId,input:G.input})):void 0;case"tool_use_input":return _(G.sessionId)?r(U=>d$(U,G.toolUseId,G.input)):void 0;case"tool_result":return _(G.sessionId)?r(U=>Yr(U,{type:"tool_result",toolUseId:G.toolUseId,output:G.output})):void 0;case"tool_result_image":return _(G.sessionId)?r(U=>Yr(U,{type:"image",src:G.dataUrl})):void 0;case"permission_request":return _(G.sessionId)?r(U=>Yr(U,{type:"permission_request",id:G.id,tool:G.tool,input:G.input})):void 0;case"question_request":return _(G.sessionId)?r(U=>Yr(U,{type:"question_request",id:G.id,questions:G.questions})):void 0;case"directives":return f.current?(B=v.current)==null?void 0:B.call(v,G.directives):void 0;case"session_id":return!f.current||u.current?void 0:(u.current=G.sessionId,(Y=m.current)==null?void 0:Y.call(m,G.sessionId));case"forked":return G.sourceSessionId!==u.current?void 0:(u.current=G.sessionId,(H=m.current)==null?void 0:H.call(m,G.sessionId));case"session_busy":G.sessionId===u.current&&a(G.busy);return;case"session_stream":return G.sessionId!==u.current?void 0:qae(r,G.event);case"session_messages_changed":G.sessionId===u.current&&O();return;case"done":{if(G.sessionId!==u.current)return;G.stopReason==="max_turns_reached"&&r(Q=>Yr(Q,{type:"text",text:`
1847
+ `)},yne=0,Fc=[];function bne(e){var t=y.useRef([]),n=y.useRef([0,0]),r=y.useRef(),i=y.useState(yne++)[0],a=y.useState(Nz)[0],s=y.useRef(e);y.useEffect(function(){s.current=e},[e]),y.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(i));var b=qH([e.lockRef.current],(e.shards||[]).map(dM),!0).filter(Boolean);return b.forEach(function(S){return S.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),b.forEach(function(S){return S.classList.remove("allow-interactivity-".concat(i))})}}},[e.inert,e.lockRef.current,e.shards]);var c=y.useCallback(function(b,S){if("touches"in b&&b.touches.length===2||b.type==="wheel"&&b.ctrlKey)return!s.current.allowPinchZoom;var _=cm(b),O=n.current,k="deltaX"in b?b.deltaX:O[0]-_[0],T="deltaY"in b?b.deltaY:O[1]-_[1],C,N=b.target,P=Math.abs(k)>Math.abs(T)?"h":"v";if("touches"in b&&P==="h"&&N.type==="range")return!1;var D=window.getSelection(),j=D&&D.anchorNode,R=j?j===N||j.contains(N):!1;if(R)return!1;var F=uM(P,N);if(!F)return!0;if(F?C=P:(C=P==="v"?"h":"v",F=uM(P,N)),!F)return!1;if(!r.current&&"changedTouches"in b&&(k||T)&&(r.current=C),!C)return!0;var I=r.current||C;return mne(I,S,b,I==="h"?k:T)},[]),u=y.useCallback(function(b){var S=b;if(!(!Fc.length||Fc[Fc.length-1]!==a)){var _="deltaY"in S?fM(S):cm(S),O=t.current.filter(function(C){return C.name===S.type&&(C.target===S.target||S.target===C.shadowParent)&&gne(C.delta,_)})[0];if(O&&O.should){S.cancelable&&S.preventDefault();return}if(!O){var k=(s.current.shards||[]).map(dM).filter(Boolean).filter(function(C){return C.contains(S.target)}),T=k.length>0?c(S,k[0]):!s.current.noIsolation;T&&S.cancelable&&S.preventDefault()}}},[]),f=y.useCallback(function(b,S,_,O){var k={name:b,delta:S,target:_,should:O,shadowParent:xne(_)};t.current.push(k),setTimeout(function(){t.current=t.current.filter(function(T){return T!==k})},1)},[]),h=y.useCallback(function(b){n.current=cm(b),r.current=void 0},[]),p=y.useCallback(function(b){f(b.type,fM(b),b.target,c(b,e.lockRef.current))},[]),m=y.useCallback(function(b){f(b.type,cm(b),b.target,c(b,e.lockRef.current))},[]);y.useEffect(function(){return Fc.push(a),e.setCallbacks({onScrollCapture:p,onWheelCapture:p,onTouchMoveCapture:m}),document.addEventListener("wheel",u,Uc),document.addEventListener("touchmove",u,Uc),document.addEventListener("touchstart",h,Uc),function(){Fc=Fc.filter(function(b){return b!==a}),document.removeEventListener("wheel",u,Uc),document.removeEventListener("touchmove",u,Uc),document.removeEventListener("touchstart",h,Uc)}},[]);var v=e.removeScrollBar,x=e.inert;return y.createElement(y.Fragment,null,x?y.createElement(a,{styles:vne(i)}):null,v?y.createElement(lne,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function xne(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const wne=Yte(Tz,bne);var GE=y.forwardRef(function(e,t){return y.createElement(Av,oa({},e,{ref:t,sideCar:wne}))});GE.classNames=Av.classNames;var Ene=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Hc=new WeakMap,um=new WeakMap,fm={},px=0,Pz=function(e){return e&&(e.host||Pz(e.parentNode))},Sne=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=Pz(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},_ne=function(e,t,n,r){var i=Sne(t,Array.isArray(e)?e:[e]);fm[n]||(fm[n]=new WeakMap);var a=fm[n],s=[],c=new Set,u=new Set(i),f=function(p){!p||c.has(p)||(c.add(p),f(p.parentNode))};i.forEach(f);var h=function(p){!p||u.has(p)||Array.prototype.forEach.call(p.children,function(m){if(c.has(m))h(m);else try{var v=m.getAttribute(r),x=v!==null&&v!=="false",b=(Hc.get(m)||0)+1,S=(a.get(m)||0)+1;Hc.set(m,b),a.set(m,S),s.push(m),b===1&&x&&um.set(m,!0),S===1&&m.setAttribute(n,"true"),x||m.setAttribute(r,"true")}catch(_){console.error("aria-hidden: cannot operate on ",m,_)}})};return h(t),c.clear(),px++,function(){s.forEach(function(p){var m=Hc.get(p)-1,v=a.get(p)-1;Hc.set(p,m),a.set(p,v),m||(um.has(p)||p.removeAttribute(r),um.delete(p)),v||p.removeAttribute(n)}),px--,px||(Hc=new WeakMap,Hc=new WeakMap,um=new WeakMap,fm={})}},Dz=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),i=Ene(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll("[aria-live], script"))),_ne(r,i,n,"aria-hidden")):function(){return null}},kv="Dialog",[jz]=Ij(kv),[Ane,Bi]=jz(kv),Lz=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:s=!0}=e,c=y.useRef(null),u=y.useRef(null),[f,h]=xte({prop:r,defaultProp:i??!1,onChange:a,caller:kv});return w.jsx(Ane,{scope:t,triggerRef:c,contentRef:u,contentId:lx(),titleId:lx(),descriptionId:lx(),open:f,onOpenChange:h,onOpenToggle:y.useCallback(()=>h(p=>!p),[h]),modal:s,children:n})};Lz.displayName=kv;var zz="DialogTrigger",$z=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,i=Bi(zz,n),a=ri(t,i.triggerRef);return w.jsx(Dr.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":ZE(i.open),...r,ref:a,onClick:gr(e.onClick,i.onOpenToggle)})});$z.displayName=zz;var VE="DialogPortal",[kne,Bz]=jz(VE,{forceMount:void 0}),Uz=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:i}=e,a=Bi(VE,t);return w.jsx(kne,{scope:t,forceMount:n,children:y.Children.map(r,s=>w.jsx(Ps,{present:n||a.open,children:w.jsx(Oz,{asChild:!0,container:i,children:s})}))})};Uz.displayName=VE;var mg="DialogOverlay",WE=y.forwardRef((e,t)=>{const n=Bz(mg,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Bi(mg,e.__scopeDialog);return a.modal?w.jsx(Ps,{present:r||a.open,children:w.jsx(Cne,{...i,ref:t})}):null});WE.displayName=mg;var One=wE("DialogOverlay.RemoveScroll"),Cne=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,i=Bi(mg,n),a=Cte(),s=ri(t,a);return w.jsx(GE,{as:One,allowPinchZoom:!0,shards:[i.contentRef],children:w.jsx(Dr.div,{"data-state":ZE(i.open),...r,ref:s,style:{pointerEvents:"auto",...r.style}})})}),Su="DialogContent",YE=y.forwardRef((e,t)=>{const n=Bz(Su,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Bi(Su,e.__scopeDialog);return w.jsx(Ps,{present:r||a.open,children:a.modal?w.jsx(Tne,{...i,ref:t}):w.jsx(Nne,{...i,ref:t})})});YE.displayName=Su;var Tne=y.forwardRef((e,t)=>{const n=Bi(Su,e.__scopeDialog),r=y.useRef(null),i=ri(t,n.contentRef,r);return y.useEffect(()=>{const a=r.current;if(a)return Dz(a)},[]),w.jsx(Fz,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,onCloseAutoFocus:gr(e.onCloseAutoFocus,a=>{var s;a.preventDefault(),(s=n.triggerRef.current)==null||s.focus()}),onPointerDownOutside:gr(e.onPointerDownOutside,a=>{const s=a.detail.originalEvent,c=s.button===0&&s.ctrlKey===!0;(s.button===2||c)&&a.preventDefault()}),onFocusOutside:gr(e.onFocusOutside,a=>a.preventDefault())})}),Nne=y.forwardRef((e,t)=>{const n=Bi(Su,e.__scopeDialog),r=y.useRef(!1),i=y.useRef(!1);return w.jsx(Fz,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:a=>{var s,c;(s=e.onCloseAutoFocus)==null||s.call(e,a),a.defaultPrevented||(r.current||(c=n.triggerRef.current)==null||c.focus(),a.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:a=>{var u,f;(u=e.onInteractOutside)==null||u.call(e,a),a.defaultPrevented||(r.current=!0,a.detail.originalEvent.type==="pointerdown"&&(i.current=!0));const s=a.target;((f=n.triggerRef.current)==null?void 0:f.contains(s))&&a.preventDefault(),a.detail.originalEvent.type==="focusin"&&i.current&&a.preventDefault()}})}),Fz=y.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,...s}=e,c=Bi(Su,n);return Bte(),w.jsx(w.Fragment,{children:w.jsx(Az,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:w.jsx(Sz,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":ZE(c.open),...s,ref:t,deferPointerDownOutside:!0,onDismiss:()=>c.onOpenChange(!1)})})})}),Hz="DialogTitle",XE=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,i=Bi(Hz,n);return w.jsx(Dr.h2,{id:i.titleId,...r,ref:t})});XE.displayName=Hz;var Kz="DialogDescription",Mne=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,i=Bi(Kz,n);return w.jsx(Dr.p,{id:i.descriptionId,...r,ref:t})});Mne.displayName=Kz;var qz="DialogClose",Gz=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,i=Bi(qz,n);return w.jsx(Dr.button,{type:"button",...r,ref:t,onClick:gr(e.onClick,()=>i.onOpenChange(!1))})});Gz.displayName=qz;function ZE(e){return e?"open":"closed"}const Ss=Lz,uh=$z,Ine=Uz,Vz=y.forwardRef(({className:e,...t},n)=>w.jsx(WE,{ref:n,className:Ue("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));Vz.displayName=WE.displayName;const fo=y.forwardRef(({className:e,children:t,...n},r)=>w.jsxs(Ine,{children:[w.jsx(Vz,{}),w.jsxs(YE,{ref:r,className:Ue("fixed left-[50%] top-[50%] z-50 flex flex-col w-[calc(100vw-2rem)] max-w-lg max-h-[85dvh] overflow-y-auto translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-4 sm:p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg",e),...n,children:[t,w.jsxs(Gz,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[w.jsx(Dl,{className:"h-4 w-4"}),w.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));fo.displayName=YE.displayName;function Ll({className:e,...t}){return w.jsx("div",{className:Ue("shrink-0 flex flex-col space-y-1.5 text-center sm:text-left",e),...t})}function Wz({className:e,...t}){return w.jsx("div",{"data-dialog-body":!0,className:Ue("flex-1 min-h-0 overflow-y-auto -mx-4 px-4 sm:-mx-6 sm:px-6",e),...t})}function Yz({className:e,...t}){return w.jsx("div",{className:Ue("shrink-0 -mx-4 px-4 pt-3 border-t sm:-mx-6 sm:px-6","flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t})}const _s=y.forwardRef(({className:e,...t},n)=>w.jsx(XE,{ref:n,className:Ue("text-lg font-semibold leading-none tracking-tight",e),...t}));_s.displayName=XE.displayName;const Rne=new Set(["png","jpg","jpeg","gif","webp","svg","ico","bmp","avif"]),Pne=new Set(["pdf","mp4","webm","mp3","ogg","wav"]);async function Dne(e,t){const n=await t();if(!n)return[];const r=await fetch(`/api/workspace/ls?path=${encodeURIComponent(e)}`,{headers:{Authorization:`Bearer ${n}`}});return r.ok?(await r.json()).entries??[]:[]}function jne({getToken:e,onRefresh:t,refreshKey:n}){const[r,i]=y.useState(new Map),[a,s]=y.useState(()=>new Set),[c,u]=y.useState(null),[f,h]=y.useState(!1),[p,m]=y.useState("fit"),[v,x]=y.useState(null),[b,S]=y.useState(null),_=y.useRef(null),[O,k]=y.useState(null),[T,C]=y.useState(!1),[N,P]=y.useState([]),D=y.useCallback(async B=>{const Y=await Dne(B,e);i(H=>new Map(H).set(B,Y))},[e]);y.useEffect(()=>{D(""),a.forEach(B=>D(B))},[D,n]);const j=r.get("")??[],R=y.useCallback(B=>{try{const Y=B.contentDocument;if(!(Y!=null&&Y.body))return;const H=Math.max(Y.body.offsetWidth,Y.body.scrollWidth),K=Math.max(Y.body.offsetHeight,Y.body.scrollHeight);H&&K&&S({w:H,h:K})}catch{}},[]),F=y.useCallback(()=>{const B=_.current,Y=b;if(!B||!Y)return;const H=16,K=B.clientWidth-H,L=B.clientHeight-H,U=Math.min(K/Y.w,L/Y.h,1);x({scale:U,w:Y.w,h:Y.h})},[b]);y.useEffect(()=>{if(!(c!=null&&c.html)||p!=="fit"){x(null);return}const B=_.current;if(!B)return;const Y=new ResizeObserver(()=>requestAnimationFrame(F));return Y.observe(B),()=>Y.disconnect()},[c==null?void 0:c.html,f,p,F]),y.useEffect(()=>{T&&e().then(B=>{B&&fetch("/api/data-sync/log",{headers:{Authorization:`Bearer ${B}`}}).then(Y=>Y.json()).then(P).catch(()=>{})})},[T]);const I=B=>{s(Y=>{const H=new Set(Y);return H.has(B)?H.delete(B):(H.add(B),r.has(B)||D(B)),H})},G=(B,Y)=>{const H=new URLSearchParams({path:B});return O&&H.set("token",O),Y&&H.set("dl","1"),`/api/workspace/raw?${H}`},V=async B=>{var K;const Y=await e();if(!Y)return;k(Y);const H=((K=B.split(".").pop())==null?void 0:K.toLowerCase())??"";if(H==="html"||H==="htm"){u({path:B,content:"",binary:!1,html:!0});return}if(Rne.has(H)){u({path:B,content:"",binary:!1,image:!0});return}if(Pne.has(H)){u({path:B,content:"",binary:!1,html:!0});return}try{const L=await fetch(`/api/workspace/file?path=${encodeURIComponent(B)}`,{headers:{Authorization:`Bearer ${Y}`}});if(!L.ok)return;const U=await L.json();u({path:B,content:U.content,binary:!!U.binary})}catch{}},q=(B,Y)=>w.jsx(w.Fragment,{children:B.map(H=>{const K=H.path.split("/").pop();return w.jsxs("div",{children:[H.type==="dir"?w.jsxs("button",{onClick:()=>I(H.path),className:"w-full flex items-center gap-1 px-2 py-1 rounded hover:bg-accent/50 text-left text-sm",style:{paddingLeft:8+Y*12},children:[w.jsx(Rs,{className:Ue("w-3 h-3 shrink-0 transition-transform",a.has(H.path)&&"rotate-90")}),w.jsx(eG,{className:"w-3.5 h-3.5 shrink-0 text-muted-foreground"}),w.jsx("span",{className:"truncate",children:K})]}):w.jsxs("button",{onClick:()=>V(H.path),className:"w-full flex items-center gap-1 px-2 py-1 rounded hover:bg-accent/50 text-left text-sm",style:{paddingLeft:8+Y*12+12},title:H.oneLiner||H.path,children:[w.jsx(gE,{className:"w-3.5 h-3.5 shrink-0 text-muted-foreground"}),w.jsx("span",{className:"truncate",children:K})]}),H.type==="dir"&&a.has(H.path)&&q(r.get(H.path)??[],Y+1)]},H.path)})});return w.jsxs(w.Fragment,{children:[w.jsxs("div",{className:"flex items-center justify-between px-3 pt-2 pb-1 shrink-0",children:[w.jsx("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Workspace"}),w.jsxs("div",{className:"flex items-center gap-0.5",children:[w.jsx("button",{onClick:()=>C(!0),className:"p-0.5 rounded hover:bg-accent text-muted-foreground",title:"Activity log",children:w.jsx(nG,{className:"w-3 h-3"})}),w.jsx("button",{onClick:()=>{D(""),a.forEach(B=>D(B)),t==null||t()},className:"p-0.5 rounded hover:bg-accent text-muted-foreground",title:"Refresh",children:w.jsx(fG,{className:"w-3 h-3"})})]})]}),w.jsx("div",{className:"px-1 pb-2 overflow-y-auto min-h-0",children:j.length===0?w.jsx("p",{className:"text-xs text-muted-foreground px-3 py-2",children:"Empty. Drop .md files into data/workspace/ or ask the agent to create some."}):q(j,0)}),w.jsx(Ss,{open:!!c,onOpenChange:B=>{B||(u(null),h(!1),m("fit"),S(null))},children:w.jsxs(fo,{className:Ue(c!=null&&c.html?Ue("!flex !flex-col !p-0 !gap-0 overflow-hidden",f?"max-w-none w-[100vw] h-[100vh] rounded-none border-0":"max-w-[90vw] w-[90vw] h-[85vh]"):"max-w-3xl max-h-[80vh] !flex !flex-col overflow-hidden"),children:[w.jsxs("div",{className:"absolute right-12 top-4 flex items-center gap-1.5 z-10",children:[(c==null?void 0:c.html)&&w.jsxs(w.Fragment,{children:[w.jsx("button",{onClick:()=>m(B=>B==="fit"?"scroll":"fit"),className:"rounded-sm opacity-70 hover:opacity-100 text-muted-foreground",title:p==="fit"?"Switch to scrollable (1:1)":"Switch to scale-to-fit",children:p==="fit"?w.jsx(sG,{className:"w-4 h-4"}):w.jsx(hG,{className:"w-4 h-4"})}),w.jsx("button",{onClick:()=>h(B=>!B),className:"rounded-sm opacity-70 hover:opacity-100 text-muted-foreground",title:f?"Restore":"Maximize",children:f?w.jsx(yE,{className:"w-4 h-4"}):w.jsx(vE,{className:"w-4 h-4"})})]}),c&&w.jsx("a",{href:G(c.path,!0),download:!0,className:"rounded-sm opacity-70 hover:opacity-100 text-muted-foreground",title:"Download",children:w.jsx(Oj,{className:"w-4 h-4"})})]}),w.jsx(Ll,{className:Ue((c==null?void 0:c.html)&&"px-4 py-3 shrink-0 border-b"),children:w.jsx(_s,{className:"font-mono text-sm truncate pr-16",children:c==null?void 0:c.path})}),w.jsx("div",{ref:c!=null&&c.html?_:void 0,className:Ue(c!=null&&c.html?Ue("flex-1 min-h-0 bg-muted/10",p==="fit"?"overflow-hidden flex items-center justify-center":"overflow-auto"):"flex-1 min-h-0 overflow-y-auto"),children:c!=null&&c.html?p==="fit"?w.jsx("div",{style:v?{width:v.w*v.scale,height:v.h*v.scale}:{width:"100%",height:"100%"},children:w.jsx("iframe",{src:G(c.path),className:"border-0 bg-white origin-top-left",title:c.path,onLoad:B=>{R(B.currentTarget),F()},style:v?{width:v.w,height:v.h,transform:`scale(${v.scale})`}:{width:"100%",height:"100%"}})}):w.jsx("iframe",{src:G(c.path),className:"border-0 bg-white mx-auto block",title:c.path,onLoad:B=>R(B.currentTarget),style:{width:(b==null?void 0:b.w)||"100%",height:(b==null?void 0:b.h)||"100%"}}):c!=null&&c.image?w.jsx("div",{className:"flex items-center justify-center p-4",children:w.jsx("img",{src:G(c.path),alt:c.path,className:"max-w-full max-h-[70vh] object-contain"})}):c!=null&&c.binary?w.jsx("p",{className:"text-sm text-muted-foreground",children:"(binary file — preview unavailable)"}):c!=null&&c.path.toLowerCase().endsWith(".md")||c!=null&&c.path.toLowerCase().endsWith(".markdown")?w.jsx("div",{className:"text-sm",children:w.jsx(NL,{remarkPlugins:[ez],rehypePlugins:[Ez],className:"prose prose-sm max-w-none dark:prose-invert prose-pre:bg-muted prose-pre:border prose-code:before:content-none prose-code:after:content-none",children:c.content})}):w.jsx("pre",{className:"text-xs whitespace-pre-wrap break-all",children:c==null?void 0:c.content})})]})}),w.jsx(Ss,{open:T,onOpenChange:C,children:w.jsxs(fo,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[w.jsx(Ll,{children:w.jsx(_s,{className:"text-sm",children:"Activity Log"})}),w.jsxs("div",{className:"overflow-y-auto flex-1 space-y-2",children:[N.map(B=>w.jsxs("div",{className:"border-b border-border/50 pb-2 last:border-0",children:[w.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[w.jsx("span",{className:"text-sm text-foreground",children:B.message}),w.jsx("span",{className:"text-[10px] text-muted-foreground shrink-0",children:Lne(B.date)})]}),B.files.length>0&&w.jsx("div",{className:"text-[11px] text-muted-foreground mt-0.5",children:B.files.map(Y=>w.jsx("span",{className:"inline-block mr-2 font-mono",children:Y},Y))})]},B.hash)),N.length===0&&w.jsx("p",{className:"text-sm text-muted-foreground py-4 text-center",children:"No activity yet"})]})]})})]})}function Lne(e){const t=new Date(e),r=new Date().getTime()-t.getTime(),i=Math.floor(r/6e4);if(i<60)return`${i}m ago`;const a=Math.floor(i/60);return a<24?`${a}h ago`:t.toLocaleDateString(void 0,{month:"short",day:"numeric"})}function Um(e,t=Date.now()){if(!e)return null;const n=new Date(e).getTime()-t;if(!Number.isFinite(n)||n<=0)return null;const r=Math.round(n/6e4);if(r<1)return"1m";if(r<60)return`${r}m`;const i=Math.floor(r/60),a=r%60;if(i<48)return a?`${i}h ${a}m`:`${i}h`;const s=Math.floor(i/24),c=i%24;return c?`${s}d ${c}h`:`${s}d`}const zne=/resets\s+(\d{1,2})(?::(\d{2}))?\s*(am|pm)?\s*\(UTC\)/i;function $ne(e,t=Date.now(),n=Date.now()){var p;const r=e.match(zne);if(!r)return e;let i=Number(r[1]);const a=r[2]?Number(r[2]):0,s=(p=r[3])==null?void 0:p.toLowerCase();if(s==="pm"&&i<12&&(i+=12),s==="am"&&i===12&&(i=0),i>23||a>59)return e;const c=new Date(t),u=new Date(Date.UTC(c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate(),i,a));u.getTime()<=t&&u.setUTCDate(u.getUTCDate()+1);const f=u.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"}),h=Um(u.toISOString(),n);return e.replace(r[0],`resets ${f}${h?` (in ${h})`:""}`)}var Bne=Object.defineProperty,zu=(e,t)=>Bne(e,"name",{value:t,configurable:!0}),Xz=!!(typeof window<"u"&&window.document&&window.document.createElement);function bs(e,t,{checkForDefaultPrevented:n=!0}={}){return zu(function(i){if(e==null||e(i),n===!1||!i||!i.defaultPrevented)return t==null?void 0:t(i)},"handleEvent")}zu(bs,"composeEventHandlers");function Une(e){var t;if(!Xz)throw new Error("Cannot access window outside of the DOM");return((t=e==null?void 0:e.ownerDocument)==null?void 0:t.defaultView)??window}zu(Une,"getOwnerWindow");function Dw(e){if(!Xz)throw new Error("Cannot access document outside of the DOM");return(e==null?void 0:e.ownerDocument)??document}zu(Dw,"getOwnerDocument");function Zz(e,t=!1){const{activeElement:n}=Dw(e);if(!(n!=null&&n.nodeName))return null;if(Qz(n)&&n.contentDocument)return Zz(n.contentDocument.body,t);if(t){const r=n.getAttribute("aria-activedescendant");if(r){const i=Dw(n).getElementById(r);if(i)return i}}return n}zu(Zz,"getActiveElement");function Qz(e){return e.tagName==="IFRAME"}zu(Qz,"isFrame");var Fne=Object.defineProperty,QE=(e,t)=>Fne(e,"name",{value:t,configurable:!0});function jw(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}QE(jw,"setRef");function Jz(...e){return t=>{let n=!1;const r=e.map(i=>{const a=jw(i,t);return!n&&typeof a=="function"&&(n=!0),a});if(n)return()=>{for(let i=0;i<r.length;i++){const a=r[i];typeof a=="function"?a():jw(e[i],null)}}}}QE(Jz,"composeRefs");function $u(...e){return y.useCallback(Jz(...e),e)}QE($u,"useComposedRefs");var Hne=Object.defineProperty,wi=(e,t)=>Hne(e,"name",{value:t,configurable:!0});function Kne(e,t){const n=y.createContext(t);n.displayName=e+"Context";const r=wi(a=>{const{children:s,...c}=a,u=y.useMemo(()=>c,Object.values(c));return w.jsx(n.Provider,{value:u,children:s})},"Provider");r.displayName=e+"Provider";function i(a,s={}){const{optional:c=!1}=s,u=y.useContext(n);if(u)return u;if(t!==void 0)return t;if(!c)throw new Error(`\`${a}\` must be used within \`${e}\``)}return wi(i,"useContext"),[r,i]}wi(Kne,"createContext");function e3(e,t=[]){let n=[];function r(a,s){const c=y.createContext(s);c.displayName=a+"Context";const u=n.length;n=[...n,s];const f=wi(p=>{var _;const{scope:m,children:v,...x}=p,b=((_=m==null?void 0:m[e])==null?void 0:_[u])||c,S=y.useMemo(()=>x,Object.values(x));return w.jsx(b.Provider,{value:S,children:v})},"Provider");f.displayName=a+"Provider";function h(p,m,v={}){var _;const{optional:x=!1}=v,b=((_=m==null?void 0:m[e])==null?void 0:_[u])||c,S=y.useContext(b);if(S)return S;if(s!==void 0)return s;if(!x)throw new Error(`\`${p}\` must be used within \`${a}\``)}return wi(h,"useContext"),[f,h]}wi(r,"createContext");const i=wi(()=>{const a=n.map(s=>y.createContext(s));return wi(function(c){const u=(c==null?void 0:c[e])||a;return y.useMemo(()=>({[`__scope${e}`]:{...c,[e]:u}}),[c,u])},"useScope")},"createScope");return i.scopeName=e,[r,t3(i,...t)]}wi(e3,"createContextScope");function t3(...e){const t=e[0];if(e.length===1)return t;const n=wi(()=>{const r=e.map(i=>({useScope:i(),scopeName:i.scopeName}));return wi(function(a){const s=r.reduce((c,{useScope:u,scopeName:f})=>{const p=u(a)[`__scope${f}`];return{...c,...p}},{});return y.useMemo(()=>({[`__scope${t.scopeName}`]:s}),[s])},"useComposedScopes")},"createScope");return n.scopeName=t.scopeName,n}wi(t3,"composeContextScopes");var qne=Object.defineProperty,Ui=(e,t)=>qne(e,"name",{value:t,configurable:!0});function JE(e){const t=y.forwardRef((n,r)=>{let{children:i,...a}=n,s=null,c=!1;const u=[];Lw(i)&&typeof dm=="function"&&(i=dm(i._payload)),y.Children.forEach(i,m=>{var v;if(a3(m)){c=!0;const x=m;let b="child"in x.props?x.props.child:x.props.children;Lw(b)&&typeof dm=="function"&&(b=dm(b._payload)),s=Vne(x,b),u.push((v=s==null?void 0:s.props)==null?void 0:v.children)}else u.push(m)}),s?s=y.cloneElement(s,void 0,u):!c&&y.Children.count(i)===1&&y.isValidElement(i)&&(s=i);const f=s?i3(s):void 0,h=$u(r,f);if(!s){if(i||i===0)throw new Error(c?Xne(e):Yne(e));return i}const p=r3(a,s.props??{});return s.type!==y.Fragment&&(p.ref=r?h:f),y.cloneElement(s,p)});return t.displayName=`${e}.Slot`,t}Ui(JE,"createSlot");var n3=Symbol.for("radix.slottable");function Gne(e){const t=Ui(n=>"child"in n?n.children(n.child):n.children,"Slottable");return t.displayName=`${e}.Slottable`,t.__radixId=n3,t}Ui(Gne,"createSlottable");var Vne=Ui((e,t)=>{if("child"in e.props){const n=e.props.child;return y.isValidElement(n)?y.cloneElement(n,void 0,e.props.children(n.props.children)):null}return y.isValidElement(t)?t:null},"getSlottableElementFromSlottable");function r3(e,t){const n={...t};for(const r in t){const i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...c)=>{const u=a(...c);return i(...c),u}:i&&(n[r]=i):r==="style"?n[r]={...i,...a}:r==="className"&&(n[r]=[i,a].filter(Boolean).join(" "))}return{...e,...n}}Ui(r3,"mergeProps");function i3(e){var r,i;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(i=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:i.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}Ui(i3,"getElementRef");function a3(e){return y.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===n3}Ui(a3,"isSlottable");var Wne=Symbol.for("react.lazy");function Lw(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===Wne&&"_payload"in e&&o3(e._payload)}Ui(Lw,"isLazyComponent");function o3(e){return typeof e=="object"&&e!==null&&"then"in e}Ui(o3,"isPromiseLike");var Yne=Ui(e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,"createSlotError"),Xne=Ui(e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,"createSlottableError"),dm=Ea[" use ".trim().toString()],Zne=Object.defineProperty,Qne=(e,t)=>Zne(e,"name",{value:t,configurable:!0}),Jne=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Ov=Jne.reduce((e,t)=>{const n=JE(`Primitive.${t}`),r=y.forwardRef((i,a)=>{const{asChild:s,...c}=i,u=s?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),w.jsx(u,{...c,ref:a})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function s3(e,t){e&&Sa.flushSync(()=>e.dispatchEvent(t))}Qne(s3,"dispatchDiscreteCustomEvent");var ere=Object.defineProperty,tre=(e,t)=>ere(e,"name",{value:t,configurable:!0});function Cv(e){const t=y.useRef(e);return y.useEffect(()=>{t.current=e}),y.useMemo(()=>((...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)}),[])}tre(Cv,"useCallbackRef");var nre=Object.defineProperty,$n=(e,t)=>nre(e,"name",{value:t,configurable:!0}),zw="dismissableLayer.update",rre="dismissableLayer.pointerDownOutside",ire="dismissableLayer.focusOutside",hM,l3=y.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),are=y.forwardRef($n(function(t,n){const{disableOutsidePointerEvents:r=!1,deferPointerDownOutside:i=!1,onEscapeKeyDown:a,onPointerDownOutside:s,onFocusOutside:c,onInteractOutside:u,onDismiss:f,...h}=t,p=y.useContext(l3),[m,v]=y.useState(null),x=(m==null?void 0:m.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,b]=y.useState({}),S=$u(n,v),_=Array.from(p.layers),[O]=[...p.layersWithOutsidePointerEventsDisabled].slice(-1),k=O?_.indexOf(O):-1,T=m?_.indexOf(m):-1,C=p.layersWithOutsidePointerEventsDisabled.size>0,N=T>=k,P=y.useRef(!1),D=c3(I=>{s==null||s(I),u==null||u(I),I.defaultPrevented||f==null||f()},{ownerDocument:x,deferPointerDownOutside:i,isDeferredPointerDownOutsideRef:P,dismissableSurfaces:p.dismissableSurfaces,shouldHandlePointerDownOutside:y.useCallback(I=>{if(!(I instanceof Node))return!1;const G=[...p.branches].some(V=>V.contains(I));return N&&!G},[p.branches,N])}),j=u3(I=>{if(i&&P.current)return;const G=I.target;[...p.branches].some(q=>q.contains(G))||(c==null||c(I),u==null||u(I),I.defaultPrevented||f==null||f())},x),R=m?T===_.length-1:!1,F=Cv(I=>{I.key==="Escape"&&(a==null||a(I),!I.defaultPrevented&&f&&(I.preventDefault(),f()))});return y.useEffect(()=>{if(R)return x.addEventListener("keydown",F,{capture:!0}),()=>x.removeEventListener("keydown",F,{capture:!0})},[x,R,F]),y.useEffect(()=>{if(m)return r&&(p.layersWithOutsidePointerEventsDisabled.size===0&&(hM=x.body.style.pointerEvents,x.body.style.pointerEvents="none"),p.layersWithOutsidePointerEventsDisabled.add(m)),p.layers.add(m),$w(),()=>{r&&(p.layersWithOutsidePointerEventsDisabled.delete(m),p.layersWithOutsidePointerEventsDisabled.size===0&&(x.body.style.pointerEvents=hM))}},[m,x,r,p]),y.useEffect(()=>()=>{m&&(p.layers.delete(m),p.layersWithOutsidePointerEventsDisabled.delete(m),$w())},[m,p]),y.useEffect(()=>{const I=$n(()=>b({}),"handleUpdate");return document.addEventListener(zw,I),()=>document.removeEventListener(zw,I)},[]),w.jsx(Ov.div,{...h,ref:S,style:{pointerEvents:C?N?"auto":"none":void 0,...t.style},onFocusCapture:bs(t.onFocusCapture,j.onFocusCapture),onBlurCapture:bs(t.onBlurCapture,j.onBlurCapture),onPointerDownCapture:bs(t.onPointerDownCapture,D.onPointerDownCapture)})},"DismissableLayer"));function ore(){const e=y.useContext(l3),[t,n]=y.useState(null);return y.useEffect(()=>{if(t)return e.dismissableSurfaces.add(t),()=>{e.dismissableSurfaces.delete(t)}},[t,e.dismissableSurfaces]),n}$n(ore,"useDismissableLayerSurface");var sre=$n(()=>!0,"IS_TRUE");function c3(e,t){const{ownerDocument:n=globalThis==null?void 0:globalThis.document,deferPointerDownOutside:r=!1,isDeferredPointerDownOutsideRef:i,dismissableSurfaces:a,shouldHandlePointerDownOutside:s=sre}=t,c=Cv(e),u=y.useRef(!1),f=y.useRef(!1),h=y.useRef(new Map),p=y.useRef(()=>{});return y.useEffect(()=>{function m(){f.current=!1,i.current=!1,h.current.clear()}$n(m,"resetOutsideInteraction");function v(){return Array.from(h.current.values()).some(Boolean)}$n(v,"isOutsideInteractionIntercepted");function x(k){if(!f.current)return;const T=k.target;T instanceof Node&&[...a].some(N=>N.contains(T))||h.current.set(k.type,!0),k.type==="click"&&window.setTimeout(()=>{f.current&&p.current()},0)}$n(x,"handleInteractionCapture");function b(k){f.current&&h.current.set(k.type,!1)}$n(b,"handleInteractionBubble");const S=$n(k=>{if(k.target&&!u.current){let T=function(){n.removeEventListener("click",p.current);const N=v();m(),N||eS(rre,c,C,{discrete:!0})};if($n(T,"handleAndDispatchPointerDownOutsideEvent"),!s(k.target)){n.removeEventListener("click",p.current),m(),u.current=!1;return}const C={originalEvent:k};f.current=!0,i.current=r&&k.button===0,h.current.clear(),!r||k.button!==0?T():(n.removeEventListener("click",p.current),p.current=T,n.addEventListener("click",p.current,{once:!0}))}else n.removeEventListener("click",p.current),m();u.current=!1},"handlePointerDown"),_=["pointerup","mousedown","mouseup","touchstart","touchend","click"];for(const k of _)n.addEventListener(k,x,!0),n.addEventListener(k,b);const O=window.setTimeout(()=>{n.addEventListener("pointerdown",S)},0);return()=>{window.clearTimeout(O),n.removeEventListener("pointerdown",S),n.removeEventListener("click",p.current);for(const k of _)n.removeEventListener(k,x,!0),n.removeEventListener(k,b)}},[n,c,r,i,a,s]),{onPointerDownCapture:$n(()=>u.current=!0,"onPointerDownCapture")}}$n(c3,"usePointerDownOutside");function u3(e,t=globalThis==null?void 0:globalThis.document){const n=Cv(e),r=y.useRef(!1);return y.useEffect(()=>{const i=$n(a=>{a.target&&!r.current&&eS(ire,n,{originalEvent:a},{discrete:!1})},"handleFocus");return t.addEventListener("focusin",i),()=>t.removeEventListener("focusin",i)},[t,n]),{onFocusCapture:$n(()=>r.current=!0,"onFocusCapture"),onBlurCapture:$n(()=>r.current=!1,"onBlurCapture")}}$n(u3,"useFocusOutside");function $w(){const e=new CustomEvent(zw);document.dispatchEvent(e)}$n($w,"dispatchUpdate");function eS(e,t,n,{discrete:r}){const i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?s3(i,a):i.dispatchEvent(a)}$n(eS,"handleAndDispatchCustomEvent");var lre=Object.defineProperty,tS=(e,t)=>lre(e,"name",{value:t,configurable:!0}),hm=0,Zi=null;function cre(e){return nS(),e.children}tS(cre,"FocusGuards");function nS(){y.useEffect(()=>{Zi||(Zi={start:Bw(),end:Bw()});const{start:e,end:t}=Zi;return document.body.firstElementChild!==e&&document.body.insertAdjacentElement("afterbegin",e),document.body.lastElementChild!==t&&document.body.insertAdjacentElement("beforeend",t),hm++,()=>{hm===1&&(Zi==null||Zi.start.remove(),Zi==null||Zi.end.remove(),Zi=null),hm=Math.max(0,hm-1)}},[])}tS(nS,"useFocusGuards");function Bw(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}tS(Bw,"createFocusGuard");var ure=Object.defineProperty,fre=(e,t)=>ure(e,"name",{value:t,configurable:!0});function Uw(e){const t=y.useRef(e);return y.useEffect(()=>{t.current=e}),y.useMemo(()=>((...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)}),[])}fre(Uw,"useCallbackRef");var dre=Object.defineProperty,pr=(e,t)=>dre(e,"name",{value:t,configurable:!0}),mx="focusScope.autoFocusOnMount",gx="focusScope.autoFocusOnUnmount",pM={bubbles:!1,cancelable:!0},hre=y.forwardRef(pr(function(t,n){const{loop:r=!1,trapped:i=!1,onMountAutoFocus:a,onUnmountAutoFocus:s,...c}=t,[u,f]=y.useState(null),h=Uw(a),p=Uw(s),m=y.useRef(null),v=$u(n,f),x=y.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;y.useEffect(()=>{if(i){let S=function(T){if(x.paused||!u)return;const C=T.target;u.contains(C)?m.current=C:Xa(m.current,{select:!0})},_=function(T){if(x.paused||!u)return;const C=T.relatedTarget;C!==null&&(u.contains(C)||Xa(m.current,{select:!0}))},O=function(T){if(document.activeElement===document.body)for(const N of T)N.removedNodes.length>0&&Xa(u)};pr(S,"handleFocusIn"),pr(_,"handleFocusOut"),pr(O,"handleMutations"),document.addEventListener("focusin",S),document.addEventListener("focusout",_);const k=new MutationObserver(O);return u&&k.observe(u,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",S),document.removeEventListener("focusout",_),k.disconnect()}}},[i,u,x.paused]),y.useEffect(()=>{if(u){mM.add(x);const S=document.activeElement;if(!u.contains(S)){const O=new CustomEvent(mx,pM);u.addEventListener(mx,h),u.dispatchEvent(O),O.defaultPrevented||(f3(g3(rS(u)),{select:!0}),document.activeElement===S&&Xa(u))}return()=>{u.removeEventListener(mx,h),setTimeout(()=>{const O=new CustomEvent(gx,pM);u.addEventListener(gx,p),u.dispatchEvent(O),O.defaultPrevented||Xa(S??document.body,{select:!0}),u.removeEventListener(gx,p),mM.remove(x)},0)}}},[u,h,p,x]);const b=y.useCallback(S=>{if(!r&&!i||x.paused)return;const _=S.key==="Tab"&&!S.altKey&&!S.ctrlKey&&!S.metaKey,O=document.activeElement;if(_&&O){const k=S.currentTarget,[T,C]=d3(k);T&&C?!S.shiftKey&&O===C?(S.preventDefault(),r&&Xa(T,{select:!0})):S.shiftKey&&O===T&&(S.preventDefault(),r&&Xa(C,{select:!0})):O===k&&S.preventDefault()}},[r,i,x.paused]);return w.jsx(Ov.div,{tabIndex:-1,...c,ref:v,onKeyDown:b})},"FocusScope"));function f3(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(Xa(r,{select:t}),document.activeElement!==n)return}pr(f3,"focusFirst");function d3(e){const t=rS(e),n=Fw(t,e),r=Fw(t.reverse(),e);return[n,r]}pr(d3,"getTabbableEdges");function rS(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:pr(r=>{const i=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||i?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP},"acceptNode")});for(;n.nextNode();)t.push(n.currentNode);return t}pr(rS,"getTabbableCandidates");function Fw(e,t){const n=typeof t.checkVisibility=="function"&&t.checkVisibility({checkVisibilityCSS:!0});for(const r of e)if(!(n?!r.checkVisibility({checkVisibilityCSS:!0}):h3(r,{upTo:t})))return r}pr(Fw,"findVisible");function h3(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}pr(h3,"isHidden");function p3(e){return e instanceof HTMLInputElement&&"select"in e}pr(p3,"isSelectableInput");function Xa(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&p3(e)&&t&&e.select()}}pr(Xa,"focus");var mM=m3();function m3(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=Hw(e,t),e.unshift(t)},remove(t){var n;e=Hw(e,t),(n=e[0])==null||n.resume()}}}pr(m3,"createFocusScopesStack");function Hw(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}pr(Hw,"arrayRemove");function g3(e){return e.filter(t=>t.tagName!=="A")}pr(g3,"removeLinks");var pre=globalThis!=null&&globalThis.document?y.useLayoutEffect:()=>{},mre=Object.defineProperty,gre=(e,t)=>mre(e,"name",{value:t,configurable:!0}),vre=Ea[" useId ".trim().toString()]||(()=>{}),yre=0;function v3(e){const[t,n]=y.useState(vre());return pre(()=>{e||n(r=>r??String(yre++))},[e]),e||(t?`radix-${t}`:"")}gre(v3,"useId");const bre=["top","right","bottom","left"],As=Math.min,ao=Math.max,gg=Math.round,pm=Math.floor,oo=e=>({x:e,y:e}),xre={left:"right",right:"left",bottom:"top",top:"bottom"};function y3(e,t,n){return ao(e,As(t,n))}function ho(e,t){return typeof e=="function"?e(t):e}function ks(e){return e.split("-")[0]}function Bu(e){return e.split("-")[1]}function iS(e){return e==="x"?"y":"x"}function aS(e){return e==="y"?"height":"width"}function sa(e){const t=e[0];return t==="t"||t==="b"?"y":"x"}function oS(e){return iS(sa(e))}function wre(e,t,n){n===void 0&&(n=!1);const r=Bu(e),i=oS(e),a=aS(i);let s=i==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[a]>t.floating[a]&&(s=vg(s)),[s,vg(s)]}function Ere(e){const t=vg(e);return[Kw(e),t,Kw(t)]}function Kw(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const gM=["left","right"],vM=["right","left"],Sre=["top","bottom"],_re=["bottom","top"];function Are(e,t,n){switch(e){case"top":case"bottom":return n?t?vM:gM:t?gM:vM;case"left":case"right":return t?Sre:_re;default:return[]}}function kre(e,t,n,r){const i=Bu(e);let a=Are(ks(e),n==="start",r);return i&&(a=a.map(s=>s+"-"+i),t&&(a=a.concat(a.map(Kw)))),a}function vg(e){const t=ks(e);return xre[t]+e.slice(t.length)}function Ore(e){var t,n,r,i;return{top:(t=e.top)!=null?t:0,right:(n=e.right)!=null?n:0,bottom:(r=e.bottom)!=null?r:0,left:(i=e.left)!=null?i:0}}function b3(e){return typeof e!="number"?Ore(e):{top:e,right:e,bottom:e,left:e}}function yg(e){const{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function yM(e,t,n){let{reference:r,floating:i}=e;const a=sa(t),s=oS(t),c=aS(s),u=ks(t),f=a==="y",h=r.x+r.width/2-i.width/2,p=r.y+r.height/2-i.height/2,m=r[c]/2-i[c]/2;let v;switch(u){case"top":v={x:h,y:r.y-i.height};break;case"bottom":v={x:h,y:r.y+r.height};break;case"right":v={x:r.x+r.width,y:p};break;case"left":v={x:r.x-i.width,y:p};break;default:v={x:r.x,y:r.y}}const x=Bu(t);return x&&(v[s]+=m*(x==="end"?1:-1)*(n&&f?-1:1)),v}async function Cre(e,t){var n;t===void 0&&(t={});const{x:r,y:i,platform:a,rects:s,elements:c,strategy:u}=e,{boundary:f="clippingAncestors",rootBoundary:h="viewport",elementContext:p="floating",altBoundary:m=!1,padding:v=0}=ho(t,e),x=b3(v),S=c[m?p==="floating"?"reference":"floating":p],_=yg(await a.getClippingRect({element:(n=await(a.isElement==null?void 0:a.isElement(S)))==null||n?S:S.contextElement||await(a.getDocumentElement==null?void 0:a.getDocumentElement(c.floating)),boundary:f,rootBoundary:h,strategy:u})),O=p==="floating"?{x:r,y:i,width:s.floating.width,height:s.floating.height}:s.reference,k=await(a.getOffsetParent==null?void 0:a.getOffsetParent(c.floating)),T=await(a.isElement==null?void 0:a.isElement(k))&&await(a.getScale==null?void 0:a.getScale(k))||{x:1,y:1},C=yg(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:c,rect:O,offsetParent:k,strategy:u}):O);return{top:(_.top-C.top+x.top)/T.y,bottom:(C.bottom-_.bottom+x.bottom)/T.y,left:(_.left-C.left+x.left)/T.x,right:(C.right-_.right+x.right)/T.x}}const Tre=50,Nre=async(e,t,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:a=[],platform:s}=n,c=s.detectOverflow?s:{...s,detectOverflow:Cre},u=await(s.isRTL==null?void 0:s.isRTL(t));let f=await s.getElementRects({reference:e,floating:t,strategy:i}),{x:h,y:p}=yM(f,r,u),m=r,v=0;const x={};for(let b=0;b<a.length;b++){const S=a[b];if(!S)continue;const{name:_,fn:O}=S,{x:k,y:T,data:C,reset:N}=await O({x:h,y:p,initialPlacement:r,placement:m,strategy:i,middlewareData:x,rects:f,platform:c,elements:{reference:e,floating:t}});h=k??h,p=T??p,x[_]={...x[_],...C},N&&v<Tre&&(v++,typeof N=="object"&&(N.placement&&(m=N.placement),N.rects&&(f=N.rects===!0?await s.getElementRects({reference:e,floating:t,strategy:i}):N.rects),{x:h,y:p}=yM(f,m,u)),b=-1)}return{x:h,y:p,placement:m,strategy:i,middlewareData:x}},Mre=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:i,rects:a,platform:s,elements:c,middlewareData:u}=t,{element:f,padding:h=0}=ho(e,t)||{};if(f==null)return{};const p=b3(h),m={x:n,y:r},v=oS(i),x=aS(v),b=await s.getDimensions(f),S=v==="y",_=S?"top":"left",O=S?"bottom":"right",k=S?"clientHeight":"clientWidth",T=a.reference[x]+a.reference[v]-m[v]-a.floating[x],C=m[v]-a.reference[v],N=await(s.getOffsetParent==null?void 0:s.getOffsetParent(f));let P=N?N[k]:0;(!P||!await(s.isElement==null?void 0:s.isElement(N)))&&(P=c.floating[k]||a.floating[x]);const D=T/2-C/2,j=P/2-b[x]/2-1,R=As(p[_],j),F=As(p[O],j),I=P-b[x]-F,G=P/2-b[x]/2+D,V=y3(R,G,I),q=!u.arrow&&Bu(i)!=null&&G!==V&&a.reference[x]/2-(G<R?R:F)-b[x]/2<0,B=q?G<R?G-R:G-I:0;return{[v]:m[v]+B,data:{[v]:V,centerOffset:G-V-B,...q&&{alignmentOffset:B}},reset:q}}}),Ire=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,r;const{placement:i,middlewareData:a,rects:s,initialPlacement:c,platform:u,elements:f}=t,{mainAxis:h=!0,crossAxis:p=!0,fallbackPlacements:m,fallbackStrategy:v="bestFit",fallbackAxisSideDirection:x="none",flipAlignment:b=!0,...S}=ho(e,t);if((n=a.arrow)!=null&&n.alignmentOffset)return{};const _=ks(i),O=sa(c),k=ks(c)===c,T=await(u.isRTL==null?void 0:u.isRTL(f.floating)),C=m||(k||!b?[vg(c)]:Ere(c)),N=x!=="none";!m&&N&&C.push(...kre(c,b,x,T));const P=[c,...C],D=await u.detectOverflow(t,S),j=[];let R=((r=a.flip)==null?void 0:r.overflows)||[];if(h&&j.push(D[_]),p){const V=wre(i,s,T);j.push(D[V[0]],D[V[1]])}if(R=[...R,{placement:i,overflows:j}],!j.every(V=>V<=0)){var F,I;const V=(((F=a.flip)==null?void 0:F.index)||0)+1,q=P[V];if(q&&(!(p==="alignment"?O!==sa(q):!1)||R.every(H=>sa(H.placement)===O?H.overflows[0]>0:!0)))return{data:{index:V,overflows:R},reset:{placement:q}};let B=(I=R.filter(Y=>Y.overflows[0]<=0).sort((Y,H)=>Y.overflows[1]-H.overflows[1])[0])==null?void 0:I.placement;if(!B)switch(v){case"bestFit":{var G;const Y=(G=R.filter(H=>{if(N){const K=sa(H.placement);return K===O||K==="y"}return!0}).map(H=>[H.placement,H.overflows.filter(K=>K>0).reduce((K,L)=>K+L,0)]).sort((H,K)=>H[1]-K[1])[0])==null?void 0:G[0];Y&&(B=Y);break}case"initialPlacement":B=c;break}if(i!==B)return{reset:{placement:B}}}return{}}}};function bM(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function xM(e){return bre.some(t=>e[t]>=0)}const Rre=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n,platform:r}=t,{strategy:i="referenceHidden",...a}=ho(e,t);switch(i){case"referenceHidden":{const s=await r.detectOverflow(t,{...a,elementContext:"reference"}),c=bM(s,n.reference);return{data:{referenceHiddenOffsets:c,referenceHidden:xM(c)}}}case"escaped":{const s=await r.detectOverflow(t,{...a,altBoundary:!0}),c=bM(s,n.floating);return{data:{escapedOffsets:c,escaped:xM(c)}}}default:return{}}}}},x3=new Set(["left","top"]);async function Pre(e,t){const{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),s=ks(n),c=Bu(n),u=sa(n)==="y",f=x3.has(s)?-1:1,h=a&&u?-1:1,p=ho(t,e);let{mainAxis:m,crossAxis:v,alignmentAxis:x}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:p.mainAxis||0,crossAxis:p.crossAxis||0,alignmentAxis:p.alignmentAxis};return c&&typeof x=="number"&&(v=c==="end"?x*-1:x),u?{x:v*h,y:m*f}:{x:m*f,y:v*h}}const Dre=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:i,y:a,placement:s,middlewareData:c}=t,u=await Pre(t,e);return s===((n=c.offset)==null?void 0:n.placement)&&(r=c.arrow)!=null&&r.alignmentOffset?{}:{x:i+u.x,y:a+u.y,data:{...u,placement:s}}}}},jre=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:i,platform:a}=t,{mainAxis:s=!0,crossAxis:c=!1,limiter:u={fn:O=>{let{x:k,y:T}=O;return{x:k,y:T}}},...f}=ho(e,t),h={x:n,y:r},p=await a.detectOverflow(t,f),m=sa(i),v=iS(m);let x=h[v],b=h[m];const S=(O,k)=>y3(k+p[O==="y"?"top":"left"],k,k-p[O==="y"?"bottom":"right"]);s&&(x=S(v,x)),c&&(b=S(m,b));const _=u.fn({...t,[v]:x,[m]:b});return{..._,data:{x:_.x-n,y:_.y-r,enabled:{[v]:s,[m]:c}}}}}},Lre=function(e){return e===void 0&&(e={}),{options:e,fn(t){var n,r;const{x:i,y:a,placement:s,rects:c,middlewareData:u}=t,{offset:f=0,mainAxis:h=!0,crossAxis:p=!0}=ho(e,t),m={x:i,y:a},v=sa(s),x=iS(v);let b=m[x],S=m[v];const _=ho(f,t),O=typeof _=="number"?{mainAxis:_,crossAxis:0}:{mainAxis:(n=_.mainAxis)!=null?n:0,crossAxis:(r=_.crossAxis)!=null?r:0};if(h){const C=x==="y"?"height":"width",N=c.reference[x]-c.floating[C]+O.mainAxis,P=c.reference[x]+c.reference[C]-O.mainAxis;b<N?b=N:b>P&&(b=P)}if(p){var k,T;const C=x==="y"?"width":"height",N=x3.has(ks(s)),P=c.reference[v]-c.floating[C]+(N&&((k=u.offset)==null?void 0:k[v])||0)+(N?0:O.crossAxis),D=c.reference[v]+c.reference[C]+(N?0:((T=u.offset)==null?void 0:T[v])||0)-(N?O.crossAxis:0);S<P?S=P:S>D&&(S=D)}return{[x]:b,[v]:S}}}},zre=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:i,elements:a}=t,{apply:s=()=>{},...c}=ho(e,t),u=await i.detectOverflow(t,c),f=ks(n),h=Bu(n),p=sa(n)==="y",{width:m,height:v}=r.floating;let x,b;f==="top"||f==="bottom"?(x=f,b=h===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?"start":"end")?"left":"right"):(b=f,x=h==="end"?"top":"bottom");const S=v-u.top-u.bottom,_=m-u.left-u.right,O=As(v-u[x],S),k=As(m-u[b],_),T=t.middlewareData.shift,C=!T;let N=O,P=k;T!=null&&T.enabled.x&&(P=_),T!=null&&T.enabled.y&&(N=S),C&&!h&&(p?P=m-2*ao(u.left,u.right):N=v-2*ao(u.top,u.bottom)),await s({...t,availableWidth:P,availableHeight:N});const D=await i.getDimensions(a.floating);return m!==D.width||v!==D.height?{reset:{rects:!0}}:{}}}};function Tv(){return typeof window<"u"}function Uu(e){return w3(e)?(e.nodeName||"").toLowerCase():"#document"}function Pr(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function xo(e){var t;return(t=(w3(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function w3(e){return Tv()?e instanceof Node||e instanceof Pr(e).Node:!1}function ma(e){return Tv()?e instanceof Element||e instanceof Pr(e).Element:!1}function js(e){return Tv()?e instanceof HTMLElement||e instanceof Pr(e).HTMLElement:!1}function wM(e){return!Tv()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Pr(e).ShadowRoot}function Nv(e){const{overflow:t,overflowX:n,overflowY:r,display:i}=ga(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!=="inline"&&i!=="contents"}function $re(e){return/^(table|td|th)$/.test(Uu(e))}function Mv(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}const Bre=/transform|translate|scale|rotate|perspective|filter/,Ure=/paint|layout|strict|content/,cl=e=>!!e&&e!=="none";let vx;function sS(e){const t=ma(e)?ga(e):e;return cl(t.transform)||cl(t.translate)||cl(t.scale)||cl(t.rotate)||cl(t.perspective)||!lS()&&(cl(t.backdropFilter)||cl(t.filter))||Bre.test(t.willChange||"")||Ure.test(t.contain||"")}function Fre(e){let t=zl(e);for(;js(t)&&!zd(t);){if(sS(t))return t;if(Mv(t))return null;t=zl(t)}return null}function lS(){return vx==null&&(vx=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),vx}function zd(e){return/^(html|body|#document)$/.test(Uu(e))}function ga(e){return Pr(e).getComputedStyle(e)}function Iv(e){return ma(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function zl(e){if(Uu(e)==="html")return e;const t=e.assignedSlot||e.parentNode||wM(e)&&e.host||xo(e);return wM(t)?t.host:t}function E3(e){const t=zl(e);return zd(t)?(e.ownerDocument||e).body:js(t)&&Nv(t)?t:E3(t)}function $d(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const i=E3(e),a=i===((r=e.ownerDocument)==null?void 0:r.body),s=Pr(i);if(a){const c=qw(s);return t.concat(s,s.visualViewport||[],Nv(i)?i:[],c&&n?$d(c):[])}else return t.concat(i,$d(i,[],n))}function qw(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function S3(e){const t=ga(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const i=js(e),a=i?e.offsetWidth:n,s=i?e.offsetHeight:r,c=gg(n)!==a||gg(r)!==s;return c&&(n=a,r=s),{width:n,height:r,$:c}}function cS(e){return ma(e)?e:e.contextElement}function hu(e){const t=cS(e);if(!js(t))return oo(1);const n=t.getBoundingClientRect(),{width:r,height:i,$:a}=S3(t);let s=(a?gg(n.width):n.width)/r,c=(a?gg(n.height):n.height)/i;return(!s||!Number.isFinite(s))&&(s=1),(!c||!Number.isFinite(c))&&(c=1),{x:s,y:c}}const Hre=oo(0);function _3(e){const t=Pr(e);return!lS()||!t.visualViewport?Hre:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Kre(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===Pr(e)}function $l(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const i=e.getBoundingClientRect(),a=cS(e);let s=oo(1);t&&(r?ma(r)&&(s=hu(r)):s=hu(e));const c=Kre(a,n,r)?_3(a):oo(0);let u=(i.left+c.x)/s.x,f=(i.top+c.y)/s.y,h=i.width/s.x,p=i.height/s.y;if(a&&r){const m=Pr(a),v=ma(r)?Pr(r):r;let x=m,b=qw(x);for(;b&&v!==x;){const S=hu(b),_=b.getBoundingClientRect(),O=ga(b),k=_.left+(b.clientLeft+parseFloat(O.paddingLeft))*S.x,T=_.top+(b.clientTop+parseFloat(O.paddingTop))*S.y;u*=S.x,f*=S.y,h*=S.x,p*=S.y,u+=k,f+=T,x=Pr(b),b=qw(x)}}return yg({width:h,height:p,x:u,y:f})}function Rv(e,t){const n=Iv(e).scrollLeft;return t?t.left+n:$l(xo(e)).left+n}function A3(e,t){const n=e.getBoundingClientRect(),r=n.left+t.scrollLeft-Rv(e,n),i=n.top+t.scrollTop;return{x:r,y:i}}function qre(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e;const a=i==="fixed",s=xo(r),c=t?Mv(t.floating):!1;if(r===s||c&&a)return n;let u={scrollLeft:0,scrollTop:0},f=oo(1);const h=oo(0),p=js(r);if((p||!a)&&((Uu(r)!=="body"||Nv(s))&&(u=Iv(r)),p)){const v=$l(r);f=hu(r),h.x=v.x+r.clientLeft,h.y=v.y+r.clientTop}const m=s&&!p&&!a?A3(s,u):oo(0);return{width:n.width*f.x,height:n.height*f.y,x:n.x*f.x-u.scrollLeft*f.x+h.x+m.x,y:n.y*f.y-u.scrollTop*f.y+h.y+m.y}}function Gre(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function Vre(e){const t=Iv(e),n=e.ownerDocument.body,r=ao(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=ao(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight);let a=-t.scrollLeft+Rv(e);const s=-t.scrollTop;return ga(n).direction==="rtl"&&(a+=ao(e.clientWidth,n.clientWidth)-r),{width:r,height:i,x:a,y:s}}const Wre=25;function Yre(e,t,n){n===void 0&&(n="viewport");const r=n==="layoutViewport",i=Pr(e),a=xo(e),s=i.visualViewport;let c=a.clientWidth,u=a.clientHeight,f=0,h=0;if(s){const m=!lS()||t==="fixed";r?m||(f=-s.offsetLeft,h=-s.offsetTop):(c=s.width,u=s.height,m&&(f=s.offsetLeft,h=s.offsetTop))}if(Rv(a)<=0){const m=a.ownerDocument,v=m.body,x=getComputedStyle(v),b=m.compatMode==="CSS1Compat"&&parseFloat(x.marginLeft)+parseFloat(x.marginRight)||0,S=Math.abs(a.clientWidth-v.clientWidth-b),_=getComputedStyle(a).scrollbarGutter==="stable both-edges"?S/2:S;_<=Wre&&(c-=_)}return{width:c,height:u,x:f,y:h}}function Xre(e,t){const n=$l(e,!0,t==="fixed"),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=hu(e),s=e.clientWidth*a.x,c=e.clientHeight*a.y,u=i*a.x,f=r*a.y;return{width:s,height:c,x:u,y:f}}function EM(e,t,n){let r;if(t==="viewport"||t==="layoutViewport")r=Yre(e,n,t);else if(t==="document")r=Vre(xo(e));else if(ma(t))r=Xre(t,n);else{const i=_3(e);r={x:t.x-i.x,y:t.y-i.y,width:t.width,height:t.height}}return yg(r)}function Zre(e,t){const n=t.get(e);if(n)return n;let r=$d(e,[],!1).filter(c=>ma(c)&&Uu(c)!=="body"),i=null;const a=ga(e).position==="fixed";let s=a?zl(e):e;for(;ma(s)&&!zd(s);){const c=ga(s),u=sS(s),f=i?i.position:a?"fixed":"";!u&&(f==="fixed"||f==="absolute"&&c.position==="static")?r=r.filter(p=>p!==s):i=c,s=zl(s)}return t.set(e,r),r}function Qre(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e;const s=[...n==="clippingAncestors"?Mv(t)?[]:Zre(t,this._c):[].concat(n),r],c=EM(t,s[0],i);let u=c.top,f=c.right,h=c.bottom,p=c.left;for(let m=1;m<s.length;m++){const v=EM(t,s[m],i);u=ao(v.top,u),f=As(v.right,f),h=As(v.bottom,h),p=ao(v.left,p)}return{width:f-p,height:h-u,x:p,y:u}}function Jre(e){const{width:t,height:n}=S3(e);return{width:t,height:n}}function eie(e,t,n){const r=js(t),i=xo(t),a=n==="fixed",s=$l(e,!0,a,t);let c={scrollLeft:0,scrollTop:0};const u=oo(0);if((r||!a)&&((Uu(t)!=="body"||Nv(i))&&(c=Iv(t)),r)){const m=$l(t,!0,a,t);u.x=m.x+t.clientLeft,u.y=m.y+t.clientTop}!r&&i&&(u.x=Rv(i));const f=i&&!r&&!a?A3(i,c):oo(0),h=s.left+c.scrollLeft-u.x-f.x,p=s.top+c.scrollTop-u.y-f.y;return{x:h,y:p,width:s.width,height:s.height}}function yx(e){return ga(e).position==="static"}function SM(e,t){if(!js(e)||ga(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return xo(e)===n&&(n=n.ownerDocument.body),n}function k3(e,t){const n=Pr(e);if(Mv(e))return n;if(!js(e)){let i=zl(e);for(;i&&!zd(i);){if(ma(i)&&!yx(i))return i;i=zl(i)}return n}let r=SM(e,t);for(;r&&$re(r)&&yx(r);)r=SM(r,t);return r&&zd(r)&&yx(r)&&!sS(r)?n:r||Fre(e)||n}const tie=async function(e){const t=this.getOffsetParent||k3,n=this.getDimensions,r=await n(e.floating);return{reference:eie(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function nie(e){return ga(e).direction==="rtl"}const rie={convertOffsetParentRelativeRectToViewportRelativeRect:qre,getDocumentElement:xo,getClippingRect:Qre,getOffsetParent:k3,getElementRects:tie,getClientRects:Gre,getDimensions:Jre,getScale:hu,isElement:ma,isRTL:nie};function O3(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function iie(e,t,n){let r=null,i;const a=xo(e);function s(){var h;clearTimeout(i),(h=r)==null||h.disconnect(),r=null}function c(h,p){h===void 0&&(h=!1),p===void 0&&(p=1),s();const m=e.getBoundingClientRect(),{left:v,top:x,width:b,height:S}=m;if(h||t(),!b||!S)return;const _=pm(x),O=pm(a.clientWidth-(v+b)),k=pm(a.clientHeight-(x+S)),T=pm(v),N={rootMargin:-_+"px "+-O+"px "+-k+"px "+-T+"px",threshold:ao(0,As(1,p))||1};let P=!0;function D(j){const R=j[0].intersectionRatio;if(!O3(m,e.getBoundingClientRect()))return c();if(R!==p){if(!P)return c();R?c(!1,R):i=setTimeout(()=>{c(!1,1e-7)},1e3)}P=!1}try{r=new IntersectionObserver(D,{...N,root:a.ownerDocument})}catch{r=new IntersectionObserver(D,N)}r.observe(e)}const u=Pr(e),f=()=>c(n);return u.addEventListener("resize",f),c(!0),()=>{u.removeEventListener("resize",f),s()}}function aie(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:s=typeof ResizeObserver=="function",layoutShift:c=typeof IntersectionObserver=="function",animationFrame:u=!1}=r,f=cS(e),h=i||a?[...f?$d(f):[],...t?$d(t):[]]:[];h.forEach(_=>{i&&_.addEventListener("scroll",n),a&&_.addEventListener("resize",n)});const p=f&&c?iie(f,n,a):null;let m=-1,v=null;s&&(v=new ResizeObserver(_=>{let[O]=_;O&&O.target===f&&v&&t&&(v.unobserve(t),cancelAnimationFrame(m),m=requestAnimationFrame(()=>{var k;(k=v)==null||k.observe(t)})),n()}),f&&!u&&v.observe(f),t&&v.observe(t));let x,b=u?$l(e):null;u&&S();function S(){const _=$l(e);b&&!O3(b,_)&&n(),b=_,x=requestAnimationFrame(S)}return n(),()=>{var _;h.forEach(O=>{i&&O.removeEventListener("scroll",n),a&&O.removeEventListener("resize",n)}),p==null||p(),(_=v)==null||_.disconnect(),v=null,u&&cancelAnimationFrame(x)}}const oie=Dre,sie=jre,lie=Ire,cie=zre,uie=Rre,_M=Mre,fie=Lre,die=(e,t,n)=>{const r=new Map,i=n??{},a={...rie,...i.platform,_c:r};return Nre(e,t,{...i,platform:a})};var hie=typeof document<"u",pie=function(){},Fm=hie?y.useLayoutEffect:pie;function bg(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!bg(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){const a=i[r];if(!(a==="_owner"&&e.$$typeof)&&!bg(e[a],t[a]))return!1}return!0}return e!==e&&t!==t}function C3(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function AM(e,t){const n=C3(e);return Math.round(t*n)/n}function bx(e){const t=y.useRef(e);return Fm(()=>{t.current=e}),t}function mie(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:i,elements:{reference:a,floating:s}={},transform:c=!0,whileElementsMounted:u,open:f}=e,[h,p]=y.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[m,v]=y.useState(r);bg(m,r)||v(r);const[x,b]=y.useState(null),[S,_]=y.useState(null),O=y.useCallback(H=>{H!==N.current&&(N.current=H,b(H))},[]),k=y.useCallback(H=>{H!==P.current&&(P.current=H,_(H))},[]),T=a||x,C=s||S,N=y.useRef(null),P=y.useRef(null),D=y.useRef(h),j=u!=null,R=bx(u),F=bx(i),I=bx(f),G=y.useCallback(()=>{if(!N.current||!P.current)return;const H={placement:t,strategy:n,middleware:m};F.current&&(H.platform=F.current),die(N.current,P.current,H).then(K=>{const L={...K,isPositioned:I.current!==!1};V.current&&!bg(D.current,L)&&(D.current=L,Sa.flushSync(()=>{p(L)}))})},[m,t,n,F,I]);Fm(()=>{f===!1&&D.current.isPositioned&&(D.current.isPositioned=!1,p(H=>({...H,isPositioned:!1})))},[f]);const V=y.useRef(!1);Fm(()=>(V.current=!0,()=>{V.current=!1}),[]),Fm(()=>{if(T&&(N.current=T),C&&(P.current=C),T&&C){if(R.current)return R.current(T,C,G);G()}},[T,C,G,R,j]);const q=y.useMemo(()=>({reference:N,floating:P,setReference:O,setFloating:k}),[O,k]),B=y.useMemo(()=>({reference:T,floating:C}),[T,C]),Y=y.useMemo(()=>{const H={position:n,left:0,top:0};if(!B.floating)return H;const K=AM(B.floating,h.x),L=AM(B.floating,h.y);return c?{...H,transform:"translate("+K+"px, "+L+"px)",...C3(B.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:K,top:L}},[n,c,B.floating,h.x,h.y]);return y.useMemo(()=>({...h,update:G,refs:q,elements:B,floatingStyles:Y}),[h,G,q,B,Y])}const gie=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:r,padding:i}=typeof e=="function"?e(n):e;return r&&t(r)?r.current!=null?_M({element:r.current,padding:i}).fn(n):{}:r?_M({element:r,padding:i}).fn(n):{}}}},vie=(e,t)=>{const n=oie(e);return{name:n.name,fn:n.fn,options:[e,t]}},yie=(e,t)=>{const n=sie(e);return{name:n.name,fn:n.fn,options:[e,t]}},bie=(e,t)=>({fn:fie(e).fn,options:[e,t]}),xie=(e,t)=>{const n=lie(e);return{name:n.name,fn:n.fn,options:[e,t]}},wie=(e,t)=>{const n=cie(e);return{name:n.name,fn:n.fn,options:[e,t]}},Eie=(e,t)=>{const n=uie(e);return{name:n.name,fn:n.fn,options:[e,t]}},Sie=(e,t)=>{const n=gie(e);return{name:n.name,fn:n.fn,options:[e,t]}};var _ie=Object.defineProperty,uS=(e,t)=>_ie(e,"name",{value:t,configurable:!0});function Gw(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}uS(Gw,"setRef");function T3(...e){return t=>{let n=!1;const r=e.map(i=>{const a=Gw(i,t);return!n&&typeof a=="function"&&(n=!0),a});if(n)return()=>{for(let i=0;i<r.length;i++){const a=r[i];typeof a=="function"?a():Gw(e[i],null)}}}}uS(T3,"composeRefs");function Pv(...e){return y.useCallback(T3(...e),e)}uS(Pv,"useComposedRefs");var Aie=Object.defineProperty,Ei=(e,t)=>Aie(e,"name",{value:t,configurable:!0});function kie(e,t){const n=y.createContext(t);n.displayName=e+"Context";const r=Ei(a=>{const{children:s,...c}=a,u=y.useMemo(()=>c,Object.values(c));return w.jsx(n.Provider,{value:u,children:s})},"Provider");r.displayName=e+"Provider";function i(a,s={}){const{optional:c=!1}=s,u=y.useContext(n);if(u)return u;if(t!==void 0)return t;if(!c)throw new Error(`\`${a}\` must be used within \`${e}\``)}return Ei(i,"useContext"),[r,i]}Ei(kie,"createContext");function N3(e,t=[]){let n=[];function r(a,s){const c=y.createContext(s);c.displayName=a+"Context";const u=n.length;n=[...n,s];const f=Ei(p=>{var _;const{scope:m,children:v,...x}=p,b=((_=m==null?void 0:m[e])==null?void 0:_[u])||c,S=y.useMemo(()=>x,Object.values(x));return w.jsx(b.Provider,{value:S,children:v})},"Provider");f.displayName=a+"Provider";function h(p,m,v={}){var _;const{optional:x=!1}=v,b=((_=m==null?void 0:m[e])==null?void 0:_[u])||c,S=y.useContext(b);if(S)return S;if(s!==void 0)return s;if(!x)throw new Error(`\`${p}\` must be used within \`${a}\``)}return Ei(h,"useContext"),[f,h]}Ei(r,"createContext");const i=Ei(()=>{const a=n.map(s=>y.createContext(s));return Ei(function(c){const u=(c==null?void 0:c[e])||a;return y.useMemo(()=>({[`__scope${e}`]:{...c,[e]:u}}),[c,u])},"useScope")},"createScope");return i.scopeName=e,[r,M3(i,...t)]}Ei(N3,"createContextScope");function M3(...e){const t=e[0];if(e.length===1)return t;const n=Ei(()=>{const r=e.map(i=>({useScope:i(),scopeName:i.scopeName}));return Ei(function(a){const s=r.reduce((c,{useScope:u,scopeName:f})=>{const p=u(a)[`__scope${f}`];return{...c,...p}},{});return y.useMemo(()=>({[`__scope${t.scopeName}`]:s}),[s])},"useComposedScopes")},"createScope");return n.scopeName=t.scopeName,n}Ei(M3,"composeContextScopes");var Oie=Object.defineProperty,Fi=(e,t)=>Oie(e,"name",{value:t,configurable:!0});function I3(e){const t=y.forwardRef((n,r)=>{let{children:i,...a}=n,s=null,c=!1;const u=[];Vw(i)&&typeof mm=="function"&&(i=mm(i._payload)),y.Children.forEach(i,m=>{var v;if(j3(m)){c=!0;const x=m;let b="child"in x.props?x.props.child:x.props.children;Vw(b)&&typeof mm=="function"&&(b=mm(b._payload)),s=Tie(x,b),u.push((v=s==null?void 0:s.props)==null?void 0:v.children)}else u.push(m)}),s?s=y.cloneElement(s,void 0,u):!c&&y.Children.count(i)===1&&y.isValidElement(i)&&(s=i);const f=s?D3(s):void 0,h=Pv(r,f);if(!s){if(i||i===0)throw new Error(c?Iie(e):Mie(e));return i}const p=P3(a,s.props??{});return s.type!==y.Fragment&&(p.ref=r?h:f),y.cloneElement(s,p)});return t.displayName=`${e}.Slot`,t}Fi(I3,"createSlot");var R3=Symbol.for("radix.slottable");function Cie(e){const t=Fi(n=>"child"in n?n.children(n.child):n.children,"Slottable");return t.displayName=`${e}.Slottable`,t.__radixId=R3,t}Fi(Cie,"createSlottable");var Tie=Fi((e,t)=>{if("child"in e.props){const n=e.props.child;return y.isValidElement(n)?y.cloneElement(n,void 0,e.props.children(n.props.children)):null}return y.isValidElement(t)?t:null},"getSlottableElementFromSlottable");function P3(e,t){const n={...t};for(const r in t){const i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...c)=>{const u=a(...c);return i(...c),u}:i&&(n[r]=i):r==="style"?n[r]={...i,...a}:r==="className"&&(n[r]=[i,a].filter(Boolean).join(" "))}return{...e,...n}}Fi(P3,"mergeProps");function D3(e){var r,i;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(i=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:i.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}Fi(D3,"getElementRef");function j3(e){return y.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===R3}Fi(j3,"isSlottable");var Nie=Symbol.for("react.lazy");function Vw(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===Nie&&"_payload"in e&&L3(e._payload)}Fi(Vw,"isLazyComponent");function L3(e){return typeof e=="object"&&e!==null&&"then"in e}Fi(L3,"isPromiseLike");var Mie=Fi(e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,"createSlotError"),Iie=Fi(e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,"createSlottableError"),mm=Ea[" use ".trim().toString()],Rie=Object.defineProperty,Pie=(e,t)=>Rie(e,"name",{value:t,configurable:!0}),Die=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],z3=Die.reduce((e,t)=>{const n=I3(`Primitive.${t}`),r=y.forwardRef((i,a)=>{const{asChild:s,...c}=i,u=s?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),w.jsx(u,{...c,ref:a})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function jie(e,t){e&&Sa.flushSync(()=>e.dispatchEvent(t))}Pie(jie,"dispatchDiscreteCustomEvent");var Lie=Object.defineProperty,zie=(e,t)=>Lie(e,"name",{value:t,configurable:!0});function $3(e){const t=y.useRef(e);return y.useEffect(()=>{t.current=e}),y.useMemo(()=>((...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)}),[])}zie($3,"useCallbackRef");var xx=globalThis!=null&&globalThis.document?y.useLayoutEffect:()=>{},$ie=globalThis!=null&&globalThis.document?y.useLayoutEffect:()=>{},Bie=Object.defineProperty,Uie=(e,t)=>Bie(e,"name",{value:t,configurable:!0});function B3(e){const[t,n]=y.useState(void 0);return $ie(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(i=>{if(!Array.isArray(i)||!i.length)return;const a=i[0];let s,c;if("borderBoxSize"in a){const u=a.borderBoxSize,f=Array.isArray(u)?u[0]:u;s=f.inlineSize,c=f.blockSize}else s=e.offsetWidth,c=e.offsetHeight;n({width:s,height:c})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else n(void 0)},[e]),t}Uie(B3,"useSize");var Fie=Object.defineProperty,xs=(e,t)=>Fie(e,"name",{value:t,configurable:!0}),U3="Popper",[F3,H3]=N3(U3),[Hie,K3]=F3(U3),Kie=xs(e=>{const{__scopePopper:t,children:n}=e,[r,i]=y.useState(null),[a,s]=y.useState(void 0);return w.jsx(Hie,{scope:t,anchor:r,onAnchorChange:i,placementState:a,setPlacementState:s,children:n})},"Popper"),qie="PopperAnchor",Gie=y.forwardRef(xs(function(t,n){const{__scopePopper:r,virtualRef:i,...a}=t,s=K3(qie,r),c=y.useRef(null),u=s.onAnchorChange,f=y.useCallback(b=>{c.current=b,b&&u(b)},[u]),h=Pv(n,f),p=y.useRef(null);y.useEffect(()=>{if(!i)return;const b=p.current;p.current=i.current,b!==p.current&&u(p.current)});const m=s.placementState&&Dv(s.placementState),v=m==null?void 0:m[0],x=m==null?void 0:m[1];return i?null:w.jsx(z3.div,{"data-radix-popper-side":v,"data-radix-popper-align":x,...a,ref:h})},"PopperAnchor")),q3="PopperContent",[Vie,jOe]=F3(q3),Wie=y.forwardRef(xs(function(t,n){var he,ke,we,fe,pt,qe,Oe;const{__scopePopper:r,side:i="bottom",sideOffset:a=0,align:s="center",alignOffset:c=0,arrowPadding:u=0,avoidCollisions:f=!0,collisionBoundary:h=[],collisionPadding:p=0,sticky:m="partial",hideWhenDetached:v=!1,updatePositionStrategy:x="optimized",onPlaced:b,...S}=t,_=K3(q3,r),[O,k]=y.useState(null),T=Pv(n,k),[C,N]=y.useState(null),P=B3(C),D=(P==null?void 0:P.width)??0,j=(P==null?void 0:P.height)??0,R=i+(s!=="center"?"-"+s:""),F=typeof p=="number"?p:{top:0,right:0,bottom:0,left:0,...p},I=Array.isArray(h)?h:[h],G=I.length>0,V={padding:F,boundary:I.filter(G3),altBoundary:G},{refs:q,floatingStyles:B,placement:Y,isPositioned:H,middlewareData:K}=mie({strategy:"fixed",placement:R,whileElementsMounted:xs((...De)=>aie(...De,{animationFrame:x==="always"}),"whileElementsMounted"),elements:{reference:_.anchor},middleware:[vie({mainAxis:a+j,alignmentAxis:c}),f&&yie({mainAxis:!0,crossAxis:!1,limiter:m==="partial"?bie():void 0,...V}),f&&xie({...V}),wie({...V,apply:xs(({elements:De,rects:Pt,availableWidth:mn,availableHeight:br})=>{const{width:Hn,height:zr}=Pt.reference,ii=De.floating.style;ii.setProperty("--radix-popper-available-width",`${mn}px`),ii.setProperty("--radix-popper-available-height",`${br}px`),ii.setProperty("--radix-popper-anchor-width",`${Hn}px`),ii.setProperty("--radix-popper-anchor-height",`${zr}px`)},"apply")}),C&&Sie({element:C,padding:u}),Yie({arrowWidth:D,arrowHeight:j}),v&&Eie({strategy:"referenceHidden",...V,boundary:G?V.boundary:void 0})]}),L=_.setPlacementState;xx(()=>(L(Y),()=>{L(void 0)}),[Y,L]);const[U,Q]=Dv(Y),z=$3(b);xx(()=>{H&&(z==null||z())},[H,z]);const ce=(he=K.arrow)==null?void 0:he.x,me=(ke=K.arrow)==null?void 0:ke.y,de=((we=K.arrow)==null?void 0:we.centerOffset)!==0,[Ee,Ge]=y.useState();return xx(()=>{O&&Ge(window.getComputedStyle(O).zIndex)},[O]),w.jsx("div",{ref:q.setFloating,"data-radix-popper-content-wrapper":"",style:{...B,transform:H?B.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Ee,"--radix-popper-transform-origin":[(fe=K.transformOrigin)==null?void 0:fe.x,(pt=K.transformOrigin)==null?void 0:pt.y].join(" "),...((qe=K.hide)==null?void 0:qe.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:t.dir,children:w.jsx(Vie,{scope:r,placedSide:U,placedAlign:Q,onArrowChange:N,arrowX:ce,arrowY:me,shouldHideArrow:de,children:w.jsx(z3.div,{"data-side":U,"data-align":Q,...S,ref:T,style:{...S.style,animation:H?(Oe=S.style)==null?void 0:Oe.animation:"none"}})})})},"PopperContent"));function G3(e){return e!==null}xs(G3,"isNotNull");var Yie=xs(e=>({name:"transformOrigin",options:e,fn(t){var S,_,O;const{placement:n,rects:r,middlewareData:i}=t,s=((S=i.arrow)==null?void 0:S.centerOffset)!==0,c=s?0:e.arrowWidth,u=s?0:e.arrowHeight,[f,h]=Dv(n),p={start:"0%",center:"50%",end:"100%"}[h],m=(((_=i.arrow)==null?void 0:_.x)??0)+c/2,v=(((O=i.arrow)==null?void 0:O.y)??0)+u/2;let x="",b="";return f==="bottom"?(x=s?p:`${m}px`,b=`${-u}px`):f==="top"?(x=s?p:`${m}px`,b=`${r.floating.height+u}px`):f==="right"?(x=`${-u}px`,b=s?p:`${v}px`):f==="left"&&(x=`${r.floating.width+u}px`,b=s?p:`${v}px`),{data:{x,y:b}}}}),"transformOrigin");function Dv(e){const[t,n="center"]=e.split("-");return[t,n]}xs(Dv,"getSideAndAlignFromPlacement");var Xie=Kie,Zie=Gie,Qie=Wie,Jie=globalThis!=null&&globalThis.document?y.useLayoutEffect:()=>{},eae=Object.defineProperty,tae=(e,t)=>eae(e,"name",{value:t,configurable:!0}),nae=y.forwardRef(tae(function(t,n){var u;const{container:r,...i}=t,[a,s]=y.useState(!1);Jie(()=>s(!0),[]);const c=r||a&&((u=globalThis==null?void 0:globalThis.document)==null?void 0:u.body);return c?Sa.createPortal(w.jsx(Ov.div,{...i,ref:n}),c):null},"Portal")),kM=globalThis!=null&&globalThis.document?y.useLayoutEffect:()=>{},rae=Object.defineProperty,po=(e,t)=>rae(e,"name",{value:t,configurable:!0});function V3(e,t){return y.useReducer((n,r)=>t[n][r]??n,e)}po(V3,"useStateMachine");var W3=po(e=>{const{present:t,children:n}=e,r=Y3(t),i=typeof n=="function"?n({present:r.isPresent}):y.Children.only(n),a=X3(r.ref,Z3(i));return typeof n=="function"||r.isPresent?y.cloneElement(i,{ref:a}):null},"Presence");function Y3(e){const[t,n]=y.useState(),r=y.useRef(null),i=y.useRef(e),a=y.useRef("none"),s=y.useRef(void 0),c=e?"mounted":"unmounted",[u,f]=V3(c,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return y.useEffect(()=>{u==="mounted"?(a.current=s.current??nu(r.current),s.current=void 0):a.current="none"},[u]),kM(()=>{const h=r.current,p=i.current;if(p!==e){const v=a.current,x=nu(h);e?(s.current=x,f("MOUNT")):x==="none"||(h==null?void 0:h.display)==="none"?f("UNMOUNT"):f(p&&v!==x?"ANIMATION_OUT":"UNMOUNT"),i.current=e}},[e,f]),kM(()=>{if(t){let h;const p=t.ownerDocument.defaultView??window,m=po(x=>{const S=nu(r.current).includes(CSS.escape(x.animationName));if(x.target===t&&S&&(f("ANIMATION_END"),!i.current)){const _=t.style.animationFillMode;t.style.animationFillMode="forwards",h=p.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=_)})}},"handleAnimationEnd"),v=po(x=>{x.target===t&&(a.current=nu(r.current))},"handleAnimationStart");return t.addEventListener("animationstart",v),t.addEventListener("animationcancel",m),t.addEventListener("animationend",m),()=>{p.clearTimeout(h),t.removeEventListener("animationstart",v),t.removeEventListener("animationcancel",m),t.removeEventListener("animationend",m)}}else f("ANIMATION_END")},[t,f]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:y.useCallback(h=>{if(h){const p=getComputedStyle(h);r.current=p,s.current=nu(p)}else r.current=null;n(h)},[])}}po(Y3,"usePresence");function Ww(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}po(Ww,"setRef");function X3(...e){const t=y.useRef(e);return t.current=e,y.useCallback(n=>{const r=t.current;let i=!1;const a=r.map(s=>{const c=Ww(s,n);return!i&&typeof c=="function"&&(i=!0),c});if(i)return()=>{for(let s=0;s<a.length;s++){const c=a[s];typeof c=="function"?c():Ww(r[s],null)}}},[])}po(X3,"useStableComposedRefs");function nu(e){return(e==null?void 0:e.animationName)||"none"}po(nu,"getAnimationName");function Z3(e){var r,i;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(i=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:i.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}po(Z3,"getElementRef");var Q3=globalThis!=null&&globalThis.document?y.useLayoutEffect:()=>{},iae=Object.defineProperty,aae=(e,t)=>iae(e,"name",{value:t,configurable:!0}),OM=Ea[" useEffectEvent ".trim().toString()],CM=Ea[" useInsertionEffect ".trim().toString()];function J3(e){if(typeof OM=="function")return OM(e);const t=y.useRef(()=>{throw new Error("Cannot call an event handler while rendering.")});return typeof CM=="function"?CM(()=>{t.current=e}):Q3(()=>{t.current=e}),y.useMemo(()=>((...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)}),[])}aae(J3,"useEffectEvent");var oae=Object.defineProperty,fh=(e,t)=>oae(e,"name",{value:t,configurable:!0}),sae=Ea[" useInsertionEffect ".trim().toString()]||Q3;function e$({prop:e,defaultProp:t,onChange:n=fh(()=>{},"onChange"),caller:r}){const[i,a,s]=t$({defaultProp:t,onChange:n}),c=e!==void 0,u=c?e:i,f=y.useCallback(h=>{var p;if(c){const m=n$(h)?h(e):h;m!==e&&((p=s.current)==null||p.call(s,m))}else a(h)},[c,e,a,s]);return[u,f]}fh(e$,"useControllableState");function t$({defaultProp:e,onChange:t}){const[n,r]=y.useState(e),i=y.useRef(n),a=y.useRef(t);return sae(()=>{a.current=t},[t]),y.useEffect(()=>{var s;i.current!==n&&((s=a.current)==null||s.call(a,n),i.current=n)},[n,i]),[n,r,a]}fh(t$,"useUncontrolledState");function n$(e){return typeof e=="function"}fh(n$,"isFunction");var TM=Symbol("RADIX:SYNC_STATE");function lae(e,t,n,r){const{prop:i,defaultProp:a,onChange:s,caller:c}=t,u=i!==void 0,f=J3(s),h=[{...n,state:a}];r&&h.push(r);const[p,m]=y.useReducer((S,_)=>{if(_.type===TM)return{...S,state:_.state};const O=e(S,_);return u&&!Object.is(O.state,S.state)&&f(O.state),O},...h),v=p.state,x=y.useRef(v);y.useEffect(()=>{x.current!==v&&(x.current=v,u||f(v))},[v,x,u]);const b=y.useMemo(()=>i!==void 0?{...p,state:i}:p,[p,i]);return y.useEffect(()=>{u&&!Object.is(i,p.state)&&m({type:TM,state:i})},[i,p.state,u]),[b,m]}fh(lae,"useControllableStateReducer");var cae=Object.defineProperty,Ls=(e,t)=>cae(e,"name",{value:t,configurable:!0}),fS="Popover",[r$,LOe]=e3(fS,[H3]),dS=H3(),[uae,Fu]=r$(fS),fae=Ls(e=>{const{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:s=!1}=e,c=dS(t),u=y.useRef(null),[f,h]=y.useState(!1),[p,m]=e$({prop:r,defaultProp:i??!1,onChange:a,caller:fS});return w.jsx(Xie,{...c,children:w.jsx(uae,{scope:t,contentId:v3(),triggerRef:u,open:p,onOpenChange:m,onOpenToggle:y.useCallback(()=>m(v=>!v),[m]),hasCustomAnchor:f,onCustomAnchorAdd:y.useCallback(()=>h(!0),[]),onCustomAnchorRemove:y.useCallback(()=>h(!1),[]),modal:s,children:n})})},"Popover"),dae="PopoverTrigger",hae=y.forwardRef(Ls(function(t,n){const{__scopePopover:r,...i}=t,a=Fu(dae,r),s=dS(r),c=$u(n,a.triggerRef),u=w.jsx(Ov.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":hS(a.open),...i,ref:c,onClick:bs(t.onClick,a.onOpenToggle)});return a.hasCustomAnchor?u:w.jsx(Zie,{asChild:!0,...s,children:u})},"PopoverTrigger")),i$="PopoverPortal",[pae,mae]=r$(i$,{forceMount:void 0}),gae=Ls(e=>{const{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=Fu(i$,t);return w.jsx(pae,{scope:t,forceMount:n,children:w.jsx(W3,{present:n||a.open,children:w.jsx(nae,{asChild:!0,container:i,children:r})})})},"PopoverPortal"),Bd="PopoverContent",vae=y.forwardRef(Ls(function(t,n){const r=mae(Bd,t.__scopePopover),{forceMount:i=r.forceMount,...a}=t,s=Fu(Bd,t.__scopePopover);return w.jsx(W3,{present:i||s.open,children:s.modal?w.jsx(bae,{...a,ref:n}):w.jsx(xae,{...a,ref:n})})},"PopoverContent")),yae=JE("PopoverContent.RemoveScroll"),bae=y.forwardRef(Ls(function(t,n){const r=Fu(Bd,t.__scopePopover),i=y.useRef(null),a=$u(n,i),s=y.useRef(!1);return y.useEffect(()=>{const c=i.current;if(c)return Dz(c)},[]),w.jsx(GE,{as:yae,allowPinchZoom:!0,children:w.jsx(a$,{...t,ref:a,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:bs(t.onCloseAutoFocus,c=>{var u;c.preventDefault(),s.current||(u=r.triggerRef.current)==null||u.focus()}),onPointerDownOutside:bs(t.onPointerDownOutside,c=>{const u=c.detail.originalEvent,f=u.button===0&&u.ctrlKey===!0,h=u.button===2||f;s.current=h},{checkForDefaultPrevented:!1}),onFocusOutside:bs(t.onFocusOutside,c=>c.preventDefault(),{checkForDefaultPrevented:!1})})})},"PopoverContentModal")),xae=y.forwardRef(Ls(function(t,n){const r=Fu(Bd,t.__scopePopover),i=y.useRef(!1),a=y.useRef(!1);return w.jsx(a$,{...t,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{var c,u;(c=t.onCloseAutoFocus)==null||c.call(t,s),s.defaultPrevented||(i.current||(u=r.triggerRef.current)==null||u.focus(),s.preventDefault()),i.current=!1,a.current=!1},onInteractOutside:s=>{var f,h;(f=t.onInteractOutside)==null||f.call(t,s),s.defaultPrevented||(i.current=!0,s.detail.originalEvent.type==="pointerdown"&&(a.current=!0));const c=s.target;((h=r.triggerRef.current)==null?void 0:h.contains(c))&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&a.current&&s.preventDefault()}})},"PopoverContentNonModal")),a$=y.forwardRef(Ls(function(t,n){const{__scopePopover:r,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:s,disableOutsidePointerEvents:c,onEscapeKeyDown:u,onPointerDownOutside:f,onFocusOutside:h,onInteractOutside:p,...m}=t,v=Fu(Bd,r),x=dS(r);return nS(),w.jsx(hre,{asChild:!0,loop:!0,trapped:i,onMountAutoFocus:a,onUnmountAutoFocus:s,children:w.jsx(are,{asChild:!0,disableOutsidePointerEvents:c,onInteractOutside:p,onEscapeKeyDown:u,onPointerDownOutside:f,onFocusOutside:h,onDismiss:()=>v.onOpenChange(!1),deferPointerDownOutside:!0,children:w.jsx(Qie,{"data-state":hS(v.open),role:"dialog",id:v.contentId,...x,...m,ref:n,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})},"PopoverContentImpl"));function hS(e){return e?"open":"closed"}Ls(hS,"getState");var wae=fae,Eae=hae,Sae=gae,o$=vae;const _ae=wae,Aae=Eae,s$=y.forwardRef(({className:e,align:t="start",side:n="top",sideOffset:r=8,collisionPadding:i=8,...a},s)=>w.jsx(Sae,{children:w.jsx(o$,{ref:s,align:t,side:n,sideOffset:r,collisionPadding:i,className:Ue("z-50 w-64 max-w-[calc(100vw-1rem)] rounded-md border bg-card p-3 text-card-foreground shadow-md outline-none","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...a})}));s$.displayName=o$.displayName;const l$=92,c$=96;function wx(e){if(!Number.isFinite(e)||e<0)return"?";const t=["B","KB","MB","GB","TB","PB"];let n=0;for(;e>=1024&&n<t.length-1;)e/=1024,n++;return`${e<10&&n>0?e.toFixed(1):Math.round(e)} ${t[n]}`}const NM=3e5;function kae({socket:e,getToken:t}){const[n,r]=y.useState([]);if(y.useEffect(()=>{t().then(a=>a?fetch("/api/stats",{headers:{Authorization:`Bearer ${a}`}}):null).then(a=>a==null?void 0:a.json()).then(a=>(a==null?void 0:a.samples)&&r(a.samples)).catch(a=>console.warn("[MachineStats] seed failed",a))},[t]),y.useEffect(()=>{if(!e)return;const a=e.on(s=>{s.type==="stats"&&r(c=>[...c,s.sample].slice(-120))});return()=>{a()}},[e]),!n.length)return null;const i=n[n.length-1];return w.jsxs("div",{className:"w-full flex flex-wrap items-center justify-center gap-x-2 gap-y-0.5 text-[10px] text-muted-foreground/60",children:[w.jsx(Hm,{label:"cpu",value:i.cpu,series:n.map(a=>a.cpu)}),w.jsx(Hm,{label:"mem",value:i.mem,series:n.map(a=>a.mem)}),i.disk>=0&&w.jsx(Hm,{label:"disk",value:i.disk,severity:Pae(i.disk),title:jae(i)}),w.jsx(Oae,{getToken:t})]})}function Oae({getToken:e}){const[t,n]=y.useState(null);return y.useEffect(()=>{let r=!0,i=0;const a=async()=>{var f;try{const h=await e();if(!h)return;i=Date.now();const p=await fetch("/api/claude-usage",{headers:{Authorization:`Bearer ${h}`}});if(!r)return;if(p.status===204){n(null);return}if(p.status!==200)return;const m=await p.json();if(!r||!((f=m==null?void 0:m.limits)!=null&&f.length))return;n(m)}catch(h){console.warn("[MachineStats] claude usage poll failed",h)}},s=()=>{document.visibilityState==="visible"&&a()},c=()=>{document.visibilityState==="visible"&&Date.now()-i>=NM&&a()};s();const u=setInterval(s,NM);return document.addEventListener("visibilitychange",c),()=>{r=!1,clearInterval(u),document.removeEventListener("visibilitychange",c)}},[e]),w.jsx(Cae,{usage:t})}function Cae({usage:e}){const t=e&&u$(e.limits),[n,r]=y.useState(Yw),i=y.useRef(null),a=()=>{i.current&&(clearTimeout(i.current),i.current=null)},s=y.useCallback((c,u=0)=>{if(a(),!u){r(f=>IM(f,c));return}i.current=setTimeout(()=>{i.current=null,r(f=>IM(f,c))},u)},[]);return y.useEffect(()=>a,[]),!e||!t?null:w.jsxs(_ae,{open:n.open,onOpenChange:c=>s(c?{type:"activate"}:{type:"dismiss"}),children:[w.jsx(Aae,{asChild:!0,children:w.jsx("button",{type:"button","aria-label":"claude usage breakdown",className:"cursor-default rounded-sm outline-none focus-visible:ring-1 focus-visible:ring-ring",onPointerEnter:c=>s({type:"pointerenter",pointerType:c.pointerType},Tae),onPointerLeave:c=>s({type:"pointerleave",pointerType:c.pointerType},MM),children:w.jsx(Hm,{label:"usage",value:t.percent,severity:t.severity})})}),w.jsx(s$,{onOpenAutoFocus:c=>c.preventDefault(),onPointerEnter:()=>a(),onPointerLeave:c=>s({type:"pointerleave",pointerType:c.pointerType},MM),children:w.jsx(Nae,{usage:e})})]})}const Tae=120,MM=80,Yw={open:!1,byHover:!1};function IM(e,t){switch(t.type){case"pointerenter":return RM(t.pointerType)?{open:!0,byHover:!0}:e;case"pointerleave":return RM(t.pointerType)&&e.byHover?Yw:e;case"activate":return{open:!0,byHover:!1};case"dismiss":return Yw}}const RM=e=>e==="mouse"||e==="";function Nae({usage:e}){const t=u$(e.limits);return w.jsxs("div",{className:"text-[11px] leading-tight",children:[w.jsxs("div",{className:"flex items-baseline justify-between gap-2 pb-2 text-muted-foreground",children:[w.jsx("span",{className:"uppercase tracking-wide",children:"claude usage"}),e.subscriptionType&&w.jsxs("span",{className:"tabular-nums",children:[e.subscriptionType," plan"]})]}),w.jsxs("div",{className:"-mt-1 flex items-baseline justify-between gap-2 pb-2 text-[10px] text-muted-foreground",children:[e.account&&w.jsx("span",{className:"truncate",title:e.account,children:e.account}),w.jsx("span",{className:Ue("shrink-0",e.stale&&"text-amber-500"),children:Iae(e)})]}),e.stale&&e.error&&w.jsxs("div",{"data-refresh-error":!0,className:"-mt-1 pb-2 text-[10px] text-amber-500 break-words",children:[e.error,Um(e.retryAt??null)&&` · retrying in ${Um(e.retryAt??null)}`]}),w.jsx("div",{className:"flex flex-col gap-3",children:e.limits.map((n,r)=>{const i=Um(n.resetsAt),a=n===t;return w.jsxs("div",{"data-headline":a||void 0,className:Ue("flex flex-col gap-1",!a&&"opacity-60"),children:[w.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[w.jsxs("span",{className:Ue("truncate",a&&"font-medium"),children:[a&&w.jsx("span",{className:"mr-1 text-muted-foreground","aria-hidden":!0,children:"▸"}),Mae(n)]}),w.jsxs("span",{className:Ue("tabular-nums shrink-0",Xw(n.percent,n.severity)),children:[n.percent,"%"]})]}),w.jsx(f$,{value:n.percent,className:Ue("w-full",Xw(n.percent,n.severity))}),w.jsx("span",{className:"text-[10px] text-muted-foreground",children:i?`resets in ${i}`:"no reset reported"})]},`${n.kind}-${r}`)})}),w.jsx("div",{className:"mt-3 border-t pt-2 text-[10px] text-muted-foreground",children:"▸ is the window the strip is showing"})]})}function Mae(e){return e.scopeLabel?`${e.scopeLabel} window`:e.kind==="session"?"current session":e.kind==="weekly_all"?"all models":e.kind.replace(/_/g," ")}function u$(e){return e.reduce((t,n)=>!t||n.percent>t.percent?n:t,null)}function Iae(e){const t=Rae(e.fetchedAt);return t?e.stale?`${t} old — refresh failed`:`updated ${t} ago`:e.stale?"last reading — refresh failed":"updated just now"}function Rae(e){if(!e)return null;const t=Date.now()-new Date(e).getTime();if(!Number.isFinite(t))return null;const n=Math.round(Math.max(0,t)/6e4);if(n<1)return null;if(n<60)return`${n}m`;const r=Math.floor(n/60),i=n%60;return r<24?i?`${r}h ${i}m`:`${r}h`:`${Math.floor(r/24)}d`}function Pae(e){return e>=c$?"critical":e>=l$?"warning":"ok"}const Dae={critical:"text-red-500",exceeded:"text-red-500",warning:"text-amber-500",warn:"text-amber-500",ok:"text-emerald-500"};function Xw(e,t){const n=t?Dae[t]:void 0;return n||(e>=90?"text-red-500":e>=75?"text-amber-500":"text-emerald-500")}function jae(e){const t=`warn at ${l$}%, critical at ${c$}%`;if(e.diskUsedBytes==null||e.diskTotalBytes==null)return`disk ${e.disk}% used — ${t}`;const n=Math.max(0,e.diskTotalBytes-e.diskUsedBytes);return`disk ${e.disk}% used — ${wx(e.diskUsedBytes)} of ${wx(e.diskTotalBytes)}, ${wx(n)} free — ${t}`}function Hm({label:e,value:t,series:n,title:r,severity:i}){const a=Xw(t,i),s=r??(n?`${e} ${t}% — last ${n.length} samples`:void 0);return w.jsxs("span",{className:"flex items-center gap-1",title:s,children:[w.jsx("span",{className:"uppercase tracking-wide",children:e}),n?w.jsx(Lae,{series:n,className:a}):w.jsx(f$,{value:t,className:a}),w.jsxs("span",{className:Ue("tabular-nums",a),children:[t,"%"]})]})}function f$({value:e,className:t}){const i=Math.max(0,Math.min(100,e))/100*40;return w.jsxs("svg",{width:40,height:12,viewBox:"0 0 40 12",className:Ue("overflow-visible",t),preserveAspectRatio:"none",children:[w.jsx("rect",{x:0,y:12/2-2,width:40,height:4,rx:2,fill:"currentColor",opacity:.2}),i>0&&w.jsx("rect",{x:0,y:12/2-2,width:i,height:4,rx:2,fill:"currentColor"})]})}function Lae({series:e,className:t}){const i=e.length;if(i<2)return null;const a=e.map((s,c)=>{const u=i>1?c/(i-1)*40:0,f=12-Math.max(0,Math.min(100,s))/100*12;return`${u.toFixed(1)},${f.toFixed(1)}`}).join(" ");return w.jsx("svg",{width:40,height:12,viewBox:"0 0 40 12",className:Ue("overflow-visible",t),preserveAspectRatio:"none",children:w.jsx("polyline",{points:a,fill:"none",stroke:"currentColor",strokeWidth:1,strokeLinejoin:"round",strokeLinecap:"round"})})}const ad=50;function zae({getToken:e,filter:t,refreshKey:n,hydrateIds:r}){const[i,a]=y.useState([]),[s,c]=y.useState(null),[u,f]=y.useState(!1),[h,p]=y.useState({}),m=y.useRef(new Set),v=y.useRef(null),x=y.useRef(null),b=y.useRef(t);b.current=t;const S=y.useRef(ad),_=y.useRef(t);_.current!==t&&(_.current=t,S.current=ad);const O=y.useCallback(async(P,D)=>{const j=await e();if(!j||D!=null&&D.aborted)return null;const R=await fetch(`/api/sessions?${new URLSearchParams(P)}`,{signal:D,headers:{Authorization:`Bearer ${j}`}});if(!R.ok)return null;const F=await R.json();return Array.isArray(F==null?void 0:F.sessions)?F:null},[e]),k=y.useCallback(async(P,D,j)=>{const R=[];let F,I=null;for(;R.length<P;){const G={filter:D,limit:String(Math.min(ad,P-R.length))};F&&(G.before=F);const V=await O(G,j);if(!V)return null;if(R.push(...V.sessions),I=V.nextCursor,!I||!V.sessions.length)break;F=I}return{sessions:R,nextCursor:I}},[O]);y.useEffect(()=>{var D,j;(D=v.current)==null||D.abort(),(j=x.current)==null||j.abort();const P=new AbortController;return v.current=P,f(!0),m.current.clear(),p({}),k(S.current,t,P.signal).then(R=>{!R||P.signal.aborted||(a(R.sessions),c(R.nextCursor))}).catch(()=>{}).finally(()=>{P.signal.aborted||f(!1)}),()=>P.abort()},[k,t,n]);const T=y.useCallback(()=>{var j;if(!s||u)return;(j=x.current)==null||j.abort();const P=new AbortController;x.current=P;const D=b.current;f(!0),O({filter:D,limit:String(ad),before:s},P.signal).then(R=>{!R||P.signal.aborted||D!==b.current||(a(F=>{const I=new Set(F.map(V=>V.sessionId)),G=[...F,...R.sessions.filter(V=>!I.has(V.sessionId))];return S.current=Math.max(ad,G.length),G}),c(R.nextCursor))}).catch(()=>{}).finally(()=>{P.signal.aborted||f(!1)})},[s,u,O]),C=y.useMemo(()=>{const P=new Map;for(const D of Object.values(h))P.set(D.sessionId,D);for(const D of i)P.set(D.sessionId,D);return P},[i,h]),N=r.join(",");return y.useEffect(()=>{const P=r.filter(j=>!!j&&!C.has(j)&&!m.current.has(j)).slice(0,200);if(!P.length)return;for(const j of P)m.current.add(j);let D=!1;return O({ids:P.join(",")}).then(j=>{!j||D||p(R=>{const F={...R};for(const I of j.sessions)F[I.sessionId]=I;return F})}).catch(()=>{}),()=>{D=!0}},[N,C,O]),{sessions:i,cursor:s,loading:u,byId:C,loadMore:T}}const od="0.1.107";function $ae(e){const t=Date.now()-e,n=Math.floor(t/6e4);if(n<1)return"just now";if(n<60)return`${n}m ago`;const r=Math.floor(n/60);if(r<24)return`${r}h ago`;const i=Math.floor(r/24);return i<7?`${i}d ago`:new Date(e).toLocaleDateString(void 0,{month:"short",day:"numeric"})}const sd="w-4 h-4 mt-0.5 shrink-0";function Bae(e){const t=e.slackContext;return(t==null?void 0:t.type)==="dm"?w.jsx(oG,{className:`${sd} text-purple-400`}):(t==null?void 0:t.type)==="mention"?w.jsx(Wq,{className:`${sd} text-blue-400`}):(t==null?void 0:t.type)==="channel"?w.jsx(tG,{className:`${sd} text-green-400`}):e.sessionId.startsWith("slack-")?w.jsx(xw,{className:`${sd} text-yellow-400`}):w.jsx(xw,{className:`${sd} text-muted-foreground`})}function Uae(e){const t=e.slackContext;return(t==null?void 0:t.type)==="dm"?`DM${t.userName?` · ${t.userName}`:""}`:(t==null?void 0:t.type)==="mention"?`@mention${t.channelName?` · #${t.channelName}`:""}`:(t==null?void 0:t.type)==="channel"?`#${t.channelName||"channel"}`:e.sessionId.startsWith("slack-")?"Slack":null}function Fae(e,t,n){return Object.keys(e).map(r=>t.get(r)).filter(r=>!!r&&(n==="all"||r.mine!==!1))}const PM="chats-filter",DM="chats-unread-filter";function Hae({getToken:e,activeSessionId:t,onSelect:n,onNew:r,refreshKey:i,workspaceRefreshKey:a,onRefreshWorkspace:s,unreads:c={},busySessions:u=new Set,socket:f}){var H;const h=_a(),[p,m]=y.useState(()=>localStorage.getItem(PM)||"mine"),[v,x]=y.useState(()=>localStorage.getItem(DM)==="true"),[b,S]=y.useState(""),_=y.useRef(null);function O(K){m(K),localStorage.setItem(PM,K)}function k(){const K=!v;x(K),localStorage.setItem(DM,String(K))}const T=y.useMemo(()=>[t,...Object.keys(c)].filter(K=>!!K),[t,c]),{sessions:C,cursor:N,loading:P,byId:D,loadMore:j}=zae({getToken:e,filter:p,refreshKey:i,hydrateIds:T}),R=y.useMemo(()=>Fae(c,D,p),[c,D,p]),F=R.length,I=y.useMemo(()=>v?[...R].sort((K,L)=>L.lastModified-K.lastModified):C,[v,R,C]),G=t&&!I.some(K=>K.sessionId===t)?D.get(t):void 0;y.useEffect(()=>{_.current&&_.current.scrollIntoView({block:"nearest"})},[t,I,G]);const V=y.useRef(null),q=y.useRef(j);q.current=j,y.useEffect(()=>{const K=V.current;if(!K||!N||v)return;const L=new IntersectionObserver(U=>{U.some(Q=>Q.isIntersecting)&&q.current()},{rootMargin:"300px"});return L.observe(K),()=>L.disconnect()},[N,P,v]),y.useEffect(()=>{e().then(K=>K?fetch("/api/version",{headers:{Authorization:`Bearer ${K}`}}):null).then(K=>K==null?void 0:K.json()).then(K=>K&&S(K.version)).catch(()=>{})},[]);const B=!!b&&b!=="unknown"&&od!=="dev"&&b!==od;y.useEffect(()=>{B&&console.warn(`[shraga] stale client bundle: built from v${od}, server runs v${b} — rebuild dist/client`)},[B,b]);function Y(K){const L=c[K.sessionId],U=u.has(K.sessionId)||K.runStatus==="running"||K.scheduleRunStatus==="running",Q=!U&&(!!K.lastStopReason||K.scheduleRunStatus==="error"||K.scheduleRunStatus==="aborted"),z=U?"border-amber-500":Q?"border-red-500":L?"border-blue-500":"",ce=!!(U||Q||L);return w.jsx("button",{ref:K.sessionId===t?_:void 0,onClick:()=>n(K.sessionId,K.title),className:Ue("w-full text-left px-3 py-2.5 text-sm transition-colors hover:bg-accent/50 group",ce?`rounded-r-lg border-l-[3px] ${z}`:"rounded-lg",t===K.sessionId&&"bg-accent"),children:w.jsxs("div",{className:"flex items-start gap-2",children:[Bae(K),w.jsxs("div",{className:"min-w-0 flex-1",children:[w.jsx("span",{className:Ue("block truncate text-sm leading-snug",L&&"font-semibold"),children:K.title||"New session"}),w.jsxs("div",{className:"flex items-center gap-1.5 mt-0.5",children:[w.jsx("span",{className:"text-[10px] text-muted-foreground font-medium",children:Uae(K)||K.userName}),w.jsx("span",{className:"text-[10px] text-muted-foreground/50",children:"·"}),w.jsx("span",{className:"text-[10px] text-muted-foreground",children:$ae(K.lastModified)})]})]})]})},K.sessionId)}return w.jsxs("div",{className:"flex flex-col h-full bg-muted/30",children:[w.jsx("div",{className:"p-3",children:w.jsxs(Re,{variant:"outline",size:"sm",className:"w-full gap-2 justify-start",onClick:r,title:"New Chat (Ctrl+N)",children:[w.jsx(vv,{className:"w-4 h-4"})," New Chat",w.jsx("span",{className:"ml-auto flex items-center gap-0.5 text-[10px] text-muted-foreground/50 font-mono",children:"⌃N"})]})}),w.jsx("div",{className:"border-b shrink-0 flex flex-col max-h-[40vh]",children:w.jsx(jne,{getToken:e,onRefresh:s,refreshKey:a})}),w.jsxs("div",{className:"flex items-center justify-between px-3 pt-2 pb-1",children:[w.jsx("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Chats"}),w.jsxs("div",{className:"flex gap-0.5",children:[["mine","all"].map(K=>w.jsx("button",{onClick:()=>O(K),className:Ue("text-[10px] px-1.5 rounded-full transition-colors capitalize leading-none",p===K?"text-foreground font-medium":"text-muted-foreground/60 hover:text-muted-foreground"),children:K},K)),w.jsxs("button",{onClick:k,className:Ue("text-[10px] px-1.5 rounded-full transition-colors leading-none",v?"text-blue-600 dark:text-blue-400 font-medium":"text-muted-foreground/60 hover:text-muted-foreground"),children:["unread",F>0&&w.jsx("span",{className:"inline-block w-1.5 h-1.5 ml-1 rounded-full bg-blue-500 align-middle"})]})]})]}),w.jsx(Gj,{className:"flex-1",children:w.jsxs("div",{className:"px-2 pb-2 space-y-0.5",children:[I.length===0&&!G&&w.jsx("p",{className:"text-xs text-muted-foreground px-3 py-6 text-center",children:P?"Loading…":v?"No unread conversations":"No conversations yet"}),G&&Y(G),I.map(Y),!v&&N&&w.jsx("div",{ref:V,className:"py-3 text-center text-[11px] text-muted-foreground/60",children:P?"Loading older…":"···"})]})}),w.jsxs("div",{className:"px-4 py-2 flex flex-col items-center gap-1",children:[w.jsx(kae,{socket:f??null,getToken:e}),(H=h.sidebarExtras)==null?void 0:H.call(h),b&&(B?w.jsxs("button",{onClick:()=>location.reload(),title:`This page was built from v${od}, the server runs v${b} — reload to update`,className:"text-[10px] text-amber-400 hover:text-amber-300 text-center underline decoration-dotted",children:["⚠️ stale page (v",od," → v",b,") · reload"]}):w.jsxs("div",{className:"text-[10px] text-muted-foreground/50 text-center",children:["v",b]}))]})]})}function Yr(e,t){const n=e[e.length-1];if((n==null?void 0:n.role)==="assistant"){if(t.type==="text"||t.type==="thinking"){const r=[...n.blocks],i=r[r.length-1];return(i==null?void 0:i.type)===t.type?(r[r.length-1]={...i,text:i.text+t.text},[...e.slice(0,-1),{...n,blocks:r}]):[...e.slice(0,-1),{...n,blocks:[...r,t]}]}return[...e.slice(0,-1),{...n,blocks:[...n.blocks,t]}]}return[...e,{id:gs(),role:"assistant",blocks:[t]}]}function jM(e,t,n="text"){const r=e[e.length-1],i={type:n,text:t};return(r==null?void 0:r.role)==="assistant"?[...e.slice(0,-1),{...r,blocks:[...r.blocks,i]}]:[...e,{id:gs(),role:"assistant",blocks:[i]}]}function d$(e,t,n){for(let r=e.length-1;r>=0;r--){const i=e[r];if(i.role!=="assistant")continue;const a=i.blocks.findIndex(c=>c.type==="tool_use"&&c.toolUseId===t);if(a===-1)continue;const s=[...i.blocks];return s[a]={...s[a],input:n},[...e.slice(0,r),{...i,blocks:s},...e.slice(r+1)]}return e}function Kae(e,t){const[n,r]=y.useState([]),[i,a]=y.useState(!1),[s,c]=y.useState([]),u=y.useRef(t.initialSessionId),f=y.useRef(!1),h=y.useRef(s);h.current=s;const p=y.useRef(t.getToken);p.current=t.getToken;const m=y.useRef(t.onNewSession);m.current=t.onNewSession;const v=y.useRef(t.onDirectivesChanged);v.current=t.onDirectivesChanged;const x=y.useRef(t.onParticipantsChanged);x.current=t.onParticipantsChanged;const b=y.useRef(t.onEvent);b.current=t.onEvent;const S=y.useRef(e);S.current=e;const _=y.useCallback(I=>I!=null&&I===u.current,[]),O=y.useCallback(async()=>{var G;const I=u.current;if(I)try{const q=await(await xl(`/api/sessions/${I}/messages`,p.current)).json();r(Ej(q)),a(!!q.busy),(G=x.current)==null||G.call(x,Array.isArray(q.participants)&&q.participants.length>1)}catch{}},[]);y.useEffect(()=>{if(!e)return;const I=e.on(G=>{var q,B,Y,H,K,L;(q=b.current)==null||q.call(b,G);const V=G;if(V.type==="compact_marker")return _(V.sessionId)?r(U=>[...U,{id:gs(),role:"assistant",blocks:[{type:"compact_marker",summary:V.summary??"",compactedCount:V.compactedCount??0}]}]):void 0;switch(G.type){case"thinking_delta":return _(G.sessionId)?r(U=>Yr(U,{type:"thinking",text:G.text})):void 0;case"text_delta":return _(G.sessionId)?r(U=>Yr(U,{type:"text",text:G.text})):void 0;case"tool_use":return _(G.sessionId)?r(U=>Yr(U,{type:"tool_use",tool:G.tool,toolUseId:G.toolUseId,input:G.input})):void 0;case"tool_use_input":return _(G.sessionId)?r(U=>d$(U,G.toolUseId,G.input)):void 0;case"tool_result":return _(G.sessionId)?r(U=>Yr(U,{type:"tool_result",toolUseId:G.toolUseId,output:G.output})):void 0;case"tool_result_image":return _(G.sessionId)?r(U=>Yr(U,{type:"image",src:G.dataUrl})):void 0;case"permission_request":return _(G.sessionId)?r(U=>Yr(U,{type:"permission_request",id:G.id,tool:G.tool,input:G.input})):void 0;case"question_request":return _(G.sessionId)?r(U=>Yr(U,{type:"question_request",id:G.id,questions:G.questions})):void 0;case"directives":return f.current?(B=v.current)==null?void 0:B.call(v,G.directives):void 0;case"session_id":return!f.current||u.current?void 0:(u.current=G.sessionId,(Y=m.current)==null?void 0:Y.call(m,G.sessionId));case"forked":return G.sourceSessionId!==u.current?void 0:(u.current=G.sessionId,(H=m.current)==null?void 0:H.call(m,G.sessionId));case"session_busy":G.sessionId===u.current&&a(G.busy);return;case"session_stream":return G.sessionId!==u.current?void 0:qae(r,G.event);case"session_messages_changed":G.sessionId===u.current&&O();return;case"done":{if(G.sessionId!==u.current)return;G.stopReason==="max_turns_reached"&&r(Q=>Yr(Q,{type:"text",text:`
1848
1848
 
1849
1849
  ---
1850
1850
  ⚠️ Reached the maximum number of steps for this turn. Send "continue" to pick up where I left off.`})),(K=m.current)==null||K.call(m,G.sessionId);const U=h.current;if(U.length>0){const Q=U.join(`
@@ -13,7 +13,7 @@
13
13
  <link rel="preconnect" href="https://fonts.googleapis.com" />
14
14
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
15
15
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap" rel="stylesheet" />
16
- <script type="module" crossorigin src="/assets/index-DJiEQiDn.js"></script>
16
+ <script type="module" crossorigin src="/assets/index-BEaOLjDM.js"></script>
17
17
  <link rel="stylesheet" crossorigin href="/assets/index-CibL2gLy.css">
18
18
  </head>
19
19
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shraga",
3
- "version": "0.1.105",
3
+ "version": "0.1.107",
4
4
  "description": "The teammate you delegate coding to — a self-hostable, multi-user AI coding agent web UI (Claude Code, with a pluggable engine seam).",
5
5
  "type": "module",
6
6
  "main": "./src/index.ts",
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Per-user Claude subscription routing: a run whose requester email resolves to a contact with a
3
+ * `workspace/users/<contactId>/.claude` directory runs on that CLAUDE_CONFIG_DIR (log in once with
4
+ * `CLAUDE_CONFIG_DIR=<dir> claude auth login`). Anything else → null → the default account, unchanged.
5
+ * The folder is data-sync ignored (see DataSync.GITIGNORE_ENTRIES) and hidden from the workspace UI (dotdir).
6
+ */
7
+ import { statSync } from 'node:fs';
8
+ import path from 'node:path';
9
+ import * as contacts from './contacts.ts';
10
+ import { WORKSPACE_DIR } from './workspace.ts';
11
+
12
+ export function claudeAccountDir(
13
+ userEmail?: string,
14
+ find: (email: string) => { id: string } | null = email => contacts.find({ email }),
15
+ workspaceDir = WORKSPACE_DIR,
16
+ ): string | null {
17
+ const email = userEmail?.trim().toLowerCase();
18
+ const contact = email ? find(email) : null;
19
+ if (!contact?.id) return null;
20
+ const dir = path.join(workspaceDir, 'users', contact.id, '.claude');
21
+ try { return statSync(dir).isDirectory() ? dir : null; } catch { return null; }
22
+ }
23
+
24
+ /** Route a child env to `dir`: strip inherited credentials so neither the box's API key nor its token can win. */
25
+ export function applyClaudeAccount(env: Record<string, string>, dir: string): void {
26
+ for (const k of ['ANTHROPIC_API_KEY', 'ANTHROPIC_AUTH_TOKEN', 'CLAUDE_CODE_OAUTH_TOKEN']) delete env[k];
27
+ env.CLAUDE_CONFIG_DIR = dir;
28
+ }
@@ -764,6 +764,7 @@ export class DataSync {
764
764
  'uploads/', 'repos/', '.tmp/', 'schedules.json.bak', 'git-log.json',
765
765
  '.internal-token', 'comms-log.jsonl', 'sessions/', 'unread/', '.DS_Store',
766
766
  'scheduler/', '.mcp-catalog.json',
767
+ 'workspace/users/*/.claude/', // per-user Claude logins (claude-account.ts) — credentials, never commit
767
768
  ];
768
769
 
769
770
  /** Write or refresh .gitignore, appending any canonical entries it's missing (idempotent). */
@@ -17,6 +17,7 @@ import { getPromptSuffix } from '../prompt-suffix.ts';
17
17
  import { APP_ROOT } from '../paths.ts';
18
18
  import { writeMcpConfigFile } from './mcp-config-file.ts';
19
19
  import { claudeUsage } from '../claude-usage.ts';
20
+ import { claudeAccountDir, applyClaudeAccount } from '../claude-account.ts';
20
21
  const IMMUTABLE_SYSTEM_PROMPT = readFileSync(path.resolve(import.meta.dirname, '../../../defaults/system-prompt.md'), 'utf-8');
21
22
  const DEFAULT_USER_PROMPT = `You are a helpful assistant with access to MCP tools.`;
22
23
  const DEFAULT_ALLOWED_TOOLS = ['Read', 'Edit', 'Bash', 'WebSearch', 'Glob', 'LS', 'ToolSearch'];
@@ -246,6 +247,9 @@ export class ClaudeCodeEngine implements AgentEngine {
246
247
  const setIfBlank = (key: string, value: string) => { if (!sdkEnv[key]?.trim()) sdkEnv[key] = value; };
247
248
  setIfBlank('BASH_DEFAULT_TIMEOUT_MS', process.env.AGENT_SHELL_TIMEOUT_MS?.trim() || '60000');
248
249
  setIfBlank('BASH_MAX_TIMEOUT_MS', process.env.AGENT_SHELL_MAX_TIMEOUT_MS?.trim() || '600000');
250
+ // Per-user subscription (CLAUDE_ACCOUNTS_DIR/<email>): run on that login, never the box's credentials.
251
+ const accountDir = claudeAccountDir(opts.userEmail);
252
+ if (accountDir) applyClaudeAccount(sdkEnv, accountDir);
249
253
  sdkEnv.INTERNAL_API_TOKEN = signInternalToken(opts.uid, opts.userEmail || 'unknown');
250
254
 
251
255
  const baseAllowed = config.allowedTools ?? DEFAULT_ALLOWED_TOOLS;
@@ -426,7 +430,7 @@ export class ClaudeCodeEngine implements AgentEngine {
426
430
  const src = m.apiKeySource as string | undefined;
427
431
  const authSource: 'subscription' | 'api-key' | undefined =
428
432
  src == null ? undefined : src === 'none' || src === 'oauth' ? 'subscription' : 'api-key';
429
- if (authSource) console.log(`[claude] Auth: ${authSource} (apiKeySource=${src})`);
433
+ if (authSource) console.log(`[claude] Auth: ${authSource} (apiKeySource=${src}) account=${accountDir ? opts.userEmail!.trim().toLowerCase() : 'default'}`);
430
434
  if (m.model) {
431
435
  console.log(`[claude] Init model=${m.model}${m.model !== options['model'] ? ` (requested ${options['model']})` : ''}`);
432
436
  // If the user explicitly asked to switch models via a [directive], announce the change
@@ -465,7 +469,7 @@ export class ClaudeCodeEngine implements AgentEngine {
465
469
  if (m.type === 'system') continue;
466
470
  // Free, always-current limit status from the agent's own inference calls — the only signal
467
471
  // that still works while the usage endpoint is throttling this account.
468
- if (m.type === 'rate_limit_event') { claudeUsage.observeRateLimit(m.rate_limit_info); continue; }
472
+ if (m.type === 'rate_limit_event') { if (!accountDir) claudeUsage.observeRateLimit(m.rate_limit_info); continue; }
469
473
 
470
474
  if (m.type === 'result') {
471
475
  lastSessionId = m.session_id || lastSessionId;