shraga 0.1.110 → 0.1.111

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.
@@ -41,6 +41,8 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (uses s
41
41
  }
42
42
  ```
43
43
 
44
+ Optional bridge env: `MCP_BRIDGE_TIMEOUT_MS` (protocol calls, default 60s) and `MCP_BRIDGE_TOOL_TIMEOUT_MS` (`tools/call`, default 30min). Past the bound the bridge answers with a JSON-RPC error instead of hanging.
45
+
44
46
  ## Available MCP Tools
45
47
 
46
48
  | Tool | Description |
@@ -142,7 +142,7 @@ Your behavioral config (skills, MCPs, schedules, contacts, workspace, agent-conf
142
142
  - **Pull on demand**: `POST /api/data-sync/webhook` triggers a pull (GitHub webhook fires on every push)
143
143
  - **Change history**: `data/git-log.json` (gitignored, reconstructed) contains recent commit log — read it to understand what changed and when. Also available via `GET /api/data-sync/log`
144
144
  - **Recovery**: If data seems stale or missing, trigger a pull by restarting the service or calling the webhook
145
- - **Integrity audit**: `bun run src/server/integrity-audit.ts [git-ref]` compares current data/ against a baseline commit. Detects missing files, truncated content, degraded JSON (fewer entries in schedules/contacts/skills-defaults/api-keys), and invalid JSON. Runs automatically after every data-sync init — check logs for `[data-sync] ⚠️ DATA INTEGRITY`. Use manually when investigating suspected data loss.
145
+ - **Integrity audit**: `bun run src/server/integrity-audit.ts [git-ref] [data-dir]` checks the files that changed between a baseline commit and HEAD (unchanged files are not re-examined — widen the ref to cover older commits). Detects missing files, truncated content, degraded JSON (fewer entries in schedules/contacts/skills-defaults/api-keys), and invalid JSON (.json over 16MB is skipped with a warning). Runs automatically after every data-sync init — check logs for `[data-sync] ⚠️ DATA INTEGRITY`. Use manually when investigating suspected data loss.
146
146
 
147
147
  ### Scheduler gating
148
148
  Schedules sync across all envs but only **execute** where `DATA_SYNC_SCHEDULER_ACTIVE=true` (prod). Inactive envs load and serve schedules with their real `enabled` flags — they just never fire them (no timers armed). Manual "run now" still works anywhere. Event triggers respect the same gate (`fireEvent` no-ops unless active) so a webhook can't double-fire across blue-green.
@@ -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(hu)||"0",10);return isFinite(e)?e:0},sne=function(){y.useEffect(function(){return document.body.setAttribute(hu,(cM()+1).toString()),function(){var e=cM()-1;e<=0?document.body.removeAttribute(hu):document.body.setAttribute(hu,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 Fc=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,p=s>0,h=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)&&(h+=_,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(p&&Math.abs(h)<1||!p&&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,Hc=[];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,I=j?j===N||j.contains(N):!1;if(I)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 R=r.current||C;return mne(R,S,b,R==="h"?k:T)},[]),u=y.useCallback(function(b){var S=b;if(!(!Hc.length||Hc[Hc.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)},[]),p=y.useCallback(function(b){n.current=cm(b),r.current=void 0},[]),h=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 Hc.push(a),e.setCallbacks({onScrollCapture:h,onWheelCapture:h,onTouchMoveCapture:m}),document.addEventListener("wheel",u,Fc),document.addEventListener("touchmove",u,Fc),document.addEventListener("touchstart",p,Fc),function(){Hc=Hc.filter(function(b){return b!==a}),document.removeEventListener("wheel",u,Fc),document.removeEventListener("touchmove",u,Fc),document.removeEventListener("touchstart",p,Fc)}},[]);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},Kc=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(h){!h||c.has(h)||(c.add(h),f(h.parentNode))};i.forEach(f);var p=function(h){!h||u.has(h)||Array.prototype.forEach.call(h.children,function(m){if(c.has(m))p(m);else try{var v=m.getAttribute(r),x=v!==null&&v!=="false",b=(Kc.get(m)||0)+1,S=(a.get(m)||0)+1;Kc.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 p(t),c.clear(),px++,function(){s.forEach(function(h){var m=Kc.get(h)-1,v=a.get(h)-1;Kc.set(h,m),a.set(h,v),m||(um.has(h)||h.removeAttribute(r),um.delete(h)),v||h.removeAttribute(n)}),px--,px||(Kc=new WeakMap,Kc=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,p]=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:p,onOpenToggle:y.useCallback(()=>p(h=>!h),[p]),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(Ds,{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(Ds,{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}})})}),_u="DialogContent",YE=y.forwardRef((e,t)=>{const n=Bz(_u,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Bi(_u,e.__scopeDialog);return w.jsx(Ds,{present:r||a.open,children:a.modal?w.jsx(Tne,{...i,ref:t}):w.jsx(Nne,{...i,ref:t})})});YE.displayName=_u;var Tne=y.forwardRef((e,t)=>{const n=Bi(_u,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(_u,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(_u,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 _s=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 ho=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(jl,{className:"h-4 w-4"}),w.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));ho.displayName=YE.displayName;function zl({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 As=y.forwardRef(({className:e,...t},n)=>w.jsx(XE,{ref:n,className:Ue("text-lg font-semibold leading-none tracking-tight",e),...t}));As.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,p]=y.useState(!1),[h,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 U=>{const W=await Dne(U,e);i(H=>new Map(H).set(U,W))},[e]);y.useEffect(()=>{D(""),a.forEach(U=>D(U))},[D,n]);const j=r.get("")??[],I=y.useCallback(U=>{try{const W=U.contentDocument;if(!(W!=null&&W.body))return;const H=Math.max(W.body.offsetWidth,W.body.scrollWidth),Y=Math.max(W.body.offsetHeight,W.body.scrollHeight);H&&Y&&S({w:H,h:Y})}catch{}},[]),F=y.useCallback(()=>{const U=_.current,W=b;if(!U||!W)return;const H=16,Y=U.clientWidth-H,z=U.clientHeight-H,$=Math.min(Y/W.w,z/W.h,1);x({scale:$,w:W.w,h:W.h})},[b]);y.useEffect(()=>{if(!(c!=null&&c.html)||h!=="fit"){x(null);return}const U=_.current;if(!U)return;const W=new ResizeObserver(()=>requestAnimationFrame(F));return W.observe(U),()=>W.disconnect()},[c==null?void 0:c.html,f,h,F]),y.useEffect(()=>{T&&e().then(U=>{U&&fetch("/api/data-sync/log",{headers:{Authorization:`Bearer ${U}`}}).then(W=>W.json()).then(P).catch(()=>{})})},[T]);const R=U=>{s(W=>{const H=new Set(W);return H.has(U)?H.delete(U):(H.add(U),r.has(U)||D(U)),H})},G=(U,W)=>{const H=new URLSearchParams({path:U});return O&&H.set("token",O),W&&H.set("dl","1"),`/api/workspace/raw?${H}`},q=async U=>{var Y;const W=await e();if(!W)return;k(W);const H=((Y=U.split(".").pop())==null?void 0:Y.toLowerCase())??"";if(H==="html"||H==="htm"){u({path:U,content:"",binary:!1,html:!0});return}if(Rne.has(H)){u({path:U,content:"",binary:!1,image:!0});return}if(Pne.has(H)){u({path:U,content:"",binary:!1,html:!0});return}try{const z=await fetch(`/api/workspace/file?path=${encodeURIComponent(U)}`,{headers:{Authorization:`Bearer ${W}`}});if(!z.ok)return;const $=await z.json();u({path:U,content:$.content,binary:!!$.binary})}catch{}},K=(U,W)=>w.jsx(w.Fragment,{children:U.map(H=>{const Y=H.path.split("/").pop();return w.jsxs("div",{children:[H.type==="dir"?w.jsxs("button",{onClick:()=>R(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+W*12},children:[w.jsx(Ps,{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:Y})]}):w.jsxs("button",{onClick:()=>q(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+W*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:Y})]}),H.type==="dir"&&a.has(H.path)&&K(r.get(H.path)??[],W+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(U=>D(U)),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."}):K(j,0)}),w.jsx(_s,{open:!!c,onOpenChange:U=>{U||(u(null),p(!1),m("fit"),S(null))},children:w.jsxs(ho,{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(U=>U==="fit"?"scroll":"fit"),className:"rounded-sm opacity-70 hover:opacity-100 text-muted-foreground",title:h==="fit"?"Switch to scrollable (1:1)":"Switch to scale-to-fit",children:h==="fit"?w.jsx(sG,{className:"w-4 h-4"}):w.jsx(hG,{className:"w-4 h-4"})}),w.jsx("button",{onClick:()=>p(U=>!U),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(zl,{className:Ue((c==null?void 0:c.html)&&"px-4 py-3 shrink-0 border-b"),children:w.jsx(As,{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",h==="fit"?"overflow-hidden flex items-center justify-center":"overflow-auto"):"flex-1 min-h-0 overflow-y-auto"),children:c!=null&&c.html?h==="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:U=>{I(U.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:U=>I(U.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(_s,{open:T,onOpenChange:C,children:w.jsxs(ho,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[w.jsx(zl,{children:w.jsx(As,{className:"text-sm",children:"Activity Log"})}),w.jsxs("div",{className:"overflow-y-auto flex-1 space-y-2",children:[N.map(U=>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:U.message}),w.jsx("span",{className:"text-[10px] text-muted-foreground shrink-0",children:Lne(U.date)})]}),U.files.length>0&&w.jsx("div",{className:"text-[11px] text-muted-foreground mt-0.5",children:U.files.map(W=>w.jsx("span",{className:"inline-block mr-2 font-mono",children:W},W))})]},U.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 h;const r=e.match(zne);if(!r)return e;let i=Number(r[1]);const a=r[2]?Number(r[2]):0,s=(h=r[3])==null?void 0:h.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"}),p=Um(u.toISOString(),n);return e.replace(r[0],`resets ${f}${p?` (in ${p})`:""}`)}var Bne=Object.defineProperty,$u=(e,t)=>Bne(e,"name",{value:t,configurable:!0}),Xz=!!(typeof window<"u"&&window.document&&window.document.createElement);function xs(e,t,{checkForDefaultPrevented:n=!0}={}){return $u(function(i){if(e==null||e(i),n===!1||!i||!i.defaultPrevented)return t==null?void 0:t(i)},"handleEvent")}$u(xs,"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}$u(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}$u(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}$u(Zz,"getActiveElement");function Qz(e){return e.tagName==="IFRAME"}$u(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 Bu(...e){return y.useCallback(Jz(...e),e)}QE(Bu,"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(h=>{var _;const{scope:m,children:v,...x}=h,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 p(h,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(`\`${h}\` must be used within \`${a}\``)}return wi(p,"useContext"),[f,p]}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 h=u(a)[`__scope${f}`];return{...c,...h}},{});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,p=Bu(r,f);if(!s){if(i||i===0)throw new Error(c?Xne(e):Yne(e));return i}const h=r3(a,s.props??{});return s.type!==y.Fragment&&(h.ref=r?p:f),y.cloneElement(s,h)});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,...p}=t,h=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=Bu(n,v),_=Array.from(h.layers),[O]=[...h.layersWithOutsidePointerEventsDisabled].slice(-1),k=O?_.indexOf(O):-1,T=m?_.indexOf(m):-1,C=h.layersWithOutsidePointerEventsDisabled.size>0,N=T>=k,P=y.useRef(!1),D=c3(R=>{s==null||s(R),u==null||u(R),R.defaultPrevented||f==null||f()},{ownerDocument:x,deferPointerDownOutside:i,isDeferredPointerDownOutsideRef:P,dismissableSurfaces:h.dismissableSurfaces,shouldHandlePointerDownOutside:y.useCallback(R=>{if(!(R instanceof Node))return!1;const G=[...h.branches].some(q=>q.contains(R));return N&&!G},[h.branches,N])}),j=u3(R=>{if(i&&P.current)return;const G=R.target;[...h.branches].some(K=>K.contains(G))||(c==null||c(R),u==null||u(R),R.defaultPrevented||f==null||f())},x),I=m?T===_.length-1:!1,F=Cv(R=>{R.key==="Escape"&&(a==null||a(R),!R.defaultPrevented&&f&&(R.preventDefault(),f()))});return y.useEffect(()=>{if(I)return x.addEventListener("keydown",F,{capture:!0}),()=>x.removeEventListener("keydown",F,{capture:!0})},[x,I,F]),y.useEffect(()=>{if(m)return r&&(h.layersWithOutsidePointerEventsDisabled.size===0&&(hM=x.body.style.pointerEvents,x.body.style.pointerEvents="none"),h.layersWithOutsidePointerEventsDisabled.add(m)),h.layers.add(m),$w(),()=>{r&&(h.layersWithOutsidePointerEventsDisabled.delete(m),h.layersWithOutsidePointerEventsDisabled.size===0&&(x.body.style.pointerEvents=hM))}},[m,x,r,h]),y.useEffect(()=>()=>{m&&(h.layers.delete(m),h.layersWithOutsidePointerEventsDisabled.delete(m),$w())},[m,h]),y.useEffect(()=>{const R=$n(()=>b({}),"handleUpdate");return document.addEventListener(zw,R),()=>document.removeEventListener(zw,R)},[]),w.jsx(Ov.div,{...p,ref:S,style:{pointerEvents:C?N?"auto":"none":void 0,...t.style},onFocusCapture:xs(t.onFocusCapture,j.onFocusCapture),onBlurCapture:xs(t.onBlurCapture,j.onBlurCapture),onPointerDownCapture:xs(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),p=y.useRef(new Map),h=y.useRef(()=>{});return y.useEffect(()=>{function m(){f.current=!1,i.current=!1,p.current.clear()}$n(m,"resetOutsideInteraction");function v(){return Array.from(p.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))||p.current.set(k.type,!0),k.type==="click"&&window.setTimeout(()=>{f.current&&h.current()},0)}$n(x,"handleInteractionCapture");function b(k){f.current&&p.current.set(k.type,!1)}$n(b,"handleInteractionBubble");const S=$n(k=>{if(k.target&&!u.current){let T=function(){n.removeEventListener("click",h.current);const N=v();m(),N||eS(rre,c,C,{discrete:!0})};if($n(T,"handleAndDispatchPointerDownOutsideEvent"),!s(k.target)){n.removeEventListener("click",h.current),m(),u.current=!1;return}const C={originalEvent:k};f.current=!0,i.current=r&&k.button===0,p.current.clear(),!r||k.button!==0?T():(n.removeEventListener("click",h.current),h.current=T,n.addEventListener("click",h.current,{once:!0}))}else n.removeEventListener("click",h.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",h.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),p=Uw(a),h=Uw(s),m=y.useRef(null),v=Bu(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,p),u.dispatchEvent(O),O.defaultPrevented||(f3(g3(rS(u)),{select:!0}),document.activeElement===S&&Xa(u))}return()=>{u.removeEventListener(mx,p),setTimeout(()=>{const O=new CustomEvent(gx,pM);u.addEventListener(gx,h),u.dispatchEvent(O),O.defaultPrevented||Xa(S??document.body,{select:!0}),u.removeEventListener(gx,h),mM.remove(x)},0)}}},[u,p,h,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"],ks=Math.min,oo=Math.max,gg=Math.round,pm=Math.floor,so=e=>({x:e,y:e}),xre={left:"right",right:"left",bottom:"top",top:"bottom"};function y3(e,t,n){return oo(e,ks(t,n))}function po(e,t){return typeof e=="function"?e(t):e}function Os(e){return e.split("-")[0]}function Uu(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=Uu(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=Uu(e);let a=Are(Os(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=Os(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=Os(t),f=a==="y",p=r.x+r.width/2-i.width/2,h=r.y+r.height/2-i.height/2,m=r[c]/2-i[c]/2;let v;switch(u){case"top":v={x:p,y:r.y-i.height};break;case"bottom":v={x:p,y:r.y+r.height};break;case"right":v={x:r.x+r.width,y:h};break;case"left":v={x:r.x-i.width,y:h};break;default:v={x:r.x,y:r.y}}const x=Uu(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:p="viewport",elementContext:h="floating",altBoundary:m=!1,padding:v=0}=po(t,e),x=b3(v),S=c[m?h==="floating"?"reference":"floating":h],_=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:p,strategy:u})),O=h==="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:p,y:h}=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:p,y:h,initialPlacement:r,placement:m,strategy:i,middlewareData:x,rects:f,platform:c,elements:{reference:e,floating:t}});p=k??p,h=T??h,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:p,y:h}=yM(f,m,u)),b=-1)}return{x:p,y:h,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:p=0}=po(e,t)||{};if(f==null)return{};const h=b3(p),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,I=ks(h[_],j),F=ks(h[O],j),R=P-b[x]-F,G=P/2-b[x]/2+D,q=y3(I,G,R),K=!u.arrow&&Uu(i)!=null&&G!==q&&a.reference[x]/2-(G<I?I:F)-b[x]/2<0,U=K?G<I?G-I:G-R:0;return{[v]:m[v]+U,data:{[v]:q,centerOffset:G-q-U,...K&&{alignmentOffset:U}},reset:K}}}),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:p=!0,crossAxis:h=!0,fallbackPlacements:m,fallbackStrategy:v="bestFit",fallbackAxisSideDirection:x="none",flipAlignment:b=!0,...S}=po(e,t);if((n=a.arrow)!=null&&n.alignmentOffset)return{};const _=Os(i),O=sa(c),k=Os(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 I=((r=a.flip)==null?void 0:r.overflows)||[];if(p&&j.push(D[_]),h){const q=wre(i,s,T);j.push(D[q[0]],D[q[1]])}if(I=[...I,{placement:i,overflows:j}],!j.every(q=>q<=0)){var F,R;const q=(((F=a.flip)==null?void 0:F.index)||0)+1,K=P[q];if(K&&(!(h==="alignment"?O!==sa(K):!1)||I.every(H=>sa(H.placement)===O?H.overflows[0]>0:!0)))return{data:{index:q,overflows:I},reset:{placement:K}};let U=(R=I.filter(W=>W.overflows[0]<=0).sort((W,H)=>W.overflows[1]-H.overflows[1])[0])==null?void 0:R.placement;if(!U)switch(v){case"bestFit":{var G;const W=(G=I.filter(H=>{if(N){const Y=sa(H.placement);return Y===O||Y==="y"}return!0}).map(H=>[H.placement,H.overflows.filter(Y=>Y>0).reduce((Y,z)=>Y+z,0)]).sort((H,Y)=>H[1]-Y[1])[0])==null?void 0:G[0];W&&(U=W);break}case"initialPlacement":U=c;break}if(i!==U)return{reset:{placement:U}}}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}=po(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=Os(n),c=Uu(n),u=sa(n)==="y",f=x3.has(s)?-1:1,p=a&&u?-1:1,h=po(t,e);let{mainAxis:m,crossAxis:v,alignmentAxis:x}=typeof h=="number"?{mainAxis:h,crossAxis:0,alignmentAxis:null}:{mainAxis:h.mainAxis||0,crossAxis:h.crossAxis||0,alignmentAxis:h.alignmentAxis};return c&&typeof x=="number"&&(v=c==="end"?x*-1:x),u?{x:v*p,y:m*f}:{x:m*f,y:v*p}}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}=po(e,t),p={x:n,y:r},h=await a.detectOverflow(t,f),m=sa(i),v=iS(m);let x=p[v],b=p[m];const S=(O,k)=>y3(k+h[O==="y"?"top":"left"],k,k-h[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:p=!0,crossAxis:h=!0}=po(e,t),m={x:i,y:a},v=sa(s),x=iS(v);let b=m[x],S=m[v];const _=po(f,t),O=typeof _=="number"?{mainAxis:_,crossAxis:0}:{mainAxis:(n=_.mainAxis)!=null?n:0,crossAxis:(r=_.crossAxis)!=null?r:0};if(p){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(h){var k,T;const C=x==="y"?"width":"height",N=x3.has(Os(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}=po(e,t),u=await i.detectOverflow(t,c),f=Os(n),p=Uu(n),h=sa(n)==="y",{width:m,height:v}=r.floating;let x,b;f==="top"||f==="bottom"?(x=f,b=p===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?"start":"end")?"left":"right"):(b=f,x=p==="end"?"top":"bottom");const S=v-u.top-u.bottom,_=m-u.left-u.right,O=ks(v-u[x],S),k=ks(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&&!p&&(h?P=m-2*oo(u.left,u.right):N=v-2*oo(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 Fu(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 wo(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 Ls(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(Fu(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/,ul=e=>!!e&&e!=="none";let vx;function sS(e){const t=ma(e)?ga(e):e;return ul(t.transform)||ul(t.translate)||ul(t.scale)||ul(t.rotate)||ul(t.perspective)||!lS()&&(ul(t.backdropFilter)||ul(t.filter))||Bre.test(t.willChange||"")||Ure.test(t.contain||"")}function Fre(e){let t=$l(e);for(;Ls(t)&&!zd(t);){if(sS(t))return t;if(Mv(t))return null;t=$l(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(Fu(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 $l(e){if(Fu(e)==="html")return e;const t=e.assignedSlot||e.parentNode||wM(e)&&e.host||wo(e);return wM(t)?t.host:t}function E3(e){const t=$l(e);return zd(t)?(e.ownerDocument||e).body:Ls(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=Ls(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 pu(e){const t=cS(e);if(!Ls(t))return so(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=so(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 Bl(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const i=e.getBoundingClientRect(),a=cS(e);let s=so(1);t&&(r?ma(r)&&(s=pu(r)):s=pu(e));const c=Kre(a,n,r)?_3(a):so(0);let u=(i.left+c.x)/s.x,f=(i.top+c.y)/s.y,p=i.width/s.x,h=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=pu(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,p*=S.x,h*=S.y,u+=k,f+=T,x=Pr(b),b=qw(x)}}return yg({width:p,height:h,x:u,y:f})}function Rv(e,t){const n=Iv(e).scrollLeft;return t?t.left+n:Bl(wo(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=wo(r),c=t?Mv(t.floating):!1;if(r===s||c&&a)return n;let u={scrollLeft:0,scrollTop:0},f=so(1);const p=so(0),h=Ls(r);if((h||!a)&&((Fu(r)!=="body"||Nv(s))&&(u=Iv(r)),h)){const v=Bl(r);f=pu(r),p.x=v.x+r.clientLeft,p.y=v.y+r.clientTop}const m=s&&!h&&!a?A3(s,u):so(0);return{width:n.width*f.x,height:n.height*f.y,x:n.x*f.x-u.scrollLeft*f.x+p.x+m.x,y:n.y*f.y-u.scrollTop*f.y+p.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=oo(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=oo(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight);let a=-t.scrollLeft+Rv(e);const s=-t.scrollTop;return ga(n).direction==="rtl"&&(a+=oo(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=wo(e),s=i.visualViewport;let c=a.clientWidth,u=a.clientHeight,f=0,p=0;if(s){const m=!lS()||t==="fixed";r?m||(f=-s.offsetLeft,p=-s.offsetTop):(c=s.width,u=s.height,m&&(f=s.offsetLeft,p=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:p}}function Xre(e,t){const n=Bl(e,!0,t==="fixed"),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=pu(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(wo(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)&&Fu(c)!=="body"),i=null;const a=ga(e).position==="fixed";let s=a?$l(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(h=>h!==s):i=c,s=$l(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,p=c.bottom,h=c.left;for(let m=1;m<s.length;m++){const v=EM(t,s[m],i);u=oo(v.top,u),f=ks(v.right,f),p=ks(v.bottom,p),h=oo(v.left,h)}return{width:f-h,height:p-u,x:h,y:u}}function Jre(e){const{width:t,height:n}=S3(e);return{width:t,height:n}}function eie(e,t,n){const r=Ls(t),i=wo(t),a=n==="fixed",s=Bl(e,!0,a,t);let c={scrollLeft:0,scrollTop:0};const u=so(0);if((r||!a)&&((Fu(t)!=="body"||Nv(i))&&(c=Iv(t)),r)){const m=Bl(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):so(0),p=s.left+c.scrollLeft-u.x-f.x,h=s.top+c.scrollTop-u.y-f.y;return{x:p,y:h,width:s.width,height:s.height}}function yx(e){return ga(e).position==="static"}function SM(e,t){if(!Ls(e)||ga(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return wo(e)===n&&(n=n.ownerDocument.body),n}function k3(e,t){const n=Pr(e);if(Mv(e))return n;if(!Ls(e)){let i=$l(e);for(;i&&!zd(i);){if(ma(i)&&!yx(i))return i;i=$l(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:wo,getClippingRect:Qre,getOffsetParent:k3,getElementRects:tie,getClientRects:Gre,getDimensions:Jre,getScale:pu,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=wo(e);function s(){var p;clearTimeout(i),(p=r)==null||p.disconnect(),r=null}function c(p,h){p===void 0&&(p=!1),h===void 0&&(h=1),s();const m=e.getBoundingClientRect(),{left:v,top:x,width:b,height:S}=m;if(p||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:oo(0,ks(1,h))||1};let P=!0;function D(j){const I=j[0].intersectionRatio;if(!O3(m,e.getBoundingClientRect()))return c();if(I!==h){if(!P)return c();I?c(!1,I):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),p=i||a?[...f?$d(f):[],...t?$d(t):[]]:[];p.forEach(_=>{i&&_.addEventListener("scroll",n),a&&_.addEventListener("resize",n)});const h=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?Bl(e):null;u&&S();function S(){const _=Bl(e);b&&!O3(b,_)&&n(),b=_,x=requestAnimationFrame(S)}return n(),()=>{var _;p.forEach(O=>{i&&O.removeEventListener("scroll",n),a&&O.removeEventListener("resize",n)}),h==null||h(),(_=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,[p,h]=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(p),j=u!=null,I=bx(u),F=bx(i),R=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(Y=>{const z={...Y,isPositioned:R.current!==!1};q.current&&!bg(D.current,z)&&(D.current=z,Sa.flushSync(()=>{h(z)}))})},[m,t,n,F,R]);Fm(()=>{f===!1&&D.current.isPositioned&&(D.current.isPositioned=!1,h(H=>({...H,isPositioned:!1})))},[f]);const q=y.useRef(!1);Fm(()=>(q.current=!0,()=>{q.current=!1}),[]),Fm(()=>{if(T&&(N.current=T),C&&(P.current=C),T&&C){if(I.current)return I.current(T,C,G);G()}},[T,C,G,I,j]);const K=y.useMemo(()=>({reference:N,floating:P,setReference:O,setFloating:k}),[O,k]),U=y.useMemo(()=>({reference:T,floating:C}),[T,C]),W=y.useMemo(()=>{const H={position:n,left:0,top:0};if(!U.floating)return H;const Y=AM(U.floating,p.x),z=AM(U.floating,p.y);return c?{...H,transform:"translate("+Y+"px, "+z+"px)",...C3(U.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:Y,top:z}},[n,c,U.floating,p.x,p.y]);return y.useMemo(()=>({...p,update:G,refs:K,elements:U,floatingStyles:W}),[p,G,K,U,W])}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(h=>{var _;const{scope:m,children:v,...x}=h,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 p(h,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(`\`${h}\` must be used within \`${a}\``)}return Ei(p,"useContext"),[f,p]}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 h=u(a)[`__scope${f}`];return{...c,...h}},{});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,p=Pv(r,f);if(!s){if(i||i===0)throw new Error(c?Iie(e):Mie(e));return i}const h=P3(a,s.props??{});return s.type!==y.Fragment&&(h.ref=r?p:f),y.cloneElement(s,h)});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,ws=(e,t)=>Fie(e,"name",{value:t,configurable:!0}),U3="Popper",[F3,H3]=N3(U3),[Hie,K3]=F3(U3),Kie=ws(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(ws(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]),p=Pv(n,f),h=y.useRef(null);y.useEffect(()=>{if(!i)return;const b=h.current;h.current=i.current,b!==h.current&&u(h.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:p})},"PopperAnchor")),q3="PopperContent",[Vie,zOe]=F3(q3),Wie=y.forwardRef(ws(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:p=[],collisionPadding:h=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,I=i+(s!=="center"?"-"+s:""),F=typeof h=="number"?h:{top:0,right:0,bottom:0,left:0,...h},R=Array.isArray(p)?p:[p],G=R.length>0,q={padding:F,boundary:R.filter(G3),altBoundary:G},{refs:K,floatingStyles:U,placement:W,isPositioned:H,middlewareData:Y}=mie({strategy:"fixed",placement:I,whileElementsMounted:ws((...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,...q}),f&&xie({...q}),wie({...q,apply:ws(({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",...q,boundary:G?q.boundary:void 0})]}),z=_.setPlacementState;xx(()=>(z(W),()=>{z(void 0)}),[W,z]);const[$,Z]=Dv(W),L=$3(b);xx(()=>{H&&(L==null||L())},[H,L]);const ae=(he=Y.arrow)==null?void 0:he.x,me=(ke=Y.arrow)==null?void 0:ke.y,de=((we=Y.arrow)==null?void 0:we.centerOffset)!==0,[Ee,Ge]=y.useState();return xx(()=>{O&&Ge(window.getComputedStyle(O).zIndex)},[O]),w.jsx("div",{ref:K.setFloating,"data-radix-popper-content-wrapper":"",style:{...U,transform:H?U.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Ee,"--radix-popper-transform-origin":[(fe=Y.transformOrigin)==null?void 0:fe.x,(pt=Y.transformOrigin)==null?void 0:pt.y].join(" "),...((qe=Y.hide)==null?void 0:qe.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:t.dir,children:w.jsx(Vie,{scope:r,placedSide:$,placedAlign:Z,onArrowChange:N,arrowX:ae,arrowY:me,shouldHideArrow:de,children:w.jsx(z3.div,{"data-side":$,"data-align":Z,...S,ref:T,style:{...S.style,animation:H?(Oe=S.style)==null?void 0:Oe.animation:"none"}})})})},"PopperContent"));function G3(e){return e!==null}ws(G3,"isNotNull");var Yie=ws(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,p]=Dv(n),h={start:"0%",center:"50%",end:"100%"}[p],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?h:`${m}px`,b=`${-u}px`):f==="top"?(x=s?h:`${m}px`,b=`${r.floating.height+u}px`):f==="right"?(x=`${-u}px`,b=s?h:`${v}px`):f==="left"&&(x=`${r.floating.width+u}px`,b=s?h:`${v}px`),{data:{x,y:b}}}}),"transformOrigin");function Dv(e){const[t,n="center"]=e.split("-");return[t,n]}ws(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,mo=(e,t)=>rae(e,"name",{value:t,configurable:!0});function V3(e,t){return y.useReducer((n,r)=>t[n][r]??n,e)}mo(V3,"useStateMachine");var W3=mo(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??ru(r.current),s.current=void 0):a.current="none"},[u]),kM(()=>{const p=r.current,h=i.current;if(h!==e){const v=a.current,x=ru(p);e?(s.current=x,f("MOUNT")):x==="none"||(p==null?void 0:p.display)==="none"?f("UNMOUNT"):f(h&&v!==x?"ANIMATION_OUT":"UNMOUNT"),i.current=e}},[e,f]),kM(()=>{if(t){let p;const h=t.ownerDocument.defaultView??window,m=mo(x=>{const S=ru(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",p=h.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=_)})}},"handleAnimationEnd"),v=mo(x=>{x.target===t&&(a.current=ru(r.current))},"handleAnimationStart");return t.addEventListener("animationstart",v),t.addEventListener("animationcancel",m),t.addEventListener("animationend",m),()=>{h.clearTimeout(p),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(p=>{if(p){const h=getComputedStyle(p);r.current=h,s.current=ru(h)}else r.current=null;n(p)},[])}}mo(Y3,"usePresence");function Ww(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}mo(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)}}},[])}mo(X3,"useStableComposedRefs");function ru(e){return(e==null?void 0:e.animationName)||"none"}mo(ru,"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)}mo(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(p=>{var h;if(c){const m=n$(p)?p(e):p;m!==e&&((h=s.current)==null||h.call(s,m))}else a(p)},[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),p=[{...n,state:a}];r&&p.push(r);const[h,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},...p),v=h.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?{...h,state:i}:h,[h,i]);return y.useEffect(()=>{u&&!Object.is(i,h.state)&&m({type:TM,state:i})},[i,h.state,u]),[b,m]}fh(lae,"useControllableStateReducer");var cae=Object.defineProperty,zs=(e,t)=>cae(e,"name",{value:t,configurable:!0}),fS="Popover",[r$,$Oe]=e3(fS,[H3]),dS=H3(),[uae,Hu]=r$(fS),fae=zs(e=>{const{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:s=!1}=e,c=dS(t),u=y.useRef(null),[f,p]=y.useState(!1),[h,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:h,onOpenChange:m,onOpenToggle:y.useCallback(()=>m(v=>!v),[m]),hasCustomAnchor:f,onCustomAnchorAdd:y.useCallback(()=>p(!0),[]),onCustomAnchorRemove:y.useCallback(()=>p(!1),[]),modal:s,children:n})})},"Popover"),dae="PopoverTrigger",hae=y.forwardRef(zs(function(t,n){const{__scopePopover:r,...i}=t,a=Hu(dae,r),s=dS(r),c=Bu(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:xs(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=zs(e=>{const{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=Hu(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(zs(function(t,n){const r=mae(Bd,t.__scopePopover),{forceMount:i=r.forceMount,...a}=t,s=Hu(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(zs(function(t,n){const r=Hu(Bd,t.__scopePopover),i=y.useRef(null),a=Bu(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:xs(t.onCloseAutoFocus,c=>{var u;c.preventDefault(),s.current||(u=r.triggerRef.current)==null||u.focus()}),onPointerDownOutside:xs(t.onPointerDownOutside,c=>{const u=c.detail.originalEvent,f=u.button===0&&u.ctrlKey===!0,p=u.button===2||f;s.current=p},{checkForDefaultPrevented:!1}),onFocusOutside:xs(t.onFocusOutside,c=>c.preventDefault(),{checkForDefaultPrevented:!1})})})},"PopoverContentModal")),xae=y.forwardRef(zs(function(t,n){const r=Hu(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,p;(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;((p=r.triggerRef.current)==null?void 0:p.contains(c))&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&a.current&&s.preventDefault()}})},"PopoverContentNonModal")),a$=y.forwardRef(zs(function(t,n){const{__scopePopover:r,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:s,disableOutsidePointerEvents:c,onEscapeKeyDown:u,onPointerDownOutside:f,onFocusOutside:p,onInteractOutside:h,...m}=t,v=Hu(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:h,onEscapeKeyDown:u,onPointerDownOutside:f,onFocusOutside:p,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"}zs(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 p=await e();if(!p)return;i=Date.now();const h=await fetch("/api/claude-usage",{headers:{Authorization:`Bearer ${p}`}});if(!r)return;if(h.status===204){n(null);return}if(h.status!==200)return;const m=await h.json();if(!r||!((f=m==null?void 0:m.limits)!=null&&f.length))return;n(m)}catch(p){console.warn("[MachineStats] claude usage poll failed",p)}},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 od=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),[p,h]=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(od),_=y.useRef(t);_.current!==t&&(_.current=t,S.current=od);const O=y.useCallback(async(P,D)=>{const j=await e();if(!j||D!=null&&D.aborted)return null;const I=await fetch(`/api/sessions?${new URLSearchParams(P)}`,{signal:D,headers:{Authorization:`Bearer ${j}`}});if(!I.ok)return null;const F=await I.json();return Array.isArray(F==null?void 0:F.sessions)?F:null},[e]),k=y.useCallback(async(P,D,j)=>{const I=[];let F,R=null;for(;I.length<P;){const G={filter:D,limit:String(Math.min(od,P-I.length))};F&&(G.before=F);const q=await O(G,j);if(!q)return null;if(I.push(...q.sessions),R=q.nextCursor,!R||!q.sessions.length)break;F=R}return{sessions:I,nextCursor:R}},[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(),h({}),k(S.current,t,P.signal).then(I=>{!I||P.signal.aborted||(a(I.sessions),c(I.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(od),before:s},P.signal).then(I=>{!I||P.signal.aborted||D!==b.current||(a(F=>{const R=new Set(F.map(q=>q.sessionId)),G=[...F,...I.sessions.filter(q=>!R.has(q.sessionId))];return S.current=Math.max(od,G.length),G}),c(I.nextCursor))}).catch(()=>{}).finally(()=>{P.signal.aborted||f(!1)})},[s,u,O]),C=y.useMemo(()=>{const P=new Map;for(const D of Object.values(p))P.set(D.sessionId,D);for(const D of i)P.set(D.sessionId,D);return P},[i,p]),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||h(I=>{const F={...I};for(const R of j.sessions)F[R.sessionId]=R;return F})}).catch(()=>{}),()=>{D=!0}},[N,C,O]),{sessions:i,cursor:s,loading:u,byId:C,loadMore:T}}const sd="0.1.110";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 ld="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:`${ld} text-purple-400`}):(t==null?void 0:t.type)==="mention"?w.jsx(Wq,{className:`${ld} text-blue-400`}):(t==null?void 0:t.type)==="channel"?w.jsx(tG,{className:`${ld} text-green-400`}):e.sessionId.startsWith("slack-")?w.jsx(xw,{className:`${ld} text-yellow-400`}):w.jsx(xw,{className:`${ld} 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 p=_a(),[h,m]=y.useState(()=>localStorage.getItem(PM)||"mine"),[v,x]=y.useState(()=>localStorage.getItem(DM)==="true"),[b,S]=y.useState(""),_=y.useRef(null);function O(Y){m(Y),localStorage.setItem(PM,Y)}function k(){const Y=!v;x(Y),localStorage.setItem(DM,String(Y))}const T=y.useMemo(()=>[t,...Object.keys(c)].filter(Y=>!!Y),[t,c]),{sessions:C,cursor:N,loading:P,byId:D,loadMore:j}=zae({getToken:e,filter:h,refreshKey:i,hydrateIds:T}),I=y.useMemo(()=>Fae(c,D,h),[c,D,h]),F=I.length,R=y.useMemo(()=>v?[...I].sort((Y,z)=>z.lastModified-Y.lastModified):C,[v,I,C]),G=t&&!R.some(Y=>Y.sessionId===t)?D.get(t):void 0;y.useEffect(()=>{_.current&&_.current.scrollIntoView({block:"nearest"})},[t,R,G]);const q=y.useRef(null),K=y.useRef(j);K.current=j,y.useEffect(()=>{const Y=q.current;if(!Y||!N||v)return;const z=new IntersectionObserver($=>{$.some(Z=>Z.isIntersecting)&&K.current()},{rootMargin:"300px"});return z.observe(Y),()=>z.disconnect()},[N,P,v]),y.useEffect(()=>{e().then(Y=>Y?fetch("/api/version",{headers:{Authorization:`Bearer ${Y}`}}):null).then(Y=>Y==null?void 0:Y.json()).then(Y=>Y&&S(Y.version)).catch(()=>{})},[]);const U=!!b&&b!=="unknown"&&sd!=="dev"&&b!==sd;y.useEffect(()=>{U&&console.warn(`[shraga] stale client bundle: built from v${sd}, server runs v${b} — rebuild dist/client`)},[U,b]);function W(Y){const z=c[Y.sessionId],$=u.has(Y.sessionId)||Y.runStatus==="running"||Y.scheduleRunStatus==="running",Z=!$&&(!!Y.lastStopReason||Y.scheduleRunStatus==="error"||Y.scheduleRunStatus==="aborted"),L=$?"border-amber-500":Z?"border-red-500":z?"border-blue-500":"",ae=!!($||Z||z);return w.jsx("button",{ref:Y.sessionId===t?_:void 0,onClick:()=>n(Y.sessionId,Y.title),className:Ue("w-full text-left px-3 py-2.5 text-sm transition-colors hover:bg-accent/50 group",ae?`rounded-r-lg border-l-[3px] ${L}`:"rounded-lg",t===Y.sessionId&&"bg-accent"),children:w.jsxs("div",{className:"flex items-start gap-2",children:[Bae(Y),w.jsxs("div",{className:"min-w-0 flex-1",children:[w.jsx("span",{className:Ue("block truncate text-sm leading-snug",z&&"font-semibold"),children:Y.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(Y)||Y.userName}),w.jsx("span",{className:"text-[10px] text-muted-foreground/50",children:"·"}),w.jsx("span",{className:"text-[10px] text-muted-foreground",children:$ae(Y.lastModified)})]})]})]})},Y.sessionId)}return w.jsxs("div",{className:"flex flex-col h-full bg-muted/30",children:[w.jsx("div",{className:"p-3",children:w.jsxs(Ne,{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(Y=>w.jsx("button",{onClick:()=>O(Y),className:Ue("text-[10px] px-1.5 rounded-full transition-colors capitalize leading-none",h===Y?"text-foreground font-medium":"text-muted-foreground/60 hover:text-muted-foreground"),children:Y},Y)),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:[R.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&&W(G),R.map(W),!v&&N&&w.jsx("div",{ref:q,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=p.sidebarExtras)==null?void 0:H.call(p),b&&(U?w.jsxs("button",{onClick:()=>location.reload(),title:`This page was built from v${sd}, 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",sd," → 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:vs(),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:vs(),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),p=y.useRef(s);p.current=s;const h=y.useRef(t.getToken);h.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(R=>R!=null&&R===u.current,[]),O=y.useCallback(async()=>{var G;const R=u.current;if(R)try{const K=await(await wl(`/api/sessions/${R}/messages`,h.current)).json();r(Ej(K)),a(!!K.busy),(G=x.current)==null||G.call(x,Array.isArray(K.participants)&&K.participants.length>1)}catch{}},[]);y.useEffect(()=>{if(!e)return;const R=e.on(G=>{var K,U,W,H,Y,z;(K=b.current)==null||K.call(b,G);const q=G;if(q.type==="compact_marker")return _(q.sessionId)?r($=>[...$,{id:vs(),role:"assistant",blocks:[{type:"compact_marker",summary:q.summary??"",compactedCount:q.compactedCount??0}]}]):void 0;switch(G.type){case"thinking_delta":return _(G.sessionId)?r($=>Yr($,{type:"thinking",text:G.text})):void 0;case"text_delta":return _(G.sessionId)?r($=>Yr($,{type:"text",text:G.text})):void 0;case"tool_use":return _(G.sessionId)?r($=>Yr($,{type:"tool_use",tool:G.tool,toolUseId:G.toolUseId,input:G.input})):void 0;case"tool_use_input":return _(G.sessionId)?r($=>d$($,G.toolUseId,G.input)):void 0;case"tool_result":return _(G.sessionId)?r($=>Yr($,{type:"tool_result",toolUseId:G.toolUseId,output:G.output})):void 0;case"tool_result_image":return _(G.sessionId)?r($=>Yr($,{type:"image",src:G.dataUrl})):void 0;case"permission_request":return _(G.sessionId)?r($=>Yr($,{type:"permission_request",id:G.id,tool:G.tool,input:G.input})):void 0;case"question_request":return _(G.sessionId)?r($=>Yr($,{type:"question_request",id:G.id,questions:G.questions})):void 0;case"directives":return f.current?(U=v.current)==null?void 0:U.call(v,G.directives):void 0;case"session_id":return!f.current||u.current?void 0:(u.current=G.sessionId,(W=m.current)==null?void 0:W.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(Z=>Yr(Z,{type:"text",text:`
1847
+ `)},yne=0,Hc=[];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,I=j?j===N||j.contains(N):!1;if(I)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 R=r.current||C;return mne(R,S,b,R==="h"?k:T)},[]),u=y.useCallback(function(b){var S=b;if(!(!Hc.length||Hc[Hc.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)},[]),p=y.useCallback(function(b){n.current=cm(b),r.current=void 0},[]),h=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 Hc.push(a),e.setCallbacks({onScrollCapture:h,onWheelCapture:h,onTouchMoveCapture:m}),document.addEventListener("wheel",u,Fc),document.addEventListener("touchmove",u,Fc),document.addEventListener("touchstart",p,Fc),function(){Hc=Hc.filter(function(b){return b!==a}),document.removeEventListener("wheel",u,Fc),document.removeEventListener("touchmove",u,Fc),document.removeEventListener("touchstart",p,Fc)}},[]);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},Kc=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(h){!h||c.has(h)||(c.add(h),f(h.parentNode))};i.forEach(f);var p=function(h){!h||u.has(h)||Array.prototype.forEach.call(h.children,function(m){if(c.has(m))p(m);else try{var v=m.getAttribute(r),x=v!==null&&v!=="false",b=(Kc.get(m)||0)+1,S=(a.get(m)||0)+1;Kc.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 p(t),c.clear(),px++,function(){s.forEach(function(h){var m=Kc.get(h)-1,v=a.get(h)-1;Kc.set(h,m),a.set(h,v),m||(um.has(h)||h.removeAttribute(r),um.delete(h)),v||h.removeAttribute(n)}),px--,px||(Kc=new WeakMap,Kc=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,p]=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:p,onOpenToggle:y.useCallback(()=>p(h=>!h),[p]),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(Ds,{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(Ds,{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}})})}),_u="DialogContent",YE=y.forwardRef((e,t)=>{const n=Bz(_u,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Bi(_u,e.__scopeDialog);return w.jsx(Ds,{present:r||a.open,children:a.modal?w.jsx(Tne,{...i,ref:t}):w.jsx(Nne,{...i,ref:t})})});YE.displayName=_u;var Tne=y.forwardRef((e,t)=>{const n=Bi(_u,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(_u,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(_u,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 _s=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 ho=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(jl,{className:"h-4 w-4"}),w.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));ho.displayName=YE.displayName;function zl({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 As=y.forwardRef(({className:e,...t},n)=>w.jsx(XE,{ref:n,className:Ue("text-lg font-semibold leading-none tracking-tight",e),...t}));As.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,p]=y.useState(!1),[h,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 U=>{const W=await Dne(U,e);i(H=>new Map(H).set(U,W))},[e]);y.useEffect(()=>{D(""),a.forEach(U=>D(U))},[D,n]);const j=r.get("")??[],I=y.useCallback(U=>{try{const W=U.contentDocument;if(!(W!=null&&W.body))return;const H=Math.max(W.body.offsetWidth,W.body.scrollWidth),Y=Math.max(W.body.offsetHeight,W.body.scrollHeight);H&&Y&&S({w:H,h:Y})}catch{}},[]),F=y.useCallback(()=>{const U=_.current,W=b;if(!U||!W)return;const H=16,Y=U.clientWidth-H,z=U.clientHeight-H,$=Math.min(Y/W.w,z/W.h,1);x({scale:$,w:W.w,h:W.h})},[b]);y.useEffect(()=>{if(!(c!=null&&c.html)||h!=="fit"){x(null);return}const U=_.current;if(!U)return;const W=new ResizeObserver(()=>requestAnimationFrame(F));return W.observe(U),()=>W.disconnect()},[c==null?void 0:c.html,f,h,F]),y.useEffect(()=>{T&&e().then(U=>{U&&fetch("/api/data-sync/log",{headers:{Authorization:`Bearer ${U}`}}).then(W=>W.json()).then(P).catch(()=>{})})},[T]);const R=U=>{s(W=>{const H=new Set(W);return H.has(U)?H.delete(U):(H.add(U),r.has(U)||D(U)),H})},G=(U,W)=>{const H=new URLSearchParams({path:U});return O&&H.set("token",O),W&&H.set("dl","1"),`/api/workspace/raw?${H}`},q=async U=>{var Y;const W=await e();if(!W)return;k(W);const H=((Y=U.split(".").pop())==null?void 0:Y.toLowerCase())??"";if(H==="html"||H==="htm"){u({path:U,content:"",binary:!1,html:!0});return}if(Rne.has(H)){u({path:U,content:"",binary:!1,image:!0});return}if(Pne.has(H)){u({path:U,content:"",binary:!1,html:!0});return}try{const z=await fetch(`/api/workspace/file?path=${encodeURIComponent(U)}`,{headers:{Authorization:`Bearer ${W}`}});if(!z.ok)return;const $=await z.json();u({path:U,content:$.content,binary:!!$.binary})}catch{}},K=(U,W)=>w.jsx(w.Fragment,{children:U.map(H=>{const Y=H.path.split("/").pop();return w.jsxs("div",{children:[H.type==="dir"?w.jsxs("button",{onClick:()=>R(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+W*12},children:[w.jsx(Ps,{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:Y})]}):w.jsxs("button",{onClick:()=>q(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+W*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:Y})]}),H.type==="dir"&&a.has(H.path)&&K(r.get(H.path)??[],W+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(U=>D(U)),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."}):K(j,0)}),w.jsx(_s,{open:!!c,onOpenChange:U=>{U||(u(null),p(!1),m("fit"),S(null))},children:w.jsxs(ho,{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(U=>U==="fit"?"scroll":"fit"),className:"rounded-sm opacity-70 hover:opacity-100 text-muted-foreground",title:h==="fit"?"Switch to scrollable (1:1)":"Switch to scale-to-fit",children:h==="fit"?w.jsx(sG,{className:"w-4 h-4"}):w.jsx(hG,{className:"w-4 h-4"})}),w.jsx("button",{onClick:()=>p(U=>!U),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(zl,{className:Ue((c==null?void 0:c.html)&&"px-4 py-3 shrink-0 border-b"),children:w.jsx(As,{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",h==="fit"?"overflow-hidden flex items-center justify-center":"overflow-auto"):"flex-1 min-h-0 overflow-y-auto"),children:c!=null&&c.html?h==="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:U=>{I(U.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:U=>I(U.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(_s,{open:T,onOpenChange:C,children:w.jsxs(ho,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[w.jsx(zl,{children:w.jsx(As,{className:"text-sm",children:"Activity Log"})}),w.jsxs("div",{className:"overflow-y-auto flex-1 space-y-2",children:[N.map(U=>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:U.message}),w.jsx("span",{className:"text-[10px] text-muted-foreground shrink-0",children:Lne(U.date)})]}),U.files.length>0&&w.jsx("div",{className:"text-[11px] text-muted-foreground mt-0.5",children:U.files.map(W=>w.jsx("span",{className:"inline-block mr-2 font-mono",children:W},W))})]},U.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 h;const r=e.match(zne);if(!r)return e;let i=Number(r[1]);const a=r[2]?Number(r[2]):0,s=(h=r[3])==null?void 0:h.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"}),p=Um(u.toISOString(),n);return e.replace(r[0],`resets ${f}${p?` (in ${p})`:""}`)}var Bne=Object.defineProperty,$u=(e,t)=>Bne(e,"name",{value:t,configurable:!0}),Xz=!!(typeof window<"u"&&window.document&&window.document.createElement);function xs(e,t,{checkForDefaultPrevented:n=!0}={}){return $u(function(i){if(e==null||e(i),n===!1||!i||!i.defaultPrevented)return t==null?void 0:t(i)},"handleEvent")}$u(xs,"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}$u(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}$u(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}$u(Zz,"getActiveElement");function Qz(e){return e.tagName==="IFRAME"}$u(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 Bu(...e){return y.useCallback(Jz(...e),e)}QE(Bu,"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(h=>{var _;const{scope:m,children:v,...x}=h,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 p(h,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(`\`${h}\` must be used within \`${a}\``)}return wi(p,"useContext"),[f,p]}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 h=u(a)[`__scope${f}`];return{...c,...h}},{});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,p=Bu(r,f);if(!s){if(i||i===0)throw new Error(c?Xne(e):Yne(e));return i}const h=r3(a,s.props??{});return s.type!==y.Fragment&&(h.ref=r?p:f),y.cloneElement(s,h)});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,...p}=t,h=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=Bu(n,v),_=Array.from(h.layers),[O]=[...h.layersWithOutsidePointerEventsDisabled].slice(-1),k=O?_.indexOf(O):-1,T=m?_.indexOf(m):-1,C=h.layersWithOutsidePointerEventsDisabled.size>0,N=T>=k,P=y.useRef(!1),D=c3(R=>{s==null||s(R),u==null||u(R),R.defaultPrevented||f==null||f()},{ownerDocument:x,deferPointerDownOutside:i,isDeferredPointerDownOutsideRef:P,dismissableSurfaces:h.dismissableSurfaces,shouldHandlePointerDownOutside:y.useCallback(R=>{if(!(R instanceof Node))return!1;const G=[...h.branches].some(q=>q.contains(R));return N&&!G},[h.branches,N])}),j=u3(R=>{if(i&&P.current)return;const G=R.target;[...h.branches].some(K=>K.contains(G))||(c==null||c(R),u==null||u(R),R.defaultPrevented||f==null||f())},x),I=m?T===_.length-1:!1,F=Cv(R=>{R.key==="Escape"&&(a==null||a(R),!R.defaultPrevented&&f&&(R.preventDefault(),f()))});return y.useEffect(()=>{if(I)return x.addEventListener("keydown",F,{capture:!0}),()=>x.removeEventListener("keydown",F,{capture:!0})},[x,I,F]),y.useEffect(()=>{if(m)return r&&(h.layersWithOutsidePointerEventsDisabled.size===0&&(hM=x.body.style.pointerEvents,x.body.style.pointerEvents="none"),h.layersWithOutsidePointerEventsDisabled.add(m)),h.layers.add(m),$w(),()=>{r&&(h.layersWithOutsidePointerEventsDisabled.delete(m),h.layersWithOutsidePointerEventsDisabled.size===0&&(x.body.style.pointerEvents=hM))}},[m,x,r,h]),y.useEffect(()=>()=>{m&&(h.layers.delete(m),h.layersWithOutsidePointerEventsDisabled.delete(m),$w())},[m,h]),y.useEffect(()=>{const R=$n(()=>b({}),"handleUpdate");return document.addEventListener(zw,R),()=>document.removeEventListener(zw,R)},[]),w.jsx(Ov.div,{...p,ref:S,style:{pointerEvents:C?N?"auto":"none":void 0,...t.style},onFocusCapture:xs(t.onFocusCapture,j.onFocusCapture),onBlurCapture:xs(t.onBlurCapture,j.onBlurCapture),onPointerDownCapture:xs(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),p=y.useRef(new Map),h=y.useRef(()=>{});return y.useEffect(()=>{function m(){f.current=!1,i.current=!1,p.current.clear()}$n(m,"resetOutsideInteraction");function v(){return Array.from(p.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))||p.current.set(k.type,!0),k.type==="click"&&window.setTimeout(()=>{f.current&&h.current()},0)}$n(x,"handleInteractionCapture");function b(k){f.current&&p.current.set(k.type,!1)}$n(b,"handleInteractionBubble");const S=$n(k=>{if(k.target&&!u.current){let T=function(){n.removeEventListener("click",h.current);const N=v();m(),N||eS(rre,c,C,{discrete:!0})};if($n(T,"handleAndDispatchPointerDownOutsideEvent"),!s(k.target)){n.removeEventListener("click",h.current),m(),u.current=!1;return}const C={originalEvent:k};f.current=!0,i.current=r&&k.button===0,p.current.clear(),!r||k.button!==0?T():(n.removeEventListener("click",h.current),h.current=T,n.addEventListener("click",h.current,{once:!0}))}else n.removeEventListener("click",h.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",h.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),p=Uw(a),h=Uw(s),m=y.useRef(null),v=Bu(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,p),u.dispatchEvent(O),O.defaultPrevented||(f3(g3(rS(u)),{select:!0}),document.activeElement===S&&Xa(u))}return()=>{u.removeEventListener(mx,p),setTimeout(()=>{const O=new CustomEvent(gx,pM);u.addEventListener(gx,h),u.dispatchEvent(O),O.defaultPrevented||Xa(S??document.body,{select:!0}),u.removeEventListener(gx,h),mM.remove(x)},0)}}},[u,p,h,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"],ks=Math.min,oo=Math.max,gg=Math.round,pm=Math.floor,so=e=>({x:e,y:e}),xre={left:"right",right:"left",bottom:"top",top:"bottom"};function y3(e,t,n){return oo(e,ks(t,n))}function po(e,t){return typeof e=="function"?e(t):e}function Os(e){return e.split("-")[0]}function Uu(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=Uu(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=Uu(e);let a=Are(Os(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=Os(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=Os(t),f=a==="y",p=r.x+r.width/2-i.width/2,h=r.y+r.height/2-i.height/2,m=r[c]/2-i[c]/2;let v;switch(u){case"top":v={x:p,y:r.y-i.height};break;case"bottom":v={x:p,y:r.y+r.height};break;case"right":v={x:r.x+r.width,y:h};break;case"left":v={x:r.x-i.width,y:h};break;default:v={x:r.x,y:r.y}}const x=Uu(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:p="viewport",elementContext:h="floating",altBoundary:m=!1,padding:v=0}=po(t,e),x=b3(v),S=c[m?h==="floating"?"reference":"floating":h],_=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:p,strategy:u})),O=h==="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:p,y:h}=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:p,y:h,initialPlacement:r,placement:m,strategy:i,middlewareData:x,rects:f,platform:c,elements:{reference:e,floating:t}});p=k??p,h=T??h,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:p,y:h}=yM(f,m,u)),b=-1)}return{x:p,y:h,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:p=0}=po(e,t)||{};if(f==null)return{};const h=b3(p),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,I=ks(h[_],j),F=ks(h[O],j),R=P-b[x]-F,G=P/2-b[x]/2+D,q=y3(I,G,R),K=!u.arrow&&Uu(i)!=null&&G!==q&&a.reference[x]/2-(G<I?I:F)-b[x]/2<0,U=K?G<I?G-I:G-R:0;return{[v]:m[v]+U,data:{[v]:q,centerOffset:G-q-U,...K&&{alignmentOffset:U}},reset:K}}}),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:p=!0,crossAxis:h=!0,fallbackPlacements:m,fallbackStrategy:v="bestFit",fallbackAxisSideDirection:x="none",flipAlignment:b=!0,...S}=po(e,t);if((n=a.arrow)!=null&&n.alignmentOffset)return{};const _=Os(i),O=sa(c),k=Os(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 I=((r=a.flip)==null?void 0:r.overflows)||[];if(p&&j.push(D[_]),h){const q=wre(i,s,T);j.push(D[q[0]],D[q[1]])}if(I=[...I,{placement:i,overflows:j}],!j.every(q=>q<=0)){var F,R;const q=(((F=a.flip)==null?void 0:F.index)||0)+1,K=P[q];if(K&&(!(h==="alignment"?O!==sa(K):!1)||I.every(H=>sa(H.placement)===O?H.overflows[0]>0:!0)))return{data:{index:q,overflows:I},reset:{placement:K}};let U=(R=I.filter(W=>W.overflows[0]<=0).sort((W,H)=>W.overflows[1]-H.overflows[1])[0])==null?void 0:R.placement;if(!U)switch(v){case"bestFit":{var G;const W=(G=I.filter(H=>{if(N){const Y=sa(H.placement);return Y===O||Y==="y"}return!0}).map(H=>[H.placement,H.overflows.filter(Y=>Y>0).reduce((Y,z)=>Y+z,0)]).sort((H,Y)=>H[1]-Y[1])[0])==null?void 0:G[0];W&&(U=W);break}case"initialPlacement":U=c;break}if(i!==U)return{reset:{placement:U}}}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}=po(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=Os(n),c=Uu(n),u=sa(n)==="y",f=x3.has(s)?-1:1,p=a&&u?-1:1,h=po(t,e);let{mainAxis:m,crossAxis:v,alignmentAxis:x}=typeof h=="number"?{mainAxis:h,crossAxis:0,alignmentAxis:null}:{mainAxis:h.mainAxis||0,crossAxis:h.crossAxis||0,alignmentAxis:h.alignmentAxis};return c&&typeof x=="number"&&(v=c==="end"?x*-1:x),u?{x:v*p,y:m*f}:{x:m*f,y:v*p}}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}=po(e,t),p={x:n,y:r},h=await a.detectOverflow(t,f),m=sa(i),v=iS(m);let x=p[v],b=p[m];const S=(O,k)=>y3(k+h[O==="y"?"top":"left"],k,k-h[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:p=!0,crossAxis:h=!0}=po(e,t),m={x:i,y:a},v=sa(s),x=iS(v);let b=m[x],S=m[v];const _=po(f,t),O=typeof _=="number"?{mainAxis:_,crossAxis:0}:{mainAxis:(n=_.mainAxis)!=null?n:0,crossAxis:(r=_.crossAxis)!=null?r:0};if(p){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(h){var k,T;const C=x==="y"?"width":"height",N=x3.has(Os(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}=po(e,t),u=await i.detectOverflow(t,c),f=Os(n),p=Uu(n),h=sa(n)==="y",{width:m,height:v}=r.floating;let x,b;f==="top"||f==="bottom"?(x=f,b=p===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?"start":"end")?"left":"right"):(b=f,x=p==="end"?"top":"bottom");const S=v-u.top-u.bottom,_=m-u.left-u.right,O=ks(v-u[x],S),k=ks(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&&!p&&(h?P=m-2*oo(u.left,u.right):N=v-2*oo(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 Fu(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 wo(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 Ls(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(Fu(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/,ul=e=>!!e&&e!=="none";let vx;function sS(e){const t=ma(e)?ga(e):e;return ul(t.transform)||ul(t.translate)||ul(t.scale)||ul(t.rotate)||ul(t.perspective)||!lS()&&(ul(t.backdropFilter)||ul(t.filter))||Bre.test(t.willChange||"")||Ure.test(t.contain||"")}function Fre(e){let t=$l(e);for(;Ls(t)&&!zd(t);){if(sS(t))return t;if(Mv(t))return null;t=$l(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(Fu(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 $l(e){if(Fu(e)==="html")return e;const t=e.assignedSlot||e.parentNode||wM(e)&&e.host||wo(e);return wM(t)?t.host:t}function E3(e){const t=$l(e);return zd(t)?(e.ownerDocument||e).body:Ls(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=Ls(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 pu(e){const t=cS(e);if(!Ls(t))return so(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=so(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 Bl(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const i=e.getBoundingClientRect(),a=cS(e);let s=so(1);t&&(r?ma(r)&&(s=pu(r)):s=pu(e));const c=Kre(a,n,r)?_3(a):so(0);let u=(i.left+c.x)/s.x,f=(i.top+c.y)/s.y,p=i.width/s.x,h=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=pu(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,p*=S.x,h*=S.y,u+=k,f+=T,x=Pr(b),b=qw(x)}}return yg({width:p,height:h,x:u,y:f})}function Rv(e,t){const n=Iv(e).scrollLeft;return t?t.left+n:Bl(wo(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=wo(r),c=t?Mv(t.floating):!1;if(r===s||c&&a)return n;let u={scrollLeft:0,scrollTop:0},f=so(1);const p=so(0),h=Ls(r);if((h||!a)&&((Fu(r)!=="body"||Nv(s))&&(u=Iv(r)),h)){const v=Bl(r);f=pu(r),p.x=v.x+r.clientLeft,p.y=v.y+r.clientTop}const m=s&&!h&&!a?A3(s,u):so(0);return{width:n.width*f.x,height:n.height*f.y,x:n.x*f.x-u.scrollLeft*f.x+p.x+m.x,y:n.y*f.y-u.scrollTop*f.y+p.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=oo(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=oo(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight);let a=-t.scrollLeft+Rv(e);const s=-t.scrollTop;return ga(n).direction==="rtl"&&(a+=oo(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=wo(e),s=i.visualViewport;let c=a.clientWidth,u=a.clientHeight,f=0,p=0;if(s){const m=!lS()||t==="fixed";r?m||(f=-s.offsetLeft,p=-s.offsetTop):(c=s.width,u=s.height,m&&(f=s.offsetLeft,p=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:p}}function Xre(e,t){const n=Bl(e,!0,t==="fixed"),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=pu(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(wo(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)&&Fu(c)!=="body"),i=null;const a=ga(e).position==="fixed";let s=a?$l(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(h=>h!==s):i=c,s=$l(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,p=c.bottom,h=c.left;for(let m=1;m<s.length;m++){const v=EM(t,s[m],i);u=oo(v.top,u),f=ks(v.right,f),p=ks(v.bottom,p),h=oo(v.left,h)}return{width:f-h,height:p-u,x:h,y:u}}function Jre(e){const{width:t,height:n}=S3(e);return{width:t,height:n}}function eie(e,t,n){const r=Ls(t),i=wo(t),a=n==="fixed",s=Bl(e,!0,a,t);let c={scrollLeft:0,scrollTop:0};const u=so(0);if((r||!a)&&((Fu(t)!=="body"||Nv(i))&&(c=Iv(t)),r)){const m=Bl(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):so(0),p=s.left+c.scrollLeft-u.x-f.x,h=s.top+c.scrollTop-u.y-f.y;return{x:p,y:h,width:s.width,height:s.height}}function yx(e){return ga(e).position==="static"}function SM(e,t){if(!Ls(e)||ga(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return wo(e)===n&&(n=n.ownerDocument.body),n}function k3(e,t){const n=Pr(e);if(Mv(e))return n;if(!Ls(e)){let i=$l(e);for(;i&&!zd(i);){if(ma(i)&&!yx(i))return i;i=$l(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:wo,getClippingRect:Qre,getOffsetParent:k3,getElementRects:tie,getClientRects:Gre,getDimensions:Jre,getScale:pu,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=wo(e);function s(){var p;clearTimeout(i),(p=r)==null||p.disconnect(),r=null}function c(p,h){p===void 0&&(p=!1),h===void 0&&(h=1),s();const m=e.getBoundingClientRect(),{left:v,top:x,width:b,height:S}=m;if(p||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:oo(0,ks(1,h))||1};let P=!0;function D(j){const I=j[0].intersectionRatio;if(!O3(m,e.getBoundingClientRect()))return c();if(I!==h){if(!P)return c();I?c(!1,I):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),p=i||a?[...f?$d(f):[],...t?$d(t):[]]:[];p.forEach(_=>{i&&_.addEventListener("scroll",n),a&&_.addEventListener("resize",n)});const h=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?Bl(e):null;u&&S();function S(){const _=Bl(e);b&&!O3(b,_)&&n(),b=_,x=requestAnimationFrame(S)}return n(),()=>{var _;p.forEach(O=>{i&&O.removeEventListener("scroll",n),a&&O.removeEventListener("resize",n)}),h==null||h(),(_=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,[p,h]=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(p),j=u!=null,I=bx(u),F=bx(i),R=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(Y=>{const z={...Y,isPositioned:R.current!==!1};q.current&&!bg(D.current,z)&&(D.current=z,Sa.flushSync(()=>{h(z)}))})},[m,t,n,F,R]);Fm(()=>{f===!1&&D.current.isPositioned&&(D.current.isPositioned=!1,h(H=>({...H,isPositioned:!1})))},[f]);const q=y.useRef(!1);Fm(()=>(q.current=!0,()=>{q.current=!1}),[]),Fm(()=>{if(T&&(N.current=T),C&&(P.current=C),T&&C){if(I.current)return I.current(T,C,G);G()}},[T,C,G,I,j]);const K=y.useMemo(()=>({reference:N,floating:P,setReference:O,setFloating:k}),[O,k]),U=y.useMemo(()=>({reference:T,floating:C}),[T,C]),W=y.useMemo(()=>{const H={position:n,left:0,top:0};if(!U.floating)return H;const Y=AM(U.floating,p.x),z=AM(U.floating,p.y);return c?{...H,transform:"translate("+Y+"px, "+z+"px)",...C3(U.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:Y,top:z}},[n,c,U.floating,p.x,p.y]);return y.useMemo(()=>({...p,update:G,refs:K,elements:U,floatingStyles:W}),[p,G,K,U,W])}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(h=>{var _;const{scope:m,children:v,...x}=h,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 p(h,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(`\`${h}\` must be used within \`${a}\``)}return Ei(p,"useContext"),[f,p]}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 h=u(a)[`__scope${f}`];return{...c,...h}},{});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,p=Pv(r,f);if(!s){if(i||i===0)throw new Error(c?Iie(e):Mie(e));return i}const h=P3(a,s.props??{});return s.type!==y.Fragment&&(h.ref=r?p:f),y.cloneElement(s,h)});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,ws=(e,t)=>Fie(e,"name",{value:t,configurable:!0}),U3="Popper",[F3,H3]=N3(U3),[Hie,K3]=F3(U3),Kie=ws(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(ws(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]),p=Pv(n,f),h=y.useRef(null);y.useEffect(()=>{if(!i)return;const b=h.current;h.current=i.current,b!==h.current&&u(h.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:p})},"PopperAnchor")),q3="PopperContent",[Vie,zOe]=F3(q3),Wie=y.forwardRef(ws(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:p=[],collisionPadding:h=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,I=i+(s!=="center"?"-"+s:""),F=typeof h=="number"?h:{top:0,right:0,bottom:0,left:0,...h},R=Array.isArray(p)?p:[p],G=R.length>0,q={padding:F,boundary:R.filter(G3),altBoundary:G},{refs:K,floatingStyles:U,placement:W,isPositioned:H,middlewareData:Y}=mie({strategy:"fixed",placement:I,whileElementsMounted:ws((...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,...q}),f&&xie({...q}),wie({...q,apply:ws(({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",...q,boundary:G?q.boundary:void 0})]}),z=_.setPlacementState;xx(()=>(z(W),()=>{z(void 0)}),[W,z]);const[$,Z]=Dv(W),L=$3(b);xx(()=>{H&&(L==null||L())},[H,L]);const ae=(he=Y.arrow)==null?void 0:he.x,me=(ke=Y.arrow)==null?void 0:ke.y,de=((we=Y.arrow)==null?void 0:we.centerOffset)!==0,[Ee,Ge]=y.useState();return xx(()=>{O&&Ge(window.getComputedStyle(O).zIndex)},[O]),w.jsx("div",{ref:K.setFloating,"data-radix-popper-content-wrapper":"",style:{...U,transform:H?U.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Ee,"--radix-popper-transform-origin":[(fe=Y.transformOrigin)==null?void 0:fe.x,(pt=Y.transformOrigin)==null?void 0:pt.y].join(" "),...((qe=Y.hide)==null?void 0:qe.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:t.dir,children:w.jsx(Vie,{scope:r,placedSide:$,placedAlign:Z,onArrowChange:N,arrowX:ae,arrowY:me,shouldHideArrow:de,children:w.jsx(z3.div,{"data-side":$,"data-align":Z,...S,ref:T,style:{...S.style,animation:H?(Oe=S.style)==null?void 0:Oe.animation:"none"}})})})},"PopperContent"));function G3(e){return e!==null}ws(G3,"isNotNull");var Yie=ws(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,p]=Dv(n),h={start:"0%",center:"50%",end:"100%"}[p],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?h:`${m}px`,b=`${-u}px`):f==="top"?(x=s?h:`${m}px`,b=`${r.floating.height+u}px`):f==="right"?(x=`${-u}px`,b=s?h:`${v}px`):f==="left"&&(x=`${r.floating.width+u}px`,b=s?h:`${v}px`),{data:{x,y:b}}}}),"transformOrigin");function Dv(e){const[t,n="center"]=e.split("-");return[t,n]}ws(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,mo=(e,t)=>rae(e,"name",{value:t,configurable:!0});function V3(e,t){return y.useReducer((n,r)=>t[n][r]??n,e)}mo(V3,"useStateMachine");var W3=mo(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??ru(r.current),s.current=void 0):a.current="none"},[u]),kM(()=>{const p=r.current,h=i.current;if(h!==e){const v=a.current,x=ru(p);e?(s.current=x,f("MOUNT")):x==="none"||(p==null?void 0:p.display)==="none"?f("UNMOUNT"):f(h&&v!==x?"ANIMATION_OUT":"UNMOUNT"),i.current=e}},[e,f]),kM(()=>{if(t){let p;const h=t.ownerDocument.defaultView??window,m=mo(x=>{const S=ru(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",p=h.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=_)})}},"handleAnimationEnd"),v=mo(x=>{x.target===t&&(a.current=ru(r.current))},"handleAnimationStart");return t.addEventListener("animationstart",v),t.addEventListener("animationcancel",m),t.addEventListener("animationend",m),()=>{h.clearTimeout(p),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(p=>{if(p){const h=getComputedStyle(p);r.current=h,s.current=ru(h)}else r.current=null;n(p)},[])}}mo(Y3,"usePresence");function Ww(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}mo(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)}}},[])}mo(X3,"useStableComposedRefs");function ru(e){return(e==null?void 0:e.animationName)||"none"}mo(ru,"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)}mo(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(p=>{var h;if(c){const m=n$(p)?p(e):p;m!==e&&((h=s.current)==null||h.call(s,m))}else a(p)},[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),p=[{...n,state:a}];r&&p.push(r);const[h,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},...p),v=h.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?{...h,state:i}:h,[h,i]);return y.useEffect(()=>{u&&!Object.is(i,h.state)&&m({type:TM,state:i})},[i,h.state,u]),[b,m]}fh(lae,"useControllableStateReducer");var cae=Object.defineProperty,zs=(e,t)=>cae(e,"name",{value:t,configurable:!0}),fS="Popover",[r$,$Oe]=e3(fS,[H3]),dS=H3(),[uae,Hu]=r$(fS),fae=zs(e=>{const{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:s=!1}=e,c=dS(t),u=y.useRef(null),[f,p]=y.useState(!1),[h,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:h,onOpenChange:m,onOpenToggle:y.useCallback(()=>m(v=>!v),[m]),hasCustomAnchor:f,onCustomAnchorAdd:y.useCallback(()=>p(!0),[]),onCustomAnchorRemove:y.useCallback(()=>p(!1),[]),modal:s,children:n})})},"Popover"),dae="PopoverTrigger",hae=y.forwardRef(zs(function(t,n){const{__scopePopover:r,...i}=t,a=Hu(dae,r),s=dS(r),c=Bu(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:xs(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=zs(e=>{const{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=Hu(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(zs(function(t,n){const r=mae(Bd,t.__scopePopover),{forceMount:i=r.forceMount,...a}=t,s=Hu(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(zs(function(t,n){const r=Hu(Bd,t.__scopePopover),i=y.useRef(null),a=Bu(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:xs(t.onCloseAutoFocus,c=>{var u;c.preventDefault(),s.current||(u=r.triggerRef.current)==null||u.focus()}),onPointerDownOutside:xs(t.onPointerDownOutside,c=>{const u=c.detail.originalEvent,f=u.button===0&&u.ctrlKey===!0,p=u.button===2||f;s.current=p},{checkForDefaultPrevented:!1}),onFocusOutside:xs(t.onFocusOutside,c=>c.preventDefault(),{checkForDefaultPrevented:!1})})})},"PopoverContentModal")),xae=y.forwardRef(zs(function(t,n){const r=Hu(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,p;(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;((p=r.triggerRef.current)==null?void 0:p.contains(c))&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&a.current&&s.preventDefault()}})},"PopoverContentNonModal")),a$=y.forwardRef(zs(function(t,n){const{__scopePopover:r,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:s,disableOutsidePointerEvents:c,onEscapeKeyDown:u,onPointerDownOutside:f,onFocusOutside:p,onInteractOutside:h,...m}=t,v=Hu(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:h,onEscapeKeyDown:u,onPointerDownOutside:f,onFocusOutside:p,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"}zs(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 p=await e();if(!p)return;i=Date.now();const h=await fetch("/api/claude-usage",{headers:{Authorization:`Bearer ${p}`}});if(!r)return;if(h.status===204){n(null);return}if(h.status!==200)return;const m=await h.json();if(!r||!((f=m==null?void 0:m.limits)!=null&&f.length))return;n(m)}catch(p){console.warn("[MachineStats] claude usage poll failed",p)}},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 od=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),[p,h]=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(od),_=y.useRef(t);_.current!==t&&(_.current=t,S.current=od);const O=y.useCallback(async(P,D)=>{const j=await e();if(!j||D!=null&&D.aborted)return null;const I=await fetch(`/api/sessions?${new URLSearchParams(P)}`,{signal:D,headers:{Authorization:`Bearer ${j}`}});if(!I.ok)return null;const F=await I.json();return Array.isArray(F==null?void 0:F.sessions)?F:null},[e]),k=y.useCallback(async(P,D,j)=>{const I=[];let F,R=null;for(;I.length<P;){const G={filter:D,limit:String(Math.min(od,P-I.length))};F&&(G.before=F);const q=await O(G,j);if(!q)return null;if(I.push(...q.sessions),R=q.nextCursor,!R||!q.sessions.length)break;F=R}return{sessions:I,nextCursor:R}},[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(),h({}),k(S.current,t,P.signal).then(I=>{!I||P.signal.aborted||(a(I.sessions),c(I.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(od),before:s},P.signal).then(I=>{!I||P.signal.aborted||D!==b.current||(a(F=>{const R=new Set(F.map(q=>q.sessionId)),G=[...F,...I.sessions.filter(q=>!R.has(q.sessionId))];return S.current=Math.max(od,G.length),G}),c(I.nextCursor))}).catch(()=>{}).finally(()=>{P.signal.aborted||f(!1)})},[s,u,O]),C=y.useMemo(()=>{const P=new Map;for(const D of Object.values(p))P.set(D.sessionId,D);for(const D of i)P.set(D.sessionId,D);return P},[i,p]),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||h(I=>{const F={...I};for(const R of j.sessions)F[R.sessionId]=R;return F})}).catch(()=>{}),()=>{D=!0}},[N,C,O]),{sessions:i,cursor:s,loading:u,byId:C,loadMore:T}}const sd="0.1.111";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 ld="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:`${ld} text-purple-400`}):(t==null?void 0:t.type)==="mention"?w.jsx(Wq,{className:`${ld} text-blue-400`}):(t==null?void 0:t.type)==="channel"?w.jsx(tG,{className:`${ld} text-green-400`}):e.sessionId.startsWith("slack-")?w.jsx(xw,{className:`${ld} text-yellow-400`}):w.jsx(xw,{className:`${ld} 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 p=_a(),[h,m]=y.useState(()=>localStorage.getItem(PM)||"mine"),[v,x]=y.useState(()=>localStorage.getItem(DM)==="true"),[b,S]=y.useState(""),_=y.useRef(null);function O(Y){m(Y),localStorage.setItem(PM,Y)}function k(){const Y=!v;x(Y),localStorage.setItem(DM,String(Y))}const T=y.useMemo(()=>[t,...Object.keys(c)].filter(Y=>!!Y),[t,c]),{sessions:C,cursor:N,loading:P,byId:D,loadMore:j}=zae({getToken:e,filter:h,refreshKey:i,hydrateIds:T}),I=y.useMemo(()=>Fae(c,D,h),[c,D,h]),F=I.length,R=y.useMemo(()=>v?[...I].sort((Y,z)=>z.lastModified-Y.lastModified):C,[v,I,C]),G=t&&!R.some(Y=>Y.sessionId===t)?D.get(t):void 0;y.useEffect(()=>{_.current&&_.current.scrollIntoView({block:"nearest"})},[t,R,G]);const q=y.useRef(null),K=y.useRef(j);K.current=j,y.useEffect(()=>{const Y=q.current;if(!Y||!N||v)return;const z=new IntersectionObserver($=>{$.some(Z=>Z.isIntersecting)&&K.current()},{rootMargin:"300px"});return z.observe(Y),()=>z.disconnect()},[N,P,v]),y.useEffect(()=>{e().then(Y=>Y?fetch("/api/version",{headers:{Authorization:`Bearer ${Y}`}}):null).then(Y=>Y==null?void 0:Y.json()).then(Y=>Y&&S(Y.version)).catch(()=>{})},[]);const U=!!b&&b!=="unknown"&&sd!=="dev"&&b!==sd;y.useEffect(()=>{U&&console.warn(`[shraga] stale client bundle: built from v${sd}, server runs v${b} — rebuild dist/client`)},[U,b]);function W(Y){const z=c[Y.sessionId],$=u.has(Y.sessionId)||Y.runStatus==="running"||Y.scheduleRunStatus==="running",Z=!$&&(!!Y.lastStopReason||Y.scheduleRunStatus==="error"||Y.scheduleRunStatus==="aborted"),L=$?"border-amber-500":Z?"border-red-500":z?"border-blue-500":"",ae=!!($||Z||z);return w.jsx("button",{ref:Y.sessionId===t?_:void 0,onClick:()=>n(Y.sessionId,Y.title),className:Ue("w-full text-left px-3 py-2.5 text-sm transition-colors hover:bg-accent/50 group",ae?`rounded-r-lg border-l-[3px] ${L}`:"rounded-lg",t===Y.sessionId&&"bg-accent"),children:w.jsxs("div",{className:"flex items-start gap-2",children:[Bae(Y),w.jsxs("div",{className:"min-w-0 flex-1",children:[w.jsx("span",{className:Ue("block truncate text-sm leading-snug",z&&"font-semibold"),children:Y.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(Y)||Y.userName}),w.jsx("span",{className:"text-[10px] text-muted-foreground/50",children:"·"}),w.jsx("span",{className:"text-[10px] text-muted-foreground",children:$ae(Y.lastModified)})]})]})]})},Y.sessionId)}return w.jsxs("div",{className:"flex flex-col h-full bg-muted/30",children:[w.jsx("div",{className:"p-3",children:w.jsxs(Ne,{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(Y=>w.jsx("button",{onClick:()=>O(Y),className:Ue("text-[10px] px-1.5 rounded-full transition-colors capitalize leading-none",h===Y?"text-foreground font-medium":"text-muted-foreground/60 hover:text-muted-foreground"),children:Y},Y)),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:[R.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&&W(G),R.map(W),!v&&N&&w.jsx("div",{ref:q,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=p.sidebarExtras)==null?void 0:H.call(p),b&&(U?w.jsxs("button",{onClick:()=>location.reload(),title:`This page was built from v${sd}, 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",sd," → 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:vs(),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:vs(),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),p=y.useRef(s);p.current=s;const h=y.useRef(t.getToken);h.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(R=>R!=null&&R===u.current,[]),O=y.useCallback(async()=>{var G;const R=u.current;if(R)try{const K=await(await wl(`/api/sessions/${R}/messages`,h.current)).json();r(Ej(K)),a(!!K.busy),(G=x.current)==null||G.call(x,Array.isArray(K.participants)&&K.participants.length>1)}catch{}},[]);y.useEffect(()=>{if(!e)return;const R=e.on(G=>{var K,U,W,H,Y,z;(K=b.current)==null||K.call(b,G);const q=G;if(q.type==="compact_marker")return _(q.sessionId)?r($=>[...$,{id:vs(),role:"assistant",blocks:[{type:"compact_marker",summary:q.summary??"",compactedCount:q.compactedCount??0}]}]):void 0;switch(G.type){case"thinking_delta":return _(G.sessionId)?r($=>Yr($,{type:"thinking",text:G.text})):void 0;case"text_delta":return _(G.sessionId)?r($=>Yr($,{type:"text",text:G.text})):void 0;case"tool_use":return _(G.sessionId)?r($=>Yr($,{type:"tool_use",tool:G.tool,toolUseId:G.toolUseId,input:G.input})):void 0;case"tool_use_input":return _(G.sessionId)?r($=>d$($,G.toolUseId,G.input)):void 0;case"tool_result":return _(G.sessionId)?r($=>Yr($,{type:"tool_result",toolUseId:G.toolUseId,output:G.output})):void 0;case"tool_result_image":return _(G.sessionId)?r($=>Yr($,{type:"image",src:G.dataUrl})):void 0;case"permission_request":return _(G.sessionId)?r($=>Yr($,{type:"permission_request",id:G.id,tool:G.tool,input:G.input})):void 0;case"question_request":return _(G.sessionId)?r($=>Yr($,{type:"question_request",id:G.id,questions:G.questions})):void 0;case"directives":return f.current?(U=v.current)==null?void 0:U.call(v,G.directives):void 0;case"session_id":return!f.current||u.current?void 0:(u.current=G.sessionId,(W=m.current)==null?void 0:W.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(Z=>Yr(Z,{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.`})),(Y=m.current)==null||Y.call(m,G.sessionId);const $=p.current;if($.length>0){const Z=$.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-BaZu5Ojo.js"></script>
16
+ <script type="module" crossorigin src="/assets/index-BNAh4GUs.js"></script>
17
17
  <link rel="stylesheet" crossorigin href="/assets/index-DIMte_k6.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.110",
3
+ "version": "0.1.111",
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",
@@ -55,7 +55,7 @@
55
55
  "prepublishOnly": "bun run guard:publish && bun run build"
56
56
  },
57
57
  "dependencies": {
58
- "@anthropic-ai/claude-agent-sdk": "^0.2.141",
58
+ "@anthropic-ai/claude-agent-sdk": "^0.3.272",
59
59
  "@livx.cc/mcp-firebase": "^0.1.14",
60
60
  "@radix-ui/react-accordion": "^1.2.2",
61
61
  "@radix-ui/react-dialog": "^1.1.4",
@@ -4,6 +4,12 @@
4
4
  // MCP_EXTRA_HEADERS — optional JSON object of extra headers sent with every request,
5
5
  // for servers that need a second credential beyond the bearer token (e.g. an
6
6
  // upstream app behind a proxy that gates its own admin ops on its own header).
7
+ // MCP_BRIDGE_TIMEOUT_MS — per-request bound for protocol calls (initialize, tools/list…), default 60s.
8
+ // MCP_BRIDGE_TOOL_TIMEOUT_MS — bound for tools/call, default 30min (a sync post_chat turn has no
9
+ // server-side wall clock). Without a bound, a frozen server hung the client forever on "connecting…".
10
+ const envMs = (v: string | undefined, fallback: number) => (Number(v) > 0 ? Number(v) : fallback);
11
+ const REQUEST_TIMEOUT_MS = envMs(process.env.MCP_BRIDGE_TIMEOUT_MS, 60_000);
12
+ const TOOL_TIMEOUT_MS = envMs(process.env.MCP_BRIDGE_TOOL_TIMEOUT_MS, 30 * 60_000);
7
13
  const baseUrl = (process.env.SHRAGA_URL || process.env.MCP_URL || process.env.UNCLAW_URL || 'http://localhost:3033').replace(/\/$/, '');
8
14
  const mcpPath = process.env.SHRAGA_MCP_PATH || process.env.MCP_PATH || '/mcp';
9
15
  const apiKey = process.env.SHRAGA_API_KEY || process.env.MCP_API_KEY || process.env.UNCLAW_API_KEY;
@@ -33,11 +39,23 @@ async function sendMessage(message: any): Promise<void> {
33
39
  if (sessionId) headers['mcp-session-id'] = sessionId;
34
40
  Object.assign(headers, extraHeaders);
35
41
 
36
- const res = await fetch(`${baseUrl}${mcpPath}`, {
37
- method: 'POST',
38
- headers,
39
- body: JSON.stringify(message),
40
- });
42
+ const limit = message?.method === 'tools/call' ? TOOL_TIMEOUT_MS : REQUEST_TIMEOUT_MS;
43
+ // The signal also bounds the body read below, not just the headers.
44
+ const signal = AbortSignal.timeout(limit);
45
+ let res: Response;
46
+ let text: string;
47
+ try {
48
+ res = await fetch(`${baseUrl}${mcpPath}`, {
49
+ method: 'POST',
50
+ headers,
51
+ body: JSON.stringify(message),
52
+ signal,
53
+ });
54
+ text = res.status === 204 ? '' : await res.text();
55
+ } catch (e: any) {
56
+ if (signal.aborted) throw new Error(`no response from ${baseUrl} for ${message?.method ?? 'message'} within ${limit}ms`);
57
+ throw e;
58
+ }
41
59
 
42
60
  // Capture session ID from server on initialize
43
61
  const newSession = res.headers.get('mcp-session-id');
@@ -49,7 +67,6 @@ async function sendMessage(message: any): Promise<void> {
49
67
 
50
68
  if (contentType.includes('text/event-stream')) {
51
69
  // SSE: parse and forward each data line
52
- const text = await res.text();
53
70
  for (const line of text.split('\n')) {
54
71
  if (line.startsWith('data: ')) {
55
72
  const data = line.slice(6).trim();
@@ -58,9 +75,8 @@ async function sendMessage(message: any): Promise<void> {
58
75
  }
59
76
  }
60
77
  }
61
- } else {
62
- const body = await res.text();
63
- if (body) process.stdout.write(body + '\n');
78
+ } else if (text) {
79
+ process.stdout.write(text + '\n');
64
80
  }
65
81
  }
66
82
 
@@ -213,30 +213,27 @@ export class DataSync {
213
213
  } catch (err) {
214
214
  console.error(`${TAG} Boot sync FAILED — serving stale data until the next pull:`, (err as Error).message);
215
215
  }
216
- // Defer heavy sync I/O (reads all tracked files + execSync) to avoid blocking
217
- // WS connections and page loads during startup.
216
+ // Defer the post-boot scans (both async, but they still read/spawn a lot) past startup
217
+ // traffic — WS connections and page loads.
218
218
  setTimeout(() => {
219
219
  this.scanForConflictMarkers()
220
220
  .catch(err => console.warn(`${TAG} Post-init conflict scan failed:`, (err as Error).message))
221
- // execSync inside the audit blocks too — keep it off the scan's tick so the two
222
- // never add up into one long freeze.
223
- .then(() => new Promise<void>(r => setImmediate(r)))
224
221
  .then(() => this.runIntegrityAudit())
225
222
  .catch(err => console.warn(`${TAG} Post-init integrity audit failed:`, (err as Error).message));
226
223
  }, 60_000);
227
224
  }
228
225
 
229
- /** Compare HEAD against HEAD~1 to catch regressions. Notifies owner — never auto-reverts. */
230
- private runIntegrityAudit(): void {
226
+ /** Compare HEAD against HEAD~1 to catch regressions. Notifies owner — never auto-reverts.
227
+ * Must stay async: the old execSync-per-file audit froze the event loop ~5 min on prod. */
228
+ private async runIntegrityAudit(): Promise<void> {
231
229
  try {
232
- const { audit } = require('./integrity-audit.ts');
230
+ const { audit } = await import('./integrity-audit.ts');
233
231
  // Churn paths are exempt for the same reason the shrink guard exempts them: a per-run worker
234
232
  // log is written by one leg, rewritten by the next, and truncated whenever a run is killed
235
233
  // mid-write. "invalid-json" on one of those is the normal end of an interrupted run, not
236
234
  // corruption of shared data — and since the file stays in HEAD, the audit re-reported it on
237
235
  // every sync. The audit exists to catch contacts.json being gutted.
238
- const issues = (audit('HEAD~1') as { kind: string; file: string; detail: string }[])
239
- .filter(i => !isChurnPath(i.file));
236
+ const issues = (await audit('HEAD~1', DATA_DIR)).filter(i => !isChurnPath(i.file));
240
237
  if (issues.length) {
241
238
  console.warn(`${TAG} ⚠️ DATA INTEGRITY: ${issues.length} issue(s) detected after sync:`);
242
239
  for (const { kind, file, detail } of issues) {
@@ -247,6 +247,9 @@ export class ClaudeCodeEngine implements AgentEngine {
247
247
  const setIfBlank = (key: string, value: string) => { if (!sdkEnv[key]?.trim()) sdkEnv[key] = value; };
248
248
  setIfBlank('BASH_DEFAULT_TIMEOUT_MS', process.env.AGENT_SHELL_TIMEOUT_MS?.trim() || '60000');
249
249
  setIfBlank('BASH_MAX_TIMEOUT_MS', process.env.AGENT_SHELL_MAX_TIMEOUT_MS?.trim() || '600000');
250
+ // The subscription login's claude.ai connectors (Gmail/Calendar/… and this agent's own MCP) load
251
+ // regardless of settingSources; headless they are auth stubs or self-recursion. Our MCPs come from mcp-config.
252
+ setIfBlank('ENABLE_CLAUDEAI_MCP_SERVERS', 'false');
250
253
  // Per-user subscription (workspace/users/<contactId>/.claude): run on that login, never the box's credentials.
251
254
  const accountDir = claudeAccountDir(opts.userEmail);
252
255
  if (accountDir) applyClaudeAccount(sdkEnv, accountDir);
@@ -267,6 +270,10 @@ export class ClaudeCodeEngine implements AgentEngine {
267
270
  env: sdkEnv,
268
271
  allowedTools,
269
272
  cwd,
273
+ // Omitted = ALL sources, so the host's ~/.claude (CLAUDE.md, MCP instructions, hooks) rode into every
274
+ // query — ~24k tokens re-written to cache per fresh turn on a dev box. Keep 'project': the deployment
275
+ // ships its own .claude/skills (e.g. shraga-circles' video-ad-pipeline) that the agent relies on.
276
+ settingSources: ['project'],
270
277
  permissionMode: permMode === 'bypassPermissions' ? 'acceptEdits' : permMode,
271
278
  maxTurns,
272
279
  includePartialMessages: true,
@@ -3,14 +3,21 @@
3
3
  * Detects: missing files, truncated content, degraded JSON arrays/objects, invalid JSON.
4
4
  *
5
5
  * CLI: bun run src/server/integrity-audit.ts [git-ref] [data-dir]
6
- * API: import { audit } from './integrity-audit.ts'
6
+ * API: import { audit } from './integrity-audit.ts' (async — never blocks the event loop)
7
7
  * Remote: run `bun run src/server/integrity-audit.ts` from $APP_DIR on the target host.
8
8
  *
9
9
  * When no ref is given, picks the most recent "auto: sync" commit as baseline.
10
10
  * Exit code 1 if issues found.
11
+ *
12
+ * Proportional by design: only files that DIFFER between ref and HEAD are examined (an unchanged
13
+ * file can't be missing, truncated or degraded, and its JSON validity was judged when it changed).
14
+ * Work is ≤3 git processes total — `diff --raw`, one `cat-file --batch-check` (byte sizes for the
15
+ * truncation check) and one `cat-file --batch` for changed .json only (≤16MB each) — regardless of
16
+ * repo size. Non-JSON blobs (media/binaries) are never loaded into memory.
17
+ * The old version ran `git show` via execSync for every tracked file (x2, plus every .json): on a
18
+ * 4.4k-file prod data repo that froze the server's event loop for ~5 min after every restart.
11
19
  */
12
20
 
13
- import { execSync } from 'node:child_process';
14
21
  import { resolve } from 'node:path';
15
22
  import { readdirSync } from 'node:fs';
16
23
 
@@ -18,26 +25,66 @@ import { readdirSync } from 'node:fs';
18
25
  // Guard (mirrors paths.ts): never silently fall back to bare ./data when named env dirs (data-*)
19
26
  // exist — that targets a stale, env-less data/ folder. An explicit [data-dir]/DATA_DIR overrides.
20
27
  function resolveDataDir(): string {
21
- if (process.argv[3]) return process.argv[3];
22
28
  if (process.env.DATA_DIR) return process.env.DATA_DIR;
23
29
  const root = process.cwd();
24
30
  if (readdirSync(root).some((f) => f.startsWith('data-')))
25
31
  throw new Error('DATA_DIR not set but named data dirs exist (data-*). Pass [data-dir] or set DATA_DIR.');
26
32
  return resolve(root, 'data');
27
33
  }
28
- const DATA_DIR = resolveDataDir();
29
34
 
30
35
  const SIZE_RATIO = 0.5;
31
36
  const COUNT_SLACK = 2;
32
37
  const STRUCTURAL_JSON = ['schedules.json', 'contacts.json', 'skills-defaults.json', 'api-keys.json'];
38
+ const MAX_JSON_BYTES = 16 * 1024 * 1024; // larger .json isn't read/parsed (bounds memory)
39
+ const GITLINK = '160000'; // submodule entry — not a blob
40
+ const ABSENT = '000000'; // side of an add/delete
41
+
42
+ async function git(dir: string, args: string[], input?: string): Promise<Uint8Array> {
43
+ const proc = Bun.spawn(['git', '-C', dir, ...args], {
44
+ stdin: input === undefined ? 'ignore' : new Blob([input]),
45
+ stdout: 'pipe',
46
+ stderr: 'pipe',
47
+ });
48
+ const [out, err] = await Promise.all([
49
+ new Response(proc.stdout).arrayBuffer(),
50
+ new Response(proc.stderr).text(),
51
+ ]);
52
+ const code = await proc.exited;
53
+ if (code !== 0) throw new Error(`git ${args[0]} failed (${code}): ${err.trim()}`);
54
+ return new Uint8Array(out);
55
+ }
56
+
57
+ // ignoreBOM keeps a leading BOM in the text, matching the old execSync decode (a BOM'd .json is invalid).
58
+ const decoder = new TextDecoder('utf-8', { ignoreBOM: true });
33
59
 
34
- function git(cmd: string): string {
35
- return execSync(`git -C "${DATA_DIR}" ${cmd}`, { encoding: 'utf-8' }).trim();
60
+ /** Byte sizes of many objects through ONE `git cat-file --batch-check` (no content read). Missing omitted. */
61
+ async function blobSizes(dir: string, shas: string[]): Promise<Map<string, number>> {
62
+ const sizes = new Map<string, number>();
63
+ if (!shas.length) return sizes;
64
+ for (const line of decoder.decode(await git(dir, ['cat-file', '--batch-check'], shas.join('\n') + '\n')).split('\n')) {
65
+ const [sha, type, size] = line.split(' ');
66
+ if (type && type !== 'missing' && size !== undefined) sizes.set(sha, Number(size));
67
+ }
68
+ return sizes;
36
69
  }
37
70
 
38
- function gitShow(ref: string, file: string): string | null {
39
- try { return execSync(`git -C "${DATA_DIR}" show ${ref}:${file}`, { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }); }
40
- catch { return null; }
71
+ /** Read many blobs through ONE `git cat-file --batch` process. Missing objects are omitted. */
72
+ async function readBlobs(dir: string, shas: string[]): Promise<Map<string, string>> {
73
+ const blobs = new Map<string, string>();
74
+ if (!shas.length) return blobs;
75
+ const buf = await git(dir, ['cat-file', '--batch'], shas.join('\n') + '\n');
76
+ let pos = 0;
77
+ while (pos < buf.length) {
78
+ const nl = buf.indexOf(10, pos);
79
+ if (nl < 0) break;
80
+ const [sha, type, size] = decoder.decode(buf.subarray(pos, nl)).split(' ');
81
+ pos = nl + 1;
82
+ if (type === 'missing' || size === undefined) continue;
83
+ const n = Number(size);
84
+ blobs.set(sha, decoder.decode(buf.subarray(pos, pos + n)));
85
+ pos += n + 1; // content + trailing LF
86
+ }
87
+ return blobs;
41
88
  }
42
89
 
43
90
  function jsonEntryCount(text: string): number | null {
@@ -55,54 +102,77 @@ export interface Issue {
55
102
  detail: string;
56
103
  }
57
104
 
58
- export function audit(ref: string): Issue[] {
105
+ export async function audit(ref: string, dataDir = resolveDataDir()): Promise<Issue[]> {
106
+ // `:oldmode newmode oldsha newsha status\0path\0` per changed path (renames split into D + A).
107
+ // --relative: scope to dataDir and report paths relative to it (dataDir may be a subfolder of the repo).
108
+ const tokens = decoder.decode(await git(dataDir, ['diff', '--raw', '-z', '--no-renames', '--no-abbrev', '--relative', ref, 'HEAD'])).split('\0');
109
+ const changes: { file: string; oldMode: string; newMode: string; oldSha: string; newSha: string }[] = [];
110
+ for (let i = 0; i + 1 < tokens.length; i += 2) {
111
+ const [oldMode, newMode, oldSha, newSha] = tokens[i].slice(1).split(' ');
112
+ changes.push({ file: tokens[i + 1], oldMode, newMode, oldSha, newSha });
113
+ }
114
+ const isBlob = (mode: string) => mode !== GITLINK && mode !== ABSENT;
115
+
116
+ // Sizes for every changed blob (cheap: headers only); content ONLY for small .json that needs parsing.
117
+ // Loading every changed blob (media/binaries) into memory spiked RSS by GBs on large syncs.
118
+ const sizes = await blobSizes(dataDir, [...new Set(changes.flatMap(c => [
119
+ ...(isBlob(c.oldMode) ? [c.oldSha] : []), ...(isBlob(c.newMode) ? [c.newSha] : []),
120
+ ]))]);
121
+ const wanted = new Set<string>();
122
+ const small = (sha: string) => (sizes.get(sha) ?? Infinity) <= MAX_JSON_BYTES;
123
+ const skipped = (file: string, sha: string) =>
124
+ console.warn(`[integrity-audit] skipped ${file}: ${sizes.get(sha)}B exceeds the ${MAX_JSON_BYTES}B JSON cap — not validated`);
125
+ for (const c of changes) {
126
+ if (!c.file.endsWith('.json') || !isBlob(c.newMode)) continue;
127
+ if (!small(c.newSha)) { skipped(c.file, c.newSha); continue; }
128
+ wanted.add(c.newSha);
129
+ if (!isBlob(c.oldMode) || !STRUCTURAL_JSON.includes(c.file)) continue;
130
+ if (small(c.oldSha)) wanted.add(c.oldSha);
131
+ else skipped(c.file, c.oldSha);
132
+ }
133
+ const blobs = await readBlobs(dataDir, [...wanted]);
134
+
59
135
  const issues: Issue[] = [];
60
- const lsBlobs = (r: string) => git(`ls-tree -r ${r}`)
61
- .split('\n').filter(Boolean)
62
- .filter(l => !l.startsWith('160000 ')) // skip submodule gitlinks
63
- .map(l => l.split('\t')[1]);
64
- const refFiles = lsBlobs(ref);
65
- const curSet = new Set(lsBlobs('HEAD'));
66
-
67
- for (const f of refFiles) {
68
- if (!curSet.has(f)) {
136
+ const jsonIssues: Issue[] = [];
137
+ for (const { file: f, oldMode, newMode, oldSha, newSha } of changes) {
138
+ if (isBlob(oldMode) && !isBlob(newMode)) {
69
139
  issues.push({ file: f, kind: 'missing', detail: 'in reference but not HEAD' });
70
140
  continue;
71
141
  }
72
- const refContent = gitShow(ref, f);
73
- const curContent = gitShow('HEAD', f);
74
- if (!refContent || !curContent) continue;
75
-
76
- // Size check
77
- if (refContent.length > 200 && curContent.length < refContent.length * SIZE_RATIO) {
78
- issues.push({ file: f, kind: 'truncated', detail: `${refContent.length}B → ${curContent.length}B (${Math.round(curContent.length / refContent.length * 100)}%)` });
142
+ const refSize = isBlob(oldMode) ? sizes.get(oldSha) : undefined;
143
+ const curSize = isBlob(newMode) ? sizes.get(newSha) : undefined;
144
+ const curContent = isBlob(newMode) ? blobs.get(newSha) : undefined;
145
+ const refContent = isBlob(oldMode) ? blobs.get(oldSha) : undefined;
146
+
147
+ // Size check (empty blobs are skipped, as before)
148
+ if (refSize && curSize && refSize > 200 && curSize < refSize * SIZE_RATIO) {
149
+ issues.push({ file: f, kind: 'truncated', detail: `${refSize}B → ${curSize}B (${Math.round(curSize / refSize * 100)}%)` });
79
150
  }
80
151
 
81
- // Structural JSON check
82
- if (STRUCTURAL_JSON.includes(f)) {
83
- const refCount = jsonEntryCount(refContent);
84
- const curCount = jsonEntryCount(curContent);
85
- if (refCount !== null && curCount !== null && curCount < refCount - COUNT_SLACK) {
86
- issues.push({ file: f, kind: 'degraded', detail: `${refCount} → ${curCount} entries` });
152
+ if (refContent && curContent) {
153
+ // Structural JSON check
154
+ if (STRUCTURAL_JSON.includes(f)) {
155
+ const refCount = jsonEntryCount(refContent);
156
+ const curCount = jsonEntryCount(curContent);
157
+ if (refCount !== null && curCount !== null && curCount < refCount - COUNT_SLACK) {
158
+ issues.push({ file: f, kind: 'degraded', detail: `${refCount} → ${curCount} entries` });
159
+ }
87
160
  }
88
161
  }
89
- }
90
162
 
91
- // Invalid JSON check on all current .json files
92
- for (const f of curSet) {
93
- if (!f.endsWith('.json')) continue;
94
- const content = gitShow('HEAD', f);
95
- if (!content) continue;
96
- try { JSON.parse(content); }
97
- catch { issues.push({ file: f, kind: 'invalid-json', detail: 'parse error' }); }
163
+ // Invalid JSON check on added/modified .json files
164
+ if (curContent && f.endsWith('.json')) {
165
+ try { JSON.parse(curContent); }
166
+ catch { jsonIssues.push({ file: f, kind: 'invalid-json', detail: 'parse error' }); }
167
+ }
98
168
  }
99
169
 
100
- return issues;
170
+ return [...issues, ...jsonIssues];
101
171
  }
102
172
 
103
- export function findBaselineRef(): string {
173
+ export async function findBaselineRef(dataDir = resolveDataDir()): Promise<string> {
104
174
  try {
105
- const log = git('log --oneline -50 --format=%H\\ %s');
175
+ const log = decoder.decode(await git(dataDir, ['log', '-50', '--format=%H %s']));
106
176
  for (const line of log.split('\n')) {
107
177
  const [hash, ...rest] = line.split(' ');
108
178
  const msg = rest.join(' ');
@@ -115,10 +185,11 @@ export function findBaselineRef(): string {
115
185
  // ── CLI ────────────────────────────────────────────────────────────────────
116
186
 
117
187
  if (import.meta.main) {
118
- const ref = process.argv[2] || findBaselineRef();
119
- console.log(`data-audit: HEAD vs ${ref.slice(0, 8)} (${DATA_DIR})\n`);
188
+ const dataDir = process.argv[3] || resolveDataDir();
189
+ const ref = process.argv[2] || await findBaselineRef(dataDir);
190
+ console.log(`data-audit: HEAD vs ${ref.slice(0, 8)} (${dataDir})\n`);
120
191
 
121
- const issues = audit(ref);
192
+ const issues = await audit(ref, dataDir);
122
193
  if (!issues.length) {
123
194
  console.log('✓ No issues found');
124
195
  process.exit(0);