groove-dev 0.27.50 → 0.27.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/node_modules/@groove-dev/cli/package.json +1 -1
- package/node_modules/@groove-dev/daemon/package.json +1 -1
- package/node_modules/@groove-dev/daemon/src/api.js +136 -19
- package/node_modules/@groove-dev/daemon/src/firstrun.js +1 -1
- package/node_modules/@groove-dev/daemon/src/process.js +2 -2
- package/node_modules/@groove-dev/daemon/src/providers/groove-network.js +22 -5
- package/node_modules/@groove-dev/gui/dist/assets/{index-Dd4u8X70.js → index-De-OWmBX.js} +1 -1
- package/node_modules/@groove-dev/gui/dist/index.html +1 -1
- package/node_modules/@groove-dev/gui/package.json +1 -1
- package/node_modules/@groove-dev/gui/src/stores/groove.js +10 -10
- package/package.json +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/daemon/package.json +1 -1
- package/packages/daemon/src/api.js +136 -19
- package/packages/daemon/src/firstrun.js +1 -1
- package/packages/daemon/src/process.js +2 -2
- package/packages/daemon/src/providers/groove-network.js +22 -5
- package/packages/gui/dist/assets/{index-Dd4u8X70.js → index-De-OWmBX.js} +1 -1
- package/packages/gui/dist/index.html +1 -1
- package/packages/gui/package.json +1 -1
- package/packages/gui/src/stores/groove.js +10 -10
|
@@ -26,7 +26,7 @@ Error generating stack: `+h.message+`
|
|
|
26
26
|
`),y=m.data.filter(w=>w.type==="tool_use").map(w=>{var M,N,j;return`${w.name}: ${typeof w.input=="string"?w.input.slice(0,80):((M=w.input)==null?void 0:M.command)||((N=w.input)==null?void 0:N.path)||((j=w.input)==null?void 0:j.pattern)||JSON.stringify(w.input||"").slice(0,80)}`}).join(`
|
|
27
27
|
`)),m.contextUsage!==void 0||m.tokensUsed!==void 0){const w=n().agents.map(M=>{if(M.id!==f)return M;const N={};return m.contextUsage!==void 0&&(N.contextUsage=m.contextUsage),m.tokensUsed!==void 0&&(N.tokensUsed=m.tokensUsed),{...M,...N}});e({agents:w})}const v=m.subtype==="stream";if(k&&k.trim()&&!v&&(m.subtype==="assistant"||m.subtype==="text"||m.type==="result"||m.type==="activity"&&typeof m.data=="string")){n().thinkingAgents.has(f)&&e(L=>{const T=new Set(L.thinkingAgents);return T.delete(f),{thinkingAgents:T}});const w=k.trim(),M={...n().chatHistory};M[f]||(M[f]=[]);const N=[...M[f]],j=N[N.length-1],$=j&&j.from==="agent"&&Date.now()-j.timestamp<8e3;if(!($&&(j.text===w||j.text.endsWith(w)))){if($){const L=m.subtype==="assistant"?`
|
|
28
28
|
|
|
29
|
-
`:" ";N[N.length-1]={...j,text:j.text+L+w,timestamp:Date.now()}}else N.push({from:"agent",text:w,timestamp:Date.now()});M[f]=N.slice(-100),e({chatHistory:M}),Ns("groove:chatHistory",M)}}if(y&&y.trim()){const w={...n().activityLog};w[f]||(w[f]=[]),w[f]=[...w[f].slice(-200),{timestamp:Date.now(),text:y.trim(),type:m.type,subtype:"tool"}],e({activityLog:w}),Ns("groove:activityLog",w)}break}case"agent:exit":{const f=n().agents.find(b=>b.id===i.agentId),m=(f==null?void 0:f.name)||i.agentId,k=i.status==="killed"||i.code===143||i.code===137,y=i.status==="completed"?`${m} completed`:k?`${m} stopped`:`${m} crashed (exit ${i.code})`,v=i.status==="completed"?"success":k?"info":"warning";n().addToast(v,y,i.error?i.error.slice(0,200):void 0),n().thinkingAgents.has(i.agentId)&&e(b=>{const w=new Set(b.thinkingAgents);return w.delete(i.agentId),{thinkingAgents:w}}),i.error&&i.agentId&&n().addChatMessage(i.agentId,"system",`Crashed: ${i.error}`),(f==null?void 0:f.role)==="planner"&&i.status==="completed"&&setTimeout(()=>n().checkRecommendedTeam(),1e3);break}case"phase2:spawned":n().addToast("info",`QC agent ${i.name} auto-spawned`,"Auditing phase 1 work");break;case"preview:ready":n().addToast("success","Project ready to preview",i.url,{label:"View Site",url:i.url},{persistent:!0});break;case"preview:failed":n().addToast("warning","Preview could not launch",i.reason?String(i.reason).slice(0,200):"Unknown error");break;case"preview:stopped":break;case"agent:stalled":{const f=i.agentName||i.agentId,m=Math.round((i.silentMs||0)/1e3);n().addToast("warning",`${f} may be stalled`,`No output for ${m}s — API stream may be hung`);break}case"knock:denied":{const f=i.agentName||i.agentId;n().addToast("warning",`${f} blocked`,`${i.toolName} on ${i.target} — ${i.reason||"scope conflict"}`);break}case"phase2:failed":n().addToast("error","QC agent failed to spawn",i.error||"Unknown error");break;case"agent:message_queued":n().addChatMessage(i.agentId,"system","Agent is working — message will be delivered when it finishes.");break;case"rotation:start":break;case"rotation:complete":{const f=i.agentId,m=i.oldAgentId;if(!f||!m)break;e(k=>{var $,z,L;const y={...k.chatHistory},v={...k.tokenTimeline},b={...k.activityLog},w={...k.chatInputs};($=y[m])!=null&&$.length&&(y[f]=[...y[m]],delete y[m]),(z=v[m])!=null&&z.length&&(v[f]=[...v[m]],delete v[m]),(L=b[m])!=null&&L.length&&(b[f]=[...b[m]],delete b[m]),w[m]&&(w[f]=w[m],delete w[m]);const M=k.detailPanel;let N=M,j=k.teamDetailPanels;if((M==null?void 0:M.type)==="agent"&&M.agentId===m){const T={type:"agent",agentId:f};N=T;const q=n().activeTeamId;j={...k.teamDetailPanels,[q]:T}}try{localStorage.setItem("groove:chatHistory",JSON.stringify(y))}catch{}return{chatHistory:y,tokenTimeline:v,activityLog:b,chatInputs:w,detailPanel:N,teamDetailPanels:j}});break}case"rotation:failed":n().addToast("error","Rotation failed",i.error);break;case"file:changed":{const f=n().editorRecentSaves[i.path];if(f&&Date.now()-f<2e3)break;e(m=>({editorChangedFiles:{...m.editorChangedFiles,[i.path]:i.timestamp}}));break}case"team:created":case"team:deleted":case"team:updated":n().fetchTeams();break;case"approval:request":e(f=>({pendingApprovals:[...f.pendingApprovals,i.data]}));break;case"approval:resolved":{const f=i.data;e(m=>({pendingApprovals:m.pendingApprovals.filter(k=>k.id!==f.id),resolvedApprovals:[f,...m.resolvedApprovals].slice(0,200)}));break}case"conflict:detected":n().addToast("error",`Scope conflict: ${i.agentName||"agent"}`,i.filePath?`File: ${i.filePath}`:void 0);break;case"qc:activated":n().addToast("info","QC agent activated",`${i.agentCount||"4+"} agents running`);break;case"journalist:cycle":e({journalistStatus:i.data||null});break;case"schedule:execute":n().addToast("info",`Scheduled agent spawned: ${i.name||i.role||"agent"}`);break;case"gateway:status":e({gateways:i.data||[]});break;case"federation:whitelist":e(f=>({federation:{...f.federation,whitelist:i.data||[]}}));break;case"federation:connection":e(f=>{const m=[...f.federation.connections],k=m.findIndex(y=>{var v;return y.ip===((v=i.data)==null?void 0:v.ip)});return k>=0?m[k]={...m[k],...i.data}:m.push(i.data),{federation:{...f.federation,connections:m}}});break;case"federation:pouch":case"federation:pouch-log":e(f=>({federation:{...f.federation,pouchLog:[...f.federation.pouchLog,i.data].slice(-200)}}));break;case"project-dir:changed":e({projectDir:(d=i.data)==null?void 0:d.projectDir,showProjectPicker:!1});break;case"tunnel.connected":e({activeTunnelId:((u=i.data)==null?void 0:u.id)||null}),n().fetchTunnels();break;case"tunnel.disconnected":e({activeTunnelId:null}),n().fetchTunnels();break;case"tunnel.health":{const f=n().savedTunnels.map(m=>{var k;return m.id===((k=i.data)==null?void 0:k.id)?{...m,latencyMs:i.data.latencyMs,healthy:i.data.healthy}:m});e({savedTunnels:f});break}case"subscription:updated":{const f={subscription:i.data};((p=i.data)==null?void 0:p.active)===!0&&!n().marketplaceAuthenticated&&(f.marketplaceAuthenticated=!0),e(f),E.get("/edition").then(m=>{e({edition:m.edition||"community",subscription:{plan:m.plan||"community",status:m.status||(m.subscriptionActive?"active":"none"),active:m.subscriptionActive===!0,features:m.features||[],seats:m.seats||1,periodEnd:m.periodEnd||null,cancelAtPeriodEnd:m.cancelAtPeriodEnd||!1}})}).catch(()=>{}),n().fetchTunnels();break}case"auth:expired":e({marketplaceAuthenticated:!1,marketplaceUser:null}),n().addToast("warning","Session expired","Please sign in again");break;case"network:node:status":e({networkNode:{...n().networkNode,...i.data||{}}});break;case"network:node:event":{const f=i.data||{};e(m=>({networkEvents:[...m.networkEvents,{...f,timestamp:f.timestamp||Date.now()}].slice(-100)}));break}case"signal_connected":{const f=i.data||i||{};e(m=>({networkEvents:[...m.networkEvents,{level:"connected",msg:f.msg||f.message||"Connected to signal",detail:f.detail||f.url,...f,timestamp:f.timestamp||Date.now()}].slice(-100)}));break}case"matched":{const f=i.data||i||{};e(m=>({networkEvents:[...m.networkEvents,{level:"session",msg:f.msg||f.message||"Session matched",detail:f.detail||f.peer||f.nodeId,...f,timestamp:f.timestamp||Date.now()}].slice(-100)}));break}case"network:status":e({networkStatus:{...n().networkStatus,...i.data||{}}});break;case"network:install:progress":{const{step:f,message:m,percent:k}=i.data||{};f==="done"?(e({networkInstalled:!0,networkInstallProgress:{installing:!1,step:null,message:null,percent:0,error:null}}),n().addToast("success","Network package installed")):e(f==="error"?{networkInstallProgress:{installing:!1,step:"error",message:m||"Install failed",percent:0,error:m||"Install failed"}}:{networkInstallProgress:{installing:!0,step:f||"progress",message:m||"",percent:Number.isFinite(k)?Math.max(0,Math.min(100,k)):n().networkInstallProgress.percent,error:null}});break}case"network:update:available":{const{installed:f,latest:m,updateAvailable:k}=i.data||{};e({networkVersion:{installed:f??n().networkVersion.installed,latest:m??n().networkVersion.latest,updateAvailable:!!k}});break}case"network:update:progress":{const{step:f,message:m,percent:k,version:y,error:v}=i.data||{};f==="done"?(e({networkUpdateProgress:{updating:!1,step:null,message:null,percent:0,error:null},networkVersion:{...n().networkVersion,installed:y||n().networkVersion.latest||n().networkVersion.installed,updateAvailable:!1}}),n().addToast("success","Network package updated")):f==="error"?(e({networkUpdateProgress:{updating:!1,step:"error",message:m||v||"Update failed",percent:0,error:m||v||"Update failed"}}),n().addToast("error","Network update failed",m||v)):e({networkUpdateProgress:{updating:!0,step:f||"progress",message:m||"",percent:Number.isFinite(k)?Math.max(0,Math.min(100,k)):n().networkUpdateProgress.percent,error:null}});break}case"config:updated":n().fetchBetaStatus(),n().fetchNetworkInstallStatus();break}},s.onclose=()=>{In&&(clearInterval(In),In=null),e({connected:!1,hydrated:!1,ws:null,daemonHost:null,tunneled:!1}),setTimeout(()=>n().connect(),2e3)},s.onerror=()=>s.close()},setActiveView(s){e({activeView:s})},async fetchTeams(){try{const s=await E.get("/teams");let c=s.teams||[];const i=s.defaultTeamId;try{const f=JSON.parse(localStorage.getItem("groove:teamOrder")||"[]");if(f.length){const m=Object.fromEntries(c.map(v=>[v.id,v])),k=f.filter(v=>m[v]).map(v=>m[v]),y=c.filter(v=>!f.includes(v.id));c=[...k,...y]}}catch{}const{activeTeamId:d}=n(),p=c.map(f=>f.id).includes(d)?d:i;e({teams:c,activeTeamId:p}),p&&localStorage.setItem("groove:activeTeamId",p)}catch{}},switchTeam(s){const{activeTeamId:c,detailPanel:i,teamDetailPanels:d}=n(),u={...d};c&&(u[c]=i);const p=u[s]||null;e({activeTeamId:s,detailPanel:p,teamDetailPanels:u}),localStorage.setItem("groove:activeTeamId",s)},async createTeam(s,c){try{const i={name:s};c&&(i.workingDir=c);const d=await E.post("/teams",i);return e({activeTeamId:d.id}),localStorage.setItem("groove:activeTeamId",d.id),n().addToast("success",`Team "${s}" created`),d}catch(i){throw n().addToast("error","Failed to create team",i.message),i}},async deleteTeam(s){const c=n().teams.find(i=>i.id===s);try{await E.delete(`/teams/${encodeURIComponent(s)}`);const i=c!=null&&c.isDefault?"wiped":"deleted";n().addToast("info",`Team "${c==null?void 0:c.name}" ${i}`)}catch(i){n().addToast("error","Failed to delete team",i.message)}},reorderTeams(s,c){const i=[...n().teams],[d]=i.splice(s,1);i.splice(c,0,d),e({teams:i});try{localStorage.setItem("groove:teamOrder",JSON.stringify(i.map(u=>u.id)))}catch{}},async cloneTeam(s){const c=n().teams.find(d=>d.id===s);if(!c)return;const i=n().agents.filter(d=>d.teamId===s);try{const d=await E.post("/teams",{name:`${c.name} (copy)`});e({activeTeamId:d.id}),localStorage.setItem("groove:activeTeamId",d.id);for(const u of i)await E.post("/agents",{role:u.role,name:u.name,provider:u.provider,model:u.model,scope:u.scope,teamId:d.id});return n().addToast("success",`Cloned "${c.name}" with ${i.length} agent${i.length!==1?"s":""}`),d}catch(d){n().addToast("error","Failed to clone team",d.message)}},async renameTeam(s,c){try{const i=await E.patch(`/teams/${encodeURIComponent(s)}`,{name:c});return e(d=>({teams:d.teams.map(u=>u.id===s?i:u)})),i}catch(i){throw n().addToast("error","Failed to rename team",i.message),i}},openDetail(s){const c=n().activeTeamId;e(i=>({detailPanel:s,teamDetailPanels:{...i.teamDetailPanels,[c]:s}}))},closeDetail(){const s=n().activeTeamId;e(c=>({detailPanel:null,teamDetailPanels:{...c.teamDetailPanels,[s]:null}}))},selectAgent(s){const c=n().activeTeamId,i={type:"agent",agentId:s};e(d=>({detailPanel:i,teamDetailPanels:{...d.teamDetailPanels,[c]:i}}))},clearSelection(){const s=n().activeTeamId;e(c=>({detailPanel:null,teamDetailPanels:{...c.teamDetailPanels,[s]:null}}))},toggleCommandPalette(){e(s=>({commandPaletteOpen:!s.commandPaletteOpen}))},toggleQuickConnect(){e(s=>({quickConnectOpen:!s.quickConnectOpen}))},setUpgradeModalOpen:s=>e({upgradeModalOpen:s}),setDetailPanelWidth(s){e({detailPanelWidth:s}),localStorage.setItem("groove:detailWidth",String(s))},setTerminalVisible(s){e({terminalVisible:s}),localStorage.setItem("groove:terminalVisible",String(s))},setTerminalHeight(s){e({terminalHeight:s}),localStorage.setItem("groove:terminalHeight",String(s))},setTerminalFullHeight(s){e({terminalFullHeight:s})},toggleNodeExpanded(s){const c={...n().expandedNodes};c[s]=!c[s],c[s]||delete c[s],e({expandedNodes:c}),Ns("groove:expandedNodes",c)},addToast(s,c,i,d,u={}){const p=++gY,f=!!u.persistent,m=u.duration;e(k=>({toasts:[...k.toasts,{id:p,type:s,message:c,detail:i,action:d,persistent:f,duration:m}]}))},removeToast(s){e(c=>({toasts:c.toasts.filter(i=>i.id!==s)}))},installUpdate(){var s,c;(c=(s=window.groove)==null?void 0:s.update)==null||c.installUpdate()},async checkMarketplaceAuth(){try{const s=await E.get("/auth/status");e({marketplaceAuthenticated:s.authenticated||!1,marketplaceUser:s.user||null});try{const c=await E.get("/edition");e({edition:c.edition||"community",subscription:{plan:c.plan||"community",status:c.status||(c.subscriptionActive?"active":"none"),active:c.subscriptionActive===!0,features:c.features||[],seats:c.seats||1,periodEnd:c.periodEnd||null,cancelAtPeriodEnd:c.cancelAtPeriodEnd||!1}})}catch{}}catch{e({marketplaceAuthenticated:!1,marketplaceUser:null})}},async marketplaceLogin(){try{const s=await E.get("/auth/login-url");s.url&&window.open(s.url,"_blank");const c=setInterval(async()=>{var i,d;try{const u=await E.get("/auth/status");if(u.authenticated){clearInterval(c),e({marketplaceAuthenticated:!0,marketplaceUser:u.user}),n().addToast("success",`Signed in as ${((i=u.user)==null?void 0:i.displayName)||((d=u.user)==null?void 0:d.id)||"user"}`);try{const p=await E.get("/edition");e({edition:p.edition||"community",subscription:{plan:p.plan||"community",status:p.status||(p.subscriptionActive?"active":"none"),active:p.subscriptionActive===!0,features:p.features||[],seats:p.seats||1,periodEnd:p.periodEnd||null,cancelAtPeriodEnd:p.cancelAtPeriodEnd||!1}})}catch{}setTimeout(async()=>{try{const p=await E.get("/edition");e({edition:p.edition||"community",subscription:{plan:p.plan||"community",status:p.status||(p.subscriptionActive?"active":"none"),active:p.subscriptionActive===!0,features:p.features||[],seats:p.seats||1,periodEnd:p.periodEnd||null,cancelAtPeriodEnd:p.cancelAtPeriodEnd||!1}})}catch{}},2e3)}}catch{}},2e3);setTimeout(()=>clearInterval(c),3e5)}catch(s){n().addToast("error","Login failed",s.message)}},async marketplaceLogout(){try{await E.post("/auth/logout"),e({marketplaceAuthenticated:!1,marketplaceUser:null}),n().addToast("info","Signed out of marketplace")}catch(s){n().addToast("error","Logout failed",s.message)}},async marketplaceCheckout(s){try{const c=await E.post("/auth/checkout",{skillId:s});return c.url&&window.open(c.url,"_blank"),c}catch(c){throw n().addToast("error","Checkout failed",c.message),c}},async fetchSubscriptionPlans(){return E.get("/subscription/plans")},async startCheckout(s){var c,i;try{const d=await E.post("/subscription/checkout",{priceId:s});return d.url&&((c=window.groove)!=null&&c.openExternal?window.groove.openExternal(d.url):window.open(d.url,"_blank")),d}catch(d){throw d.status===401||(i=d.message)!=null&&i.includes("Not authenticated")?(n().addToast("info","Please sign in to subscribe"),n().marketplaceLogin()):d.status===409?n().addToast("info","Already subscribed","Use Manage Subscription to switch plans"):n().addToast("error","Checkout failed",d.message),d}},async openPortal(){var s;try{const c=await E.post("/subscription/portal");return c.url&&((s=window.groove)!=null&&s.openExternal?window.groove.openExternal(c.url):window.open(c.url,"_blank")),c}catch(c){throw n().addToast("error","Portal failed",c.message),c}},async updateSeats(s){try{const c=await E.patch("/subscription",{seats:s});return e({subscription:{...n().subscription,...c}}),n().addToast("success",`Updated to ${s} seat${s!==1?"s":""}`),c}catch(c){throw n().addToast("error","Seat update failed",c.message),c}},async fetchApprovals(){try{const s=await E.get("/approvals");e({pendingApprovals:s.pending||[],resolvedApprovals:s.resolved||[]})}catch{}},async approveRequest(s){try{await E.post(`/approvals/${encodeURIComponent(s)}/approve`),e(c=>({pendingApprovals:c.pendingApprovals.filter(i=>i.id!==s)})),n().addToast("success","Approved")}catch(c){n().addToast("error","Approve failed",c.message)}},async rejectRequest(s,c=""){try{await E.post(`/approvals/${encodeURIComponent(s)}/reject`,{reason:c}),e(i=>({pendingApprovals:i.pendingApprovals.filter(d=>d.id!==s)})),n().addToast("info","Rejected")}catch(i){n().addToast("error","Reject failed",i.message)}},async checkRecommendedTeam(){var s;try{const c=await E.get("/recommended-team");if(!c||!((s=c.agents)!=null&&s.length)){e({recommendedTeam:null});return}const i=c.teamId||null;if(i){const d=n().agents.filter(f=>f.teamId===i&&f.role!=="planner"),u=c.agents.filter(f=>!f.phase||f.phase===1).map(f=>f.role);if(u.every(f=>d.some(m=>m.role===f))&&u.length>0){if(n()._delegatingTeamIds.has(i))return;e(f=>({recommendedTeam:null,_delegatingTeamIds:new Set([...f._delegatingTeamIds,i])}));try{const m=(await E.post("/recommended-team/launch",{teamId:i})).agents||[],k=m.map(y=>y.name).join(", ")||"";n().addToast("success","Planner delegated work",k?`→ ${k}`:void 0),m.length>0&&e(y=>({thinkingAgents:new Set([...y.thinkingAgents,...m.map(v=>v.id)])}))}finally{e(f=>{const m=new Set(f._delegatingTeamIds);return m.delete(i),{_delegatingTeamIds:m}})}return}}e({recommendedTeam:{...c,teamId:c.teamId||null}})}catch{e({recommendedTeam:null})}},async launchRecommendedTeam(s){var c;try{const i=((c=n().recommendedTeam)==null?void 0:c.teamId)||null;e({recommendedTeam:null}),n().addToast("info","Launching team...");const d={...s&&{agents:s},...i&&{teamId:i}},u=await E.post("/recommended-team/launch",d),p=[u.phase2Pending?`${u.phase2Pending} QC queued`:"",u.projectDir?`→ ${u.projectDir}/`:""].filter(Boolean).join(" · ");n().addToast("success",`Launched ${(u.launched||0)+(u.reused||0)} agents`,p||void 0);const f=u.agents||[];f.length>0&&e(k=>({thinkingAgents:new Set([...k.thinkingAgents,...f.map(y=>y.id)])}));const m=(d==null?void 0:d.teamId)||(u==null?void 0:u.teamId)||null;return m&&E.post("/cleanup",{teamId:m}).catch(()=>{}),u}catch(i){throw n().addToast("error","Launch failed",i.message),i}},async fetchImportedRepos(){try{const s=await E.get("/repos/imported");e({importedRepos:s})}catch{}},async previewRepo(s){return E.post("/repos/preview",{repoUrl:s})},async importRepo(s,c,i,d){e({importInProgress:!0});try{const u=await E.post("/repos/import",{repoUrl:s,targetPath:c,createTeam:i,teamName:d});return n().fetchImportedRepos(),u}finally{e({importInProgress:!1})}},async softRemoveRepo(s){await E.delete(`/repos/${encodeURIComponent(s)}/remove`),n().fetchImportedRepos()},async hardNukeRepo(s,c=!0){await E.delete(`/repos/${encodeURIComponent(s)}/nuke?deleteFiles=${c}`),n().fetchImportedRepos()},async fetchProjectDir(){try{const s=await E.get("/project-dir"),c=/^\/home\/[^/]+$/.test(s.projectDir)||s.projectDir==="/root";e({projectDir:s.projectDir,recentProjects:s.recentProjects||[],showProjectPicker:c||(s.recentProjects||[]).length===0})}catch{}},async setProjectDir(s){const c=await E.post("/project-dir",{path:s});e({projectDir:c.projectDir,recentProjects:c.recentProjects||[],showProjectPicker:!1})},toggleProjectPicker(){e(s=>({showProjectPicker:!s.showProjectPicker}))},async fetchTunnels(){try{const s=await E.get("/tunnels");e({savedTunnels:Array.isArray(s)?s:[]})}catch{}},async saveTunnel(s){const c=await E.post("/tunnels",s);return n().fetchTunnels(),c},async updateTunnel(s,c){const i=await E.patch(`/tunnels/${encodeURIComponent(s)}`,c);return n().fetchTunnels(),i},async deleteTunnel(s){await E.delete(`/tunnels/${encodeURIComponent(s)}`),n().fetchTunnels()},async testTunnel(s){return E.post(`/tunnels/${encodeURIComponent(s)}/test`)},async connectTunnel(s){var i,d;const c=await E.post(`/tunnels/${encodeURIComponent(s)}/connect`);return e({activeTunnelId:s}),n().fetchTunnels(),c.localPort&&c.name&&((d=(i=window.groove)==null?void 0:i.remote)!=null&&d.openWindow?window.groove.remote.openWindow(c.localPort,c.name):window.open(`http://localhost:${c.localPort}?instance=${encodeURIComponent(c.name)}`,"_blank")),c},async disconnectTunnel(s){var i,d;const c=n().savedTunnels.find(u=>u.id===s);await E.post(`/tunnels/${encodeURIComponent(s)}/disconnect`),e({activeTunnelId:null}),n().fetchTunnels(),c!=null&&c.localPort&&((d=(i=window.groove)==null?void 0:i.remote)!=null&&d.closeByPort)&&window.groove.remote.closeByPort(c.localPort)},async installTunnel(s){return E.post(`/tunnels/${encodeURIComponent(s)}/install`)},async startTunnel(s){return E.post(`/tunnels/${encodeURIComponent(s)}/start`)},async fetchJournalist(){try{const s=await E.get("/journalist");return e({journalistStatus:s}),s}catch{return null}},async triggerJournalistCycle(){try{const s=await E.post("/journalist/cycle");return n().addToast("success","Synthesis cycle triggered"),e({journalistStatus:s}),s}catch(s){throw n().addToast("error","Synthesis failed",s.message),s}},async spawnAgent(s){try{const c=n().activeTeamId,i=await E.post("/agents",{...s,teamId:c});return n().addToast("success",`Spawned ${i.name}`),i}catch(c){throw n().addToast("error","Spawn failed",c.message),c}},async killAgent(s,c=!1){try{await E.delete(`/agents/${encodeURIComponent(s)}?purge=${c}`),c&&e(i=>{const d={...i.chatHistory},u={...i.activityLog},p={...i.tokenTimeline};return delete d[s],delete u[s],delete p[s],Ns("groove:chatHistory",d),Ns("groove:activityLog",u),{chatHistory:d,activityLog:u,tokenTimeline:p}})}catch(i){n().addToast("error","Kill failed",i.message)}},async rotateAgent(s){try{return await E.post(`/agents/${encodeURIComponent(s)}/rotate`)}catch(c){throw n().addToast("error","Rotation failed",c.message),c}},async fetchProviders(){return E.get("/providers")},async fetchOnboardingStatus(){try{const s=await E.get("/onboarding/status");return s!=null&&s.complete&&(e({onboardingComplete:!0}),localStorage.setItem("groove:onboardingComplete","true")),s}catch{return null}},dismissOnboarding(){e({onboardingComplete:!0}),localStorage.setItem("groove:onboardingComplete","true"),E.post("/onboarding/dismiss").catch(()=>{})},async installProvider(s){try{const c=await E.post("/onboarding/install-provider",{provider:s});return n().addToast("success",`${s} installed`),c}catch(c){throw n().addToast("error",`Install failed: ${s}`,c.message),c}},async setDefaultProvider(s,c){try{await E.post("/onboarding/set-default",{provider:s,model:c}),n().addToast("success",`Default set to ${s} (${c})`)}catch(i){throw n().addToast("error","Failed to set default",i.message),i}},addChatMessage(s,c,i,d=!1){e(u=>{const p={...u.chatHistory};return p[s]||(p[s]=[]),p[s]=[...p[s].slice(-100),{from:c,text:i,timestamp:Date.now(),isQuery:d}],Ns("groove:chatHistory",p),{chatHistory:p}})},thinkingAgents:new Set,async stopAgent(s){try{await E.post(`/agents/${encodeURIComponent(s)}/stop`),e(c=>{const i=new Set(c.thinkingAgents);return i.delete(s),{thinkingAgents:i}}),n().addToast("info","Stopped agent")}catch(c){n().addToast("error","Stop failed",c.message)}},async instructAgent(s,c){var d,u,p;n().addChatMessage(s,"user",c,!1),e(f=>({thinkingAgents:new Set([...f.thinkingAgents,s])}));const i={chatHistory:[...n().chatHistory[s]||[]],activityLog:[...n().activityLog[s]||[]],tokenTimeline:[...n().tokenTimeline[s]||[]]};try{const f=await E.post(`/agents/${encodeURIComponent(s)}/instruct`,{message:c});if(f.status==="message_sent")return f;if(f.status==="message_queued")return e(k=>{const y=new Set(k.thinkingAgents);return y.delete(s),{thinkingAgents:y}}),f;const m=f;for(const k of["chatHistory","activityLog","tokenTimeline"])(d=i[k])!=null&&d.length&&e(y=>({[k]:{...y[k],[m.id]:[...i[k]]}}));return e(k=>{const y=new Set(k.thinkingAgents);return y.delete(s),y.add(m.id),{thinkingAgents:y}}),(u=n().chatHistory[m.id])!=null&&u.length&&Ns("groove:chatHistory",n().chatHistory),(p=n().activityLog[m.id])!=null&&p.length&&Ns("groove:activityLog",n().activityLog),n().selectAgent(m.id),m}catch(f){throw e(m=>{const k=new Set(m.thinkingAgents);return k.delete(s),{thinkingAgents:k}}),n().addChatMessage(s,"system",`failed: ${f.message}`),f}},async queryAgent(s,c){n().addChatMessage(s,"user",c,!0);try{const i=await E.post(`/agents/${encodeURIComponent(s)}/query`,{message:c});return n().addChatMessage(s,"agent",i.response),i}catch(i){throw n().addChatMessage(s,"system",`query failed: ${i.message}`),i}},async openFile(s){var d;if(n().editorFiles[s]||n().editorOpenTabs.includes(s)){e(u=>({editorActiveFile:s,editorOpenTabs:u.editorOpenTabs.includes(s)?u.editorOpenTabs:[...u.editorOpenTabs,s]}));return}const c=(d=s.split(".").pop())==null?void 0:d.toLowerCase();if(["png","jpg","jpeg","gif","svg","webp","ico","bmp","avif","mp4","webm","mov","avi","mkv","ogv"].includes(c)){e(u=>({editorActiveFile:s,editorOpenTabs:[...u.editorOpenTabs,s]}));return}try{const u=await E.get(`/files/read?path=${encodeURIComponent(s)}`);if(u.binary){n().addToast("warning","Binary file — cannot open");return}e(f=>({editorFiles:{...f.editorFiles,[s]:{content:u.content,originalContent:u.content,language:u.language,loadedAt:Date.now()}},editorActiveFile:s,editorOpenTabs:f.editorOpenTabs.includes(s)?f.editorOpenTabs:[...f.editorOpenTabs,s]}));const p=n().ws;(p==null?void 0:p.readyState)===1&&p.send(JSON.stringify({type:"editor:watch",path:s}))}catch(u){n().addToast("error","Failed to open file",u.message)}},closeFile(s){e(i=>{const d=i.editorOpenTabs.filter(m=>m!==s),u={...i.editorFiles};delete u[s];const p={...i.editorChangedFiles};delete p[s];let f=i.editorActiveFile;if(f===s){const m=i.editorOpenTabs.indexOf(s);f=d[Math.min(m,d.length-1)]||null}return{editorOpenTabs:d,editorFiles:u,editorChangedFiles:p,editorActiveFile:f}});const c=n().ws;(c==null?void 0:c.readyState)===1&&c.send(JSON.stringify({type:"editor:unwatch",path:s}))},setActiveFile(s){e({editorActiveFile:s})},setEditorSidebarWidth(s){e({editorSidebarWidth:s}),localStorage.setItem("groove:editorSidebarWidth",String(s))},updateFileContent(s,c){e(i=>({editorFiles:{...i.editorFiles,[s]:{...i.editorFiles[s],content:c}}}))},async saveFile(s){const c=n().editorFiles[s];if(c)try{await E.post("/files/write",{path:s,content:c.content}),e(i=>({editorFiles:{...i.editorFiles,[s]:{...i.editorFiles[s],originalContent:c.content}},editorChangedFiles:(()=>{const d={...i.editorChangedFiles};return delete d[s],d})(),editorRecentSaves:{...i.editorRecentSaves,[s]:Date.now()}})),n().addToast("success","File saved")}catch(i){n().addToast("error","Save failed",i.message)}},async reloadFile(s){try{const c=await E.get(`/files/read?path=${encodeURIComponent(s)}`);if(c.binary)return;e(i=>({editorFiles:{...i.editorFiles,[s]:{content:c.content,originalContent:c.content,language:c.language,loadedAt:Date.now()}},editorChangedFiles:(()=>{const d={...i.editorChangedFiles};return delete d[s],d})()}))}catch{}},dismissFileChange(s){e(c=>{const i={...c.editorChangedFiles};return delete i[s],{editorChangedFiles:i}})},async fetchTreeDir(s){try{const c=await E.get(`/files/tree?path=${encodeURIComponent(s)}`);e(i=>({editorTreeCache:{...i.editorTreeCache,[s]:c.entries}}))}catch{}},async createFile(s){try{await E.post("/files/create",{path:s});const c=s.includes("/")?s.split("/").slice(0,-1).join("/"):"";return await n().fetchTreeDir(c),n().addToast("success","File created"),!0}catch(c){return n().addToast("error","Create failed",c.message),!1}},async createDir(s){try{await E.post("/files/mkdir",{path:s});const c=s.includes("/")?s.split("/").slice(0,-1).join("/"):"";return await n().fetchTreeDir(c),n().addToast("success","Folder created"),!0}catch(c){return n().addToast("error","Create failed",c.message),!1}},async deleteFile(s){try{await E.delete(`/files/delete?path=${encodeURIComponent(s)}`),n().editorOpenTabs.includes(s)&&n().closeFile(s);const c=s.includes("/")?s.split("/").slice(0,-1).join("/"):"";return await n().fetchTreeDir(c),e(i=>{const d={...i.editorTreeCache};return delete d[s],{editorTreeCache:d}}),n().addToast("success","Deleted"),!0}catch(c){return n().addToast("error","Delete failed",c.message),!1}},async fetchFederationStatus(){try{const s=await E.get("/federation");return e(c=>{var i;return{federation:{...c.federation,peers:s.peers||[],whitelist:s.whitelist||[],connections:s.connections||[],ambassadors:((i=s.ambassadors)==null?void 0:i.ambassadors)||s.ambassadors||[]}}}),s}catch{return null}},async addToWhitelist(s,c=31415,i){try{await E.post("/federation/whitelist",{ip:s,port:c,...i&&{name:i}}),n().addToast("success",`Added ${s} to whitelist`),n().fetchFederationStatus()}catch(d){throw n().addToast("error","Whitelist failed",d.message),d}},async removeFromWhitelist(s){try{await E.delete(`/federation/whitelist/${encodeURIComponent(s)}`),n().addToast("info",`Removed ${s}`),n().fetchFederationStatus()}catch(c){n().addToast("error","Remove failed",c.message)}},setSelectedPeer(s){e(c=>({federation:{...c.federation,selectedPeerId:s}}))},async fetchPouchLog(s){try{const c=await E.get(`/federation/pouch/log${s?`?peerId=${encodeURIComponent(s)}`:""}`);e(i=>({federation:{...i.federation,pouchLog:c||[]}}))}catch{}},async sendPouch(s,c){try{const i=await E.post("/federation/pouch/send",{peerId:s,contract:c});return n().addToast("success","Pouch sent"),i}catch(i){throw n().addToast("error","Pouch send failed",i.message),i}},async fetchBetaStatus(){try{const s=await E.get("/beta/status");e({networkUnlocked:!!(s!=null&&s.unlocked)})}catch{}},async activateBeta(s){const c=await E.post("/beta/activate",{code:s});if(!(c!=null&&c.unlocked))throw new Error((c==null?void 0:c.message)||"Invalid invite code");return e({networkUnlocked:!0}),c},async deactivateBeta(){try{await E.post("/beta/deactivate"),e({networkUnlocked:!1,activeView:n().activeView==="network"?"agents":n().activeView})}catch(s){throw n().addToast("error","Deactivate failed",s.message),s}},async fetchNetworkNodeStatus(){try{const s=await E.get("/network/node/status"),c={networkNode:{...n().networkNode,...s||{}}};return s&&typeof s.installed=="boolean"&&(c.networkInstalled=s.installed),e(c),s}catch{return null}},async fetchNetworkInstallStatus(){try{const s=await E.get("/network/install/status");return s&&typeof s.installed=="boolean"&&e({networkInstalled:s.installed}),s}catch{return null}},async installNetworkPackage(){e({networkInstallProgress:{installing:!0,step:"starting",message:"Starting install…",percent:0,error:null}});try{await E.post("/network/install")}catch(s){e({networkInstallProgress:{installing:!1,step:"error",message:s.message,percent:0,error:s.message}}),n().addToast("error","Install failed",s.message)}},async uninstallNetworkPackage(){try{await E.post("/network/uninstall"),e({networkInstalled:!1,networkNode:{active:!1,status:"disconnected",nodeId:null,layers:null,model:null,sessions:0,hardware:null},networkInstallProgress:{installing:!1,step:null,message:null,percent:0,error:null}}),n().addToast("success","Network package uninstalled")}catch(s){throw n().addToast("error","Uninstall failed",s.message),s}},async fetchNetworkStatus(){try{const s=await E.get("/network/status");return e({networkStatus:{...n().networkStatus,...s||{}},networkStatusReachable:!0}),s}catch{return e({networkStatusReachable:!1}),null}},async checkNetworkUpdate(){try{const s=await E.get("/network/update/check");return s?(e({networkVersion:{installed:s.installed??null,latest:s.latest??null,updateAvailable:!!s.updateAvailable}}),s):null}catch{return null}},async updateNetworkPackage(){e({networkUpdateProgress:{updating:!0,step:"starting",message:"Starting update…",percent:0,error:null}});try{await E.post("/network/update")}catch(s){e({networkUpdateProgress:{updating:!1,step:"error",message:s.message,percent:0,error:s.message}}),n().addToast("error","Update failed",s.message)}},async startNetworkNode(){e({networkNode:{...n().networkNode,status:"connecting"}});try{const s=await E.post("/network/node/start");return e({networkNode:{...n().networkNode,active:!0,...s||{}}}),n().addToast("success","Node started","Connecting to the Groove network"),s}catch(s){throw e({networkNode:{...n().networkNode,status:"disconnected",active:!1}}),n().addToast("error","Node start failed",s.message),s}},async stopNetworkNode(){try{await E.post("/network/node/stop"),e({networkNode:{...n().networkNode,active:!1,status:"disconnected"}}),n().addToast("info","Node stopped")}catch(s){throw n().addToast("error","Node stop failed",s.message),s}},async renameFile(s,c){try{await E.post("/files/rename",{oldPath:s,newPath:c}),e(u=>{const p=u.editorOpenTabs.map(k=>k===s?c:k),f={...u.editorFiles};f[s]&&(f[c]=f[s],delete f[s]);const m=u.editorActiveFile===s?c:u.editorActiveFile;return{editorOpenTabs:p,editorFiles:f,editorActiveFile:m}});const i=s.includes("/")?s.split("/").slice(0,-1).join("/"):"",d=c.includes("/")?c.split("/").slice(0,-1).join("/"):"";return await n().fetchTreeDir(i),d!==i&&await n().fetchTreeDir(d),n().addToast("success","Renamed"),!0}catch(i){return n().addToast("error","Rename failed",i.message),!1}}}));function NX(e){O.useEffect(()=>{function n(s){for(const c of e){const i=c.meta?s.metaKey||s.ctrlKey:!0,d=c.shift?s.shiftKey:!s.shiftKey;if(s.key.toLowerCase()===c.key.toLowerCase()&&i&&d){s.preventDefault(),c.handler();return}}}return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[e])}function Bo(){return!!(window.groove||navigator.userAgent.includes("Electron"))}function _X(){var e;return((e=window.groove)==null?void 0:e.platform)||"browser"}function aQ(e){window.groove?window.groove.openExternal(e):window.open(e,"_blank")}async function OY(e={}){var n,s;return(s=(n=window.groove)==null?void 0:n.folders)!=null&&s.select?window.groove.folders.select(e):null}async function $X(e){var n,s;if((s=(n=window.groove)==null?void 0:n.integrations)!=null&&s.oauthStart)return window.groove.integrations.oauthStart(e);window.open(e,"_blank","noopener")}function CX(e){var n,s,c="";if(typeof e=="string"||typeof e=="number")c+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(n=0;n<i;n++)e[n]&&(s=CX(e[n]))&&(c&&(c+=" "),c+=s)}else for(s in e)e[s]&&(c&&(c+=" "),c+=s);return c}function kY(){for(var e,n,s=0,c="",i=arguments.length;s<i;s++)(e=arguments[s])&&(n=CX(e))&&(c&&(c+=" "),c+=n);return c}const vY=(e,n)=>{const s=new Array(e.length+n.length);for(let c=0;c<e.length;c++)s[c]=e[c];for(let c=0;c<n.length;c++)s[e.length+c]=n[c];return s},bY=(e,n)=>({classGroupId:e,validator:n}),QX=(e=new Map,n=null,s)=>({nextPart:e,validators:n,classGroupId:s}),nQ="-",jV=[],wY="arbitrary..",MY=e=>{const n=SY(e),{conflictingClassGroups:s,conflictingClassGroupModifiers:c}=e;return{getClassGroupId:u=>{if(u.startsWith("[")&&u.endsWith("]"))return jY(u);const p=u.split(nQ),f=p[0]===""&&p.length>1?1:0;return LX(p,f,n)},getConflictingClassGroupIds:(u,p)=>{if(p){const f=c[u],m=s[u];return f?m?vY(m,f):f:m||jV}return s[u]||jV}}},LX=(e,n,s)=>{if(e.length-n===0)return s.classGroupId;const i=e[n],d=s.nextPart.get(i);if(d){const m=LX(e,n+1,d);if(m)return m}const u=s.validators;if(u===null)return;const p=n===0?e.join(nQ):e.slice(n).join(nQ),f=u.length;for(let m=0;m<f;m++){const k=u[m];if(k.validator(p))return k.classGroupId}},jY=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const n=e.slice(1,-1),s=n.indexOf(":"),c=n.slice(0,s);return c?wY+c:void 0})(),SY=e=>{const{theme:n,classGroups:s}=e;return NY(s,n)},NY=(e,n)=>{const s=QX();for(const c in e){const i=e[c];SP(i,s,c,n)}return s},SP=(e,n,s,c)=>{const i=e.length;for(let d=0;d<i;d++){const u=e[d];_Y(u,n,s,c)}},_Y=(e,n,s,c)=>{if(typeof e=="string"){$Y(e,n,s);return}if(typeof e=="function"){CY(e,n,s,c);return}QY(e,n,s,c)},$Y=(e,n,s)=>{const c=e===""?n:zX(n,e);c.classGroupId=s},CY=(e,n,s,c)=>{if(LY(e)){SP(e(c),n,s,c);return}n.validators===null&&(n.validators=[]),n.validators.push(bY(s,e))},QY=(e,n,s,c)=>{const i=Object.entries(e),d=i.length;for(let u=0;u<d;u++){const[p,f]=i[u];SP(f,zX(n,p),s,c)}},zX=(e,n)=>{let s=e;const c=n.split(nQ),i=c.length;for(let d=0;d<i;d++){const u=c[d];let p=s.nextPart.get(u);p||(p=QX(),s.nextPart.set(u,p)),s=p}return s},LY=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,zY=e=>{if(e<1)return{get:()=>{},set:()=>{}};let n=0,s=Object.create(null),c=Object.create(null);const i=(d,u)=>{s[d]=u,n++,n>e&&(n=0,c=s,s=Object.create(null))};return{get(d){let u=s[d];if(u!==void 0)return u;if((u=c[d])!==void 0)return i(d,u),u},set(d,u){d in s?s[d]=u:i(d,u)}}},tP="!",SV=":",TY=[],NV=(e,n,s,c,i)=>({modifiers:e,hasImportantModifier:n,baseClassName:s,maybePostfixModifierPosition:c,isExternal:i}),PY=e=>{const{prefix:n,experimentalParseClassName:s}=e;let c=i=>{const d=[];let u=0,p=0,f=0,m;const k=i.length;for(let M=0;M<k;M++){const N=i[M];if(u===0&&p===0){if(N===SV){d.push(i.slice(f,M)),f=M+1;continue}if(N==="/"){m=M;continue}}N==="["?u++:N==="]"?u--:N==="("?p++:N===")"&&p--}const y=d.length===0?i:i.slice(f);let v=y,b=!1;y.endsWith(tP)?(v=y.slice(0,-1),b=!0):y.startsWith(tP)&&(v=y.slice(1),b=!0);const w=m&&m>f?m-f:void 0;return NV(d,b,v,w)};if(n){const i=n+SV,d=c;c=u=>u.startsWith(i)?d(u.slice(i.length)):NV(TY,!1,u,void 0,!0)}if(s){const i=c;c=d=>s({className:d,parseClassName:i})}return c},AY=e=>{const n=new Map;return e.orderSensitiveModifiers.forEach((s,c)=>{n.set(s,1e6+c)}),s=>{const c=[];let i=[];for(let d=0;d<s.length;d++){const u=s[d],p=u[0]==="[",f=n.has(u);p||f?(i.length>0&&(i.sort(),c.push(...i),i=[]),c.push(u)):i.push(u)}return i.length>0&&(i.sort(),c.push(...i)),c}},qY=e=>({cache:zY(e.cacheSize),parseClassName:PY(e),sortModifiers:AY(e),...MY(e)}),IY=/\s+/,RY=(e,n)=>{const{parseClassName:s,getClassGroupId:c,getConflictingClassGroupIds:i,sortModifiers:d}=n,u=[],p=e.trim().split(IY);let f="";for(let m=p.length-1;m>=0;m-=1){const k=p[m],{isExternal:y,modifiers:v,hasImportantModifier:b,baseClassName:w,maybePostfixModifierPosition:M}=s(k);if(y){f=k+(f.length>0?" "+f:f);continue}let N=!!M,j=c(N?w.substring(0,M):w);if(!j){if(!N){f=k+(f.length>0?" "+f:f);continue}if(j=c(w),!j){f=k+(f.length>0?" "+f:f);continue}N=!1}const $=v.length===0?"":v.length===1?v[0]:d(v).join(":"),z=b?$+tP:$,L=z+j;if(u.indexOf(L)>-1)continue;u.push(L);const T=i(j,N);for(let q=0;q<T.length;++q){const P=T[q];u.push(z+P)}f=k+(f.length>0?" "+f:f)}return f},VY=(...e)=>{let n=0,s,c,i="";for(;n<e.length;)(s=e[n++])&&(c=TX(s))&&(i&&(i+=" "),i+=c);return i},TX=e=>{if(typeof e=="string")return e;let n,s="";for(let c=0;c<e.length;c++)e[c]&&(n=TX(e[c]))&&(s&&(s+=" "),s+=n);return s},EY=(e,...n)=>{let s,c,i,d;const u=f=>{const m=n.reduce((k,y)=>y(k),e());return s=qY(m),c=s.cache.get,i=s.cache.set,d=p,p(f)},p=f=>{const m=c(f);if(m)return m;const k=RY(f,s);return i(f,k),k};return d=u,(...f)=>d(VY(...f))},XY=[],Qt=e=>{const n=s=>s[e]||XY;return n.isThemeGetter=!0,n},PX=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,AX=/^\((?:(\w[\w-]*):)?(.+)\)$/i,ZY=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,DY=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,HY=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,UY=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,BY=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,GY=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,vo=e=>ZY.test(e),qe=e=>!!e&&!Number.isNaN(Number(e)),bo=e=>!!e&&Number.isInteger(Number(e)),uT=e=>e.endsWith("%")&&qe(e.slice(0,-1)),Ms=e=>DY.test(e),qX=()=>!0,WY=e=>HY.test(e)&&!UY.test(e),NP=()=>!1,YY=e=>BY.test(e),FY=e=>GY.test(e),KY=e=>!we(e)&&!Me(e),JY=e=>Fo(e,VX,NP),we=e=>PX.test(e),mc=e=>Fo(e,EX,WY),_V=e=>Fo(e,iF,qe),eF=e=>Fo(e,ZX,qX),tF=e=>Fo(e,XX,NP),$V=e=>Fo(e,IX,NP),aF=e=>Fo(e,RX,FY),xu=e=>Fo(e,DX,YY),Me=e=>AX.test(e),B0=e=>Q1(e,EX),nF=e=>Q1(e,XX),CV=e=>Q1(e,IX),sF=e=>Q1(e,VX),oF=e=>Q1(e,RX),mu=e=>Q1(e,DX,!0),cF=e=>Q1(e,ZX,!0),Fo=(e,n,s)=>{const c=PX.exec(e);return c?c[1]?n(c[1]):s(c[2]):!1},Q1=(e,n,s=!1)=>{const c=AX.exec(e);return c?c[1]?n(c[1]):s:!1},IX=e=>e==="position"||e==="percentage",RX=e=>e==="image"||e==="url",VX=e=>e==="length"||e==="size"||e==="bg-size",EX=e=>e==="length",iF=e=>e==="number",XX=e=>e==="family-name",ZX=e=>e==="number"||e==="weight",DX=e=>e==="shadow",rF=()=>{const e=Qt("color"),n=Qt("font"),s=Qt("text"),c=Qt("font-weight"),i=Qt("tracking"),d=Qt("leading"),u=Qt("breakpoint"),p=Qt("container"),f=Qt("spacing"),m=Qt("radius"),k=Qt("shadow"),y=Qt("inset-shadow"),v=Qt("text-shadow"),b=Qt("drop-shadow"),w=Qt("blur"),M=Qt("perspective"),N=Qt("aspect"),j=Qt("ease"),$=Qt("animate"),z=()=>["auto","avoid","all","avoid-page","page","left","right","column"],L=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],T=()=>[...L(),Me,we],q=()=>["auto","hidden","clip","visible","scroll"],P=()=>["auto","contain","none"],C=()=>[Me,we,f],F=()=>[vo,"full","auto",...C()],R=()=>[bo,"none","subgrid",Me,we],se=()=>["auto",{span:["full",bo,Me,we]},bo,Me,we],ne=()=>[bo,"auto",Me,we],ce=()=>["auto","min","max","fr",Me,we],X=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],A=()=>["start","end","center","stretch","center-safe","end-safe"],Q=()=>["auto",...C()],Z=()=>[vo,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...C()],J=()=>[vo,"screen","full","dvw","lvw","svw","min","max","fit",...C()],Y=()=>[vo,"screen","full","lh","dvh","lvh","svh","min","max","fit",...C()],U=()=>[e,Me,we],fe=()=>[...L(),CV,$V,{position:[Me,we]}],ue=()=>["no-repeat",{repeat:["","x","y","space","round"]}],pe=()=>["auto","cover","contain",sF,JY,{size:[Me,we]}],Oe=()=>[uT,B0,mc],Se=()=>["","none","full",m,Me,we],de=()=>["",qe,B0,mc],ve=()=>["solid","dashed","dotted","double"],ct=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Le=()=>[qe,uT,CV,$V],vt=()=>["","none",w,Me,we],it=()=>["none",qe,Me,we],ut=()=>["none",qe,Me,we],bt=()=>[qe,Me,we],Ke=()=>[vo,"full",...C()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Ms],breakpoint:[Ms],color:[qX],container:[Ms],"drop-shadow":[Ms],ease:["in","out","in-out"],font:[KY],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Ms],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Ms],shadow:[Ms],spacing:["px",qe],text:[Ms],"text-shadow":[Ms],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",vo,we,Me,N]}],container:["container"],columns:[{columns:[qe,we,Me,p]}],"break-after":[{"break-after":z()}],"break-before":[{"break-before":z()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:T()}],overflow:[{overflow:q()}],"overflow-x":[{"overflow-x":q()}],"overflow-y":[{"overflow-y":q()}],overscroll:[{overscroll:P()}],"overscroll-x":[{"overscroll-x":P()}],"overscroll-y":[{"overscroll-y":P()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:F()}],"inset-x":[{"inset-x":F()}],"inset-y":[{"inset-y":F()}],start:[{"inset-s":F(),start:F()}],end:[{"inset-e":F(),end:F()}],"inset-bs":[{"inset-bs":F()}],"inset-be":[{"inset-be":F()}],top:[{top:F()}],right:[{right:F()}],bottom:[{bottom:F()}],left:[{left:F()}],visibility:["visible","invisible","collapse"],z:[{z:[bo,"auto",Me,we]}],basis:[{basis:[vo,"full","auto",p,...C()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[qe,vo,"auto","initial","none",we]}],grow:[{grow:["",qe,Me,we]}],shrink:[{shrink:["",qe,Me,we]}],order:[{order:[bo,"first","last","none",Me,we]}],"grid-cols":[{"grid-cols":R()}],"col-start-end":[{col:se()}],"col-start":[{"col-start":ne()}],"col-end":[{"col-end":ne()}],"grid-rows":[{"grid-rows":R()}],"row-start-end":[{row:se()}],"row-start":[{"row-start":ne()}],"row-end":[{"row-end":ne()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ce()}],"auto-rows":[{"auto-rows":ce()}],gap:[{gap:C()}],"gap-x":[{"gap-x":C()}],"gap-y":[{"gap-y":C()}],"justify-content":[{justify:[...X(),"normal"]}],"justify-items":[{"justify-items":[...A(),"normal"]}],"justify-self":[{"justify-self":["auto",...A()]}],"align-content":[{content:["normal",...X()]}],"align-items":[{items:[...A(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...A(),{baseline:["","last"]}]}],"place-content":[{"place-content":X()}],"place-items":[{"place-items":[...A(),"baseline"]}],"place-self":[{"place-self":["auto",...A()]}],p:[{p:C()}],px:[{px:C()}],py:[{py:C()}],ps:[{ps:C()}],pe:[{pe:C()}],pbs:[{pbs:C()}],pbe:[{pbe:C()}],pt:[{pt:C()}],pr:[{pr:C()}],pb:[{pb:C()}],pl:[{pl:C()}],m:[{m:Q()}],mx:[{mx:Q()}],my:[{my:Q()}],ms:[{ms:Q()}],me:[{me:Q()}],mbs:[{mbs:Q()}],mbe:[{mbe:Q()}],mt:[{mt:Q()}],mr:[{mr:Q()}],mb:[{mb:Q()}],ml:[{ml:Q()}],"space-x":[{"space-x":C()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":C()}],"space-y-reverse":["space-y-reverse"],size:[{size:Z()}],"inline-size":[{inline:["auto",...J()]}],"min-inline-size":[{"min-inline":["auto",...J()]}],"max-inline-size":[{"max-inline":["none",...J()]}],"block-size":[{block:["auto",...Y()]}],"min-block-size":[{"min-block":["auto",...Y()]}],"max-block-size":[{"max-block":["none",...Y()]}],w:[{w:[p,"screen",...Z()]}],"min-w":[{"min-w":[p,"screen","none",...Z()]}],"max-w":[{"max-w":[p,"screen","none","prose",{screen:[u]},...Z()]}],h:[{h:["screen","lh",...Z()]}],"min-h":[{"min-h":["screen","lh","none",...Z()]}],"max-h":[{"max-h":["screen","lh",...Z()]}],"font-size":[{text:["base",s,B0,mc]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[c,cF,eF]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",uT,we]}],"font-family":[{font:[nF,tF,n]}],"font-features":[{"font-features":[we]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[i,Me,we]}],"line-clamp":[{"line-clamp":[qe,"none",Me,_V]}],leading:[{leading:[d,...C()]}],"list-image":[{"list-image":["none",Me,we]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Me,we]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:U()}],"text-color":[{text:U()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ve(),"wavy"]}],"text-decoration-thickness":[{decoration:[qe,"from-font","auto",Me,mc]}],"text-decoration-color":[{decoration:U()}],"underline-offset":[{"underline-offset":[qe,"auto",Me,we]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:C()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Me,we]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Me,we]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:fe()}],"bg-repeat":[{bg:ue()}],"bg-size":[{bg:pe()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},bo,Me,we],radial:["",Me,we],conic:[bo,Me,we]},oF,aF]}],"bg-color":[{bg:U()}],"gradient-from-pos":[{from:Oe()}],"gradient-via-pos":[{via:Oe()}],"gradient-to-pos":[{to:Oe()}],"gradient-from":[{from:U()}],"gradient-via":[{via:U()}],"gradient-to":[{to:U()}],rounded:[{rounded:Se()}],"rounded-s":[{"rounded-s":Se()}],"rounded-e":[{"rounded-e":Se()}],"rounded-t":[{"rounded-t":Se()}],"rounded-r":[{"rounded-r":Se()}],"rounded-b":[{"rounded-b":Se()}],"rounded-l":[{"rounded-l":Se()}],"rounded-ss":[{"rounded-ss":Se()}],"rounded-se":[{"rounded-se":Se()}],"rounded-ee":[{"rounded-ee":Se()}],"rounded-es":[{"rounded-es":Se()}],"rounded-tl":[{"rounded-tl":Se()}],"rounded-tr":[{"rounded-tr":Se()}],"rounded-br":[{"rounded-br":Se()}],"rounded-bl":[{"rounded-bl":Se()}],"border-w":[{border:de()}],"border-w-x":[{"border-x":de()}],"border-w-y":[{"border-y":de()}],"border-w-s":[{"border-s":de()}],"border-w-e":[{"border-e":de()}],"border-w-bs":[{"border-bs":de()}],"border-w-be":[{"border-be":de()}],"border-w-t":[{"border-t":de()}],"border-w-r":[{"border-r":de()}],"border-w-b":[{"border-b":de()}],"border-w-l":[{"border-l":de()}],"divide-x":[{"divide-x":de()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":de()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ve(),"hidden","none"]}],"divide-style":[{divide:[...ve(),"hidden","none"]}],"border-color":[{border:U()}],"border-color-x":[{"border-x":U()}],"border-color-y":[{"border-y":U()}],"border-color-s":[{"border-s":U()}],"border-color-e":[{"border-e":U()}],"border-color-bs":[{"border-bs":U()}],"border-color-be":[{"border-be":U()}],"border-color-t":[{"border-t":U()}],"border-color-r":[{"border-r":U()}],"border-color-b":[{"border-b":U()}],"border-color-l":[{"border-l":U()}],"divide-color":[{divide:U()}],"outline-style":[{outline:[...ve(),"none","hidden"]}],"outline-offset":[{"outline-offset":[qe,Me,we]}],"outline-w":[{outline:["",qe,B0,mc]}],"outline-color":[{outline:U()}],shadow:[{shadow:["","none",k,mu,xu]}],"shadow-color":[{shadow:U()}],"inset-shadow":[{"inset-shadow":["none",y,mu,xu]}],"inset-shadow-color":[{"inset-shadow":U()}],"ring-w":[{ring:de()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:U()}],"ring-offset-w":[{"ring-offset":[qe,mc]}],"ring-offset-color":[{"ring-offset":U()}],"inset-ring-w":[{"inset-ring":de()}],"inset-ring-color":[{"inset-ring":U()}],"text-shadow":[{"text-shadow":["none",v,mu,xu]}],"text-shadow-color":[{"text-shadow":U()}],opacity:[{opacity:[qe,Me,we]}],"mix-blend":[{"mix-blend":[...ct(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ct()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[qe]}],"mask-image-linear-from-pos":[{"mask-linear-from":Le()}],"mask-image-linear-to-pos":[{"mask-linear-to":Le()}],"mask-image-linear-from-color":[{"mask-linear-from":U()}],"mask-image-linear-to-color":[{"mask-linear-to":U()}],"mask-image-t-from-pos":[{"mask-t-from":Le()}],"mask-image-t-to-pos":[{"mask-t-to":Le()}],"mask-image-t-from-color":[{"mask-t-from":U()}],"mask-image-t-to-color":[{"mask-t-to":U()}],"mask-image-r-from-pos":[{"mask-r-from":Le()}],"mask-image-r-to-pos":[{"mask-r-to":Le()}],"mask-image-r-from-color":[{"mask-r-from":U()}],"mask-image-r-to-color":[{"mask-r-to":U()}],"mask-image-b-from-pos":[{"mask-b-from":Le()}],"mask-image-b-to-pos":[{"mask-b-to":Le()}],"mask-image-b-from-color":[{"mask-b-from":U()}],"mask-image-b-to-color":[{"mask-b-to":U()}],"mask-image-l-from-pos":[{"mask-l-from":Le()}],"mask-image-l-to-pos":[{"mask-l-to":Le()}],"mask-image-l-from-color":[{"mask-l-from":U()}],"mask-image-l-to-color":[{"mask-l-to":U()}],"mask-image-x-from-pos":[{"mask-x-from":Le()}],"mask-image-x-to-pos":[{"mask-x-to":Le()}],"mask-image-x-from-color":[{"mask-x-from":U()}],"mask-image-x-to-color":[{"mask-x-to":U()}],"mask-image-y-from-pos":[{"mask-y-from":Le()}],"mask-image-y-to-pos":[{"mask-y-to":Le()}],"mask-image-y-from-color":[{"mask-y-from":U()}],"mask-image-y-to-color":[{"mask-y-to":U()}],"mask-image-radial":[{"mask-radial":[Me,we]}],"mask-image-radial-from-pos":[{"mask-radial-from":Le()}],"mask-image-radial-to-pos":[{"mask-radial-to":Le()}],"mask-image-radial-from-color":[{"mask-radial-from":U()}],"mask-image-radial-to-color":[{"mask-radial-to":U()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":L()}],"mask-image-conic-pos":[{"mask-conic":[qe]}],"mask-image-conic-from-pos":[{"mask-conic-from":Le()}],"mask-image-conic-to-pos":[{"mask-conic-to":Le()}],"mask-image-conic-from-color":[{"mask-conic-from":U()}],"mask-image-conic-to-color":[{"mask-conic-to":U()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:fe()}],"mask-repeat":[{mask:ue()}],"mask-size":[{mask:pe()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Me,we]}],filter:[{filter:["","none",Me,we]}],blur:[{blur:vt()}],brightness:[{brightness:[qe,Me,we]}],contrast:[{contrast:[qe,Me,we]}],"drop-shadow":[{"drop-shadow":["","none",b,mu,xu]}],"drop-shadow-color":[{"drop-shadow":U()}],grayscale:[{grayscale:["",qe,Me,we]}],"hue-rotate":[{"hue-rotate":[qe,Me,we]}],invert:[{invert:["",qe,Me,we]}],saturate:[{saturate:[qe,Me,we]}],sepia:[{sepia:["",qe,Me,we]}],"backdrop-filter":[{"backdrop-filter":["","none",Me,we]}],"backdrop-blur":[{"backdrop-blur":vt()}],"backdrop-brightness":[{"backdrop-brightness":[qe,Me,we]}],"backdrop-contrast":[{"backdrop-contrast":[qe,Me,we]}],"backdrop-grayscale":[{"backdrop-grayscale":["",qe,Me,we]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[qe,Me,we]}],"backdrop-invert":[{"backdrop-invert":["",qe,Me,we]}],"backdrop-opacity":[{"backdrop-opacity":[qe,Me,we]}],"backdrop-saturate":[{"backdrop-saturate":[qe,Me,we]}],"backdrop-sepia":[{"backdrop-sepia":["",qe,Me,we]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":C()}],"border-spacing-x":[{"border-spacing-x":C()}],"border-spacing-y":[{"border-spacing-y":C()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Me,we]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[qe,"initial",Me,we]}],ease:[{ease:["linear","initial",j,Me,we]}],delay:[{delay:[qe,Me,we]}],animate:[{animate:["none",$,Me,we]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[M,Me,we]}],"perspective-origin":[{"perspective-origin":T()}],rotate:[{rotate:it()}],"rotate-x":[{"rotate-x":it()}],"rotate-y":[{"rotate-y":it()}],"rotate-z":[{"rotate-z":it()}],scale:[{scale:ut()}],"scale-x":[{"scale-x":ut()}],"scale-y":[{"scale-y":ut()}],"scale-z":[{"scale-z":ut()}],"scale-3d":["scale-3d"],skew:[{skew:bt()}],"skew-x":[{"skew-x":bt()}],"skew-y":[{"skew-y":bt()}],transform:[{transform:[Me,we,"","none","gpu","cpu"]}],"transform-origin":[{origin:T()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Ke()}],"translate-x":[{"translate-x":Ke()}],"translate-y":[{"translate-y":Ke()}],"translate-z":[{"translate-z":Ke()}],"translate-none":["translate-none"],accent:[{accent:U()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:U()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Me,we]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":C()}],"scroll-mx":[{"scroll-mx":C()}],"scroll-my":[{"scroll-my":C()}],"scroll-ms":[{"scroll-ms":C()}],"scroll-me":[{"scroll-me":C()}],"scroll-mbs":[{"scroll-mbs":C()}],"scroll-mbe":[{"scroll-mbe":C()}],"scroll-mt":[{"scroll-mt":C()}],"scroll-mr":[{"scroll-mr":C()}],"scroll-mb":[{"scroll-mb":C()}],"scroll-ml":[{"scroll-ml":C()}],"scroll-p":[{"scroll-p":C()}],"scroll-px":[{"scroll-px":C()}],"scroll-py":[{"scroll-py":C()}],"scroll-ps":[{"scroll-ps":C()}],"scroll-pe":[{"scroll-pe":C()}],"scroll-pbs":[{"scroll-pbs":C()}],"scroll-pbe":[{"scroll-pbe":C()}],"scroll-pt":[{"scroll-pt":C()}],"scroll-pr":[{"scroll-pr":C()}],"scroll-pb":[{"scroll-pb":C()}],"scroll-pl":[{"scroll-pl":C()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Me,we]}],fill:[{fill:["none",...U()]}],"stroke-w":[{stroke:[qe,B0,mc,_V]}],stroke:[{stroke:["none",...U()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},lF=EY(rF);function K(...e){return lF(kY(e))}function $e(e,n,{checkForDefaultPrevented:s=!0}={}){return function(i){if(e==null||e(i),s===!1||!i.defaultPrevented)return n==null?void 0:n(i)}}function QV(e,n){if(typeof e=="function")return e(n);e!=null&&(e.current=n)}function _P(...e){return n=>{let s=!1;const c=e.map(i=>{const d=QV(i,n);return!s&&typeof d=="function"&&(s=!0),d});if(s)return()=>{for(let i=0;i<c.length;i++){const d=c[i];typeof d=="function"?d():QV(e[i],null)}}}}function ht(...e){return O.useCallback(_P(...e),e)}function dF(e,n){const s=O.createContext(n),c=d=>{const{children:u,...p}=d,f=O.useMemo(()=>p,Object.values(p));return t.jsx(s.Provider,{value:f,children:u})};c.displayName=e+"Provider";function i(d){const u=O.useContext(s);if(u)return u;if(n!==void 0)return n;throw new Error(`\`${d}\` must be used within \`${e}\``)}return[c,i]}function Us(e,n=[]){let s=[];function c(d,u){const p=O.createContext(u),f=s.length;s=[...s,u];const m=y=>{var j;const{scope:v,children:b,...w}=y,M=((j=v==null?void 0:v[e])==null?void 0:j[f])||p,N=O.useMemo(()=>w,Object.values(w));return t.jsx(M.Provider,{value:N,children:b})};m.displayName=d+"Provider";function k(y,v){var M;const b=((M=v==null?void 0:v[e])==null?void 0:M[f])||p,w=O.useContext(b);if(w)return w;if(u!==void 0)return u;throw new Error(`\`${y}\` must be used within \`${d}\``)}return[m,k]}const i=()=>{const d=s.map(u=>O.createContext(u));return function(p){const f=(p==null?void 0:p[e])||d;return O.useMemo(()=>({[`__scope${e}`]:{...p,[e]:f}}),[p,f])}};return i.scopeName=e,[c,hF(i,...n)]}function hF(...e){const n=e[0];if(e.length===1)return n;const s=()=>{const c=e.map(i=>({useScope:i(),scopeName:i.scopeName}));return function(d){const u=c.reduce((p,{useScope:f,scopeName:m})=>{const y=f(d)[`__scope${m}`];return{...p,...y}},{});return O.useMemo(()=>({[`__scope${n.scopeName}`]:u}),[u])}};return s.scopeName=n.scopeName,s}function A2(e){const n=uF(e),s=O.forwardRef((c,i)=>{const{children:d,...u}=c,p=O.Children.toArray(d),f=p.find(fF);if(f){const m=f.props.children,k=p.map(y=>y===f?O.Children.count(m)>1?O.Children.only(null):O.isValidElement(m)?m.props.children:null:y);return t.jsx(n,{...u,ref:i,children:O.isValidElement(m)?O.cloneElement(m,void 0,k):null})}return t.jsx(n,{...u,ref:i,children:d})});return s.displayName=`${e}.Slot`,s}function uF(e){const n=O.forwardRef((s,c)=>{const{children:i,...d}=s;if(O.isValidElement(i)){const u=mF(i),p=xF(d,i.props);return i.type!==O.Fragment&&(p.ref=c?_P(c,u):u),O.cloneElement(i,p)}return O.Children.count(i)>1?O.Children.only(null):null});return n.displayName=`${e}.SlotClone`,n}var HX=Symbol("radix.slottable");function pF(e){const n=({children:s})=>t.jsx(t.Fragment,{children:s});return n.displayName=`${e}.Slottable`,n.__radixId=HX,n}function fF(e){return O.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===HX}function xF(e,n){const s={...n};for(const c in n){const i=e[c],d=n[c];/^on[A-Z]/.test(c)?i&&d?s[c]=(...p)=>{const f=d(...p);return i(...p),f}:i&&(s[c]=i):c==="style"?s[c]={...i,...d}:c==="className"&&(s[c]=[i,d].filter(Boolean).join(" "))}return{...e,...s}}function mF(e){var c,i;let n=(c=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:c.get,s=n&&"isReactWarning"in n&&n.isReactWarning;return s?e.ref:(n=(i=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:i.get,s=n&&"isReactWarning"in n&&n.isReactWarning,s?e.props.ref:e.props.ref||e.ref)}var yF=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Ye=yF.reduce((e,n)=>{const s=A2(`Primitive.${n}`),c=O.forwardRef((i,d)=>{const{asChild:u,...p}=i,f=u?s:n;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),t.jsx(f,{...p,ref:d})});return c.displayName=`Primitive.${n}`,{...e,[n]:c}},{});function UX(e,n){e&&OX.flushSync(()=>e.dispatchEvent(n))}function Gt(e){const n=O.useRef(e);return O.useEffect(()=>{n.current=e}),O.useMemo(()=>(...s)=>{var c;return(c=n.current)==null?void 0:c.call(n,...s)},[])}function gF(e,n=globalThis==null?void 0:globalThis.document){const s=Gt(e);O.useEffect(()=>{const c=i=>{i.key==="Escape"&&s(i)};return n.addEventListener("keydown",c,{capture:!0}),()=>n.removeEventListener("keydown",c,{capture:!0})},[s,n])}var OF="DismissableLayer",aP="dismissableLayer.update",kF="dismissableLayer.pointerDownOutside",vF="dismissableLayer.focusOutside",LV,BX=O.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),NQ=O.forwardRef((e,n)=>{const{disableOutsidePointerEvents:s=!1,onEscapeKeyDown:c,onPointerDownOutside:i,onFocusOutside:d,onInteractOutside:u,onDismiss:p,...f}=e,m=O.useContext(BX),[k,y]=O.useState(null),v=(k==null?void 0:k.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,b]=O.useState({}),w=ht(n,P=>y(P)),M=Array.from(m.layers),[N]=[...m.layersWithOutsidePointerEventsDisabled].slice(-1),j=M.indexOf(N),$=k?M.indexOf(k):-1,z=m.layersWithOutsidePointerEventsDisabled.size>0,L=$>=j,T=MF(P=>{const C=P.target,F=[...m.branches].some(R=>R.contains(C));!L||F||(i==null||i(P),u==null||u(P),P.defaultPrevented||p==null||p())},v),q=jF(P=>{const C=P.target;[...m.branches].some(R=>R.contains(C))||(d==null||d(P),u==null||u(P),P.defaultPrevented||p==null||p())},v);return gF(P=>{$===m.layers.size-1&&(c==null||c(P),!P.defaultPrevented&&p&&(P.preventDefault(),p()))},v),O.useEffect(()=>{if(k)return s&&(m.layersWithOutsidePointerEventsDisabled.size===0&&(LV=v.body.style.pointerEvents,v.body.style.pointerEvents="none"),m.layersWithOutsidePointerEventsDisabled.add(k)),m.layers.add(k),zV(),()=>{s&&m.layersWithOutsidePointerEventsDisabled.size===1&&(v.body.style.pointerEvents=LV)}},[k,v,s,m]),O.useEffect(()=>()=>{k&&(m.layers.delete(k),m.layersWithOutsidePointerEventsDisabled.delete(k),zV())},[k,m]),O.useEffect(()=>{const P=()=>b({});return document.addEventListener(aP,P),()=>document.removeEventListener(aP,P)},[]),t.jsx(Ye.div,{...f,ref:w,style:{pointerEvents:z?L?"auto":"none":void 0,...e.style},onFocusCapture:$e(e.onFocusCapture,q.onFocusCapture),onBlurCapture:$e(e.onBlurCapture,q.onBlurCapture),onPointerDownCapture:$e(e.onPointerDownCapture,T.onPointerDownCapture)})});NQ.displayName=OF;var bF="DismissableLayerBranch",wF=O.forwardRef((e,n)=>{const s=O.useContext(BX),c=O.useRef(null),i=ht(n,c);return O.useEffect(()=>{const d=c.current;if(d)return s.branches.add(d),()=>{s.branches.delete(d)}},[s.branches]),t.jsx(Ye.div,{...e,ref:i})});wF.displayName=bF;function MF(e,n=globalThis==null?void 0:globalThis.document){const s=Gt(e),c=O.useRef(!1),i=O.useRef(()=>{});return O.useEffect(()=>{const d=p=>{if(p.target&&!c.current){let f=function(){GX(kF,s,m,{discrete:!0})};const m={originalEvent:p};p.pointerType==="touch"?(n.removeEventListener("click",i.current),i.current=f,n.addEventListener("click",i.current,{once:!0})):f()}else n.removeEventListener("click",i.current);c.current=!1},u=window.setTimeout(()=>{n.addEventListener("pointerdown",d)},0);return()=>{window.clearTimeout(u),n.removeEventListener("pointerdown",d),n.removeEventListener("click",i.current)}},[n,s]),{onPointerDownCapture:()=>c.current=!0}}function jF(e,n=globalThis==null?void 0:globalThis.document){const s=Gt(e),c=O.useRef(!1);return O.useEffect(()=>{const i=d=>{d.target&&!c.current&&GX(vF,s,{originalEvent:d},{discrete:!1})};return n.addEventListener("focusin",i),()=>n.removeEventListener("focusin",i)},[n,s]),{onFocusCapture:()=>c.current=!0,onBlurCapture:()=>c.current=!1}}function zV(){const e=new CustomEvent(aP);document.dispatchEvent(e)}function GX(e,n,s,{discrete:c}){const i=s.originalEvent.target,d=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:s});n&&i.addEventListener(e,n,{once:!0}),c?UX(i,d):i.dispatchEvent(d)}var Zs=globalThis!=null&&globalThis.document?O.useLayoutEffect:()=>{},SF=gX[" useId ".trim().toString()]||(()=>{}),NF=0;function jd(e){const[n,s]=O.useState(SF());return Zs(()=>{s(c=>c??String(NF++))},[e]),n?`radix-${n}`:""}const _F=["top","right","bottom","left"],Go=Math.min,Ta=Math.max,sQ=Math.round,yu=Math.floor,Fn=e=>({x:e,y:e}),$F={left:"right",right:"left",bottom:"top",top:"bottom"};function nP(e,n,s){return Ta(e,Go(n,s))}function Ds(e,n){return typeof e=="function"?e(n):e}function Hs(e){return e.split("-")[0]}function Kd(e){return e.split("-")[1]}function $P(e){return e==="x"?"y":"x"}function CP(e){return e==="y"?"height":"width"}function Yn(e){const n=e[0];return n==="t"||n==="b"?"y":"x"}function QP(e){return $P(Yn(e))}function CF(e,n,s){s===void 0&&(s=!1);const c=Kd(e),i=QP(e),d=CP(i);let u=i==="x"?c===(s?"end":"start")?"right":"left":c==="start"?"bottom":"top";return n.reference[d]>n.floating[d]&&(u=oQ(u)),[u,oQ(u)]}function QF(e){const n=oQ(e);return[sP(e),n,sP(n)]}function sP(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const TV=["left","right"],PV=["right","left"],LF=["top","bottom"],zF=["bottom","top"];function TF(e,n,s){switch(e){case"top":case"bottom":return s?n?PV:TV:n?TV:PV;case"left":case"right":return n?LF:zF;default:return[]}}function PF(e,n,s,c){const i=Kd(e);let d=TF(Hs(e),s==="start",c);return i&&(d=d.map(u=>u+"-"+i),n&&(d=d.concat(d.map(sP)))),d}function oQ(e){const n=Hs(e);return $F[n]+e.slice(n.length)}function AF(e){return{top:0,right:0,bottom:0,left:0,...e}}function WX(e){return typeof e!="number"?AF(e):{top:e,right:e,bottom:e,left:e}}function cQ(e){const{x:n,y:s,width:c,height:i}=e;return{width:c,height:i,top:s,left:n,right:n+c,bottom:s+i,x:n,y:s}}function AV(e,n,s){let{reference:c,floating:i}=e;const d=Yn(n),u=QP(n),p=CP(u),f=Hs(n),m=d==="y",k=c.x+c.width/2-i.width/2,y=c.y+c.height/2-i.height/2,v=c[p]/2-i[p]/2;let b;switch(f){case"top":b={x:k,y:c.y-i.height};break;case"bottom":b={x:k,y:c.y+c.height};break;case"right":b={x:c.x+c.width,y};break;case"left":b={x:c.x-i.width,y};break;default:b={x:c.x,y:c.y}}switch(Kd(n)){case"start":b[u]-=v*(s&&m?-1:1);break;case"end":b[u]+=v*(s&&m?-1:1);break}return b}async function qF(e,n){var s;n===void 0&&(n={});const{x:c,y:i,platform:d,rects:u,elements:p,strategy:f}=e,{boundary:m="clippingAncestors",rootBoundary:k="viewport",elementContext:y="floating",altBoundary:v=!1,padding:b=0}=Ds(n,e),w=WX(b),N=p[v?y==="floating"?"reference":"floating":y],j=cQ(await d.getClippingRect({element:(s=await(d.isElement==null?void 0:d.isElement(N)))==null||s?N:N.contextElement||await(d.getDocumentElement==null?void 0:d.getDocumentElement(p.floating)),boundary:m,rootBoundary:k,strategy:f})),$=y==="floating"?{x:c,y:i,width:u.floating.width,height:u.floating.height}:u.reference,z=await(d.getOffsetParent==null?void 0:d.getOffsetParent(p.floating)),L=await(d.isElement==null?void 0:d.isElement(z))?await(d.getScale==null?void 0:d.getScale(z))||{x:1,y:1}:{x:1,y:1},T=cQ(d.convertOffsetParentRelativeRectToViewportRelativeRect?await d.convertOffsetParentRelativeRectToViewportRelativeRect({elements:p,rect:$,offsetParent:z,strategy:f}):$);return{top:(j.top-T.top+w.top)/L.y,bottom:(T.bottom-j.bottom+w.bottom)/L.y,left:(j.left-T.left+w.left)/L.x,right:(T.right-j.right+w.right)/L.x}}const IF=50,RF=async(e,n,s)=>{const{placement:c="bottom",strategy:i="absolute",middleware:d=[],platform:u}=s,p=u.detectOverflow?u:{...u,detectOverflow:qF},f=await(u.isRTL==null?void 0:u.isRTL(n));let m=await u.getElementRects({reference:e,floating:n,strategy:i}),{x:k,y}=AV(m,c,f),v=c,b=0;const w={};for(let M=0;M<d.length;M++){const N=d[M];if(!N)continue;const{name:j,fn:$}=N,{x:z,y:L,data:T,reset:q}=await $({x:k,y,initialPlacement:c,placement:v,strategy:i,middlewareData:w,rects:m,platform:p,elements:{reference:e,floating:n}});k=z??k,y=L??y,w[j]={...w[j],...T},q&&b<IF&&(b++,typeof q=="object"&&(q.placement&&(v=q.placement),q.rects&&(m=q.rects===!0?await u.getElementRects({reference:e,floating:n,strategy:i}):q.rects),{x:k,y}=AV(m,v,f)),M=-1)}return{x:k,y,placement:v,strategy:i,middlewareData:w}},VF=e=>({name:"arrow",options:e,async fn(n){const{x:s,y:c,placement:i,rects:d,platform:u,elements:p,middlewareData:f}=n,{element:m,padding:k=0}=Ds(e,n)||{};if(m==null)return{};const y=WX(k),v={x:s,y:c},b=QP(i),w=CP(b),M=await u.getDimensions(m),N=b==="y",j=N?"top":"left",$=N?"bottom":"right",z=N?"clientHeight":"clientWidth",L=d.reference[w]+d.reference[b]-v[b]-d.floating[w],T=v[b]-d.reference[b],q=await(u.getOffsetParent==null?void 0:u.getOffsetParent(m));let P=q?q[z]:0;(!P||!await(u.isElement==null?void 0:u.isElement(q)))&&(P=p.floating[z]||d.floating[w]);const C=L/2-T/2,F=P/2-M[w]/2-1,R=Go(y[j],F),se=Go(y[$],F),ne=R,ce=P-M[w]-se,X=P/2-M[w]/2+C,A=nP(ne,X,ce),Q=!f.arrow&&Kd(i)!=null&&X!==A&&d.reference[w]/2-(X<ne?R:se)-M[w]/2<0,Z=Q?X<ne?X-ne:X-ce:0;return{[b]:v[b]+Z,data:{[b]:A,centerOffset:X-A-Z,...Q&&{alignmentOffset:Z}},reset:Q}}}),EF=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(n){var s,c;const{placement:i,middlewareData:d,rects:u,initialPlacement:p,platform:f,elements:m}=n,{mainAxis:k=!0,crossAxis:y=!0,fallbackPlacements:v,fallbackStrategy:b="bestFit",fallbackAxisSideDirection:w="none",flipAlignment:M=!0,...N}=Ds(e,n);if((s=d.arrow)!=null&&s.alignmentOffset)return{};const j=Hs(i),$=Yn(p),z=Hs(p)===p,L=await(f.isRTL==null?void 0:f.isRTL(m.floating)),T=v||(z||!M?[oQ(p)]:QF(p)),q=w!=="none";!v&&q&&T.push(...PF(p,M,w,L));const P=[p,...T],C=await f.detectOverflow(n,N),F=[];let R=((c=d.flip)==null?void 0:c.overflows)||[];if(k&&F.push(C[j]),y){const X=CF(i,u,L);F.push(C[X[0]],C[X[1]])}if(R=[...R,{placement:i,overflows:F}],!F.every(X=>X<=0)){var se,ne;const X=(((se=d.flip)==null?void 0:se.index)||0)+1,A=P[X];if(A&&(!(y==="alignment"?$!==Yn(A):!1)||R.every(J=>Yn(J.placement)===$?J.overflows[0]>0:!0)))return{data:{index:X,overflows:R},reset:{placement:A}};let Q=(ne=R.filter(Z=>Z.overflows[0]<=0).sort((Z,J)=>Z.overflows[1]-J.overflows[1])[0])==null?void 0:ne.placement;if(!Q)switch(b){case"bestFit":{var ce;const Z=(ce=R.filter(J=>{if(q){const Y=Yn(J.placement);return Y===$||Y==="y"}return!0}).map(J=>[J.placement,J.overflows.filter(Y=>Y>0).reduce((Y,U)=>Y+U,0)]).sort((J,Y)=>J[1]-Y[1])[0])==null?void 0:ce[0];Z&&(Q=Z);break}case"initialPlacement":Q=p;break}if(i!==Q)return{reset:{placement:Q}}}return{}}}};function qV(e,n){return{top:e.top-n.height,right:e.right-n.width,bottom:e.bottom-n.height,left:e.left-n.width}}function IV(e){return _F.some(n=>e[n]>=0)}const XF=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(n){const{rects:s,platform:c}=n,{strategy:i="referenceHidden",...d}=Ds(e,n);switch(i){case"referenceHidden":{const u=await c.detectOverflow(n,{...d,elementContext:"reference"}),p=qV(u,s.reference);return{data:{referenceHiddenOffsets:p,referenceHidden:IV(p)}}}case"escaped":{const u=await c.detectOverflow(n,{...d,altBoundary:!0}),p=qV(u,s.floating);return{data:{escapedOffsets:p,escaped:IV(p)}}}default:return{}}}}},YX=new Set(["left","top"]);async function ZF(e,n){const{placement:s,platform:c,elements:i}=e,d=await(c.isRTL==null?void 0:c.isRTL(i.floating)),u=Hs(s),p=Kd(s),f=Yn(s)==="y",m=YX.has(u)?-1:1,k=d&&f?-1:1,y=Ds(n,e);let{mainAxis:v,crossAxis:b,alignmentAxis:w}=typeof y=="number"?{mainAxis:y,crossAxis:0,alignmentAxis:null}:{mainAxis:y.mainAxis||0,crossAxis:y.crossAxis||0,alignmentAxis:y.alignmentAxis};return p&&typeof w=="number"&&(b=p==="end"?w*-1:w),f?{x:b*k,y:v*m}:{x:v*m,y:b*k}}const DF=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(n){var s,c;const{x:i,y:d,placement:u,middlewareData:p}=n,f=await ZF(n,e);return u===((s=p.offset)==null?void 0:s.placement)&&(c=p.arrow)!=null&&c.alignmentOffset?{}:{x:i+f.x,y:d+f.y,data:{...f,placement:u}}}}},HF=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(n){const{x:s,y:c,placement:i,platform:d}=n,{mainAxis:u=!0,crossAxis:p=!1,limiter:f={fn:j=>{let{x:$,y:z}=j;return{x:$,y:z}}},...m}=Ds(e,n),k={x:s,y:c},y=await d.detectOverflow(n,m),v=Yn(Hs(i)),b=$P(v);let w=k[b],M=k[v];if(u){const j=b==="y"?"top":"left",$=b==="y"?"bottom":"right",z=w+y[j],L=w-y[$];w=nP(z,w,L)}if(p){const j=v==="y"?"top":"left",$=v==="y"?"bottom":"right",z=M+y[j],L=M-y[$];M=nP(z,M,L)}const N=f.fn({...n,[b]:w,[v]:M});return{...N,data:{x:N.x-s,y:N.y-c,enabled:{[b]:u,[v]:p}}}}}},UF=function(e){return e===void 0&&(e={}),{options:e,fn(n){const{x:s,y:c,placement:i,rects:d,middlewareData:u}=n,{offset:p=0,mainAxis:f=!0,crossAxis:m=!0}=Ds(e,n),k={x:s,y:c},y=Yn(i),v=$P(y);let b=k[v],w=k[y];const M=Ds(p,n),N=typeof M=="number"?{mainAxis:M,crossAxis:0}:{mainAxis:0,crossAxis:0,...M};if(f){const z=v==="y"?"height":"width",L=d.reference[v]-d.floating[z]+N.mainAxis,T=d.reference[v]+d.reference[z]-N.mainAxis;b<L?b=L:b>T&&(b=T)}if(m){var j,$;const z=v==="y"?"width":"height",L=YX.has(Hs(i)),T=d.reference[y]-d.floating[z]+(L&&((j=u.offset)==null?void 0:j[y])||0)+(L?0:N.crossAxis),q=d.reference[y]+d.reference[z]+(L?0:(($=u.offset)==null?void 0:$[y])||0)-(L?N.crossAxis:0);w<T?w=T:w>q&&(w=q)}return{[v]:b,[y]:w}}}},BF=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(n){var s,c;const{placement:i,rects:d,platform:u,elements:p}=n,{apply:f=()=>{},...m}=Ds(e,n),k=await u.detectOverflow(n,m),y=Hs(i),v=Kd(i),b=Yn(i)==="y",{width:w,height:M}=d.floating;let N,j;y==="top"||y==="bottom"?(N=y,j=v===(await(u.isRTL==null?void 0:u.isRTL(p.floating))?"start":"end")?"left":"right"):(j=y,N=v==="end"?"top":"bottom");const $=M-k.top-k.bottom,z=w-k.left-k.right,L=Go(M-k[N],$),T=Go(w-k[j],z),q=!n.middlewareData.shift;let P=L,C=T;if((s=n.middlewareData.shift)!=null&&s.enabled.x&&(C=z),(c=n.middlewareData.shift)!=null&&c.enabled.y&&(P=$),q&&!v){const R=Ta(k.left,0),se=Ta(k.right,0),ne=Ta(k.top,0),ce=Ta(k.bottom,0);b?C=w-2*(R!==0||se!==0?R+se:Ta(k.left,k.right)):P=M-2*(ne!==0||ce!==0?ne+ce:Ta(k.top,k.bottom))}await f({...n,availableWidth:C,availableHeight:P});const F=await u.getDimensions(p.floating);return w!==F.width||M!==F.height?{reset:{rects:!0}}:{}}}};function _Q(){return typeof window<"u"}function Jd(e){return FX(e)?(e.nodeName||"").toLowerCase():"#document"}function Aa(e){var n;return(e==null||(n=e.ownerDocument)==null?void 0:n.defaultView)||window}function as(e){var n;return(n=(FX(e)?e.ownerDocument:e.document)||window.document)==null?void 0:n.documentElement}function FX(e){return _Q()?e instanceof Node||e instanceof Aa(e).Node:!1}function jn(e){return _Q()?e instanceof Element||e instanceof Aa(e).Element:!1}function Bs(e){return _Q()?e instanceof HTMLElement||e instanceof Aa(e).HTMLElement:!1}function RV(e){return!_Q()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Aa(e).ShadowRoot}function W2(e){const{overflow:n,overflowX:s,overflowY:c,display:i}=Sn(e);return/auto|scroll|overlay|hidden|clip/.test(n+c+s)&&i!=="inline"&&i!=="contents"}function GF(e){return/^(table|td|th)$/.test(Jd(e))}function $Q(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}const WF=/transform|translate|scale|rotate|perspective|filter/,YF=/paint|layout|strict|content/,yc=e=>!!e&&e!=="none";let pT;function LP(e){const n=jn(e)?Sn(e):e;return yc(n.transform)||yc(n.translate)||yc(n.scale)||yc(n.rotate)||yc(n.perspective)||!zP()&&(yc(n.backdropFilter)||yc(n.filter))||WF.test(n.willChange||"")||YF.test(n.contain||"")}function FF(e){let n=Wo(e);for(;Bs(n)&&!Dd(n);){if(LP(n))return n;if($Q(n))return null;n=Wo(n)}return null}function zP(){return pT==null&&(pT=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),pT}function Dd(e){return/^(html|body|#document)$/.test(Jd(e))}function Sn(e){return Aa(e).getComputedStyle(e)}function CQ(e){return jn(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Wo(e){if(Jd(e)==="html")return e;const n=e.assignedSlot||e.parentNode||RV(e)&&e.host||as(e);return RV(n)?n.host:n}function KX(e){const n=Wo(e);return Dd(n)?e.ownerDocument?e.ownerDocument.body:e.body:Bs(n)&&W2(n)?n:KX(n)}function q2(e,n,s){var c;n===void 0&&(n=[]),s===void 0&&(s=!0);const i=KX(e),d=i===((c=e.ownerDocument)==null?void 0:c.body),u=Aa(i);if(d){const p=oP(u);return n.concat(u,u.visualViewport||[],W2(i)?i:[],p&&s?q2(p):[])}else return n.concat(i,q2(i,[],s))}function oP(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function JX(e){const n=Sn(e);let s=parseFloat(n.width)||0,c=parseFloat(n.height)||0;const i=Bs(e),d=i?e.offsetWidth:s,u=i?e.offsetHeight:c,p=sQ(s)!==d||sQ(c)!==u;return p&&(s=d,c=u),{width:s,height:c,$:p}}function TP(e){return jn(e)?e:e.contextElement}function Sd(e){const n=TP(e);if(!Bs(n))return Fn(1);const s=n.getBoundingClientRect(),{width:c,height:i,$:d}=JX(n);let u=(d?sQ(s.width):s.width)/c,p=(d?sQ(s.height):s.height)/i;return(!u||!Number.isFinite(u))&&(u=1),(!p||!Number.isFinite(p))&&(p=1),{x:u,y:p}}const KF=Fn(0);function eZ(e){const n=Aa(e);return!zP()||!n.visualViewport?KF:{x:n.visualViewport.offsetLeft,y:n.visualViewport.offsetTop}}function JF(e,n,s){return n===void 0&&(n=!1),!s||n&&s!==Aa(e)?!1:n}function S1(e,n,s,c){n===void 0&&(n=!1),s===void 0&&(s=!1);const i=e.getBoundingClientRect(),d=TP(e);let u=Fn(1);n&&(c?jn(c)&&(u=Sd(c)):u=Sd(e));const p=JF(d,s,c)?eZ(d):Fn(0);let f=(i.left+p.x)/u.x,m=(i.top+p.y)/u.y,k=i.width/u.x,y=i.height/u.y;if(d){const v=Aa(d),b=c&&jn(c)?Aa(c):c;let w=v,M=oP(w);for(;M&&c&&b!==w;){const N=Sd(M),j=M.getBoundingClientRect(),$=Sn(M),z=j.left+(M.clientLeft+parseFloat($.paddingLeft))*N.x,L=j.top+(M.clientTop+parseFloat($.paddingTop))*N.y;f*=N.x,m*=N.y,k*=N.x,y*=N.y,f+=z,m+=L,w=Aa(M),M=oP(w)}}return cQ({width:k,height:y,x:f,y:m})}function QQ(e,n){const s=CQ(e).scrollLeft;return n?n.left+s:S1(as(e)).left+s}function tZ(e,n){const s=e.getBoundingClientRect(),c=s.left+n.scrollLeft-QQ(e,s),i=s.top+n.scrollTop;return{x:c,y:i}}function eK(e){let{elements:n,rect:s,offsetParent:c,strategy:i}=e;const d=i==="fixed",u=as(c),p=n?$Q(n.floating):!1;if(c===u||p&&d)return s;let f={scrollLeft:0,scrollTop:0},m=Fn(1);const k=Fn(0),y=Bs(c);if((y||!y&&!d)&&((Jd(c)!=="body"||W2(u))&&(f=CQ(c)),y)){const b=S1(c);m=Sd(c),k.x=b.x+c.clientLeft,k.y=b.y+c.clientTop}const v=u&&!y&&!d?tZ(u,f):Fn(0);return{width:s.width*m.x,height:s.height*m.y,x:s.x*m.x-f.scrollLeft*m.x+k.x+v.x,y:s.y*m.y-f.scrollTop*m.y+k.y+v.y}}function tK(e){return Array.from(e.getClientRects())}function aK(e){const n=as(e),s=CQ(e),c=e.ownerDocument.body,i=Ta(n.scrollWidth,n.clientWidth,c.scrollWidth,c.clientWidth),d=Ta(n.scrollHeight,n.clientHeight,c.scrollHeight,c.clientHeight);let u=-s.scrollLeft+QQ(e);const p=-s.scrollTop;return Sn(c).direction==="rtl"&&(u+=Ta(n.clientWidth,c.clientWidth)-i),{width:i,height:d,x:u,y:p}}const VV=25;function nK(e,n){const s=Aa(e),c=as(e),i=s.visualViewport;let d=c.clientWidth,u=c.clientHeight,p=0,f=0;if(i){d=i.width,u=i.height;const k=zP();(!k||k&&n==="fixed")&&(p=i.offsetLeft,f=i.offsetTop)}const m=QQ(c);if(m<=0){const k=c.ownerDocument,y=k.body,v=getComputedStyle(y),b=k.compatMode==="CSS1Compat"&&parseFloat(v.marginLeft)+parseFloat(v.marginRight)||0,w=Math.abs(c.clientWidth-y.clientWidth-b);w<=VV&&(d-=w)}else m<=VV&&(d+=m);return{width:d,height:u,x:p,y:f}}function sK(e,n){const s=S1(e,!0,n==="fixed"),c=s.top+e.clientTop,i=s.left+e.clientLeft,d=Bs(e)?Sd(e):Fn(1),u=e.clientWidth*d.x,p=e.clientHeight*d.y,f=i*d.x,m=c*d.y;return{width:u,height:p,x:f,y:m}}function EV(e,n,s){let c;if(n==="viewport")c=nK(e,s);else if(n==="document")c=aK(as(e));else if(jn(n))c=sK(n,s);else{const i=eZ(e);c={x:n.x-i.x,y:n.y-i.y,width:n.width,height:n.height}}return cQ(c)}function aZ(e,n){const s=Wo(e);return s===n||!jn(s)||Dd(s)?!1:Sn(s).position==="fixed"||aZ(s,n)}function oK(e,n){const s=n.get(e);if(s)return s;let c=q2(e,[],!1).filter(p=>jn(p)&&Jd(p)!=="body"),i=null;const d=Sn(e).position==="fixed";let u=d?Wo(e):e;for(;jn(u)&&!Dd(u);){const p=Sn(u),f=LP(u);!f&&p.position==="fixed"&&(i=null),(d?!f&&!i:!f&&p.position==="static"&&!!i&&(i.position==="absolute"||i.position==="fixed")||W2(u)&&!f&&aZ(e,u))?c=c.filter(k=>k!==u):i=p,u=Wo(u)}return n.set(e,c),c}function cK(e){let{element:n,boundary:s,rootBoundary:c,strategy:i}=e;const u=[...s==="clippingAncestors"?$Q(n)?[]:oK(n,this._c):[].concat(s),c],p=EV(n,u[0],i);let f=p.top,m=p.right,k=p.bottom,y=p.left;for(let v=1;v<u.length;v++){const b=EV(n,u[v],i);f=Ta(b.top,f),m=Go(b.right,m),k=Go(b.bottom,k),y=Ta(b.left,y)}return{width:m-y,height:k-f,x:y,y:f}}function iK(e){const{width:n,height:s}=JX(e);return{width:n,height:s}}function rK(e,n,s){const c=Bs(n),i=as(n),d=s==="fixed",u=S1(e,!0,d,n);let p={scrollLeft:0,scrollTop:0};const f=Fn(0);function m(){f.x=QQ(i)}if(c||!c&&!d)if((Jd(n)!=="body"||W2(i))&&(p=CQ(n)),c){const b=S1(n,!0,d,n);f.x=b.x+n.clientLeft,f.y=b.y+n.clientTop}else i&&m();d&&!c&&i&&m();const k=i&&!c&&!d?tZ(i,p):Fn(0),y=u.left+p.scrollLeft-f.x-k.x,v=u.top+p.scrollTop-f.y-k.y;return{x:y,y:v,width:u.width,height:u.height}}function fT(e){return Sn(e).position==="static"}function XV(e,n){if(!Bs(e)||Sn(e).position==="fixed")return null;if(n)return n(e);let s=e.offsetParent;return as(e)===s&&(s=s.ownerDocument.body),s}function nZ(e,n){const s=Aa(e);if($Q(e))return s;if(!Bs(e)){let i=Wo(e);for(;i&&!Dd(i);){if(jn(i)&&!fT(i))return i;i=Wo(i)}return s}let c=XV(e,n);for(;c&&GF(c)&&fT(c);)c=XV(c,n);return c&&Dd(c)&&fT(c)&&!LP(c)?s:c||FF(e)||s}const lK=async function(e){const n=this.getOffsetParent||nZ,s=this.getDimensions,c=await s(e.floating);return{reference:rK(e.reference,await n(e.floating),e.strategy),floating:{x:0,y:0,width:c.width,height:c.height}}};function dK(e){return Sn(e).direction==="rtl"}const hK={convertOffsetParentRelativeRectToViewportRelativeRect:eK,getDocumentElement:as,getClippingRect:cK,getOffsetParent:nZ,getElementRects:lK,getClientRects:tK,getDimensions:iK,getScale:Sd,isElement:jn,isRTL:dK};function sZ(e,n){return e.x===n.x&&e.y===n.y&&e.width===n.width&&e.height===n.height}function uK(e,n){let s=null,c;const i=as(e);function d(){var p;clearTimeout(c),(p=s)==null||p.disconnect(),s=null}function u(p,f){p===void 0&&(p=!1),f===void 0&&(f=1),d();const m=e.getBoundingClientRect(),{left:k,top:y,width:v,height:b}=m;if(p||n(),!v||!b)return;const w=yu(y),M=yu(i.clientWidth-(k+v)),N=yu(i.clientHeight-(y+b)),j=yu(k),z={rootMargin:-w+"px "+-M+"px "+-N+"px "+-j+"px",threshold:Ta(0,Go(1,f))||1};let L=!0;function T(q){const P=q[0].intersectionRatio;if(P!==f){if(!L)return u();P?u(!1,P):c=setTimeout(()=>{u(!1,1e-7)},1e3)}P===1&&!sZ(m,e.getBoundingClientRect())&&u(),L=!1}try{s=new IntersectionObserver(T,{...z,root:i.ownerDocument})}catch{s=new IntersectionObserver(T,z)}s.observe(e)}return u(!0),d}function pK(e,n,s,c){c===void 0&&(c={});const{ancestorScroll:i=!0,ancestorResize:d=!0,elementResize:u=typeof ResizeObserver=="function",layoutShift:p=typeof IntersectionObserver=="function",animationFrame:f=!1}=c,m=TP(e),k=i||d?[...m?q2(m):[],...n?q2(n):[]]:[];k.forEach(j=>{i&&j.addEventListener("scroll",s,{passive:!0}),d&&j.addEventListener("resize",s)});const y=m&&p?uK(m,s):null;let v=-1,b=null;u&&(b=new ResizeObserver(j=>{let[$]=j;$&&$.target===m&&b&&n&&(b.unobserve(n),cancelAnimationFrame(v),v=requestAnimationFrame(()=>{var z;(z=b)==null||z.observe(n)})),s()}),m&&!f&&b.observe(m),n&&b.observe(n));let w,M=f?S1(e):null;f&&N();function N(){const j=S1(e);M&&!sZ(M,j)&&s(),M=j,w=requestAnimationFrame(N)}return s(),()=>{var j;k.forEach($=>{i&&$.removeEventListener("scroll",s),d&&$.removeEventListener("resize",s)}),y==null||y(),(j=b)==null||j.disconnect(),b=null,f&&cancelAnimationFrame(w)}}const fK=DF,xK=HF,mK=EF,yK=BF,gK=XF,ZV=VF,OK=UF,kK=(e,n,s)=>{const c=new Map,i={platform:hK,...s},d={...i.platform,_c:c};return RF(e,n,{...i,platform:d})};var vK=typeof document<"u",bK=function(){},Ru=vK?O.useLayoutEffect:bK;function iQ(e,n){if(e===n)return!0;if(typeof e!=typeof n)return!1;if(typeof e=="function"&&e.toString()===n.toString())return!0;let s,c,i;if(e&&n&&typeof e=="object"){if(Array.isArray(e)){if(s=e.length,s!==n.length)return!1;for(c=s;c--!==0;)if(!iQ(e[c],n[c]))return!1;return!0}if(i=Object.keys(e),s=i.length,s!==Object.keys(n).length)return!1;for(c=s;c--!==0;)if(!{}.hasOwnProperty.call(n,i[c]))return!1;for(c=s;c--!==0;){const d=i[c];if(!(d==="_owner"&&e.$$typeof)&&!iQ(e[d],n[d]))return!1}return!0}return e!==e&&n!==n}function oZ(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function DV(e,n){const s=oZ(e);return Math.round(n*s)/s}function xT(e){const n=O.useRef(e);return Ru(()=>{n.current=e}),n}function wK(e){e===void 0&&(e={});const{placement:n="bottom",strategy:s="absolute",middleware:c=[],platform:i,elements:{reference:d,floating:u}={},transform:p=!0,whileElementsMounted:f,open:m}=e,[k,y]=O.useState({x:0,y:0,strategy:s,placement:n,middlewareData:{},isPositioned:!1}),[v,b]=O.useState(c);iQ(v,c)||b(c);const[w,M]=O.useState(null),[N,j]=O.useState(null),$=O.useCallback(J=>{J!==q.current&&(q.current=J,M(J))},[]),z=O.useCallback(J=>{J!==P.current&&(P.current=J,j(J))},[]),L=d||w,T=u||N,q=O.useRef(null),P=O.useRef(null),C=O.useRef(k),F=f!=null,R=xT(f),se=xT(i),ne=xT(m),ce=O.useCallback(()=>{if(!q.current||!P.current)return;const J={placement:n,strategy:s,middleware:v};se.current&&(J.platform=se.current),kK(q.current,P.current,J).then(Y=>{const U={...Y,isPositioned:ne.current!==!1};X.current&&!iQ(C.current,U)&&(C.current=U,OX.flushSync(()=>{y(U)}))})},[v,n,s,se,ne]);Ru(()=>{m===!1&&C.current.isPositioned&&(C.current.isPositioned=!1,y(J=>({...J,isPositioned:!1})))},[m]);const X=O.useRef(!1);Ru(()=>(X.current=!0,()=>{X.current=!1}),[]),Ru(()=>{if(L&&(q.current=L),T&&(P.current=T),L&&T){if(R.current)return R.current(L,T,ce);ce()}},[L,T,ce,R,F]);const A=O.useMemo(()=>({reference:q,floating:P,setReference:$,setFloating:z}),[$,z]),Q=O.useMemo(()=>({reference:L,floating:T}),[L,T]),Z=O.useMemo(()=>{const J={position:s,left:0,top:0};if(!Q.floating)return J;const Y=DV(Q.floating,k.x),U=DV(Q.floating,k.y);return p?{...J,transform:"translate("+Y+"px, "+U+"px)",...oZ(Q.floating)>=1.5&&{willChange:"transform"}}:{position:s,left:Y,top:U}},[s,p,Q.floating,k.x,k.y]);return O.useMemo(()=>({...k,update:ce,refs:A,elements:Q,floatingStyles:Z}),[k,ce,A,Q,Z])}const MK=e=>{function n(s){return{}.hasOwnProperty.call(s,"current")}return{name:"arrow",options:e,fn(s){const{element:c,padding:i}=typeof e=="function"?e(s):e;return c&&n(c)?c.current!=null?ZV({element:c.current,padding:i}).fn(s):{}:c?ZV({element:c,padding:i}).fn(s):{}}}},jK=(e,n)=>{const s=fK(e);return{name:s.name,fn:s.fn,options:[e,n]}},SK=(e,n)=>{const s=xK(e);return{name:s.name,fn:s.fn,options:[e,n]}},NK=(e,n)=>({fn:OK(e).fn,options:[e,n]}),_K=(e,n)=>{const s=mK(e);return{name:s.name,fn:s.fn,options:[e,n]}},$K=(e,n)=>{const s=yK(e);return{name:s.name,fn:s.fn,options:[e,n]}},CK=(e,n)=>{const s=gK(e);return{name:s.name,fn:s.fn,options:[e,n]}},QK=(e,n)=>{const s=MK(e);return{name:s.name,fn:s.fn,options:[e,n]}};var LK="Arrow",cZ=O.forwardRef((e,n)=>{const{children:s,width:c=10,height:i=5,...d}=e;return t.jsx(Ye.svg,{...d,ref:n,width:c,height:i,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?s:t.jsx("polygon",{points:"0,0 30,0 15,10"})})});cZ.displayName=LK;var zK=cZ;function TK(e){const[n,s]=O.useState(void 0);return Zs(()=>{if(e){s({width:e.offsetWidth,height:e.offsetHeight});const c=new ResizeObserver(i=>{if(!Array.isArray(i)||!i.length)return;const d=i[0];let u,p;if("borderBoxSize"in d){const f=d.borderBoxSize,m=Array.isArray(f)?f[0]:f;u=m.inlineSize,p=m.blockSize}else u=e.offsetWidth,p=e.offsetHeight;s({width:u,height:p})});return c.observe(e,{box:"border-box"}),()=>c.unobserve(e)}else s(void 0)},[e]),n}var PP="Popper",[iZ,LQ]=Us(PP),[PK,rZ]=iZ(PP),lZ=e=>{const{__scopePopper:n,children:s}=e,[c,i]=O.useState(null);return t.jsx(PK,{scope:n,anchor:c,onAnchorChange:i,children:s})};lZ.displayName=PP;var dZ="PopperAnchor",hZ=O.forwardRef((e,n)=>{const{__scopePopper:s,virtualRef:c,...i}=e,d=rZ(dZ,s),u=O.useRef(null),p=ht(n,u),f=O.useRef(null);return O.useEffect(()=>{const m=f.current;f.current=(c==null?void 0:c.current)||u.current,m!==f.current&&d.onAnchorChange(f.current)}),c?null:t.jsx(Ye.div,{...i,ref:p})});hZ.displayName=dZ;var AP="PopperContent",[AK,qK]=iZ(AP),uZ=O.forwardRef((e,n)=>{var ve,ct,Le,vt,it,ut;const{__scopePopper:s,side:c="bottom",sideOffset:i=0,align:d="center",alignOffset:u=0,arrowPadding:p=0,avoidCollisions:f=!0,collisionBoundary:m=[],collisionPadding:k=0,sticky:y="partial",hideWhenDetached:v=!1,updatePositionStrategy:b="optimized",onPlaced:w,...M}=e,N=rZ(AP,s),[j,$]=O.useState(null),z=ht(n,bt=>$(bt)),[L,T]=O.useState(null),q=TK(L),P=(q==null?void 0:q.width)??0,C=(q==null?void 0:q.height)??0,F=c+(d!=="center"?"-"+d:""),R=typeof k=="number"?k:{top:0,right:0,bottom:0,left:0,...k},se=Array.isArray(m)?m:[m],ne=se.length>0,ce={padding:R,boundary:se.filter(RK),altBoundary:ne},{refs:X,floatingStyles:A,placement:Q,isPositioned:Z,middlewareData:J}=wK({strategy:"fixed",placement:F,whileElementsMounted:(...bt)=>pK(...bt,{animationFrame:b==="always"}),elements:{reference:N.anchor},middleware:[jK({mainAxis:i+C,alignmentAxis:u}),f&&SK({mainAxis:!0,crossAxis:!1,limiter:y==="partial"?NK():void 0,...ce}),f&&_K({...ce}),$K({...ce,apply:({elements:bt,rects:Ke,availableWidth:ln,availableHeight:$n})=>{const{width:ss,height:Cn}=Ke.reference,ka=bt.floating.style;ka.setProperty("--radix-popper-available-width",`${ln}px`),ka.setProperty("--radix-popper-available-height",`${$n}px`),ka.setProperty("--radix-popper-anchor-width",`${ss}px`),ka.setProperty("--radix-popper-anchor-height",`${Cn}px`)}}),L&&QK({element:L,padding:p}),VK({arrowWidth:P,arrowHeight:C}),v&&CK({strategy:"referenceHidden",...ce})]}),[Y,U]=xZ(Q),fe=Gt(w);Zs(()=>{Z&&(fe==null||fe())},[Z,fe]);const ue=(ve=J.arrow)==null?void 0:ve.x,pe=(ct=J.arrow)==null?void 0:ct.y,Oe=((Le=J.arrow)==null?void 0:Le.centerOffset)!==0,[Se,de]=O.useState();return Zs(()=>{j&&de(window.getComputedStyle(j).zIndex)},[j]),t.jsx("div",{ref:X.setFloating,"data-radix-popper-content-wrapper":"",style:{...A,transform:Z?A.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Se,"--radix-popper-transform-origin":[(vt=J.transformOrigin)==null?void 0:vt.x,(it=J.transformOrigin)==null?void 0:it.y].join(" "),...((ut=J.hide)==null?void 0:ut.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:t.jsx(AK,{scope:s,placedSide:Y,onArrowChange:T,arrowX:ue,arrowY:pe,shouldHideArrow:Oe,children:t.jsx(Ye.div,{"data-side":Y,"data-align":U,...M,ref:z,style:{...M.style,animation:Z?void 0:"none"}})})})});uZ.displayName=AP;var pZ="PopperArrow",IK={top:"bottom",right:"left",bottom:"top",left:"right"},fZ=O.forwardRef(function(n,s){const{__scopePopper:c,...i}=n,d=qK(pZ,c),u=IK[d.placedSide];return t.jsx("span",{ref:d.onArrowChange,style:{position:"absolute",left:d.arrowX,top:d.arrowY,[u]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[d.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[d.placedSide],visibility:d.shouldHideArrow?"hidden":void 0},children:t.jsx(zK,{...i,ref:s,style:{...i.style,display:"block"}})})});fZ.displayName=pZ;function RK(e){return e!==null}var VK=e=>({name:"transformOrigin",options:e,fn(n){var N,j,$;const{placement:s,rects:c,middlewareData:i}=n,u=((N=i.arrow)==null?void 0:N.centerOffset)!==0,p=u?0:e.arrowWidth,f=u?0:e.arrowHeight,[m,k]=xZ(s),y={start:"0%",center:"50%",end:"100%"}[k],v=(((j=i.arrow)==null?void 0:j.x)??0)+p/2,b=((($=i.arrow)==null?void 0:$.y)??0)+f/2;let w="",M="";return m==="bottom"?(w=u?y:`${v}px`,M=`${-f}px`):m==="top"?(w=u?y:`${v}px`,M=`${c.floating.height+f}px`):m==="right"?(w=`${-f}px`,M=u?y:`${b}px`):m==="left"&&(w=`${c.floating.width+f}px`,M=u?y:`${b}px`),{data:{x:w,y:M}}}});function xZ(e){const[n,s="center"]=e.split("-");return[n,s]}var mZ=lZ,yZ=hZ,gZ=uZ,OZ=fZ,EK="Portal",zQ=O.forwardRef((e,n)=>{var p;const{container:s,...c}=e,[i,d]=O.useState(!1);Zs(()=>d(!0),[]);const u=s||i&&((p=globalThis==null?void 0:globalThis.document)==null?void 0:p.body);return u?QW.createPortal(t.jsx(Ye.div,{...c,ref:n}),u):null});zQ.displayName=EK;function XK(e,n){return O.useReducer((s,c)=>n[s][c]??s,e)}var ia=e=>{const{present:n,children:s}=e,c=ZK(n),i=typeof s=="function"?s({present:c.isPresent}):O.Children.only(s),d=ht(c.ref,DK(i));return typeof s=="function"||c.isPresent?O.cloneElement(i,{ref:d}):null};ia.displayName="Presence";function ZK(e){const[n,s]=O.useState(),c=O.useRef(null),i=O.useRef(e),d=O.useRef("none"),u=e?"mounted":"unmounted",[p,f]=XK(u,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return O.useEffect(()=>{const m=gu(c.current);d.current=p==="mounted"?m:"none"},[p]),Zs(()=>{const m=c.current,k=i.current;if(k!==e){const v=d.current,b=gu(m);e?f("MOUNT"):b==="none"||(m==null?void 0:m.display)==="none"?f("UNMOUNT"):f(k&&v!==b?"ANIMATION_OUT":"UNMOUNT"),i.current=e}},[e,f]),Zs(()=>{if(n){let m;const k=n.ownerDocument.defaultView??window,y=b=>{const M=gu(c.current).includes(CSS.escape(b.animationName));if(b.target===n&&M&&(f("ANIMATION_END"),!i.current)){const N=n.style.animationFillMode;n.style.animationFillMode="forwards",m=k.setTimeout(()=>{n.style.animationFillMode==="forwards"&&(n.style.animationFillMode=N)})}},v=b=>{b.target===n&&(d.current=gu(c.current))};return n.addEventListener("animationstart",v),n.addEventListener("animationcancel",y),n.addEventListener("animationend",y),()=>{k.clearTimeout(m),n.removeEventListener("animationstart",v),n.removeEventListener("animationcancel",y),n.removeEventListener("animationend",y)}}else f("ANIMATION_END")},[n,f]),{isPresent:["mounted","unmountSuspended"].includes(p),ref:O.useCallback(m=>{c.current=m?getComputedStyle(m):null,s(m)},[])}}function gu(e){return(e==null?void 0:e.animationName)||"none"}function DK(e){var c,i;let n=(c=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:c.get,s=n&&"isReactWarning"in n&&n.isReactWarning;return s?e.ref:(n=(i=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:i.get,s=n&&"isReactWarning"in n&&n.isReactWarning,s?e.props.ref:e.props.ref||e.ref)}var HK=gX[" useInsertionEffect ".trim().toString()]||Zs;function TQ({prop:e,defaultProp:n,onChange:s=()=>{},caller:c}){const[i,d,u]=UK({defaultProp:n,onChange:s}),p=e!==void 0,f=p?e:i;{const k=O.useRef(e!==void 0);O.useEffect(()=>{const y=k.current;y!==p&&console.warn(`${c} is changing from ${y?"controlled":"uncontrolled"} to ${p?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),k.current=p},[p,c])}const m=O.useCallback(k=>{var y;if(p){const v=BK(k)?k(e):k;v!==e&&((y=u.current)==null||y.call(u,v))}else d(k)},[p,e,d,u]);return[f,m]}function UK({defaultProp:e,onChange:n}){const[s,c]=O.useState(e),i=O.useRef(s),d=O.useRef(n);return HK(()=>{d.current=n},[n]),O.useEffect(()=>{var u;i.current!==s&&((u=d.current)==null||u.call(d,s),i.current=s)},[s,i]),[s,c,d]}function BK(e){return typeof e=="function"}var GK=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),WK="VisuallyHidden",kZ=O.forwardRef((e,n)=>t.jsx(Ye.span,{...e,ref:n,style:{...GK,...e.style}}));kZ.displayName=WK;var YK=kZ,[PQ]=Us("Tooltip",[LQ]),AQ=LQ(),vZ="TooltipProvider",FK=700,cP="tooltip.open",[KK,qP]=PQ(vZ),bZ=e=>{const{__scopeTooltip:n,delayDuration:s=FK,skipDelayDuration:c=300,disableHoverableContent:i=!1,children:d}=e,u=O.useRef(!0),p=O.useRef(!1),f=O.useRef(0);return O.useEffect(()=>{const m=f.current;return()=>window.clearTimeout(m)},[]),t.jsx(KK,{scope:n,isOpenDelayedRef:u,delayDuration:s,onOpen:O.useCallback(()=>{window.clearTimeout(f.current),u.current=!1},[]),onClose:O.useCallback(()=>{window.clearTimeout(f.current),f.current=window.setTimeout(()=>u.current=!0,c)},[c]),isPointerInTransitRef:p,onPointerInTransitChange:O.useCallback(m=>{p.current=m},[]),disableHoverableContent:i,children:d})};bZ.displayName=vZ;var I2="Tooltip",[JK,Y2]=PQ(I2),wZ=e=>{const{__scopeTooltip:n,children:s,open:c,defaultOpen:i,onOpenChange:d,disableHoverableContent:u,delayDuration:p}=e,f=qP(I2,e.__scopeTooltip),m=AQ(n),[k,y]=O.useState(null),v=jd(),b=O.useRef(0),w=u??f.disableHoverableContent,M=p??f.delayDuration,N=O.useRef(!1),[j,$]=TQ({prop:c,defaultProp:i??!1,onChange:P=>{P?(f.onOpen(),document.dispatchEvent(new CustomEvent(cP))):f.onClose(),d==null||d(P)},caller:I2}),z=O.useMemo(()=>j?N.current?"delayed-open":"instant-open":"closed",[j]),L=O.useCallback(()=>{window.clearTimeout(b.current),b.current=0,N.current=!1,$(!0)},[$]),T=O.useCallback(()=>{window.clearTimeout(b.current),b.current=0,$(!1)},[$]),q=O.useCallback(()=>{window.clearTimeout(b.current),b.current=window.setTimeout(()=>{N.current=!0,$(!0),b.current=0},M)},[M,$]);return O.useEffect(()=>()=>{b.current&&(window.clearTimeout(b.current),b.current=0)},[]),t.jsx(mZ,{...m,children:t.jsx(JK,{scope:n,contentId:v,open:j,stateAttribute:z,trigger:k,onTriggerChange:y,onTriggerEnter:O.useCallback(()=>{f.isOpenDelayedRef.current?q():L()},[f.isOpenDelayedRef,q,L]),onTriggerLeave:O.useCallback(()=>{w?T():(window.clearTimeout(b.current),b.current=0)},[T,w]),onOpen:L,onClose:T,disableHoverableContent:w,children:s})})};wZ.displayName=I2;var iP="TooltipTrigger",MZ=O.forwardRef((e,n)=>{const{__scopeTooltip:s,...c}=e,i=Y2(iP,s),d=qP(iP,s),u=AQ(s),p=O.useRef(null),f=ht(n,p,i.onTriggerChange),m=O.useRef(!1),k=O.useRef(!1),y=O.useCallback(()=>m.current=!1,[]);return O.useEffect(()=>()=>document.removeEventListener("pointerup",y),[y]),t.jsx(yZ,{asChild:!0,...u,children:t.jsx(Ye.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...c,ref:f,onPointerMove:$e(e.onPointerMove,v=>{v.pointerType!=="touch"&&!k.current&&!d.isPointerInTransitRef.current&&(i.onTriggerEnter(),k.current=!0)}),onPointerLeave:$e(e.onPointerLeave,()=>{i.onTriggerLeave(),k.current=!1}),onPointerDown:$e(e.onPointerDown,()=>{i.open&&i.onClose(),m.current=!0,document.addEventListener("pointerup",y,{once:!0})}),onFocus:$e(e.onFocus,()=>{m.current||i.onOpen()}),onBlur:$e(e.onBlur,i.onClose),onClick:$e(e.onClick,i.onClose)})})});MZ.displayName=iP;var IP="TooltipPortal",[eJ,tJ]=PQ(IP,{forceMount:void 0}),jZ=e=>{const{__scopeTooltip:n,forceMount:s,children:c,container:i}=e,d=Y2(IP,n);return t.jsx(eJ,{scope:n,forceMount:s,children:t.jsx(ia,{present:s||d.open,children:t.jsx(zQ,{asChild:!0,container:i,children:c})})})};jZ.displayName=IP;var Hd="TooltipContent",SZ=O.forwardRef((e,n)=>{const s=tJ(Hd,e.__scopeTooltip),{forceMount:c=s.forceMount,side:i="top",...d}=e,u=Y2(Hd,e.__scopeTooltip);return t.jsx(ia,{present:c||u.open,children:u.disableHoverableContent?t.jsx(NZ,{side:i,...d,ref:n}):t.jsx(aJ,{side:i,...d,ref:n})})}),aJ=O.forwardRef((e,n)=>{const s=Y2(Hd,e.__scopeTooltip),c=qP(Hd,e.__scopeTooltip),i=O.useRef(null),d=ht(n,i),[u,p]=O.useState(null),{trigger:f,onClose:m}=s,k=i.current,{onPointerInTransitChange:y}=c,v=O.useCallback(()=>{p(null),y(!1)},[y]),b=O.useCallback((w,M)=>{const N=w.currentTarget,j={x:w.clientX,y:w.clientY},$=cJ(j,N.getBoundingClientRect()),z=iJ(j,$),L=rJ(M.getBoundingClientRect()),T=dJ([...z,...L]);p(T),y(!0)},[y]);return O.useEffect(()=>()=>v(),[v]),O.useEffect(()=>{if(f&&k){const w=N=>b(N,k),M=N=>b(N,f);return f.addEventListener("pointerleave",w),k.addEventListener("pointerleave",M),()=>{f.removeEventListener("pointerleave",w),k.removeEventListener("pointerleave",M)}}},[f,k,b,v]),O.useEffect(()=>{if(u){const w=M=>{const N=M.target,j={x:M.clientX,y:M.clientY},$=(f==null?void 0:f.contains(N))||(k==null?void 0:k.contains(N)),z=!lJ(j,u);$?v():z&&(v(),m())};return document.addEventListener("pointermove",w),()=>document.removeEventListener("pointermove",w)}},[f,k,u,m,v]),t.jsx(NZ,{...e,ref:d})}),[nJ,sJ]=PQ(I2,{isInside:!1}),oJ=pF("TooltipContent"),NZ=O.forwardRef((e,n)=>{const{__scopeTooltip:s,children:c,"aria-label":i,onEscapeKeyDown:d,onPointerDownOutside:u,...p}=e,f=Y2(Hd,s),m=AQ(s),{onClose:k}=f;return O.useEffect(()=>(document.addEventListener(cP,k),()=>document.removeEventListener(cP,k)),[k]),O.useEffect(()=>{if(f.trigger){const y=v=>{const b=v.target;b!=null&&b.contains(f.trigger)&&k()};return window.addEventListener("scroll",y,{capture:!0}),()=>window.removeEventListener("scroll",y,{capture:!0})}},[f.trigger,k]),t.jsx(NQ,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:d,onPointerDownOutside:u,onFocusOutside:y=>y.preventDefault(),onDismiss:k,children:t.jsxs(gZ,{"data-state":f.stateAttribute,...m,...p,ref:n,style:{...p.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[t.jsx(oJ,{children:c}),t.jsx(nJ,{scope:s,isInside:!0,children:t.jsx(YK,{id:f.contentId,role:"tooltip",children:i||c})})]})})});SZ.displayName=Hd;var _Z="TooltipArrow",$Z=O.forwardRef((e,n)=>{const{__scopeTooltip:s,...c}=e,i=AQ(s);return sJ(_Z,s).isInside?null:t.jsx(OZ,{...i,...c,ref:n})});$Z.displayName=_Z;function cJ(e,n){const s=Math.abs(n.top-e.y),c=Math.abs(n.bottom-e.y),i=Math.abs(n.right-e.x),d=Math.abs(n.left-e.x);switch(Math.min(s,c,i,d)){case d:return"left";case i:return"right";case s:return"top";case c:return"bottom";default:throw new Error("unreachable")}}function iJ(e,n,s=5){const c=[];switch(n){case"top":c.push({x:e.x-s,y:e.y+s},{x:e.x+s,y:e.y+s});break;case"bottom":c.push({x:e.x-s,y:e.y-s},{x:e.x+s,y:e.y-s});break;case"left":c.push({x:e.x+s,y:e.y-s},{x:e.x+s,y:e.y+s});break;case"right":c.push({x:e.x-s,y:e.y-s},{x:e.x-s,y:e.y+s});break}return c}function rJ(e){const{top:n,right:s,bottom:c,left:i}=e;return[{x:i,y:n},{x:s,y:n},{x:s,y:c},{x:i,y:c}]}function lJ(e,n){const{x:s,y:c}=e;let i=!1;for(let d=0,u=n.length-1;d<n.length;u=d++){const p=n[d],f=n[u],m=p.x,k=p.y,y=f.x,v=f.y;k>c!=v>c&&s<(y-m)*(c-k)/(v-k)+m&&(i=!i)}return i}function dJ(e){const n=e.slice();return n.sort((s,c)=>s.x<c.x?-1:s.x>c.x?1:s.y<c.y?-1:s.y>c.y?1:0),hJ(n)}function hJ(e){if(e.length<=1)return e.slice();const n=[];for(let c=0;c<e.length;c++){const i=e[c];for(;n.length>=2;){const d=n[n.length-1],u=n[n.length-2];if((d.x-u.x)*(i.y-u.y)>=(d.y-u.y)*(i.x-u.x))n.pop();else break}n.push(i)}n.pop();const s=[];for(let c=e.length-1;c>=0;c--){const i=e[c];for(;s.length>=2;){const d=s[s.length-1],u=s[s.length-2];if((d.x-u.x)*(i.y-u.y)>=(d.y-u.y)*(i.x-u.x))s.pop();else break}s.push(i)}return s.pop(),n.length===1&&s.length===1&&n[0].x===s[0].x&&n[0].y===s[0].y?n:n.concat(s)}var uJ=bZ,pJ=wZ,fJ=MZ,xJ=jZ,mJ=SZ,yJ=$Z;function gJ({children:e}){return t.jsx(uJ,{delayDuration:300,children:e})}function R2({children:e,content:n,side:s="top",className:c}){return n?t.jsxs(pJ,{children:[t.jsx(fJ,{asChild:!0,children:e}),t.jsx(xJ,{children:t.jsxs(mJ,{side:s,sideOffset:6,className:K("z-50 px-2.5 py-1.5 text-xs font-sans","bg-surface-4 text-text-0 border border-border rounded-md shadow-lg","animate-in fade-in-0 zoom-in-95",c),children:[n,t.jsx(yJ,{className:"fill-surface-4"})]})})]}):e}/**
|
|
29
|
+
`:" ";N[N.length-1]={...j,text:j.text+L+w,timestamp:Date.now()}}else N.push({from:"agent",text:w,timestamp:Date.now()});M[f]=N.slice(-100),e({chatHistory:M}),Ns("groove:chatHistory",M)}}if(y&&y.trim()){const w={...n().activityLog};w[f]||(w[f]=[]),w[f]=[...w[f].slice(-200),{timestamp:Date.now(),text:y.trim(),type:m.type,subtype:"tool"}],e({activityLog:w}),Ns("groove:activityLog",w)}break}case"agent:exit":{const f=n().agents.find(b=>b.id===i.agentId),m=(f==null?void 0:f.name)||i.agentId,k=i.status==="killed"||i.code===143||i.code===137,y=i.status==="completed"?`${m} completed`:k?`${m} stopped`:`${m} crashed (exit ${i.code})`,v=i.status==="completed"?"success":k?"info":"warning";n().addToast(v,y,i.error?i.error.slice(0,200):void 0),n().thinkingAgents.has(i.agentId)&&e(b=>{const w=new Set(b.thinkingAgents);return w.delete(i.agentId),{thinkingAgents:w}}),i.error&&i.agentId&&n().addChatMessage(i.agentId,"system",`Crashed: ${i.error}`),(f==null?void 0:f.role)==="planner"&&i.status==="completed"&&setTimeout(()=>n().checkRecommendedTeam(),1e3);break}case"phase2:spawned":n().addToast("info",`QC agent ${i.name} auto-spawned`,"Auditing phase 1 work");break;case"preview:ready":n().addToast("success","Project ready to preview",i.url,{label:"View Site",url:i.url},{persistent:!0});break;case"preview:failed":n().addToast("warning","Preview could not launch",i.reason?String(i.reason).slice(0,200):"Unknown error");break;case"preview:stopped":break;case"agent:stalled":{const f=i.agentName||i.agentId,m=Math.round((i.silentMs||0)/1e3);n().addToast("warning",`${f} may be stalled`,`No output for ${m}s — API stream may be hung`);break}case"knock:denied":{const f=i.agentName||i.agentId;n().addToast("warning",`${f} blocked`,`${i.toolName} on ${i.target} — ${i.reason||"scope conflict"}`);break}case"phase2:failed":n().addToast("error","QC agent failed to spawn",i.error||"Unknown error");break;case"agent:message_queued":n().addChatMessage(i.agentId,"system","Agent is working — message will be delivered when it finishes.");break;case"rotation:start":break;case"rotation:complete":{const f=i.agentId,m=i.oldAgentId;if(!f||!m)break;e(k=>{var $,z,L;const y={...k.chatHistory},v={...k.tokenTimeline},b={...k.activityLog},w={...k.chatInputs};($=y[m])!=null&&$.length&&(y[f]=[...y[m]],delete y[m]),(z=v[m])!=null&&z.length&&(v[f]=[...v[m]],delete v[m]),(L=b[m])!=null&&L.length&&(b[f]=[...b[m]],delete b[m]),w[m]&&(w[f]=w[m],delete w[m]);const M=k.detailPanel;let N=M,j=k.teamDetailPanels;if((M==null?void 0:M.type)==="agent"&&M.agentId===m){const T={type:"agent",agentId:f};N=T;const q=n().activeTeamId;j={...k.teamDetailPanels,[q]:T}}try{localStorage.setItem("groove:chatHistory",JSON.stringify(y))}catch{}return{chatHistory:y,tokenTimeline:v,activityLog:b,chatInputs:w,detailPanel:N,teamDetailPanels:j}});break}case"rotation:failed":n().addToast("error","Rotation failed",i.error);break;case"file:changed":{const f=n().editorRecentSaves[i.path];if(f&&Date.now()-f<2e3)break;e(m=>({editorChangedFiles:{...m.editorChangedFiles,[i.path]:i.timestamp}}));break}case"team:created":case"team:deleted":case"team:updated":n().fetchTeams();break;case"approval:request":e(f=>({pendingApprovals:[...f.pendingApprovals,i.data]}));break;case"approval:resolved":{const f=i.data;e(m=>({pendingApprovals:m.pendingApprovals.filter(k=>k.id!==f.id),resolvedApprovals:[f,...m.resolvedApprovals].slice(0,200)}));break}case"conflict:detected":n().addToast("error",`Scope conflict: ${i.agentName||"agent"}`,i.filePath?`File: ${i.filePath}`:void 0);break;case"qc:activated":n().addToast("info","QC agent activated",`${i.agentCount||"4+"} agents running`);break;case"journalist:cycle":e({journalistStatus:i.data||null});break;case"schedule:execute":n().addToast("info",`Scheduled agent spawned: ${i.name||i.role||"agent"}`);break;case"gateway:status":e({gateways:i.data||[]});break;case"federation:whitelist":e(f=>({federation:{...f.federation,whitelist:i.data||[]}}));break;case"federation:connection":e(f=>{const m=[...f.federation.connections],k=m.findIndex(y=>{var v;return y.ip===((v=i.data)==null?void 0:v.ip)});return k>=0?m[k]={...m[k],...i.data}:m.push(i.data),{federation:{...f.federation,connections:m}}});break;case"federation:pouch":case"federation:pouch-log":e(f=>({federation:{...f.federation,pouchLog:[...f.federation.pouchLog,i.data].slice(-200)}}));break;case"project-dir:changed":e({projectDir:(d=i.data)==null?void 0:d.projectDir,showProjectPicker:!1});break;case"tunnel.connected":e({activeTunnelId:((u=i.data)==null?void 0:u.id)||null}),n().fetchTunnels();break;case"tunnel.disconnected":e({activeTunnelId:null}),n().fetchTunnels();break;case"tunnel.health":{const f=n().savedTunnels.map(m=>{var k;return m.id===((k=i.data)==null?void 0:k.id)?{...m,latencyMs:i.data.latencyMs,healthy:i.data.healthy}:m});e({savedTunnels:f});break}case"subscription:updated":{const f={subscription:i.data};((p=i.data)==null?void 0:p.active)===!0&&!n().marketplaceAuthenticated&&(f.marketplaceAuthenticated=!0),e(f),E.get("/edition").then(m=>{e({edition:m.edition||"community",subscription:{plan:m.plan||"community",status:m.status||(m.subscriptionActive?"active":"none"),active:m.subscriptionActive===!0,features:m.features||[],seats:m.seats||1,periodEnd:m.periodEnd||null,cancelAtPeriodEnd:m.cancelAtPeriodEnd||!1}})}).catch(()=>{}),n().fetchTunnels();break}case"auth:expired":e({marketplaceAuthenticated:!1,marketplaceUser:null}),n().addToast("warning","Session expired","Please sign in again");break;case"network:node:status":{const{__proto__:f,constructor:m,prototype:k,...y}=i.data||{};e({networkNode:{...n().networkNode,...y}});break}case"network:node:event":{const f=i.data||{};e(m=>({networkEvents:[...m.networkEvents,{...f,timestamp:f.timestamp||Date.now()}].slice(-100)}));break}case"signal_connected":{const f=i.data||{};e(m=>({networkEvents:[...m.networkEvents,{level:"connected",msg:String(f.msg||f.message||"Connected to signal").slice(0,500),detail:f.detail||f.url||void 0,timestamp:f.timestamp||Date.now()}].slice(-100)}));break}case"matched":{const f=i.data||{};e(m=>({networkEvents:[...m.networkEvents,{level:"session",msg:String(f.msg||f.message||"Session matched").slice(0,500),detail:f.detail||f.peer||f.nodeId||void 0,timestamp:f.timestamp||Date.now()}].slice(-100)}));break}case"network:status":e({networkStatus:{...n().networkStatus,...i.data||{}}});break;case"network:install:progress":{const{step:f,message:m,percent:k}=i.data||{};f==="done"?(e({networkInstalled:!0,networkInstallProgress:{installing:!1,step:null,message:null,percent:0,error:null}}),n().addToast("success","Network package installed")):e(f==="error"?{networkInstallProgress:{installing:!1,step:"error",message:m||"Install failed",percent:0,error:m||"Install failed"}}:{networkInstallProgress:{installing:!0,step:f||"progress",message:m||"",percent:Number.isFinite(k)?Math.max(0,Math.min(100,k)):n().networkInstallProgress.percent,error:null}});break}case"network:update:available":{const{installed:f,latest:m,updateAvailable:k}=i.data||{};e({networkVersion:{installed:f??n().networkVersion.installed,latest:m??n().networkVersion.latest,updateAvailable:!!k}});break}case"network:update:progress":{const{step:f,message:m,percent:k,version:y,error:v}=i.data||{};f==="done"?(e({networkUpdateProgress:{updating:!1,step:null,message:null,percent:0,error:null},networkVersion:{...n().networkVersion,installed:y||n().networkVersion.latest||n().networkVersion.installed,updateAvailable:!1}}),n().addToast("success","Network package updated")):f==="error"?(e({networkUpdateProgress:{updating:!1,step:"error",message:m||v||"Update failed",percent:0,error:m||v||"Update failed"}}),n().addToast("error","Network update failed",m||v)):e({networkUpdateProgress:{updating:!0,step:f||"progress",message:m||"",percent:Number.isFinite(k)?Math.max(0,Math.min(100,k)):n().networkUpdateProgress.percent,error:null}});break}case"config:updated":n().fetchBetaStatus(),n().fetchNetworkInstallStatus();break}},s.onclose=()=>{In&&(clearInterval(In),In=null),e({connected:!1,hydrated:!1,ws:null,daemonHost:null,tunneled:!1}),setTimeout(()=>n().connect(),2e3)},s.onerror=()=>s.close()},setActiveView(s){e({activeView:s})},async fetchTeams(){try{const s=await E.get("/teams");let c=s.teams||[];const i=s.defaultTeamId;try{const f=JSON.parse(localStorage.getItem("groove:teamOrder")||"[]");if(f.length){const m=Object.fromEntries(c.map(v=>[v.id,v])),k=f.filter(v=>m[v]).map(v=>m[v]),y=c.filter(v=>!f.includes(v.id));c=[...k,...y]}}catch{}const{activeTeamId:d}=n(),p=c.map(f=>f.id).includes(d)?d:i;e({teams:c,activeTeamId:p}),p&&localStorage.setItem("groove:activeTeamId",p)}catch{}},switchTeam(s){const{activeTeamId:c,detailPanel:i,teamDetailPanels:d}=n(),u={...d};c&&(u[c]=i);const p=u[s]||null;e({activeTeamId:s,detailPanel:p,teamDetailPanels:u}),localStorage.setItem("groove:activeTeamId",s)},async createTeam(s,c){try{const i={name:s};c&&(i.workingDir=c);const d=await E.post("/teams",i);return e({activeTeamId:d.id}),localStorage.setItem("groove:activeTeamId",d.id),n().addToast("success",`Team "${s}" created`),d}catch(i){throw n().addToast("error","Failed to create team",i.message),i}},async deleteTeam(s){const c=n().teams.find(i=>i.id===s);try{await E.delete(`/teams/${encodeURIComponent(s)}`);const i=c!=null&&c.isDefault?"wiped":"deleted";n().addToast("info",`Team "${c==null?void 0:c.name}" ${i}`)}catch(i){n().addToast("error","Failed to delete team",i.message)}},reorderTeams(s,c){const i=[...n().teams],[d]=i.splice(s,1);i.splice(c,0,d),e({teams:i});try{localStorage.setItem("groove:teamOrder",JSON.stringify(i.map(u=>u.id)))}catch{}},async cloneTeam(s){const c=n().teams.find(d=>d.id===s);if(!c)return;const i=n().agents.filter(d=>d.teamId===s);try{const d=await E.post("/teams",{name:`${c.name} (copy)`});e({activeTeamId:d.id}),localStorage.setItem("groove:activeTeamId",d.id);for(const u of i)await E.post("/agents",{role:u.role,name:u.name,provider:u.provider,model:u.model,scope:u.scope,teamId:d.id});return n().addToast("success",`Cloned "${c.name}" with ${i.length} agent${i.length!==1?"s":""}`),d}catch(d){n().addToast("error","Failed to clone team",d.message)}},async renameTeam(s,c){try{const i=await E.patch(`/teams/${encodeURIComponent(s)}`,{name:c});return e(d=>({teams:d.teams.map(u=>u.id===s?i:u)})),i}catch(i){throw n().addToast("error","Failed to rename team",i.message),i}},openDetail(s){const c=n().activeTeamId;e(i=>({detailPanel:s,teamDetailPanels:{...i.teamDetailPanels,[c]:s}}))},closeDetail(){const s=n().activeTeamId;e(c=>({detailPanel:null,teamDetailPanels:{...c.teamDetailPanels,[s]:null}}))},selectAgent(s){const c=n().activeTeamId,i={type:"agent",agentId:s};e(d=>({detailPanel:i,teamDetailPanels:{...d.teamDetailPanels,[c]:i}}))},clearSelection(){const s=n().activeTeamId;e(c=>({detailPanel:null,teamDetailPanels:{...c.teamDetailPanels,[s]:null}}))},toggleCommandPalette(){e(s=>({commandPaletteOpen:!s.commandPaletteOpen}))},toggleQuickConnect(){e(s=>({quickConnectOpen:!s.quickConnectOpen}))},setUpgradeModalOpen:s=>e({upgradeModalOpen:s}),setDetailPanelWidth(s){e({detailPanelWidth:s}),localStorage.setItem("groove:detailWidth",String(s))},setTerminalVisible(s){e({terminalVisible:s}),localStorage.setItem("groove:terminalVisible",String(s))},setTerminalHeight(s){e({terminalHeight:s}),localStorage.setItem("groove:terminalHeight",String(s))},setTerminalFullHeight(s){e({terminalFullHeight:s})},toggleNodeExpanded(s){const c={...n().expandedNodes};c[s]=!c[s],c[s]||delete c[s],e({expandedNodes:c}),Ns("groove:expandedNodes",c)},addToast(s,c,i,d,u={}){const p=++gY,f=!!u.persistent,m=u.duration;e(k=>({toasts:[...k.toasts,{id:p,type:s,message:c,detail:i,action:d,persistent:f,duration:m}]}))},removeToast(s){e(c=>({toasts:c.toasts.filter(i=>i.id!==s)}))},installUpdate(){var s,c;(c=(s=window.groove)==null?void 0:s.update)==null||c.installUpdate()},async checkMarketplaceAuth(){try{const s=await E.get("/auth/status");e({marketplaceAuthenticated:s.authenticated||!1,marketplaceUser:s.user||null});try{const c=await E.get("/edition");e({edition:c.edition||"community",subscription:{plan:c.plan||"community",status:c.status||(c.subscriptionActive?"active":"none"),active:c.subscriptionActive===!0,features:c.features||[],seats:c.seats||1,periodEnd:c.periodEnd||null,cancelAtPeriodEnd:c.cancelAtPeriodEnd||!1}})}catch{}}catch{e({marketplaceAuthenticated:!1,marketplaceUser:null})}},async marketplaceLogin(){try{const s=await E.get("/auth/login-url");s.url&&window.open(s.url,"_blank");const c=setInterval(async()=>{var i,d;try{const u=await E.get("/auth/status");if(u.authenticated){clearInterval(c),e({marketplaceAuthenticated:!0,marketplaceUser:u.user}),n().addToast("success",`Signed in as ${((i=u.user)==null?void 0:i.displayName)||((d=u.user)==null?void 0:d.id)||"user"}`);try{const p=await E.get("/edition");e({edition:p.edition||"community",subscription:{plan:p.plan||"community",status:p.status||(p.subscriptionActive?"active":"none"),active:p.subscriptionActive===!0,features:p.features||[],seats:p.seats||1,periodEnd:p.periodEnd||null,cancelAtPeriodEnd:p.cancelAtPeriodEnd||!1}})}catch{}setTimeout(async()=>{try{const p=await E.get("/edition");e({edition:p.edition||"community",subscription:{plan:p.plan||"community",status:p.status||(p.subscriptionActive?"active":"none"),active:p.subscriptionActive===!0,features:p.features||[],seats:p.seats||1,periodEnd:p.periodEnd||null,cancelAtPeriodEnd:p.cancelAtPeriodEnd||!1}})}catch{}},2e3)}}catch{}},2e3);setTimeout(()=>clearInterval(c),3e5)}catch(s){n().addToast("error","Login failed",s.message)}},async marketplaceLogout(){try{await E.post("/auth/logout"),e({marketplaceAuthenticated:!1,marketplaceUser:null}),n().addToast("info","Signed out of marketplace")}catch(s){n().addToast("error","Logout failed",s.message)}},async marketplaceCheckout(s){try{const c=await E.post("/auth/checkout",{skillId:s});return c.url&&window.open(c.url,"_blank"),c}catch(c){throw n().addToast("error","Checkout failed",c.message),c}},async fetchSubscriptionPlans(){return E.get("/subscription/plans")},async startCheckout(s){var c,i;try{const d=await E.post("/subscription/checkout",{priceId:s});return d.url&&((c=window.groove)!=null&&c.openExternal?window.groove.openExternal(d.url):window.open(d.url,"_blank")),d}catch(d){throw d.status===401||(i=d.message)!=null&&i.includes("Not authenticated")?(n().addToast("info","Please sign in to subscribe"),n().marketplaceLogin()):d.status===409?n().addToast("info","Already subscribed","Use Manage Subscription to switch plans"):n().addToast("error","Checkout failed",d.message),d}},async openPortal(){var s;try{const c=await E.post("/subscription/portal");return c.url&&((s=window.groove)!=null&&s.openExternal?window.groove.openExternal(c.url):window.open(c.url,"_blank")),c}catch(c){throw n().addToast("error","Portal failed",c.message),c}},async updateSeats(s){try{const c=await E.patch("/subscription",{seats:s});return e({subscription:{...n().subscription,...c}}),n().addToast("success",`Updated to ${s} seat${s!==1?"s":""}`),c}catch(c){throw n().addToast("error","Seat update failed",c.message),c}},async fetchApprovals(){try{const s=await E.get("/approvals");e({pendingApprovals:s.pending||[],resolvedApprovals:s.resolved||[]})}catch{}},async approveRequest(s){try{await E.post(`/approvals/${encodeURIComponent(s)}/approve`),e(c=>({pendingApprovals:c.pendingApprovals.filter(i=>i.id!==s)})),n().addToast("success","Approved")}catch(c){n().addToast("error","Approve failed",c.message)}},async rejectRequest(s,c=""){try{await E.post(`/approvals/${encodeURIComponent(s)}/reject`,{reason:c}),e(i=>({pendingApprovals:i.pendingApprovals.filter(d=>d.id!==s)})),n().addToast("info","Rejected")}catch(i){n().addToast("error","Reject failed",i.message)}},async checkRecommendedTeam(){var s;try{const c=await E.get("/recommended-team");if(!c||!((s=c.agents)!=null&&s.length)){e({recommendedTeam:null});return}const i=c.teamId||null;if(i){const d=n().agents.filter(f=>f.teamId===i&&f.role!=="planner"),u=c.agents.filter(f=>!f.phase||f.phase===1).map(f=>f.role);if(u.every(f=>d.some(m=>m.role===f))&&u.length>0){if(n()._delegatingTeamIds.has(i))return;e(f=>({recommendedTeam:null,_delegatingTeamIds:new Set([...f._delegatingTeamIds,i])}));try{const m=(await E.post("/recommended-team/launch",{teamId:i})).agents||[],k=m.map(y=>y.name).join(", ")||"";n().addToast("success","Planner delegated work",k?`→ ${k}`:void 0),m.length>0&&e(y=>({thinkingAgents:new Set([...y.thinkingAgents,...m.map(v=>v.id)])}))}finally{e(f=>{const m=new Set(f._delegatingTeamIds);return m.delete(i),{_delegatingTeamIds:m}})}return}}e({recommendedTeam:{...c,teamId:c.teamId||null}})}catch{e({recommendedTeam:null})}},async launchRecommendedTeam(s){var c;try{const i=((c=n().recommendedTeam)==null?void 0:c.teamId)||null;e({recommendedTeam:null}),n().addToast("info","Launching team...");const d={...s&&{agents:s},...i&&{teamId:i}},u=await E.post("/recommended-team/launch",d),p=[u.phase2Pending?`${u.phase2Pending} QC queued`:"",u.projectDir?`→ ${u.projectDir}/`:""].filter(Boolean).join(" · ");n().addToast("success",`Launched ${(u.launched||0)+(u.reused||0)} agents`,p||void 0);const f=u.agents||[];f.length>0&&e(k=>({thinkingAgents:new Set([...k.thinkingAgents,...f.map(y=>y.id)])}));const m=(d==null?void 0:d.teamId)||(u==null?void 0:u.teamId)||null;return m&&E.post("/cleanup",{teamId:m}).catch(()=>{}),u}catch(i){throw n().addToast("error","Launch failed",i.message),i}},async fetchImportedRepos(){try{const s=await E.get("/repos/imported");e({importedRepos:s})}catch{}},async previewRepo(s){return E.post("/repos/preview",{repoUrl:s})},async importRepo(s,c,i,d){e({importInProgress:!0});try{const u=await E.post("/repos/import",{repoUrl:s,targetPath:c,createTeam:i,teamName:d});return n().fetchImportedRepos(),u}finally{e({importInProgress:!1})}},async softRemoveRepo(s){await E.delete(`/repos/${encodeURIComponent(s)}/remove`),n().fetchImportedRepos()},async hardNukeRepo(s,c=!0){await E.delete(`/repos/${encodeURIComponent(s)}/nuke?deleteFiles=${c}`),n().fetchImportedRepos()},async fetchProjectDir(){try{const s=await E.get("/project-dir"),c=/^\/home\/[^/]+$/.test(s.projectDir)||s.projectDir==="/root";e({projectDir:s.projectDir,recentProjects:s.recentProjects||[],showProjectPicker:c||(s.recentProjects||[]).length===0})}catch{}},async setProjectDir(s){const c=await E.post("/project-dir",{path:s});e({projectDir:c.projectDir,recentProjects:c.recentProjects||[],showProjectPicker:!1})},toggleProjectPicker(){e(s=>({showProjectPicker:!s.showProjectPicker}))},async fetchTunnels(){try{const s=await E.get("/tunnels");e({savedTunnels:Array.isArray(s)?s:[]})}catch{}},async saveTunnel(s){const c=await E.post("/tunnels",s);return n().fetchTunnels(),c},async updateTunnel(s,c){const i=await E.patch(`/tunnels/${encodeURIComponent(s)}`,c);return n().fetchTunnels(),i},async deleteTunnel(s){await E.delete(`/tunnels/${encodeURIComponent(s)}`),n().fetchTunnels()},async testTunnel(s){return E.post(`/tunnels/${encodeURIComponent(s)}/test`)},async connectTunnel(s){var i,d;const c=await E.post(`/tunnels/${encodeURIComponent(s)}/connect`);return e({activeTunnelId:s}),n().fetchTunnels(),c.localPort&&c.name&&((d=(i=window.groove)==null?void 0:i.remote)!=null&&d.openWindow?window.groove.remote.openWindow(c.localPort,c.name):window.open(`http://localhost:${c.localPort}?instance=${encodeURIComponent(c.name)}`,"_blank")),c},async disconnectTunnel(s){var i,d;const c=n().savedTunnels.find(u=>u.id===s);await E.post(`/tunnels/${encodeURIComponent(s)}/disconnect`),e({activeTunnelId:null}),n().fetchTunnels(),c!=null&&c.localPort&&((d=(i=window.groove)==null?void 0:i.remote)!=null&&d.closeByPort)&&window.groove.remote.closeByPort(c.localPort)},async installTunnel(s){return E.post(`/tunnels/${encodeURIComponent(s)}/install`)},async startTunnel(s){return E.post(`/tunnels/${encodeURIComponent(s)}/start`)},async fetchJournalist(){try{const s=await E.get("/journalist");return e({journalistStatus:s}),s}catch{return null}},async triggerJournalistCycle(){try{const s=await E.post("/journalist/cycle");return n().addToast("success","Synthesis cycle triggered"),e({journalistStatus:s}),s}catch(s){throw n().addToast("error","Synthesis failed",s.message),s}},async spawnAgent(s){try{const c=n().activeTeamId,i=await E.post("/agents",{...s,teamId:c});return n().addToast("success",`Spawned ${i.name}`),i}catch(c){throw n().addToast("error","Spawn failed",c.message),c}},async killAgent(s,c=!1){try{await E.delete(`/agents/${encodeURIComponent(s)}?purge=${c}`),c&&e(i=>{const d={...i.chatHistory},u={...i.activityLog},p={...i.tokenTimeline};return delete d[s],delete u[s],delete p[s],Ns("groove:chatHistory",d),Ns("groove:activityLog",u),{chatHistory:d,activityLog:u,tokenTimeline:p}})}catch(i){n().addToast("error","Kill failed",i.message)}},async rotateAgent(s){try{return await E.post(`/agents/${encodeURIComponent(s)}/rotate`)}catch(c){throw n().addToast("error","Rotation failed",c.message),c}},async fetchProviders(){return E.get("/providers")},async fetchOnboardingStatus(){try{const s=await E.get("/onboarding/status");return s!=null&&s.complete&&(e({onboardingComplete:!0}),localStorage.setItem("groove:onboardingComplete","true")),s}catch{return null}},dismissOnboarding(){e({onboardingComplete:!0}),localStorage.setItem("groove:onboardingComplete","true"),E.post("/onboarding/dismiss").catch(()=>{})},async installProvider(s){try{const c=await E.post("/onboarding/install-provider",{provider:s});return n().addToast("success",`${s} installed`),c}catch(c){throw n().addToast("error",`Install failed: ${s}`,c.message),c}},async setDefaultProvider(s,c){try{await E.post("/onboarding/set-default",{provider:s,model:c}),n().addToast("success",`Default set to ${s} (${c})`)}catch(i){throw n().addToast("error","Failed to set default",i.message),i}},addChatMessage(s,c,i,d=!1){e(u=>{const p={...u.chatHistory};return p[s]||(p[s]=[]),p[s]=[...p[s].slice(-100),{from:c,text:i,timestamp:Date.now(),isQuery:d}],Ns("groove:chatHistory",p),{chatHistory:p}})},thinkingAgents:new Set,async stopAgent(s){try{await E.post(`/agents/${encodeURIComponent(s)}/stop`),e(c=>{const i=new Set(c.thinkingAgents);return i.delete(s),{thinkingAgents:i}}),n().addToast("info","Stopped agent")}catch(c){n().addToast("error","Stop failed",c.message)}},async instructAgent(s,c){var d,u,p;n().addChatMessage(s,"user",c,!1),e(f=>({thinkingAgents:new Set([...f.thinkingAgents,s])}));const i={chatHistory:[...n().chatHistory[s]||[]],activityLog:[...n().activityLog[s]||[]],tokenTimeline:[...n().tokenTimeline[s]||[]]};try{const f=await E.post(`/agents/${encodeURIComponent(s)}/instruct`,{message:c});if(f.status==="message_sent")return f;if(f.status==="message_queued")return e(k=>{const y=new Set(k.thinkingAgents);return y.delete(s),{thinkingAgents:y}}),f;const m=f;for(const k of["chatHistory","activityLog","tokenTimeline"])(d=i[k])!=null&&d.length&&e(y=>({[k]:{...y[k],[m.id]:[...i[k]]}}));return e(k=>{const y=new Set(k.thinkingAgents);return y.delete(s),y.add(m.id),{thinkingAgents:y}}),(u=n().chatHistory[m.id])!=null&&u.length&&Ns("groove:chatHistory",n().chatHistory),(p=n().activityLog[m.id])!=null&&p.length&&Ns("groove:activityLog",n().activityLog),n().selectAgent(m.id),m}catch(f){throw e(m=>{const k=new Set(m.thinkingAgents);return k.delete(s),{thinkingAgents:k}}),n().addChatMessage(s,"system",`failed: ${f.message}`),f}},async queryAgent(s,c){n().addChatMessage(s,"user",c,!0);try{const i=await E.post(`/agents/${encodeURIComponent(s)}/query`,{message:c});return n().addChatMessage(s,"agent",i.response),i}catch(i){throw n().addChatMessage(s,"system",`query failed: ${i.message}`),i}},async openFile(s){var d;if(n().editorFiles[s]||n().editorOpenTabs.includes(s)){e(u=>({editorActiveFile:s,editorOpenTabs:u.editorOpenTabs.includes(s)?u.editorOpenTabs:[...u.editorOpenTabs,s]}));return}const c=(d=s.split(".").pop())==null?void 0:d.toLowerCase();if(["png","jpg","jpeg","gif","svg","webp","ico","bmp","avif","mp4","webm","mov","avi","mkv","ogv"].includes(c)){e(u=>({editorActiveFile:s,editorOpenTabs:[...u.editorOpenTabs,s]}));return}try{const u=await E.get(`/files/read?path=${encodeURIComponent(s)}`);if(u.binary){n().addToast("warning","Binary file — cannot open");return}e(f=>({editorFiles:{...f.editorFiles,[s]:{content:u.content,originalContent:u.content,language:u.language,loadedAt:Date.now()}},editorActiveFile:s,editorOpenTabs:f.editorOpenTabs.includes(s)?f.editorOpenTabs:[...f.editorOpenTabs,s]}));const p=n().ws;(p==null?void 0:p.readyState)===1&&p.send(JSON.stringify({type:"editor:watch",path:s}))}catch(u){n().addToast("error","Failed to open file",u.message)}},closeFile(s){e(i=>{const d=i.editorOpenTabs.filter(m=>m!==s),u={...i.editorFiles};delete u[s];const p={...i.editorChangedFiles};delete p[s];let f=i.editorActiveFile;if(f===s){const m=i.editorOpenTabs.indexOf(s);f=d[Math.min(m,d.length-1)]||null}return{editorOpenTabs:d,editorFiles:u,editorChangedFiles:p,editorActiveFile:f}});const c=n().ws;(c==null?void 0:c.readyState)===1&&c.send(JSON.stringify({type:"editor:unwatch",path:s}))},setActiveFile(s){e({editorActiveFile:s})},setEditorSidebarWidth(s){e({editorSidebarWidth:s}),localStorage.setItem("groove:editorSidebarWidth",String(s))},updateFileContent(s,c){e(i=>({editorFiles:{...i.editorFiles,[s]:{...i.editorFiles[s],content:c}}}))},async saveFile(s){const c=n().editorFiles[s];if(c)try{await E.post("/files/write",{path:s,content:c.content}),e(i=>({editorFiles:{...i.editorFiles,[s]:{...i.editorFiles[s],originalContent:c.content}},editorChangedFiles:(()=>{const d={...i.editorChangedFiles};return delete d[s],d})(),editorRecentSaves:{...i.editorRecentSaves,[s]:Date.now()}})),n().addToast("success","File saved")}catch(i){n().addToast("error","Save failed",i.message)}},async reloadFile(s){try{const c=await E.get(`/files/read?path=${encodeURIComponent(s)}`);if(c.binary)return;e(i=>({editorFiles:{...i.editorFiles,[s]:{content:c.content,originalContent:c.content,language:c.language,loadedAt:Date.now()}},editorChangedFiles:(()=>{const d={...i.editorChangedFiles};return delete d[s],d})()}))}catch{}},dismissFileChange(s){e(c=>{const i={...c.editorChangedFiles};return delete i[s],{editorChangedFiles:i}})},async fetchTreeDir(s){try{const c=await E.get(`/files/tree?path=${encodeURIComponent(s)}`);e(i=>({editorTreeCache:{...i.editorTreeCache,[s]:c.entries}}))}catch{}},async createFile(s){try{await E.post("/files/create",{path:s});const c=s.includes("/")?s.split("/").slice(0,-1).join("/"):"";return await n().fetchTreeDir(c),n().addToast("success","File created"),!0}catch(c){return n().addToast("error","Create failed",c.message),!1}},async createDir(s){try{await E.post("/files/mkdir",{path:s});const c=s.includes("/")?s.split("/").slice(0,-1).join("/"):"";return await n().fetchTreeDir(c),n().addToast("success","Folder created"),!0}catch(c){return n().addToast("error","Create failed",c.message),!1}},async deleteFile(s){try{await E.delete(`/files/delete?path=${encodeURIComponent(s)}`),n().editorOpenTabs.includes(s)&&n().closeFile(s);const c=s.includes("/")?s.split("/").slice(0,-1).join("/"):"";return await n().fetchTreeDir(c),e(i=>{const d={...i.editorTreeCache};return delete d[s],{editorTreeCache:d}}),n().addToast("success","Deleted"),!0}catch(c){return n().addToast("error","Delete failed",c.message),!1}},async fetchFederationStatus(){try{const s=await E.get("/federation");return e(c=>{var i;return{federation:{...c.federation,peers:s.peers||[],whitelist:s.whitelist||[],connections:s.connections||[],ambassadors:((i=s.ambassadors)==null?void 0:i.ambassadors)||s.ambassadors||[]}}}),s}catch{return null}},async addToWhitelist(s,c=31415,i){try{await E.post("/federation/whitelist",{ip:s,port:c,...i&&{name:i}}),n().addToast("success",`Added ${s} to whitelist`),n().fetchFederationStatus()}catch(d){throw n().addToast("error","Whitelist failed",d.message),d}},async removeFromWhitelist(s){try{await E.delete(`/federation/whitelist/${encodeURIComponent(s)}`),n().addToast("info",`Removed ${s}`),n().fetchFederationStatus()}catch(c){n().addToast("error","Remove failed",c.message)}},setSelectedPeer(s){e(c=>({federation:{...c.federation,selectedPeerId:s}}))},async fetchPouchLog(s){try{const c=await E.get(`/federation/pouch/log${s?`?peerId=${encodeURIComponent(s)}`:""}`);e(i=>({federation:{...i.federation,pouchLog:c||[]}}))}catch{}},async sendPouch(s,c){try{const i=await E.post("/federation/pouch/send",{peerId:s,contract:c});return n().addToast("success","Pouch sent"),i}catch(i){throw n().addToast("error","Pouch send failed",i.message),i}},async fetchBetaStatus(){try{const s=await E.get("/beta/status");e({networkUnlocked:!!(s!=null&&s.unlocked)})}catch{}},async activateBeta(s){const c=await E.post("/beta/activate",{code:s});if(!(c!=null&&c.unlocked))throw new Error((c==null?void 0:c.message)||"Invalid invite code");return e({networkUnlocked:!0}),c},async deactivateBeta(){try{await E.post("/beta/deactivate"),e({networkUnlocked:!1,activeView:n().activeView==="network"?"agents":n().activeView})}catch(s){throw n().addToast("error","Deactivate failed",s.message),s}},async fetchNetworkNodeStatus(){try{const s=await E.get("/network/node/status"),c={networkNode:{...n().networkNode,...s||{}}};return s&&typeof s.installed=="boolean"&&(c.networkInstalled=s.installed),e(c),s}catch{return null}},async fetchNetworkInstallStatus(){try{const s=await E.get("/network/install/status");return s&&typeof s.installed=="boolean"&&e({networkInstalled:s.installed}),s}catch{return null}},async installNetworkPackage(){e({networkInstallProgress:{installing:!0,step:"starting",message:"Starting install…",percent:0,error:null}});try{await E.post("/network/install")}catch(s){e({networkInstallProgress:{installing:!1,step:"error",message:s.message,percent:0,error:s.message}}),n().addToast("error","Install failed",s.message)}},async uninstallNetworkPackage(){try{await E.post("/network/uninstall"),e({networkInstalled:!1,networkNode:{active:!1,status:"disconnected",nodeId:null,layers:null,model:null,sessions:0,hardware:null},networkInstallProgress:{installing:!1,step:null,message:null,percent:0,error:null}}),n().addToast("success","Network package uninstalled")}catch(s){throw n().addToast("error","Uninstall failed",s.message),s}},async fetchNetworkStatus(){try{const s=await E.get("/network/status");return e({networkStatus:{...n().networkStatus,...s||{}},networkStatusReachable:!0}),s}catch{return e({networkStatusReachable:!1}),null}},async checkNetworkUpdate(){try{const s=await E.get("/network/update/check");return s?(e({networkVersion:{installed:s.installed??null,latest:s.latest??null,updateAvailable:!!s.updateAvailable}}),s):null}catch{return null}},async updateNetworkPackage(){e({networkUpdateProgress:{updating:!0,step:"starting",message:"Starting update…",percent:0,error:null}});try{await E.post("/network/update")}catch(s){e({networkUpdateProgress:{updating:!1,step:"error",message:s.message,percent:0,error:s.message}}),n().addToast("error","Update failed",s.message)}},async startNetworkNode(){e({networkNode:{...n().networkNode,status:"connecting"}});try{const s=await E.post("/network/node/start");return e({networkNode:{...n().networkNode,active:!0,...s||{}}}),n().addToast("success","Node started","Connecting to the Groove network"),s}catch(s){throw e({networkNode:{...n().networkNode,status:"disconnected",active:!1}}),n().addToast("error","Node start failed",s.message),s}},async stopNetworkNode(){try{await E.post("/network/node/stop"),e({networkNode:{...n().networkNode,active:!1,status:"disconnected"}}),n().addToast("info","Node stopped")}catch(s){throw n().addToast("error","Node stop failed",s.message),s}},async renameFile(s,c){try{await E.post("/files/rename",{oldPath:s,newPath:c}),e(u=>{const p=u.editorOpenTabs.map(k=>k===s?c:k),f={...u.editorFiles};f[s]&&(f[c]=f[s],delete f[s]);const m=u.editorActiveFile===s?c:u.editorActiveFile;return{editorOpenTabs:p,editorFiles:f,editorActiveFile:m}});const i=s.includes("/")?s.split("/").slice(0,-1).join("/"):"",d=c.includes("/")?c.split("/").slice(0,-1).join("/"):"";return await n().fetchTreeDir(i),d!==i&&await n().fetchTreeDir(d),n().addToast("success","Renamed"),!0}catch(i){return n().addToast("error","Rename failed",i.message),!1}}}));function NX(e){O.useEffect(()=>{function n(s){for(const c of e){const i=c.meta?s.metaKey||s.ctrlKey:!0,d=c.shift?s.shiftKey:!s.shiftKey;if(s.key.toLowerCase()===c.key.toLowerCase()&&i&&d){s.preventDefault(),c.handler();return}}}return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[e])}function Bo(){return!!(window.groove||navigator.userAgent.includes("Electron"))}function _X(){var e;return((e=window.groove)==null?void 0:e.platform)||"browser"}function aQ(e){window.groove?window.groove.openExternal(e):window.open(e,"_blank")}async function OY(e={}){var n,s;return(s=(n=window.groove)==null?void 0:n.folders)!=null&&s.select?window.groove.folders.select(e):null}async function $X(e){var n,s;if((s=(n=window.groove)==null?void 0:n.integrations)!=null&&s.oauthStart)return window.groove.integrations.oauthStart(e);window.open(e,"_blank","noopener")}function CX(e){var n,s,c="";if(typeof e=="string"||typeof e=="number")c+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(n=0;n<i;n++)e[n]&&(s=CX(e[n]))&&(c&&(c+=" "),c+=s)}else for(s in e)e[s]&&(c&&(c+=" "),c+=s);return c}function kY(){for(var e,n,s=0,c="",i=arguments.length;s<i;s++)(e=arguments[s])&&(n=CX(e))&&(c&&(c+=" "),c+=n);return c}const vY=(e,n)=>{const s=new Array(e.length+n.length);for(let c=0;c<e.length;c++)s[c]=e[c];for(let c=0;c<n.length;c++)s[e.length+c]=n[c];return s},bY=(e,n)=>({classGroupId:e,validator:n}),QX=(e=new Map,n=null,s)=>({nextPart:e,validators:n,classGroupId:s}),nQ="-",jV=[],wY="arbitrary..",MY=e=>{const n=SY(e),{conflictingClassGroups:s,conflictingClassGroupModifiers:c}=e;return{getClassGroupId:u=>{if(u.startsWith("[")&&u.endsWith("]"))return jY(u);const p=u.split(nQ),f=p[0]===""&&p.length>1?1:0;return LX(p,f,n)},getConflictingClassGroupIds:(u,p)=>{if(p){const f=c[u],m=s[u];return f?m?vY(m,f):f:m||jV}return s[u]||jV}}},LX=(e,n,s)=>{if(e.length-n===0)return s.classGroupId;const i=e[n],d=s.nextPart.get(i);if(d){const m=LX(e,n+1,d);if(m)return m}const u=s.validators;if(u===null)return;const p=n===0?e.join(nQ):e.slice(n).join(nQ),f=u.length;for(let m=0;m<f;m++){const k=u[m];if(k.validator(p))return k.classGroupId}},jY=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const n=e.slice(1,-1),s=n.indexOf(":"),c=n.slice(0,s);return c?wY+c:void 0})(),SY=e=>{const{theme:n,classGroups:s}=e;return NY(s,n)},NY=(e,n)=>{const s=QX();for(const c in e){const i=e[c];SP(i,s,c,n)}return s},SP=(e,n,s,c)=>{const i=e.length;for(let d=0;d<i;d++){const u=e[d];_Y(u,n,s,c)}},_Y=(e,n,s,c)=>{if(typeof e=="string"){$Y(e,n,s);return}if(typeof e=="function"){CY(e,n,s,c);return}QY(e,n,s,c)},$Y=(e,n,s)=>{const c=e===""?n:zX(n,e);c.classGroupId=s},CY=(e,n,s,c)=>{if(LY(e)){SP(e(c),n,s,c);return}n.validators===null&&(n.validators=[]),n.validators.push(bY(s,e))},QY=(e,n,s,c)=>{const i=Object.entries(e),d=i.length;for(let u=0;u<d;u++){const[p,f]=i[u];SP(f,zX(n,p),s,c)}},zX=(e,n)=>{let s=e;const c=n.split(nQ),i=c.length;for(let d=0;d<i;d++){const u=c[d];let p=s.nextPart.get(u);p||(p=QX(),s.nextPart.set(u,p)),s=p}return s},LY=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,zY=e=>{if(e<1)return{get:()=>{},set:()=>{}};let n=0,s=Object.create(null),c=Object.create(null);const i=(d,u)=>{s[d]=u,n++,n>e&&(n=0,c=s,s=Object.create(null))};return{get(d){let u=s[d];if(u!==void 0)return u;if((u=c[d])!==void 0)return i(d,u),u},set(d,u){d in s?s[d]=u:i(d,u)}}},tP="!",SV=":",TY=[],NV=(e,n,s,c,i)=>({modifiers:e,hasImportantModifier:n,baseClassName:s,maybePostfixModifierPosition:c,isExternal:i}),PY=e=>{const{prefix:n,experimentalParseClassName:s}=e;let c=i=>{const d=[];let u=0,p=0,f=0,m;const k=i.length;for(let M=0;M<k;M++){const N=i[M];if(u===0&&p===0){if(N===SV){d.push(i.slice(f,M)),f=M+1;continue}if(N==="/"){m=M;continue}}N==="["?u++:N==="]"?u--:N==="("?p++:N===")"&&p--}const y=d.length===0?i:i.slice(f);let v=y,b=!1;y.endsWith(tP)?(v=y.slice(0,-1),b=!0):y.startsWith(tP)&&(v=y.slice(1),b=!0);const w=m&&m>f?m-f:void 0;return NV(d,b,v,w)};if(n){const i=n+SV,d=c;c=u=>u.startsWith(i)?d(u.slice(i.length)):NV(TY,!1,u,void 0,!0)}if(s){const i=c;c=d=>s({className:d,parseClassName:i})}return c},AY=e=>{const n=new Map;return e.orderSensitiveModifiers.forEach((s,c)=>{n.set(s,1e6+c)}),s=>{const c=[];let i=[];for(let d=0;d<s.length;d++){const u=s[d],p=u[0]==="[",f=n.has(u);p||f?(i.length>0&&(i.sort(),c.push(...i),i=[]),c.push(u)):i.push(u)}return i.length>0&&(i.sort(),c.push(...i)),c}},qY=e=>({cache:zY(e.cacheSize),parseClassName:PY(e),sortModifiers:AY(e),...MY(e)}),IY=/\s+/,RY=(e,n)=>{const{parseClassName:s,getClassGroupId:c,getConflictingClassGroupIds:i,sortModifiers:d}=n,u=[],p=e.trim().split(IY);let f="";for(let m=p.length-1;m>=0;m-=1){const k=p[m],{isExternal:y,modifiers:v,hasImportantModifier:b,baseClassName:w,maybePostfixModifierPosition:M}=s(k);if(y){f=k+(f.length>0?" "+f:f);continue}let N=!!M,j=c(N?w.substring(0,M):w);if(!j){if(!N){f=k+(f.length>0?" "+f:f);continue}if(j=c(w),!j){f=k+(f.length>0?" "+f:f);continue}N=!1}const $=v.length===0?"":v.length===1?v[0]:d(v).join(":"),z=b?$+tP:$,L=z+j;if(u.indexOf(L)>-1)continue;u.push(L);const T=i(j,N);for(let q=0;q<T.length;++q){const P=T[q];u.push(z+P)}f=k+(f.length>0?" "+f:f)}return f},VY=(...e)=>{let n=0,s,c,i="";for(;n<e.length;)(s=e[n++])&&(c=TX(s))&&(i&&(i+=" "),i+=c);return i},TX=e=>{if(typeof e=="string")return e;let n,s="";for(let c=0;c<e.length;c++)e[c]&&(n=TX(e[c]))&&(s&&(s+=" "),s+=n);return s},EY=(e,...n)=>{let s,c,i,d;const u=f=>{const m=n.reduce((k,y)=>y(k),e());return s=qY(m),c=s.cache.get,i=s.cache.set,d=p,p(f)},p=f=>{const m=c(f);if(m)return m;const k=RY(f,s);return i(f,k),k};return d=u,(...f)=>d(VY(...f))},XY=[],Qt=e=>{const n=s=>s[e]||XY;return n.isThemeGetter=!0,n},PX=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,AX=/^\((?:(\w[\w-]*):)?(.+)\)$/i,ZY=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,DY=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,HY=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,UY=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,BY=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,GY=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,vo=e=>ZY.test(e),qe=e=>!!e&&!Number.isNaN(Number(e)),bo=e=>!!e&&Number.isInteger(Number(e)),uT=e=>e.endsWith("%")&&qe(e.slice(0,-1)),Ms=e=>DY.test(e),qX=()=>!0,WY=e=>HY.test(e)&&!UY.test(e),NP=()=>!1,YY=e=>BY.test(e),FY=e=>GY.test(e),KY=e=>!we(e)&&!Me(e),JY=e=>Fo(e,VX,NP),we=e=>PX.test(e),mc=e=>Fo(e,EX,WY),_V=e=>Fo(e,iF,qe),eF=e=>Fo(e,ZX,qX),tF=e=>Fo(e,XX,NP),$V=e=>Fo(e,IX,NP),aF=e=>Fo(e,RX,FY),xu=e=>Fo(e,DX,YY),Me=e=>AX.test(e),B0=e=>Q1(e,EX),nF=e=>Q1(e,XX),CV=e=>Q1(e,IX),sF=e=>Q1(e,VX),oF=e=>Q1(e,RX),mu=e=>Q1(e,DX,!0),cF=e=>Q1(e,ZX,!0),Fo=(e,n,s)=>{const c=PX.exec(e);return c?c[1]?n(c[1]):s(c[2]):!1},Q1=(e,n,s=!1)=>{const c=AX.exec(e);return c?c[1]?n(c[1]):s:!1},IX=e=>e==="position"||e==="percentage",RX=e=>e==="image"||e==="url",VX=e=>e==="length"||e==="size"||e==="bg-size",EX=e=>e==="length",iF=e=>e==="number",XX=e=>e==="family-name",ZX=e=>e==="number"||e==="weight",DX=e=>e==="shadow",rF=()=>{const e=Qt("color"),n=Qt("font"),s=Qt("text"),c=Qt("font-weight"),i=Qt("tracking"),d=Qt("leading"),u=Qt("breakpoint"),p=Qt("container"),f=Qt("spacing"),m=Qt("radius"),k=Qt("shadow"),y=Qt("inset-shadow"),v=Qt("text-shadow"),b=Qt("drop-shadow"),w=Qt("blur"),M=Qt("perspective"),N=Qt("aspect"),j=Qt("ease"),$=Qt("animate"),z=()=>["auto","avoid","all","avoid-page","page","left","right","column"],L=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],T=()=>[...L(),Me,we],q=()=>["auto","hidden","clip","visible","scroll"],P=()=>["auto","contain","none"],C=()=>[Me,we,f],F=()=>[vo,"full","auto",...C()],R=()=>[bo,"none","subgrid",Me,we],se=()=>["auto",{span:["full",bo,Me,we]},bo,Me,we],ne=()=>[bo,"auto",Me,we],ce=()=>["auto","min","max","fr",Me,we],X=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],A=()=>["start","end","center","stretch","center-safe","end-safe"],Q=()=>["auto",...C()],Z=()=>[vo,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...C()],J=()=>[vo,"screen","full","dvw","lvw","svw","min","max","fit",...C()],Y=()=>[vo,"screen","full","lh","dvh","lvh","svh","min","max","fit",...C()],U=()=>[e,Me,we],fe=()=>[...L(),CV,$V,{position:[Me,we]}],ue=()=>["no-repeat",{repeat:["","x","y","space","round"]}],pe=()=>["auto","cover","contain",sF,JY,{size:[Me,we]}],Oe=()=>[uT,B0,mc],Se=()=>["","none","full",m,Me,we],de=()=>["",qe,B0,mc],ve=()=>["solid","dashed","dotted","double"],ct=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Le=()=>[qe,uT,CV,$V],vt=()=>["","none",w,Me,we],it=()=>["none",qe,Me,we],ut=()=>["none",qe,Me,we],bt=()=>[qe,Me,we],Ke=()=>[vo,"full",...C()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Ms],breakpoint:[Ms],color:[qX],container:[Ms],"drop-shadow":[Ms],ease:["in","out","in-out"],font:[KY],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Ms],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Ms],shadow:[Ms],spacing:["px",qe],text:[Ms],"text-shadow":[Ms],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",vo,we,Me,N]}],container:["container"],columns:[{columns:[qe,we,Me,p]}],"break-after":[{"break-after":z()}],"break-before":[{"break-before":z()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:T()}],overflow:[{overflow:q()}],"overflow-x":[{"overflow-x":q()}],"overflow-y":[{"overflow-y":q()}],overscroll:[{overscroll:P()}],"overscroll-x":[{"overscroll-x":P()}],"overscroll-y":[{"overscroll-y":P()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:F()}],"inset-x":[{"inset-x":F()}],"inset-y":[{"inset-y":F()}],start:[{"inset-s":F(),start:F()}],end:[{"inset-e":F(),end:F()}],"inset-bs":[{"inset-bs":F()}],"inset-be":[{"inset-be":F()}],top:[{top:F()}],right:[{right:F()}],bottom:[{bottom:F()}],left:[{left:F()}],visibility:["visible","invisible","collapse"],z:[{z:[bo,"auto",Me,we]}],basis:[{basis:[vo,"full","auto",p,...C()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[qe,vo,"auto","initial","none",we]}],grow:[{grow:["",qe,Me,we]}],shrink:[{shrink:["",qe,Me,we]}],order:[{order:[bo,"first","last","none",Me,we]}],"grid-cols":[{"grid-cols":R()}],"col-start-end":[{col:se()}],"col-start":[{"col-start":ne()}],"col-end":[{"col-end":ne()}],"grid-rows":[{"grid-rows":R()}],"row-start-end":[{row:se()}],"row-start":[{"row-start":ne()}],"row-end":[{"row-end":ne()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ce()}],"auto-rows":[{"auto-rows":ce()}],gap:[{gap:C()}],"gap-x":[{"gap-x":C()}],"gap-y":[{"gap-y":C()}],"justify-content":[{justify:[...X(),"normal"]}],"justify-items":[{"justify-items":[...A(),"normal"]}],"justify-self":[{"justify-self":["auto",...A()]}],"align-content":[{content:["normal",...X()]}],"align-items":[{items:[...A(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...A(),{baseline:["","last"]}]}],"place-content":[{"place-content":X()}],"place-items":[{"place-items":[...A(),"baseline"]}],"place-self":[{"place-self":["auto",...A()]}],p:[{p:C()}],px:[{px:C()}],py:[{py:C()}],ps:[{ps:C()}],pe:[{pe:C()}],pbs:[{pbs:C()}],pbe:[{pbe:C()}],pt:[{pt:C()}],pr:[{pr:C()}],pb:[{pb:C()}],pl:[{pl:C()}],m:[{m:Q()}],mx:[{mx:Q()}],my:[{my:Q()}],ms:[{ms:Q()}],me:[{me:Q()}],mbs:[{mbs:Q()}],mbe:[{mbe:Q()}],mt:[{mt:Q()}],mr:[{mr:Q()}],mb:[{mb:Q()}],ml:[{ml:Q()}],"space-x":[{"space-x":C()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":C()}],"space-y-reverse":["space-y-reverse"],size:[{size:Z()}],"inline-size":[{inline:["auto",...J()]}],"min-inline-size":[{"min-inline":["auto",...J()]}],"max-inline-size":[{"max-inline":["none",...J()]}],"block-size":[{block:["auto",...Y()]}],"min-block-size":[{"min-block":["auto",...Y()]}],"max-block-size":[{"max-block":["none",...Y()]}],w:[{w:[p,"screen",...Z()]}],"min-w":[{"min-w":[p,"screen","none",...Z()]}],"max-w":[{"max-w":[p,"screen","none","prose",{screen:[u]},...Z()]}],h:[{h:["screen","lh",...Z()]}],"min-h":[{"min-h":["screen","lh","none",...Z()]}],"max-h":[{"max-h":["screen","lh",...Z()]}],"font-size":[{text:["base",s,B0,mc]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[c,cF,eF]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",uT,we]}],"font-family":[{font:[nF,tF,n]}],"font-features":[{"font-features":[we]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[i,Me,we]}],"line-clamp":[{"line-clamp":[qe,"none",Me,_V]}],leading:[{leading:[d,...C()]}],"list-image":[{"list-image":["none",Me,we]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Me,we]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:U()}],"text-color":[{text:U()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ve(),"wavy"]}],"text-decoration-thickness":[{decoration:[qe,"from-font","auto",Me,mc]}],"text-decoration-color":[{decoration:U()}],"underline-offset":[{"underline-offset":[qe,"auto",Me,we]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:C()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Me,we]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Me,we]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:fe()}],"bg-repeat":[{bg:ue()}],"bg-size":[{bg:pe()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},bo,Me,we],radial:["",Me,we],conic:[bo,Me,we]},oF,aF]}],"bg-color":[{bg:U()}],"gradient-from-pos":[{from:Oe()}],"gradient-via-pos":[{via:Oe()}],"gradient-to-pos":[{to:Oe()}],"gradient-from":[{from:U()}],"gradient-via":[{via:U()}],"gradient-to":[{to:U()}],rounded:[{rounded:Se()}],"rounded-s":[{"rounded-s":Se()}],"rounded-e":[{"rounded-e":Se()}],"rounded-t":[{"rounded-t":Se()}],"rounded-r":[{"rounded-r":Se()}],"rounded-b":[{"rounded-b":Se()}],"rounded-l":[{"rounded-l":Se()}],"rounded-ss":[{"rounded-ss":Se()}],"rounded-se":[{"rounded-se":Se()}],"rounded-ee":[{"rounded-ee":Se()}],"rounded-es":[{"rounded-es":Se()}],"rounded-tl":[{"rounded-tl":Se()}],"rounded-tr":[{"rounded-tr":Se()}],"rounded-br":[{"rounded-br":Se()}],"rounded-bl":[{"rounded-bl":Se()}],"border-w":[{border:de()}],"border-w-x":[{"border-x":de()}],"border-w-y":[{"border-y":de()}],"border-w-s":[{"border-s":de()}],"border-w-e":[{"border-e":de()}],"border-w-bs":[{"border-bs":de()}],"border-w-be":[{"border-be":de()}],"border-w-t":[{"border-t":de()}],"border-w-r":[{"border-r":de()}],"border-w-b":[{"border-b":de()}],"border-w-l":[{"border-l":de()}],"divide-x":[{"divide-x":de()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":de()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ve(),"hidden","none"]}],"divide-style":[{divide:[...ve(),"hidden","none"]}],"border-color":[{border:U()}],"border-color-x":[{"border-x":U()}],"border-color-y":[{"border-y":U()}],"border-color-s":[{"border-s":U()}],"border-color-e":[{"border-e":U()}],"border-color-bs":[{"border-bs":U()}],"border-color-be":[{"border-be":U()}],"border-color-t":[{"border-t":U()}],"border-color-r":[{"border-r":U()}],"border-color-b":[{"border-b":U()}],"border-color-l":[{"border-l":U()}],"divide-color":[{divide:U()}],"outline-style":[{outline:[...ve(),"none","hidden"]}],"outline-offset":[{"outline-offset":[qe,Me,we]}],"outline-w":[{outline:["",qe,B0,mc]}],"outline-color":[{outline:U()}],shadow:[{shadow:["","none",k,mu,xu]}],"shadow-color":[{shadow:U()}],"inset-shadow":[{"inset-shadow":["none",y,mu,xu]}],"inset-shadow-color":[{"inset-shadow":U()}],"ring-w":[{ring:de()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:U()}],"ring-offset-w":[{"ring-offset":[qe,mc]}],"ring-offset-color":[{"ring-offset":U()}],"inset-ring-w":[{"inset-ring":de()}],"inset-ring-color":[{"inset-ring":U()}],"text-shadow":[{"text-shadow":["none",v,mu,xu]}],"text-shadow-color":[{"text-shadow":U()}],opacity:[{opacity:[qe,Me,we]}],"mix-blend":[{"mix-blend":[...ct(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ct()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[qe]}],"mask-image-linear-from-pos":[{"mask-linear-from":Le()}],"mask-image-linear-to-pos":[{"mask-linear-to":Le()}],"mask-image-linear-from-color":[{"mask-linear-from":U()}],"mask-image-linear-to-color":[{"mask-linear-to":U()}],"mask-image-t-from-pos":[{"mask-t-from":Le()}],"mask-image-t-to-pos":[{"mask-t-to":Le()}],"mask-image-t-from-color":[{"mask-t-from":U()}],"mask-image-t-to-color":[{"mask-t-to":U()}],"mask-image-r-from-pos":[{"mask-r-from":Le()}],"mask-image-r-to-pos":[{"mask-r-to":Le()}],"mask-image-r-from-color":[{"mask-r-from":U()}],"mask-image-r-to-color":[{"mask-r-to":U()}],"mask-image-b-from-pos":[{"mask-b-from":Le()}],"mask-image-b-to-pos":[{"mask-b-to":Le()}],"mask-image-b-from-color":[{"mask-b-from":U()}],"mask-image-b-to-color":[{"mask-b-to":U()}],"mask-image-l-from-pos":[{"mask-l-from":Le()}],"mask-image-l-to-pos":[{"mask-l-to":Le()}],"mask-image-l-from-color":[{"mask-l-from":U()}],"mask-image-l-to-color":[{"mask-l-to":U()}],"mask-image-x-from-pos":[{"mask-x-from":Le()}],"mask-image-x-to-pos":[{"mask-x-to":Le()}],"mask-image-x-from-color":[{"mask-x-from":U()}],"mask-image-x-to-color":[{"mask-x-to":U()}],"mask-image-y-from-pos":[{"mask-y-from":Le()}],"mask-image-y-to-pos":[{"mask-y-to":Le()}],"mask-image-y-from-color":[{"mask-y-from":U()}],"mask-image-y-to-color":[{"mask-y-to":U()}],"mask-image-radial":[{"mask-radial":[Me,we]}],"mask-image-radial-from-pos":[{"mask-radial-from":Le()}],"mask-image-radial-to-pos":[{"mask-radial-to":Le()}],"mask-image-radial-from-color":[{"mask-radial-from":U()}],"mask-image-radial-to-color":[{"mask-radial-to":U()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":L()}],"mask-image-conic-pos":[{"mask-conic":[qe]}],"mask-image-conic-from-pos":[{"mask-conic-from":Le()}],"mask-image-conic-to-pos":[{"mask-conic-to":Le()}],"mask-image-conic-from-color":[{"mask-conic-from":U()}],"mask-image-conic-to-color":[{"mask-conic-to":U()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:fe()}],"mask-repeat":[{mask:ue()}],"mask-size":[{mask:pe()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Me,we]}],filter:[{filter:["","none",Me,we]}],blur:[{blur:vt()}],brightness:[{brightness:[qe,Me,we]}],contrast:[{contrast:[qe,Me,we]}],"drop-shadow":[{"drop-shadow":["","none",b,mu,xu]}],"drop-shadow-color":[{"drop-shadow":U()}],grayscale:[{grayscale:["",qe,Me,we]}],"hue-rotate":[{"hue-rotate":[qe,Me,we]}],invert:[{invert:["",qe,Me,we]}],saturate:[{saturate:[qe,Me,we]}],sepia:[{sepia:["",qe,Me,we]}],"backdrop-filter":[{"backdrop-filter":["","none",Me,we]}],"backdrop-blur":[{"backdrop-blur":vt()}],"backdrop-brightness":[{"backdrop-brightness":[qe,Me,we]}],"backdrop-contrast":[{"backdrop-contrast":[qe,Me,we]}],"backdrop-grayscale":[{"backdrop-grayscale":["",qe,Me,we]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[qe,Me,we]}],"backdrop-invert":[{"backdrop-invert":["",qe,Me,we]}],"backdrop-opacity":[{"backdrop-opacity":[qe,Me,we]}],"backdrop-saturate":[{"backdrop-saturate":[qe,Me,we]}],"backdrop-sepia":[{"backdrop-sepia":["",qe,Me,we]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":C()}],"border-spacing-x":[{"border-spacing-x":C()}],"border-spacing-y":[{"border-spacing-y":C()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Me,we]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[qe,"initial",Me,we]}],ease:[{ease:["linear","initial",j,Me,we]}],delay:[{delay:[qe,Me,we]}],animate:[{animate:["none",$,Me,we]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[M,Me,we]}],"perspective-origin":[{"perspective-origin":T()}],rotate:[{rotate:it()}],"rotate-x":[{"rotate-x":it()}],"rotate-y":[{"rotate-y":it()}],"rotate-z":[{"rotate-z":it()}],scale:[{scale:ut()}],"scale-x":[{"scale-x":ut()}],"scale-y":[{"scale-y":ut()}],"scale-z":[{"scale-z":ut()}],"scale-3d":["scale-3d"],skew:[{skew:bt()}],"skew-x":[{"skew-x":bt()}],"skew-y":[{"skew-y":bt()}],transform:[{transform:[Me,we,"","none","gpu","cpu"]}],"transform-origin":[{origin:T()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Ke()}],"translate-x":[{"translate-x":Ke()}],"translate-y":[{"translate-y":Ke()}],"translate-z":[{"translate-z":Ke()}],"translate-none":["translate-none"],accent:[{accent:U()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:U()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Me,we]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":C()}],"scroll-mx":[{"scroll-mx":C()}],"scroll-my":[{"scroll-my":C()}],"scroll-ms":[{"scroll-ms":C()}],"scroll-me":[{"scroll-me":C()}],"scroll-mbs":[{"scroll-mbs":C()}],"scroll-mbe":[{"scroll-mbe":C()}],"scroll-mt":[{"scroll-mt":C()}],"scroll-mr":[{"scroll-mr":C()}],"scroll-mb":[{"scroll-mb":C()}],"scroll-ml":[{"scroll-ml":C()}],"scroll-p":[{"scroll-p":C()}],"scroll-px":[{"scroll-px":C()}],"scroll-py":[{"scroll-py":C()}],"scroll-ps":[{"scroll-ps":C()}],"scroll-pe":[{"scroll-pe":C()}],"scroll-pbs":[{"scroll-pbs":C()}],"scroll-pbe":[{"scroll-pbe":C()}],"scroll-pt":[{"scroll-pt":C()}],"scroll-pr":[{"scroll-pr":C()}],"scroll-pb":[{"scroll-pb":C()}],"scroll-pl":[{"scroll-pl":C()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Me,we]}],fill:[{fill:["none",...U()]}],"stroke-w":[{stroke:[qe,B0,mc,_V]}],stroke:[{stroke:["none",...U()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},lF=EY(rF);function K(...e){return lF(kY(e))}function $e(e,n,{checkForDefaultPrevented:s=!0}={}){return function(i){if(e==null||e(i),s===!1||!i.defaultPrevented)return n==null?void 0:n(i)}}function QV(e,n){if(typeof e=="function")return e(n);e!=null&&(e.current=n)}function _P(...e){return n=>{let s=!1;const c=e.map(i=>{const d=QV(i,n);return!s&&typeof d=="function"&&(s=!0),d});if(s)return()=>{for(let i=0;i<c.length;i++){const d=c[i];typeof d=="function"?d():QV(e[i],null)}}}}function ht(...e){return O.useCallback(_P(...e),e)}function dF(e,n){const s=O.createContext(n),c=d=>{const{children:u,...p}=d,f=O.useMemo(()=>p,Object.values(p));return t.jsx(s.Provider,{value:f,children:u})};c.displayName=e+"Provider";function i(d){const u=O.useContext(s);if(u)return u;if(n!==void 0)return n;throw new Error(`\`${d}\` must be used within \`${e}\``)}return[c,i]}function Us(e,n=[]){let s=[];function c(d,u){const p=O.createContext(u),f=s.length;s=[...s,u];const m=y=>{var j;const{scope:v,children:b,...w}=y,M=((j=v==null?void 0:v[e])==null?void 0:j[f])||p,N=O.useMemo(()=>w,Object.values(w));return t.jsx(M.Provider,{value:N,children:b})};m.displayName=d+"Provider";function k(y,v){var M;const b=((M=v==null?void 0:v[e])==null?void 0:M[f])||p,w=O.useContext(b);if(w)return w;if(u!==void 0)return u;throw new Error(`\`${y}\` must be used within \`${d}\``)}return[m,k]}const i=()=>{const d=s.map(u=>O.createContext(u));return function(p){const f=(p==null?void 0:p[e])||d;return O.useMemo(()=>({[`__scope${e}`]:{...p,[e]:f}}),[p,f])}};return i.scopeName=e,[c,hF(i,...n)]}function hF(...e){const n=e[0];if(e.length===1)return n;const s=()=>{const c=e.map(i=>({useScope:i(),scopeName:i.scopeName}));return function(d){const u=c.reduce((p,{useScope:f,scopeName:m})=>{const y=f(d)[`__scope${m}`];return{...p,...y}},{});return O.useMemo(()=>({[`__scope${n.scopeName}`]:u}),[u])}};return s.scopeName=n.scopeName,s}function A2(e){const n=uF(e),s=O.forwardRef((c,i)=>{const{children:d,...u}=c,p=O.Children.toArray(d),f=p.find(fF);if(f){const m=f.props.children,k=p.map(y=>y===f?O.Children.count(m)>1?O.Children.only(null):O.isValidElement(m)?m.props.children:null:y);return t.jsx(n,{...u,ref:i,children:O.isValidElement(m)?O.cloneElement(m,void 0,k):null})}return t.jsx(n,{...u,ref:i,children:d})});return s.displayName=`${e}.Slot`,s}function uF(e){const n=O.forwardRef((s,c)=>{const{children:i,...d}=s;if(O.isValidElement(i)){const u=mF(i),p=xF(d,i.props);return i.type!==O.Fragment&&(p.ref=c?_P(c,u):u),O.cloneElement(i,p)}return O.Children.count(i)>1?O.Children.only(null):null});return n.displayName=`${e}.SlotClone`,n}var HX=Symbol("radix.slottable");function pF(e){const n=({children:s})=>t.jsx(t.Fragment,{children:s});return n.displayName=`${e}.Slottable`,n.__radixId=HX,n}function fF(e){return O.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===HX}function xF(e,n){const s={...n};for(const c in n){const i=e[c],d=n[c];/^on[A-Z]/.test(c)?i&&d?s[c]=(...p)=>{const f=d(...p);return i(...p),f}:i&&(s[c]=i):c==="style"?s[c]={...i,...d}:c==="className"&&(s[c]=[i,d].filter(Boolean).join(" "))}return{...e,...s}}function mF(e){var c,i;let n=(c=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:c.get,s=n&&"isReactWarning"in n&&n.isReactWarning;return s?e.ref:(n=(i=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:i.get,s=n&&"isReactWarning"in n&&n.isReactWarning,s?e.props.ref:e.props.ref||e.ref)}var yF=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Ye=yF.reduce((e,n)=>{const s=A2(`Primitive.${n}`),c=O.forwardRef((i,d)=>{const{asChild:u,...p}=i,f=u?s:n;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),t.jsx(f,{...p,ref:d})});return c.displayName=`Primitive.${n}`,{...e,[n]:c}},{});function UX(e,n){e&&OX.flushSync(()=>e.dispatchEvent(n))}function Gt(e){const n=O.useRef(e);return O.useEffect(()=>{n.current=e}),O.useMemo(()=>(...s)=>{var c;return(c=n.current)==null?void 0:c.call(n,...s)},[])}function gF(e,n=globalThis==null?void 0:globalThis.document){const s=Gt(e);O.useEffect(()=>{const c=i=>{i.key==="Escape"&&s(i)};return n.addEventListener("keydown",c,{capture:!0}),()=>n.removeEventListener("keydown",c,{capture:!0})},[s,n])}var OF="DismissableLayer",aP="dismissableLayer.update",kF="dismissableLayer.pointerDownOutside",vF="dismissableLayer.focusOutside",LV,BX=O.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),NQ=O.forwardRef((e,n)=>{const{disableOutsidePointerEvents:s=!1,onEscapeKeyDown:c,onPointerDownOutside:i,onFocusOutside:d,onInteractOutside:u,onDismiss:p,...f}=e,m=O.useContext(BX),[k,y]=O.useState(null),v=(k==null?void 0:k.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,b]=O.useState({}),w=ht(n,P=>y(P)),M=Array.from(m.layers),[N]=[...m.layersWithOutsidePointerEventsDisabled].slice(-1),j=M.indexOf(N),$=k?M.indexOf(k):-1,z=m.layersWithOutsidePointerEventsDisabled.size>0,L=$>=j,T=MF(P=>{const C=P.target,F=[...m.branches].some(R=>R.contains(C));!L||F||(i==null||i(P),u==null||u(P),P.defaultPrevented||p==null||p())},v),q=jF(P=>{const C=P.target;[...m.branches].some(R=>R.contains(C))||(d==null||d(P),u==null||u(P),P.defaultPrevented||p==null||p())},v);return gF(P=>{$===m.layers.size-1&&(c==null||c(P),!P.defaultPrevented&&p&&(P.preventDefault(),p()))},v),O.useEffect(()=>{if(k)return s&&(m.layersWithOutsidePointerEventsDisabled.size===0&&(LV=v.body.style.pointerEvents,v.body.style.pointerEvents="none"),m.layersWithOutsidePointerEventsDisabled.add(k)),m.layers.add(k),zV(),()=>{s&&m.layersWithOutsidePointerEventsDisabled.size===1&&(v.body.style.pointerEvents=LV)}},[k,v,s,m]),O.useEffect(()=>()=>{k&&(m.layers.delete(k),m.layersWithOutsidePointerEventsDisabled.delete(k),zV())},[k,m]),O.useEffect(()=>{const P=()=>b({});return document.addEventListener(aP,P),()=>document.removeEventListener(aP,P)},[]),t.jsx(Ye.div,{...f,ref:w,style:{pointerEvents:z?L?"auto":"none":void 0,...e.style},onFocusCapture:$e(e.onFocusCapture,q.onFocusCapture),onBlurCapture:$e(e.onBlurCapture,q.onBlurCapture),onPointerDownCapture:$e(e.onPointerDownCapture,T.onPointerDownCapture)})});NQ.displayName=OF;var bF="DismissableLayerBranch",wF=O.forwardRef((e,n)=>{const s=O.useContext(BX),c=O.useRef(null),i=ht(n,c);return O.useEffect(()=>{const d=c.current;if(d)return s.branches.add(d),()=>{s.branches.delete(d)}},[s.branches]),t.jsx(Ye.div,{...e,ref:i})});wF.displayName=bF;function MF(e,n=globalThis==null?void 0:globalThis.document){const s=Gt(e),c=O.useRef(!1),i=O.useRef(()=>{});return O.useEffect(()=>{const d=p=>{if(p.target&&!c.current){let f=function(){GX(kF,s,m,{discrete:!0})};const m={originalEvent:p};p.pointerType==="touch"?(n.removeEventListener("click",i.current),i.current=f,n.addEventListener("click",i.current,{once:!0})):f()}else n.removeEventListener("click",i.current);c.current=!1},u=window.setTimeout(()=>{n.addEventListener("pointerdown",d)},0);return()=>{window.clearTimeout(u),n.removeEventListener("pointerdown",d),n.removeEventListener("click",i.current)}},[n,s]),{onPointerDownCapture:()=>c.current=!0}}function jF(e,n=globalThis==null?void 0:globalThis.document){const s=Gt(e),c=O.useRef(!1);return O.useEffect(()=>{const i=d=>{d.target&&!c.current&&GX(vF,s,{originalEvent:d},{discrete:!1})};return n.addEventListener("focusin",i),()=>n.removeEventListener("focusin",i)},[n,s]),{onFocusCapture:()=>c.current=!0,onBlurCapture:()=>c.current=!1}}function zV(){const e=new CustomEvent(aP);document.dispatchEvent(e)}function GX(e,n,s,{discrete:c}){const i=s.originalEvent.target,d=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:s});n&&i.addEventListener(e,n,{once:!0}),c?UX(i,d):i.dispatchEvent(d)}var Zs=globalThis!=null&&globalThis.document?O.useLayoutEffect:()=>{},SF=gX[" useId ".trim().toString()]||(()=>{}),NF=0;function jd(e){const[n,s]=O.useState(SF());return Zs(()=>{s(c=>c??String(NF++))},[e]),n?`radix-${n}`:""}const _F=["top","right","bottom","left"],Go=Math.min,Ta=Math.max,sQ=Math.round,yu=Math.floor,Fn=e=>({x:e,y:e}),$F={left:"right",right:"left",bottom:"top",top:"bottom"};function nP(e,n,s){return Ta(e,Go(n,s))}function Ds(e,n){return typeof e=="function"?e(n):e}function Hs(e){return e.split("-")[0]}function Kd(e){return e.split("-")[1]}function $P(e){return e==="x"?"y":"x"}function CP(e){return e==="y"?"height":"width"}function Yn(e){const n=e[0];return n==="t"||n==="b"?"y":"x"}function QP(e){return $P(Yn(e))}function CF(e,n,s){s===void 0&&(s=!1);const c=Kd(e),i=QP(e),d=CP(i);let u=i==="x"?c===(s?"end":"start")?"right":"left":c==="start"?"bottom":"top";return n.reference[d]>n.floating[d]&&(u=oQ(u)),[u,oQ(u)]}function QF(e){const n=oQ(e);return[sP(e),n,sP(n)]}function sP(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const TV=["left","right"],PV=["right","left"],LF=["top","bottom"],zF=["bottom","top"];function TF(e,n,s){switch(e){case"top":case"bottom":return s?n?PV:TV:n?TV:PV;case"left":case"right":return n?LF:zF;default:return[]}}function PF(e,n,s,c){const i=Kd(e);let d=TF(Hs(e),s==="start",c);return i&&(d=d.map(u=>u+"-"+i),n&&(d=d.concat(d.map(sP)))),d}function oQ(e){const n=Hs(e);return $F[n]+e.slice(n.length)}function AF(e){return{top:0,right:0,bottom:0,left:0,...e}}function WX(e){return typeof e!="number"?AF(e):{top:e,right:e,bottom:e,left:e}}function cQ(e){const{x:n,y:s,width:c,height:i}=e;return{width:c,height:i,top:s,left:n,right:n+c,bottom:s+i,x:n,y:s}}function AV(e,n,s){let{reference:c,floating:i}=e;const d=Yn(n),u=QP(n),p=CP(u),f=Hs(n),m=d==="y",k=c.x+c.width/2-i.width/2,y=c.y+c.height/2-i.height/2,v=c[p]/2-i[p]/2;let b;switch(f){case"top":b={x:k,y:c.y-i.height};break;case"bottom":b={x:k,y:c.y+c.height};break;case"right":b={x:c.x+c.width,y};break;case"left":b={x:c.x-i.width,y};break;default:b={x:c.x,y:c.y}}switch(Kd(n)){case"start":b[u]-=v*(s&&m?-1:1);break;case"end":b[u]+=v*(s&&m?-1:1);break}return b}async function qF(e,n){var s;n===void 0&&(n={});const{x:c,y:i,platform:d,rects:u,elements:p,strategy:f}=e,{boundary:m="clippingAncestors",rootBoundary:k="viewport",elementContext:y="floating",altBoundary:v=!1,padding:b=0}=Ds(n,e),w=WX(b),N=p[v?y==="floating"?"reference":"floating":y],j=cQ(await d.getClippingRect({element:(s=await(d.isElement==null?void 0:d.isElement(N)))==null||s?N:N.contextElement||await(d.getDocumentElement==null?void 0:d.getDocumentElement(p.floating)),boundary:m,rootBoundary:k,strategy:f})),$=y==="floating"?{x:c,y:i,width:u.floating.width,height:u.floating.height}:u.reference,z=await(d.getOffsetParent==null?void 0:d.getOffsetParent(p.floating)),L=await(d.isElement==null?void 0:d.isElement(z))?await(d.getScale==null?void 0:d.getScale(z))||{x:1,y:1}:{x:1,y:1},T=cQ(d.convertOffsetParentRelativeRectToViewportRelativeRect?await d.convertOffsetParentRelativeRectToViewportRelativeRect({elements:p,rect:$,offsetParent:z,strategy:f}):$);return{top:(j.top-T.top+w.top)/L.y,bottom:(T.bottom-j.bottom+w.bottom)/L.y,left:(j.left-T.left+w.left)/L.x,right:(T.right-j.right+w.right)/L.x}}const IF=50,RF=async(e,n,s)=>{const{placement:c="bottom",strategy:i="absolute",middleware:d=[],platform:u}=s,p=u.detectOverflow?u:{...u,detectOverflow:qF},f=await(u.isRTL==null?void 0:u.isRTL(n));let m=await u.getElementRects({reference:e,floating:n,strategy:i}),{x:k,y}=AV(m,c,f),v=c,b=0;const w={};for(let M=0;M<d.length;M++){const N=d[M];if(!N)continue;const{name:j,fn:$}=N,{x:z,y:L,data:T,reset:q}=await $({x:k,y,initialPlacement:c,placement:v,strategy:i,middlewareData:w,rects:m,platform:p,elements:{reference:e,floating:n}});k=z??k,y=L??y,w[j]={...w[j],...T},q&&b<IF&&(b++,typeof q=="object"&&(q.placement&&(v=q.placement),q.rects&&(m=q.rects===!0?await u.getElementRects({reference:e,floating:n,strategy:i}):q.rects),{x:k,y}=AV(m,v,f)),M=-1)}return{x:k,y,placement:v,strategy:i,middlewareData:w}},VF=e=>({name:"arrow",options:e,async fn(n){const{x:s,y:c,placement:i,rects:d,platform:u,elements:p,middlewareData:f}=n,{element:m,padding:k=0}=Ds(e,n)||{};if(m==null)return{};const y=WX(k),v={x:s,y:c},b=QP(i),w=CP(b),M=await u.getDimensions(m),N=b==="y",j=N?"top":"left",$=N?"bottom":"right",z=N?"clientHeight":"clientWidth",L=d.reference[w]+d.reference[b]-v[b]-d.floating[w],T=v[b]-d.reference[b],q=await(u.getOffsetParent==null?void 0:u.getOffsetParent(m));let P=q?q[z]:0;(!P||!await(u.isElement==null?void 0:u.isElement(q)))&&(P=p.floating[z]||d.floating[w]);const C=L/2-T/2,F=P/2-M[w]/2-1,R=Go(y[j],F),se=Go(y[$],F),ne=R,ce=P-M[w]-se,X=P/2-M[w]/2+C,A=nP(ne,X,ce),Q=!f.arrow&&Kd(i)!=null&&X!==A&&d.reference[w]/2-(X<ne?R:se)-M[w]/2<0,Z=Q?X<ne?X-ne:X-ce:0;return{[b]:v[b]+Z,data:{[b]:A,centerOffset:X-A-Z,...Q&&{alignmentOffset:Z}},reset:Q}}}),EF=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(n){var s,c;const{placement:i,middlewareData:d,rects:u,initialPlacement:p,platform:f,elements:m}=n,{mainAxis:k=!0,crossAxis:y=!0,fallbackPlacements:v,fallbackStrategy:b="bestFit",fallbackAxisSideDirection:w="none",flipAlignment:M=!0,...N}=Ds(e,n);if((s=d.arrow)!=null&&s.alignmentOffset)return{};const j=Hs(i),$=Yn(p),z=Hs(p)===p,L=await(f.isRTL==null?void 0:f.isRTL(m.floating)),T=v||(z||!M?[oQ(p)]:QF(p)),q=w!=="none";!v&&q&&T.push(...PF(p,M,w,L));const P=[p,...T],C=await f.detectOverflow(n,N),F=[];let R=((c=d.flip)==null?void 0:c.overflows)||[];if(k&&F.push(C[j]),y){const X=CF(i,u,L);F.push(C[X[0]],C[X[1]])}if(R=[...R,{placement:i,overflows:F}],!F.every(X=>X<=0)){var se,ne;const X=(((se=d.flip)==null?void 0:se.index)||0)+1,A=P[X];if(A&&(!(y==="alignment"?$!==Yn(A):!1)||R.every(J=>Yn(J.placement)===$?J.overflows[0]>0:!0)))return{data:{index:X,overflows:R},reset:{placement:A}};let Q=(ne=R.filter(Z=>Z.overflows[0]<=0).sort((Z,J)=>Z.overflows[1]-J.overflows[1])[0])==null?void 0:ne.placement;if(!Q)switch(b){case"bestFit":{var ce;const Z=(ce=R.filter(J=>{if(q){const Y=Yn(J.placement);return Y===$||Y==="y"}return!0}).map(J=>[J.placement,J.overflows.filter(Y=>Y>0).reduce((Y,U)=>Y+U,0)]).sort((J,Y)=>J[1]-Y[1])[0])==null?void 0:ce[0];Z&&(Q=Z);break}case"initialPlacement":Q=p;break}if(i!==Q)return{reset:{placement:Q}}}return{}}}};function qV(e,n){return{top:e.top-n.height,right:e.right-n.width,bottom:e.bottom-n.height,left:e.left-n.width}}function IV(e){return _F.some(n=>e[n]>=0)}const XF=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(n){const{rects:s,platform:c}=n,{strategy:i="referenceHidden",...d}=Ds(e,n);switch(i){case"referenceHidden":{const u=await c.detectOverflow(n,{...d,elementContext:"reference"}),p=qV(u,s.reference);return{data:{referenceHiddenOffsets:p,referenceHidden:IV(p)}}}case"escaped":{const u=await c.detectOverflow(n,{...d,altBoundary:!0}),p=qV(u,s.floating);return{data:{escapedOffsets:p,escaped:IV(p)}}}default:return{}}}}},YX=new Set(["left","top"]);async function ZF(e,n){const{placement:s,platform:c,elements:i}=e,d=await(c.isRTL==null?void 0:c.isRTL(i.floating)),u=Hs(s),p=Kd(s),f=Yn(s)==="y",m=YX.has(u)?-1:1,k=d&&f?-1:1,y=Ds(n,e);let{mainAxis:v,crossAxis:b,alignmentAxis:w}=typeof y=="number"?{mainAxis:y,crossAxis:0,alignmentAxis:null}:{mainAxis:y.mainAxis||0,crossAxis:y.crossAxis||0,alignmentAxis:y.alignmentAxis};return p&&typeof w=="number"&&(b=p==="end"?w*-1:w),f?{x:b*k,y:v*m}:{x:v*m,y:b*k}}const DF=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(n){var s,c;const{x:i,y:d,placement:u,middlewareData:p}=n,f=await ZF(n,e);return u===((s=p.offset)==null?void 0:s.placement)&&(c=p.arrow)!=null&&c.alignmentOffset?{}:{x:i+f.x,y:d+f.y,data:{...f,placement:u}}}}},HF=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(n){const{x:s,y:c,placement:i,platform:d}=n,{mainAxis:u=!0,crossAxis:p=!1,limiter:f={fn:j=>{let{x:$,y:z}=j;return{x:$,y:z}}},...m}=Ds(e,n),k={x:s,y:c},y=await d.detectOverflow(n,m),v=Yn(Hs(i)),b=$P(v);let w=k[b],M=k[v];if(u){const j=b==="y"?"top":"left",$=b==="y"?"bottom":"right",z=w+y[j],L=w-y[$];w=nP(z,w,L)}if(p){const j=v==="y"?"top":"left",$=v==="y"?"bottom":"right",z=M+y[j],L=M-y[$];M=nP(z,M,L)}const N=f.fn({...n,[b]:w,[v]:M});return{...N,data:{x:N.x-s,y:N.y-c,enabled:{[b]:u,[v]:p}}}}}},UF=function(e){return e===void 0&&(e={}),{options:e,fn(n){const{x:s,y:c,placement:i,rects:d,middlewareData:u}=n,{offset:p=0,mainAxis:f=!0,crossAxis:m=!0}=Ds(e,n),k={x:s,y:c},y=Yn(i),v=$P(y);let b=k[v],w=k[y];const M=Ds(p,n),N=typeof M=="number"?{mainAxis:M,crossAxis:0}:{mainAxis:0,crossAxis:0,...M};if(f){const z=v==="y"?"height":"width",L=d.reference[v]-d.floating[z]+N.mainAxis,T=d.reference[v]+d.reference[z]-N.mainAxis;b<L?b=L:b>T&&(b=T)}if(m){var j,$;const z=v==="y"?"width":"height",L=YX.has(Hs(i)),T=d.reference[y]-d.floating[z]+(L&&((j=u.offset)==null?void 0:j[y])||0)+(L?0:N.crossAxis),q=d.reference[y]+d.reference[z]+(L?0:(($=u.offset)==null?void 0:$[y])||0)-(L?N.crossAxis:0);w<T?w=T:w>q&&(w=q)}return{[v]:b,[y]:w}}}},BF=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(n){var s,c;const{placement:i,rects:d,platform:u,elements:p}=n,{apply:f=()=>{},...m}=Ds(e,n),k=await u.detectOverflow(n,m),y=Hs(i),v=Kd(i),b=Yn(i)==="y",{width:w,height:M}=d.floating;let N,j;y==="top"||y==="bottom"?(N=y,j=v===(await(u.isRTL==null?void 0:u.isRTL(p.floating))?"start":"end")?"left":"right"):(j=y,N=v==="end"?"top":"bottom");const $=M-k.top-k.bottom,z=w-k.left-k.right,L=Go(M-k[N],$),T=Go(w-k[j],z),q=!n.middlewareData.shift;let P=L,C=T;if((s=n.middlewareData.shift)!=null&&s.enabled.x&&(C=z),(c=n.middlewareData.shift)!=null&&c.enabled.y&&(P=$),q&&!v){const R=Ta(k.left,0),se=Ta(k.right,0),ne=Ta(k.top,0),ce=Ta(k.bottom,0);b?C=w-2*(R!==0||se!==0?R+se:Ta(k.left,k.right)):P=M-2*(ne!==0||ce!==0?ne+ce:Ta(k.top,k.bottom))}await f({...n,availableWidth:C,availableHeight:P});const F=await u.getDimensions(p.floating);return w!==F.width||M!==F.height?{reset:{rects:!0}}:{}}}};function _Q(){return typeof window<"u"}function Jd(e){return FX(e)?(e.nodeName||"").toLowerCase():"#document"}function Aa(e){var n;return(e==null||(n=e.ownerDocument)==null?void 0:n.defaultView)||window}function as(e){var n;return(n=(FX(e)?e.ownerDocument:e.document)||window.document)==null?void 0:n.documentElement}function FX(e){return _Q()?e instanceof Node||e instanceof Aa(e).Node:!1}function jn(e){return _Q()?e instanceof Element||e instanceof Aa(e).Element:!1}function Bs(e){return _Q()?e instanceof HTMLElement||e instanceof Aa(e).HTMLElement:!1}function RV(e){return!_Q()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Aa(e).ShadowRoot}function W2(e){const{overflow:n,overflowX:s,overflowY:c,display:i}=Sn(e);return/auto|scroll|overlay|hidden|clip/.test(n+c+s)&&i!=="inline"&&i!=="contents"}function GF(e){return/^(table|td|th)$/.test(Jd(e))}function $Q(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}const WF=/transform|translate|scale|rotate|perspective|filter/,YF=/paint|layout|strict|content/,yc=e=>!!e&&e!=="none";let pT;function LP(e){const n=jn(e)?Sn(e):e;return yc(n.transform)||yc(n.translate)||yc(n.scale)||yc(n.rotate)||yc(n.perspective)||!zP()&&(yc(n.backdropFilter)||yc(n.filter))||WF.test(n.willChange||"")||YF.test(n.contain||"")}function FF(e){let n=Wo(e);for(;Bs(n)&&!Dd(n);){if(LP(n))return n;if($Q(n))return null;n=Wo(n)}return null}function zP(){return pT==null&&(pT=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),pT}function Dd(e){return/^(html|body|#document)$/.test(Jd(e))}function Sn(e){return Aa(e).getComputedStyle(e)}function CQ(e){return jn(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Wo(e){if(Jd(e)==="html")return e;const n=e.assignedSlot||e.parentNode||RV(e)&&e.host||as(e);return RV(n)?n.host:n}function KX(e){const n=Wo(e);return Dd(n)?e.ownerDocument?e.ownerDocument.body:e.body:Bs(n)&&W2(n)?n:KX(n)}function q2(e,n,s){var c;n===void 0&&(n=[]),s===void 0&&(s=!0);const i=KX(e),d=i===((c=e.ownerDocument)==null?void 0:c.body),u=Aa(i);if(d){const p=oP(u);return n.concat(u,u.visualViewport||[],W2(i)?i:[],p&&s?q2(p):[])}else return n.concat(i,q2(i,[],s))}function oP(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function JX(e){const n=Sn(e);let s=parseFloat(n.width)||0,c=parseFloat(n.height)||0;const i=Bs(e),d=i?e.offsetWidth:s,u=i?e.offsetHeight:c,p=sQ(s)!==d||sQ(c)!==u;return p&&(s=d,c=u),{width:s,height:c,$:p}}function TP(e){return jn(e)?e:e.contextElement}function Sd(e){const n=TP(e);if(!Bs(n))return Fn(1);const s=n.getBoundingClientRect(),{width:c,height:i,$:d}=JX(n);let u=(d?sQ(s.width):s.width)/c,p=(d?sQ(s.height):s.height)/i;return(!u||!Number.isFinite(u))&&(u=1),(!p||!Number.isFinite(p))&&(p=1),{x:u,y:p}}const KF=Fn(0);function eZ(e){const n=Aa(e);return!zP()||!n.visualViewport?KF:{x:n.visualViewport.offsetLeft,y:n.visualViewport.offsetTop}}function JF(e,n,s){return n===void 0&&(n=!1),!s||n&&s!==Aa(e)?!1:n}function S1(e,n,s,c){n===void 0&&(n=!1),s===void 0&&(s=!1);const i=e.getBoundingClientRect(),d=TP(e);let u=Fn(1);n&&(c?jn(c)&&(u=Sd(c)):u=Sd(e));const p=JF(d,s,c)?eZ(d):Fn(0);let f=(i.left+p.x)/u.x,m=(i.top+p.y)/u.y,k=i.width/u.x,y=i.height/u.y;if(d){const v=Aa(d),b=c&&jn(c)?Aa(c):c;let w=v,M=oP(w);for(;M&&c&&b!==w;){const N=Sd(M),j=M.getBoundingClientRect(),$=Sn(M),z=j.left+(M.clientLeft+parseFloat($.paddingLeft))*N.x,L=j.top+(M.clientTop+parseFloat($.paddingTop))*N.y;f*=N.x,m*=N.y,k*=N.x,y*=N.y,f+=z,m+=L,w=Aa(M),M=oP(w)}}return cQ({width:k,height:y,x:f,y:m})}function QQ(e,n){const s=CQ(e).scrollLeft;return n?n.left+s:S1(as(e)).left+s}function tZ(e,n){const s=e.getBoundingClientRect(),c=s.left+n.scrollLeft-QQ(e,s),i=s.top+n.scrollTop;return{x:c,y:i}}function eK(e){let{elements:n,rect:s,offsetParent:c,strategy:i}=e;const d=i==="fixed",u=as(c),p=n?$Q(n.floating):!1;if(c===u||p&&d)return s;let f={scrollLeft:0,scrollTop:0},m=Fn(1);const k=Fn(0),y=Bs(c);if((y||!y&&!d)&&((Jd(c)!=="body"||W2(u))&&(f=CQ(c)),y)){const b=S1(c);m=Sd(c),k.x=b.x+c.clientLeft,k.y=b.y+c.clientTop}const v=u&&!y&&!d?tZ(u,f):Fn(0);return{width:s.width*m.x,height:s.height*m.y,x:s.x*m.x-f.scrollLeft*m.x+k.x+v.x,y:s.y*m.y-f.scrollTop*m.y+k.y+v.y}}function tK(e){return Array.from(e.getClientRects())}function aK(e){const n=as(e),s=CQ(e),c=e.ownerDocument.body,i=Ta(n.scrollWidth,n.clientWidth,c.scrollWidth,c.clientWidth),d=Ta(n.scrollHeight,n.clientHeight,c.scrollHeight,c.clientHeight);let u=-s.scrollLeft+QQ(e);const p=-s.scrollTop;return Sn(c).direction==="rtl"&&(u+=Ta(n.clientWidth,c.clientWidth)-i),{width:i,height:d,x:u,y:p}}const VV=25;function nK(e,n){const s=Aa(e),c=as(e),i=s.visualViewport;let d=c.clientWidth,u=c.clientHeight,p=0,f=0;if(i){d=i.width,u=i.height;const k=zP();(!k||k&&n==="fixed")&&(p=i.offsetLeft,f=i.offsetTop)}const m=QQ(c);if(m<=0){const k=c.ownerDocument,y=k.body,v=getComputedStyle(y),b=k.compatMode==="CSS1Compat"&&parseFloat(v.marginLeft)+parseFloat(v.marginRight)||0,w=Math.abs(c.clientWidth-y.clientWidth-b);w<=VV&&(d-=w)}else m<=VV&&(d+=m);return{width:d,height:u,x:p,y:f}}function sK(e,n){const s=S1(e,!0,n==="fixed"),c=s.top+e.clientTop,i=s.left+e.clientLeft,d=Bs(e)?Sd(e):Fn(1),u=e.clientWidth*d.x,p=e.clientHeight*d.y,f=i*d.x,m=c*d.y;return{width:u,height:p,x:f,y:m}}function EV(e,n,s){let c;if(n==="viewport")c=nK(e,s);else if(n==="document")c=aK(as(e));else if(jn(n))c=sK(n,s);else{const i=eZ(e);c={x:n.x-i.x,y:n.y-i.y,width:n.width,height:n.height}}return cQ(c)}function aZ(e,n){const s=Wo(e);return s===n||!jn(s)||Dd(s)?!1:Sn(s).position==="fixed"||aZ(s,n)}function oK(e,n){const s=n.get(e);if(s)return s;let c=q2(e,[],!1).filter(p=>jn(p)&&Jd(p)!=="body"),i=null;const d=Sn(e).position==="fixed";let u=d?Wo(e):e;for(;jn(u)&&!Dd(u);){const p=Sn(u),f=LP(u);!f&&p.position==="fixed"&&(i=null),(d?!f&&!i:!f&&p.position==="static"&&!!i&&(i.position==="absolute"||i.position==="fixed")||W2(u)&&!f&&aZ(e,u))?c=c.filter(k=>k!==u):i=p,u=Wo(u)}return n.set(e,c),c}function cK(e){let{element:n,boundary:s,rootBoundary:c,strategy:i}=e;const u=[...s==="clippingAncestors"?$Q(n)?[]:oK(n,this._c):[].concat(s),c],p=EV(n,u[0],i);let f=p.top,m=p.right,k=p.bottom,y=p.left;for(let v=1;v<u.length;v++){const b=EV(n,u[v],i);f=Ta(b.top,f),m=Go(b.right,m),k=Go(b.bottom,k),y=Ta(b.left,y)}return{width:m-y,height:k-f,x:y,y:f}}function iK(e){const{width:n,height:s}=JX(e);return{width:n,height:s}}function rK(e,n,s){const c=Bs(n),i=as(n),d=s==="fixed",u=S1(e,!0,d,n);let p={scrollLeft:0,scrollTop:0};const f=Fn(0);function m(){f.x=QQ(i)}if(c||!c&&!d)if((Jd(n)!=="body"||W2(i))&&(p=CQ(n)),c){const b=S1(n,!0,d,n);f.x=b.x+n.clientLeft,f.y=b.y+n.clientTop}else i&&m();d&&!c&&i&&m();const k=i&&!c&&!d?tZ(i,p):Fn(0),y=u.left+p.scrollLeft-f.x-k.x,v=u.top+p.scrollTop-f.y-k.y;return{x:y,y:v,width:u.width,height:u.height}}function fT(e){return Sn(e).position==="static"}function XV(e,n){if(!Bs(e)||Sn(e).position==="fixed")return null;if(n)return n(e);let s=e.offsetParent;return as(e)===s&&(s=s.ownerDocument.body),s}function nZ(e,n){const s=Aa(e);if($Q(e))return s;if(!Bs(e)){let i=Wo(e);for(;i&&!Dd(i);){if(jn(i)&&!fT(i))return i;i=Wo(i)}return s}let c=XV(e,n);for(;c&&GF(c)&&fT(c);)c=XV(c,n);return c&&Dd(c)&&fT(c)&&!LP(c)?s:c||FF(e)||s}const lK=async function(e){const n=this.getOffsetParent||nZ,s=this.getDimensions,c=await s(e.floating);return{reference:rK(e.reference,await n(e.floating),e.strategy),floating:{x:0,y:0,width:c.width,height:c.height}}};function dK(e){return Sn(e).direction==="rtl"}const hK={convertOffsetParentRelativeRectToViewportRelativeRect:eK,getDocumentElement:as,getClippingRect:cK,getOffsetParent:nZ,getElementRects:lK,getClientRects:tK,getDimensions:iK,getScale:Sd,isElement:jn,isRTL:dK};function sZ(e,n){return e.x===n.x&&e.y===n.y&&e.width===n.width&&e.height===n.height}function uK(e,n){let s=null,c;const i=as(e);function d(){var p;clearTimeout(c),(p=s)==null||p.disconnect(),s=null}function u(p,f){p===void 0&&(p=!1),f===void 0&&(f=1),d();const m=e.getBoundingClientRect(),{left:k,top:y,width:v,height:b}=m;if(p||n(),!v||!b)return;const w=yu(y),M=yu(i.clientWidth-(k+v)),N=yu(i.clientHeight-(y+b)),j=yu(k),z={rootMargin:-w+"px "+-M+"px "+-N+"px "+-j+"px",threshold:Ta(0,Go(1,f))||1};let L=!0;function T(q){const P=q[0].intersectionRatio;if(P!==f){if(!L)return u();P?u(!1,P):c=setTimeout(()=>{u(!1,1e-7)},1e3)}P===1&&!sZ(m,e.getBoundingClientRect())&&u(),L=!1}try{s=new IntersectionObserver(T,{...z,root:i.ownerDocument})}catch{s=new IntersectionObserver(T,z)}s.observe(e)}return u(!0),d}function pK(e,n,s,c){c===void 0&&(c={});const{ancestorScroll:i=!0,ancestorResize:d=!0,elementResize:u=typeof ResizeObserver=="function",layoutShift:p=typeof IntersectionObserver=="function",animationFrame:f=!1}=c,m=TP(e),k=i||d?[...m?q2(m):[],...n?q2(n):[]]:[];k.forEach(j=>{i&&j.addEventListener("scroll",s,{passive:!0}),d&&j.addEventListener("resize",s)});const y=m&&p?uK(m,s):null;let v=-1,b=null;u&&(b=new ResizeObserver(j=>{let[$]=j;$&&$.target===m&&b&&n&&(b.unobserve(n),cancelAnimationFrame(v),v=requestAnimationFrame(()=>{var z;(z=b)==null||z.observe(n)})),s()}),m&&!f&&b.observe(m),n&&b.observe(n));let w,M=f?S1(e):null;f&&N();function N(){const j=S1(e);M&&!sZ(M,j)&&s(),M=j,w=requestAnimationFrame(N)}return s(),()=>{var j;k.forEach($=>{i&&$.removeEventListener("scroll",s),d&&$.removeEventListener("resize",s)}),y==null||y(),(j=b)==null||j.disconnect(),b=null,f&&cancelAnimationFrame(w)}}const fK=DF,xK=HF,mK=EF,yK=BF,gK=XF,ZV=VF,OK=UF,kK=(e,n,s)=>{const c=new Map,i={platform:hK,...s},d={...i.platform,_c:c};return RF(e,n,{...i,platform:d})};var vK=typeof document<"u",bK=function(){},Ru=vK?O.useLayoutEffect:bK;function iQ(e,n){if(e===n)return!0;if(typeof e!=typeof n)return!1;if(typeof e=="function"&&e.toString()===n.toString())return!0;let s,c,i;if(e&&n&&typeof e=="object"){if(Array.isArray(e)){if(s=e.length,s!==n.length)return!1;for(c=s;c--!==0;)if(!iQ(e[c],n[c]))return!1;return!0}if(i=Object.keys(e),s=i.length,s!==Object.keys(n).length)return!1;for(c=s;c--!==0;)if(!{}.hasOwnProperty.call(n,i[c]))return!1;for(c=s;c--!==0;){const d=i[c];if(!(d==="_owner"&&e.$$typeof)&&!iQ(e[d],n[d]))return!1}return!0}return e!==e&&n!==n}function oZ(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function DV(e,n){const s=oZ(e);return Math.round(n*s)/s}function xT(e){const n=O.useRef(e);return Ru(()=>{n.current=e}),n}function wK(e){e===void 0&&(e={});const{placement:n="bottom",strategy:s="absolute",middleware:c=[],platform:i,elements:{reference:d,floating:u}={},transform:p=!0,whileElementsMounted:f,open:m}=e,[k,y]=O.useState({x:0,y:0,strategy:s,placement:n,middlewareData:{},isPositioned:!1}),[v,b]=O.useState(c);iQ(v,c)||b(c);const[w,M]=O.useState(null),[N,j]=O.useState(null),$=O.useCallback(J=>{J!==q.current&&(q.current=J,M(J))},[]),z=O.useCallback(J=>{J!==P.current&&(P.current=J,j(J))},[]),L=d||w,T=u||N,q=O.useRef(null),P=O.useRef(null),C=O.useRef(k),F=f!=null,R=xT(f),se=xT(i),ne=xT(m),ce=O.useCallback(()=>{if(!q.current||!P.current)return;const J={placement:n,strategy:s,middleware:v};se.current&&(J.platform=se.current),kK(q.current,P.current,J).then(Y=>{const U={...Y,isPositioned:ne.current!==!1};X.current&&!iQ(C.current,U)&&(C.current=U,OX.flushSync(()=>{y(U)}))})},[v,n,s,se,ne]);Ru(()=>{m===!1&&C.current.isPositioned&&(C.current.isPositioned=!1,y(J=>({...J,isPositioned:!1})))},[m]);const X=O.useRef(!1);Ru(()=>(X.current=!0,()=>{X.current=!1}),[]),Ru(()=>{if(L&&(q.current=L),T&&(P.current=T),L&&T){if(R.current)return R.current(L,T,ce);ce()}},[L,T,ce,R,F]);const A=O.useMemo(()=>({reference:q,floating:P,setReference:$,setFloating:z}),[$,z]),Q=O.useMemo(()=>({reference:L,floating:T}),[L,T]),Z=O.useMemo(()=>{const J={position:s,left:0,top:0};if(!Q.floating)return J;const Y=DV(Q.floating,k.x),U=DV(Q.floating,k.y);return p?{...J,transform:"translate("+Y+"px, "+U+"px)",...oZ(Q.floating)>=1.5&&{willChange:"transform"}}:{position:s,left:Y,top:U}},[s,p,Q.floating,k.x,k.y]);return O.useMemo(()=>({...k,update:ce,refs:A,elements:Q,floatingStyles:Z}),[k,ce,A,Q,Z])}const MK=e=>{function n(s){return{}.hasOwnProperty.call(s,"current")}return{name:"arrow",options:e,fn(s){const{element:c,padding:i}=typeof e=="function"?e(s):e;return c&&n(c)?c.current!=null?ZV({element:c.current,padding:i}).fn(s):{}:c?ZV({element:c,padding:i}).fn(s):{}}}},jK=(e,n)=>{const s=fK(e);return{name:s.name,fn:s.fn,options:[e,n]}},SK=(e,n)=>{const s=xK(e);return{name:s.name,fn:s.fn,options:[e,n]}},NK=(e,n)=>({fn:OK(e).fn,options:[e,n]}),_K=(e,n)=>{const s=mK(e);return{name:s.name,fn:s.fn,options:[e,n]}},$K=(e,n)=>{const s=yK(e);return{name:s.name,fn:s.fn,options:[e,n]}},CK=(e,n)=>{const s=gK(e);return{name:s.name,fn:s.fn,options:[e,n]}},QK=(e,n)=>{const s=MK(e);return{name:s.name,fn:s.fn,options:[e,n]}};var LK="Arrow",cZ=O.forwardRef((e,n)=>{const{children:s,width:c=10,height:i=5,...d}=e;return t.jsx(Ye.svg,{...d,ref:n,width:c,height:i,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?s:t.jsx("polygon",{points:"0,0 30,0 15,10"})})});cZ.displayName=LK;var zK=cZ;function TK(e){const[n,s]=O.useState(void 0);return Zs(()=>{if(e){s({width:e.offsetWidth,height:e.offsetHeight});const c=new ResizeObserver(i=>{if(!Array.isArray(i)||!i.length)return;const d=i[0];let u,p;if("borderBoxSize"in d){const f=d.borderBoxSize,m=Array.isArray(f)?f[0]:f;u=m.inlineSize,p=m.blockSize}else u=e.offsetWidth,p=e.offsetHeight;s({width:u,height:p})});return c.observe(e,{box:"border-box"}),()=>c.unobserve(e)}else s(void 0)},[e]),n}var PP="Popper",[iZ,LQ]=Us(PP),[PK,rZ]=iZ(PP),lZ=e=>{const{__scopePopper:n,children:s}=e,[c,i]=O.useState(null);return t.jsx(PK,{scope:n,anchor:c,onAnchorChange:i,children:s})};lZ.displayName=PP;var dZ="PopperAnchor",hZ=O.forwardRef((e,n)=>{const{__scopePopper:s,virtualRef:c,...i}=e,d=rZ(dZ,s),u=O.useRef(null),p=ht(n,u),f=O.useRef(null);return O.useEffect(()=>{const m=f.current;f.current=(c==null?void 0:c.current)||u.current,m!==f.current&&d.onAnchorChange(f.current)}),c?null:t.jsx(Ye.div,{...i,ref:p})});hZ.displayName=dZ;var AP="PopperContent",[AK,qK]=iZ(AP),uZ=O.forwardRef((e,n)=>{var ve,ct,Le,vt,it,ut;const{__scopePopper:s,side:c="bottom",sideOffset:i=0,align:d="center",alignOffset:u=0,arrowPadding:p=0,avoidCollisions:f=!0,collisionBoundary:m=[],collisionPadding:k=0,sticky:y="partial",hideWhenDetached:v=!1,updatePositionStrategy:b="optimized",onPlaced:w,...M}=e,N=rZ(AP,s),[j,$]=O.useState(null),z=ht(n,bt=>$(bt)),[L,T]=O.useState(null),q=TK(L),P=(q==null?void 0:q.width)??0,C=(q==null?void 0:q.height)??0,F=c+(d!=="center"?"-"+d:""),R=typeof k=="number"?k:{top:0,right:0,bottom:0,left:0,...k},se=Array.isArray(m)?m:[m],ne=se.length>0,ce={padding:R,boundary:se.filter(RK),altBoundary:ne},{refs:X,floatingStyles:A,placement:Q,isPositioned:Z,middlewareData:J}=wK({strategy:"fixed",placement:F,whileElementsMounted:(...bt)=>pK(...bt,{animationFrame:b==="always"}),elements:{reference:N.anchor},middleware:[jK({mainAxis:i+C,alignmentAxis:u}),f&&SK({mainAxis:!0,crossAxis:!1,limiter:y==="partial"?NK():void 0,...ce}),f&&_K({...ce}),$K({...ce,apply:({elements:bt,rects:Ke,availableWidth:ln,availableHeight:$n})=>{const{width:ss,height:Cn}=Ke.reference,ka=bt.floating.style;ka.setProperty("--radix-popper-available-width",`${ln}px`),ka.setProperty("--radix-popper-available-height",`${$n}px`),ka.setProperty("--radix-popper-anchor-width",`${ss}px`),ka.setProperty("--radix-popper-anchor-height",`${Cn}px`)}}),L&&QK({element:L,padding:p}),VK({arrowWidth:P,arrowHeight:C}),v&&CK({strategy:"referenceHidden",...ce})]}),[Y,U]=xZ(Q),fe=Gt(w);Zs(()=>{Z&&(fe==null||fe())},[Z,fe]);const ue=(ve=J.arrow)==null?void 0:ve.x,pe=(ct=J.arrow)==null?void 0:ct.y,Oe=((Le=J.arrow)==null?void 0:Le.centerOffset)!==0,[Se,de]=O.useState();return Zs(()=>{j&&de(window.getComputedStyle(j).zIndex)},[j]),t.jsx("div",{ref:X.setFloating,"data-radix-popper-content-wrapper":"",style:{...A,transform:Z?A.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Se,"--radix-popper-transform-origin":[(vt=J.transformOrigin)==null?void 0:vt.x,(it=J.transformOrigin)==null?void 0:it.y].join(" "),...((ut=J.hide)==null?void 0:ut.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:t.jsx(AK,{scope:s,placedSide:Y,onArrowChange:T,arrowX:ue,arrowY:pe,shouldHideArrow:Oe,children:t.jsx(Ye.div,{"data-side":Y,"data-align":U,...M,ref:z,style:{...M.style,animation:Z?void 0:"none"}})})})});uZ.displayName=AP;var pZ="PopperArrow",IK={top:"bottom",right:"left",bottom:"top",left:"right"},fZ=O.forwardRef(function(n,s){const{__scopePopper:c,...i}=n,d=qK(pZ,c),u=IK[d.placedSide];return t.jsx("span",{ref:d.onArrowChange,style:{position:"absolute",left:d.arrowX,top:d.arrowY,[u]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[d.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[d.placedSide],visibility:d.shouldHideArrow?"hidden":void 0},children:t.jsx(zK,{...i,ref:s,style:{...i.style,display:"block"}})})});fZ.displayName=pZ;function RK(e){return e!==null}var VK=e=>({name:"transformOrigin",options:e,fn(n){var N,j,$;const{placement:s,rects:c,middlewareData:i}=n,u=((N=i.arrow)==null?void 0:N.centerOffset)!==0,p=u?0:e.arrowWidth,f=u?0:e.arrowHeight,[m,k]=xZ(s),y={start:"0%",center:"50%",end:"100%"}[k],v=(((j=i.arrow)==null?void 0:j.x)??0)+p/2,b=((($=i.arrow)==null?void 0:$.y)??0)+f/2;let w="",M="";return m==="bottom"?(w=u?y:`${v}px`,M=`${-f}px`):m==="top"?(w=u?y:`${v}px`,M=`${c.floating.height+f}px`):m==="right"?(w=`${-f}px`,M=u?y:`${b}px`):m==="left"&&(w=`${c.floating.width+f}px`,M=u?y:`${b}px`),{data:{x:w,y:M}}}});function xZ(e){const[n,s="center"]=e.split("-");return[n,s]}var mZ=lZ,yZ=hZ,gZ=uZ,OZ=fZ,EK="Portal",zQ=O.forwardRef((e,n)=>{var p;const{container:s,...c}=e,[i,d]=O.useState(!1);Zs(()=>d(!0),[]);const u=s||i&&((p=globalThis==null?void 0:globalThis.document)==null?void 0:p.body);return u?QW.createPortal(t.jsx(Ye.div,{...c,ref:n}),u):null});zQ.displayName=EK;function XK(e,n){return O.useReducer((s,c)=>n[s][c]??s,e)}var ia=e=>{const{present:n,children:s}=e,c=ZK(n),i=typeof s=="function"?s({present:c.isPresent}):O.Children.only(s),d=ht(c.ref,DK(i));return typeof s=="function"||c.isPresent?O.cloneElement(i,{ref:d}):null};ia.displayName="Presence";function ZK(e){const[n,s]=O.useState(),c=O.useRef(null),i=O.useRef(e),d=O.useRef("none"),u=e?"mounted":"unmounted",[p,f]=XK(u,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return O.useEffect(()=>{const m=gu(c.current);d.current=p==="mounted"?m:"none"},[p]),Zs(()=>{const m=c.current,k=i.current;if(k!==e){const v=d.current,b=gu(m);e?f("MOUNT"):b==="none"||(m==null?void 0:m.display)==="none"?f("UNMOUNT"):f(k&&v!==b?"ANIMATION_OUT":"UNMOUNT"),i.current=e}},[e,f]),Zs(()=>{if(n){let m;const k=n.ownerDocument.defaultView??window,y=b=>{const M=gu(c.current).includes(CSS.escape(b.animationName));if(b.target===n&&M&&(f("ANIMATION_END"),!i.current)){const N=n.style.animationFillMode;n.style.animationFillMode="forwards",m=k.setTimeout(()=>{n.style.animationFillMode==="forwards"&&(n.style.animationFillMode=N)})}},v=b=>{b.target===n&&(d.current=gu(c.current))};return n.addEventListener("animationstart",v),n.addEventListener("animationcancel",y),n.addEventListener("animationend",y),()=>{k.clearTimeout(m),n.removeEventListener("animationstart",v),n.removeEventListener("animationcancel",y),n.removeEventListener("animationend",y)}}else f("ANIMATION_END")},[n,f]),{isPresent:["mounted","unmountSuspended"].includes(p),ref:O.useCallback(m=>{c.current=m?getComputedStyle(m):null,s(m)},[])}}function gu(e){return(e==null?void 0:e.animationName)||"none"}function DK(e){var c,i;let n=(c=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:c.get,s=n&&"isReactWarning"in n&&n.isReactWarning;return s?e.ref:(n=(i=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:i.get,s=n&&"isReactWarning"in n&&n.isReactWarning,s?e.props.ref:e.props.ref||e.ref)}var HK=gX[" useInsertionEffect ".trim().toString()]||Zs;function TQ({prop:e,defaultProp:n,onChange:s=()=>{},caller:c}){const[i,d,u]=UK({defaultProp:n,onChange:s}),p=e!==void 0,f=p?e:i;{const k=O.useRef(e!==void 0);O.useEffect(()=>{const y=k.current;y!==p&&console.warn(`${c} is changing from ${y?"controlled":"uncontrolled"} to ${p?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),k.current=p},[p,c])}const m=O.useCallback(k=>{var y;if(p){const v=BK(k)?k(e):k;v!==e&&((y=u.current)==null||y.call(u,v))}else d(k)},[p,e,d,u]);return[f,m]}function UK({defaultProp:e,onChange:n}){const[s,c]=O.useState(e),i=O.useRef(s),d=O.useRef(n);return HK(()=>{d.current=n},[n]),O.useEffect(()=>{var u;i.current!==s&&((u=d.current)==null||u.call(d,s),i.current=s)},[s,i]),[s,c,d]}function BK(e){return typeof e=="function"}var GK=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),WK="VisuallyHidden",kZ=O.forwardRef((e,n)=>t.jsx(Ye.span,{...e,ref:n,style:{...GK,...e.style}}));kZ.displayName=WK;var YK=kZ,[PQ]=Us("Tooltip",[LQ]),AQ=LQ(),vZ="TooltipProvider",FK=700,cP="tooltip.open",[KK,qP]=PQ(vZ),bZ=e=>{const{__scopeTooltip:n,delayDuration:s=FK,skipDelayDuration:c=300,disableHoverableContent:i=!1,children:d}=e,u=O.useRef(!0),p=O.useRef(!1),f=O.useRef(0);return O.useEffect(()=>{const m=f.current;return()=>window.clearTimeout(m)},[]),t.jsx(KK,{scope:n,isOpenDelayedRef:u,delayDuration:s,onOpen:O.useCallback(()=>{window.clearTimeout(f.current),u.current=!1},[]),onClose:O.useCallback(()=>{window.clearTimeout(f.current),f.current=window.setTimeout(()=>u.current=!0,c)},[c]),isPointerInTransitRef:p,onPointerInTransitChange:O.useCallback(m=>{p.current=m},[]),disableHoverableContent:i,children:d})};bZ.displayName=vZ;var I2="Tooltip",[JK,Y2]=PQ(I2),wZ=e=>{const{__scopeTooltip:n,children:s,open:c,defaultOpen:i,onOpenChange:d,disableHoverableContent:u,delayDuration:p}=e,f=qP(I2,e.__scopeTooltip),m=AQ(n),[k,y]=O.useState(null),v=jd(),b=O.useRef(0),w=u??f.disableHoverableContent,M=p??f.delayDuration,N=O.useRef(!1),[j,$]=TQ({prop:c,defaultProp:i??!1,onChange:P=>{P?(f.onOpen(),document.dispatchEvent(new CustomEvent(cP))):f.onClose(),d==null||d(P)},caller:I2}),z=O.useMemo(()=>j?N.current?"delayed-open":"instant-open":"closed",[j]),L=O.useCallback(()=>{window.clearTimeout(b.current),b.current=0,N.current=!1,$(!0)},[$]),T=O.useCallback(()=>{window.clearTimeout(b.current),b.current=0,$(!1)},[$]),q=O.useCallback(()=>{window.clearTimeout(b.current),b.current=window.setTimeout(()=>{N.current=!0,$(!0),b.current=0},M)},[M,$]);return O.useEffect(()=>()=>{b.current&&(window.clearTimeout(b.current),b.current=0)},[]),t.jsx(mZ,{...m,children:t.jsx(JK,{scope:n,contentId:v,open:j,stateAttribute:z,trigger:k,onTriggerChange:y,onTriggerEnter:O.useCallback(()=>{f.isOpenDelayedRef.current?q():L()},[f.isOpenDelayedRef,q,L]),onTriggerLeave:O.useCallback(()=>{w?T():(window.clearTimeout(b.current),b.current=0)},[T,w]),onOpen:L,onClose:T,disableHoverableContent:w,children:s})})};wZ.displayName=I2;var iP="TooltipTrigger",MZ=O.forwardRef((e,n)=>{const{__scopeTooltip:s,...c}=e,i=Y2(iP,s),d=qP(iP,s),u=AQ(s),p=O.useRef(null),f=ht(n,p,i.onTriggerChange),m=O.useRef(!1),k=O.useRef(!1),y=O.useCallback(()=>m.current=!1,[]);return O.useEffect(()=>()=>document.removeEventListener("pointerup",y),[y]),t.jsx(yZ,{asChild:!0,...u,children:t.jsx(Ye.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...c,ref:f,onPointerMove:$e(e.onPointerMove,v=>{v.pointerType!=="touch"&&!k.current&&!d.isPointerInTransitRef.current&&(i.onTriggerEnter(),k.current=!0)}),onPointerLeave:$e(e.onPointerLeave,()=>{i.onTriggerLeave(),k.current=!1}),onPointerDown:$e(e.onPointerDown,()=>{i.open&&i.onClose(),m.current=!0,document.addEventListener("pointerup",y,{once:!0})}),onFocus:$e(e.onFocus,()=>{m.current||i.onOpen()}),onBlur:$e(e.onBlur,i.onClose),onClick:$e(e.onClick,i.onClose)})})});MZ.displayName=iP;var IP="TooltipPortal",[eJ,tJ]=PQ(IP,{forceMount:void 0}),jZ=e=>{const{__scopeTooltip:n,forceMount:s,children:c,container:i}=e,d=Y2(IP,n);return t.jsx(eJ,{scope:n,forceMount:s,children:t.jsx(ia,{present:s||d.open,children:t.jsx(zQ,{asChild:!0,container:i,children:c})})})};jZ.displayName=IP;var Hd="TooltipContent",SZ=O.forwardRef((e,n)=>{const s=tJ(Hd,e.__scopeTooltip),{forceMount:c=s.forceMount,side:i="top",...d}=e,u=Y2(Hd,e.__scopeTooltip);return t.jsx(ia,{present:c||u.open,children:u.disableHoverableContent?t.jsx(NZ,{side:i,...d,ref:n}):t.jsx(aJ,{side:i,...d,ref:n})})}),aJ=O.forwardRef((e,n)=>{const s=Y2(Hd,e.__scopeTooltip),c=qP(Hd,e.__scopeTooltip),i=O.useRef(null),d=ht(n,i),[u,p]=O.useState(null),{trigger:f,onClose:m}=s,k=i.current,{onPointerInTransitChange:y}=c,v=O.useCallback(()=>{p(null),y(!1)},[y]),b=O.useCallback((w,M)=>{const N=w.currentTarget,j={x:w.clientX,y:w.clientY},$=cJ(j,N.getBoundingClientRect()),z=iJ(j,$),L=rJ(M.getBoundingClientRect()),T=dJ([...z,...L]);p(T),y(!0)},[y]);return O.useEffect(()=>()=>v(),[v]),O.useEffect(()=>{if(f&&k){const w=N=>b(N,k),M=N=>b(N,f);return f.addEventListener("pointerleave",w),k.addEventListener("pointerleave",M),()=>{f.removeEventListener("pointerleave",w),k.removeEventListener("pointerleave",M)}}},[f,k,b,v]),O.useEffect(()=>{if(u){const w=M=>{const N=M.target,j={x:M.clientX,y:M.clientY},$=(f==null?void 0:f.contains(N))||(k==null?void 0:k.contains(N)),z=!lJ(j,u);$?v():z&&(v(),m())};return document.addEventListener("pointermove",w),()=>document.removeEventListener("pointermove",w)}},[f,k,u,m,v]),t.jsx(NZ,{...e,ref:d})}),[nJ,sJ]=PQ(I2,{isInside:!1}),oJ=pF("TooltipContent"),NZ=O.forwardRef((e,n)=>{const{__scopeTooltip:s,children:c,"aria-label":i,onEscapeKeyDown:d,onPointerDownOutside:u,...p}=e,f=Y2(Hd,s),m=AQ(s),{onClose:k}=f;return O.useEffect(()=>(document.addEventListener(cP,k),()=>document.removeEventListener(cP,k)),[k]),O.useEffect(()=>{if(f.trigger){const y=v=>{const b=v.target;b!=null&&b.contains(f.trigger)&&k()};return window.addEventListener("scroll",y,{capture:!0}),()=>window.removeEventListener("scroll",y,{capture:!0})}},[f.trigger,k]),t.jsx(NQ,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:d,onPointerDownOutside:u,onFocusOutside:y=>y.preventDefault(),onDismiss:k,children:t.jsxs(gZ,{"data-state":f.stateAttribute,...m,...p,ref:n,style:{...p.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[t.jsx(oJ,{children:c}),t.jsx(nJ,{scope:s,isInside:!0,children:t.jsx(YK,{id:f.contentId,role:"tooltip",children:i||c})})]})})});SZ.displayName=Hd;var _Z="TooltipArrow",$Z=O.forwardRef((e,n)=>{const{__scopeTooltip:s,...c}=e,i=AQ(s);return sJ(_Z,s).isInside?null:t.jsx(OZ,{...i,...c,ref:n})});$Z.displayName=_Z;function cJ(e,n){const s=Math.abs(n.top-e.y),c=Math.abs(n.bottom-e.y),i=Math.abs(n.right-e.x),d=Math.abs(n.left-e.x);switch(Math.min(s,c,i,d)){case d:return"left";case i:return"right";case s:return"top";case c:return"bottom";default:throw new Error("unreachable")}}function iJ(e,n,s=5){const c=[];switch(n){case"top":c.push({x:e.x-s,y:e.y+s},{x:e.x+s,y:e.y+s});break;case"bottom":c.push({x:e.x-s,y:e.y-s},{x:e.x+s,y:e.y-s});break;case"left":c.push({x:e.x+s,y:e.y-s},{x:e.x+s,y:e.y+s});break;case"right":c.push({x:e.x-s,y:e.y-s},{x:e.x-s,y:e.y+s});break}return c}function rJ(e){const{top:n,right:s,bottom:c,left:i}=e;return[{x:i,y:n},{x:s,y:n},{x:s,y:c},{x:i,y:c}]}function lJ(e,n){const{x:s,y:c}=e;let i=!1;for(let d=0,u=n.length-1;d<n.length;u=d++){const p=n[d],f=n[u],m=p.x,k=p.y,y=f.x,v=f.y;k>c!=v>c&&s<(y-m)*(c-k)/(v-k)+m&&(i=!i)}return i}function dJ(e){const n=e.slice();return n.sort((s,c)=>s.x<c.x?-1:s.x>c.x?1:s.y<c.y?-1:s.y>c.y?1:0),hJ(n)}function hJ(e){if(e.length<=1)return e.slice();const n=[];for(let c=0;c<e.length;c++){const i=e[c];for(;n.length>=2;){const d=n[n.length-1],u=n[n.length-2];if((d.x-u.x)*(i.y-u.y)>=(d.y-u.y)*(i.x-u.x))n.pop();else break}n.push(i)}n.pop();const s=[];for(let c=e.length-1;c>=0;c--){const i=e[c];for(;s.length>=2;){const d=s[s.length-1],u=s[s.length-2];if((d.x-u.x)*(i.y-u.y)>=(d.y-u.y)*(i.x-u.x))s.pop();else break}s.push(i)}return s.pop(),n.length===1&&s.length===1&&n[0].x===s[0].x&&n[0].y===s[0].y?n:n.concat(s)}var uJ=bZ,pJ=wZ,fJ=MZ,xJ=jZ,mJ=SZ,yJ=$Z;function gJ({children:e}){return t.jsx(uJ,{delayDuration:300,children:e})}function R2({children:e,content:n,side:s="top",className:c}){return n?t.jsxs(pJ,{children:[t.jsx(fJ,{asChild:!0,children:e}),t.jsx(xJ,{children:t.jsxs(mJ,{side:s,sideOffset:6,className:K("z-50 px-2.5 py-1.5 text-xs font-sans","bg-surface-4 text-text-0 border border-border rounded-md shadow-lg","animate-in fade-in-0 zoom-in-95",c),children:[n,t.jsx(yJ,{className:"fill-surface-4"})]})})]}):e}/**
|
|
30
30
|
* @license lucide-react v1.7.0 - ISC
|
|
31
31
|
*
|
|
32
32
|
* This source code is licensed under the ISC license.
|