groove-dev 0.27.110 → 0.27.111

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/EMBEDDING_SERVICE_BUILD_PLAN.md +200 -0
  2. package/TRAINING_DATA_v2.md +9 -0
  3. package/moe-training/client/domain-tagger.js +3 -1
  4. package/moe-training/client/trajectory-capture.js +3 -2
  5. package/moe-training/shared/constants.js +1 -0
  6. package/moe-training/test/client/domain-tagger.test.js +6 -4
  7. package/node_modules/@groove-dev/cli/package.json +1 -1
  8. package/node_modules/@groove-dev/daemon/package.json +1 -1
  9. package/node_modules/@groove-dev/daemon/src/api.js +16 -3
  10. package/node_modules/@groove-dev/gui/dist/assets/{index-B8JomvGM.js → index-CHu5w3i3.js} +1 -1
  11. package/node_modules/@groove-dev/gui/dist/index.html +1 -1
  12. package/node_modules/@groove-dev/gui/package.json +1 -1
  13. package/node_modules/@groove-dev/gui/src/stores/groove.js +1 -1
  14. package/node_modules/moe-training/client/domain-tagger.js +3 -1
  15. package/node_modules/moe-training/client/trajectory-capture.js +3 -2
  16. package/node_modules/moe-training/shared/constants.js +1 -0
  17. package/node_modules/moe-training/test/client/domain-tagger.test.js +6 -4
  18. package/package.json +1 -1
  19. package/packages/cli/package.json +1 -1
  20. package/packages/daemon/package.json +1 -1
  21. package/packages/daemon/src/api.js +16 -3
  22. package/packages/gui/dist/assets/{index-B8JomvGM.js → index-CHu5w3i3.js} +1 -1
  23. package/packages/gui/dist/index.html +1 -1
  24. package/packages/gui/package.json +1 -1
  25. package/packages/gui/src/stores/groove.js +1 -1
  26. package/TRAINING_DATA.md +0 -12
  27. package/codex/browser-racing-game/README.md +0 -45
  28. package/codex/browser-racing-game/dist/assets/index-D-sGTraQ.js +0 -47
  29. package/codex/browser-racing-game/dist/assets/index-S75nJv69.css +0 -1
  30. package/codex/browser-racing-game/dist/index.html +0 -14
  31. package/codex/browser-racing-game/index.html +0 -13
  32. package/codex/browser-racing-game/package-lock.json +0 -841
  33. package/codex/browser-racing-game/package.json +0 -15
  34. package/codex/browser-racing-game/src/app.css +0 -359
  35. package/codex/browser-racing-game/src/main.ts +0 -913
  36. package/codex/browser-racing-game/tsconfig.json +0 -20
  37. package/codex/browser-racing-game/vite.config.ts +0 -12
@@ -32,7 +32,7 @@ ${typeof B.result=="string"?B.result.slice(0,500):JSON.stringify(B.result).slice
32
32
  `:" ";V[V.length-1]={...Z,text:Z.text+P+B,timestamp:Date.now()}}else V.push({from:"assistant",text:B,timestamp:Date.now()});U[F.id]=V.slice(-200),e({conversationMessages:U,streamingConversationId:F.id}),wt("groove:conversationMessages",U)}}}if(j&&j.trim()){const B={...a().activityLog};B[v]||(B[v]=[]),B[v]=[...B[v].slice(-200),{timestamp:Date.now(),text:j.trim(),type:O.type,subtype:"tool"}],e({activityLog:B}),wt("groove:activityLog",B)}if(a().workspaceMode&&Array.isArray(O.data)){const B=new Set(["Write","Edit","write_file","edit_file","create_file"]);for(const Q of O.data){if(Q.type!=="tool_use"||!B.has(Q.name))continue;const T=((c=Q.input)==null?void 0:c.file_path)||((l=Q.input)==null?void 0:l.path);if(T&&v===a().workspaceAgentId){const N=T.replace(/^\/[^/]+.*?\/groove\//,"");a().openFile(N)}}}break}case"agent:exit":{const v=a().agents.find(B=>B.id===o.agentId),O=(v==null?void 0:v.name)||o.agentId,w=o.status==="killed"||o.code===143||o.code===137,j=o.status==="completed"?`${O} completed`:w?`${O} stopped`:`${O} crashed (exit ${o.code})`,C=o.status==="completed"?"success":w?"info":"warning";a().addToast(C,j,o.error?o.error.slice(0,200):void 0),a().thinkingAgents.has(o.agentId)&&e(B=>{const Q=new Set(B.thinkingAgents);return Q.delete(o.agentId),{thinkingAgents:Q}});const S=a().conversations.find(B=>B.agentId===o.agentId);if(S&&a().streamingConversationId===S.id&&e({sendingMessage:!1,streamingConversationId:null}),o.error&&o.agentId&&a().addChatMessage(o.agentId,"system",`Crashed: ${o.error}`),a().workspaceAgentId===o.agentId){const B=a().agents.filter(T=>T.id!==o.agentId&&T.teamId===a().activeTeamId),Q=B.find(T=>T.status==="running")||B[0];e({workspaceAgentId:(Q==null?void 0:Q.id)||null})}(v==null?void 0:v.role)==="planner"&&o.status==="completed"&&setTimeout(()=>a().checkRecommendedTeam(),1e3);break}case"phase2:spawned":a().addToast("info",`QC agent ${o.name} auto-spawned`,"Auditing phase 1 work");break;case"preview:ready":a().addToast("success","Project ready to preview",o.url,{label:"Open Preview",onClick:()=>a().openPreview(o.url,o.teamId,o.kind)},{persistent:!0});break;case"preview:failed":{const v=o.kind||"";v!=="no_preview"&&v!=="cli"&&v!=="none"&&a().addToast("warning","Preview could not launch",o.reason?String(o.reason).slice(0,200):"Unknown error");break}case"preview:stopped":{const v=a().previewState;v.teamId&&v.teamId===o.teamId&&e({previewState:{url:null,teamId:null,kind:null,deviceSize:"desktop",screenshotMode:!1},previewChat:[],previewIterating:!1});break}case"agent:stalled":{const v=o.agentName||o.agentId,O=Math.round((o.silentMs||0)/1e3);a().addToast("warning",`${v} may be stalled`,`No output for ${O}s — API stream may be hung`);break}case"knock:denied":{const v=o.agentName||o.agentId;a().addToast("warning",`${v} blocked`,`${o.toolName} on ${o.target} — ${o.reason||"scope conflict"}`);break}case"phase2:failed":a().addToast("error","QC agent failed to spawn",o.error||"Unknown error");break;case"agent:message_queued":a().addChatMessage(o.agentId,"system","Agent is working — message will be delivered when it finishes.");break;case"rotation:start":break;case"rotation:complete":{const v=o.agentId,O=o.oldAgentId;if(!v||!O)break;e(w=>{var M,I,F;const j={...w.chatHistory},C={...w.tokenTimeline},S={...w.activityLog},B={...w.chatInputs};(M=j[O])!=null&&M.length&&(j[v]=[...j[O]],delete j[O]),(I=C[O])!=null&&I.length&&(C[v]=[...C[O]],delete C[O]),(F=S[O])!=null&&F.length&&(S[v]=[...S[O]],delete S[O]),B[O]&&(B[v]=B[O],delete B[O]);const Q=w.detailPanel;let T=Q,N=w.teamDetailPanels;if((Q==null?void 0:Q.type)==="agent"&&Q.agentId===O){const U={type:"agent",agentId:v};T=U;const V=a().activeTeamId;N={...w.teamDetailPanels,[V]:U}}try{localStorage.setItem("groove:chatHistory",JSON.stringify(j))}catch{}return{chatHistory:j,tokenTimeline:C,activityLog:S,chatInputs:B,detailPanel:T,teamDetailPanels:N}});break}case"rotation:failed":a().addToast("error","Rotation failed",o.error);break;case"file:changed":{const v=a().editorRecentSaves[o.path];if(v&&Date.now()-v<2e3)break;if(e(O=>({editorChangedFiles:{...O.editorChangedFiles,[o.path]:o.timestamp}})),a().workspaceMode&&o.path&&!a().workspaceSnapshots[o.path]){const O=a().editorFiles[o.path];O!=null&&O.content&&a().captureSnapshot(o.path,O.content)}break}case"team:created":case"team:deleted":case"team:updated":a().fetchTeams();break;case"approval:request":e(v=>({pendingApprovals:[...v.pendingApprovals,o.data]}));break;case"approval:resolved":{const v=o.data;e(O=>({pendingApprovals:O.pendingApprovals.filter(w=>w.id!==v.id),resolvedApprovals:[v,...O.resolvedApprovals].slice(0,200)}));break}case"conflict:detected":a().addToast("error",`Scope conflict: ${o.agentName||"agent"}`,o.filePath?`File: ${o.filePath}`:void 0);break;case"qc:activated":a().addToast("info","QC agent activated",`${o.agentCount||"4+"} agents running`);break;case"journalist:cycle":e({journalistStatus:o.data||null});break;case"schedule:execute":a().addToast("info",`Scheduled agent spawned: ${o.name||o.role||"agent"}`);break;case"gateway:status":e({gateways:o.data||[]});break;case"provider:status-changed":e({_providerRefreshTick:Date.now()});break;case"federation:whitelist":e(v=>({federation:{...v.federation,whitelist:o.data||[]}}));break;case"federation:connection":e(v=>{const O=[...v.federation.connections],w=O.findIndex(j=>{var C;return j.ip===((C=o.data)==null?void 0:C.ip)});return w>=0?O[w]={...O[w],...o.data}:O.push(o.data),{federation:{...v.federation,connections:O}}});break;case"federation:pouch":case"federation:pouch-log":e(v=>({federation:{...v.federation,pouchLog:[...v.federation.pouchLog,o.data].slice(-200)}}));break;case"project-dir:changed":e({projectDir:(d=o.data)==null?void 0:d.projectDir,showProjectPicker:!1});break;case"tunnel.connected":e({activeTunnelId:((h=o.data)==null?void 0:h.id)||null}),a().fetchTunnels();break;case"tunnel.disconnected":e({activeTunnelId:null}),a().fetchTunnels();break;case"tunnel.health":{const v=a().savedTunnels.map(O=>{var w;return O.id===((w=o.data)==null?void 0:w.id)?{...O,latencyMs:o.data.latencyMs,healthy:o.data.healthy}:O});e({savedTunnels:v});break}case"tunnel.version-info":{const v=a().savedTunnels.map(O=>O.id===o.data.id?{...O,localVersion:o.data.localVersion,remoteVersion:o.data.remoteVersion,versionMatch:o.data.match}:O);e({savedTunnels:v});break}case"tunnel.version-mismatch":{const v=a().savedTunnels.map(O=>O.id===o.data.id?{...O,localVersion:o.data.localVersion,remoteVersion:o.data.remoteVersion,versionMatch:!1}:O);e({savedTunnels:v}),a().addToast("warning","Version mismatch",`Remote v${o.data.remoteVersion} — local v${o.data.localVersion}. ${o.data.message||""}`);break}case"tunnel.upgrade-failed":{a().addToast("error","Remote upgrade failed",o.data.error||"Unknown error");break}case"subscription:updated":{const v={subscription:o.data};((f=o.data)==null?void 0:f.active)===!0&&!a().marketplaceAuthenticated&&(v.marketplaceAuthenticated=!0),e(v),D.get("/edition").then(O=>{e({edition:O.edition||"community",subscription:{plan:O.plan||"community",status:O.status||(O.subscriptionActive?"active":"none"),active:O.subscriptionActive===!0,features:O.features||[],seats:O.seats||1,periodEnd:O.periodEnd||null,cancelAtPeriodEnd:O.cancelAtPeriodEnd||!1}})}).catch(()=>{}),a().fetchTunnels();break}case"auth:expired":e({marketplaceAuthenticated:!1,marketplaceUser:null}),a().addToast("warning","Session expired","Please sign in again");break;case"network:node:status":{const{__proto__:v,constructor:O,prototype:w,...j}=o.data||{};e({networkNode:{...a().networkNode,...j}});break}case"network:node:event":{const v=o.data||{};e(O=>({networkEvents:[...O.networkEvents,{...v,timestamp:v.timestamp||Date.now()}].slice(-100)}));break}case"signal_connected":{const v=o.data||{};e(O=>({networkEvents:[...O.networkEvents,{level:"connected",msg:String(v.msg||v.message||"Connected to signal").slice(0,500),detail:v.detail||v.url||void 0,timestamp:v.timestamp||Date.now()}].slice(-100)}));break}case"matched":{const v=o.data||{};e(O=>({networkEvents:[...O.networkEvents,{level:"session",msg:String(v.msg||v.message||"Session matched").slice(0,500),detail:v.detail||v.peer||v.nodeId||void 0,timestamp:v.timestamp||Date.now()}].slice(-100)}));break}case"network:status":{const v=o.data||{},O={networkStatus:{...a().networkStatus,...v}};if(v.compute){const T=v.compute;O.networkCompute={totalRamMb:T.totalRamMb??T.total_ram_mb??0,totalVramMb:T.totalVramMb??T.total_vram_mb??0,totalCpuCores:T.totalCpuCores??T.total_cpu_cores??0,totalBandwidthMbps:T.totalBandwidthMbps??T.total_bandwidth_mbps??0,activeNodes:T.activeNodes??T.active_nodes??0,totalNodes:T.totalNodes??T.total_nodes??0,avgLoad:T.avgLoad??T.avg_load??0}}else if(Array.isArray(v.nodes)&&v.nodes.length>0){const T=v.nodes,N=T.filter(M=>M.status==="active");O.networkCompute={totalRamMb:T.reduce((M,I)=>M+(I.ram_mb||0),0),totalVramMb:T.reduce((M,I)=>M+(I.vram_mb||0),0),totalCpuCores:T.reduce((M,I)=>M+(I.cpu_cores||0),0),totalBandwidthMbps:T.reduce((M,I)=>M+(I.bandwidth_mbps||0),0),activeNodes:N.length,totalNodes:T.length,avgLoad:N.length>0?N.reduce((M,I)=>M+(I.load||0),0)/N.length:0}}e(O);const w=v.nodes||[],j=a().networkNode.nodeId,C=j?w.find(T=>(T.node_id||T.nodeId)===j):null,S=w.filter(T=>T.status==="active"),B={t:Date.now(),globalSessions:v.activeSessions||0,mySessions:(C==null?void 0:C.active_sessions)??(C==null?void 0:C.sessions)??0,nodeCount:S.length,avgLoad:S.length>0?S.reduce((T,N)=>T+(N.load||0),0)/S.length:0,myLoad:(C==null?void 0:C.load)??0,totalVramMb:w.reduce((T,N)=>T+(N.vram_mb||0),0),totalRamMb:w.reduce((T,N)=>T+(N.ram_mb||0),0)};let Q=[...a().networkSnapshots,B];Q.length>100&&(Q=Q.slice(-100)),e({networkSnapshots:Q});break}case"network:install:progress":{const{step:v,message:O,percent:w}=o.data||{};v==="done"?(e({networkInstalled:!0,networkInstallProgress:{installing:!1,step:null,message:null,percent:0,error:null}}),a().addToast("success","Network package installed")):e(v==="error"?{networkInstallProgress:{installing:!1,step:"error",message:O||"Install failed",percent:0,error:O||"Install failed"}}:{networkInstallProgress:{installing:!0,step:v||"progress",message:O||"",percent:Number.isFinite(w)?Math.max(0,Math.min(100,w)):a().networkInstallProgress.percent,error:null}});break}case"network:update:available":{const{installed:v,latest:O,updateAvailable:w}=o.data||{};e({networkVersion:{installed:v??a().networkVersion.installed,latest:O??a().networkVersion.latest,updateAvailable:!!w}});break}case"network:update:progress":{const{step:v,message:O,percent:w,version:j,error:C}=o.data||{};v==="done"?(e({networkUpdateProgress:{updating:!1,step:null,message:null,percent:0,error:null},networkVersion:{...a().networkVersion,installed:j||a().networkVersion.latest||a().networkVersion.installed,updateAvailable:!1}}),a().addToast("success","Network package updated")):v==="error"?(e({networkUpdateProgress:{updating:!1,step:"error",message:O||C||"Update failed",percent:0,error:O||C||"Update failed"}}),a().addToast("error","Network update failed",O||C)):e({networkUpdateProgress:{updating:!0,step:v||"progress",message:O||"",percent:Number.isFinite(w)?Math.max(0,Math.min(100,w)):a().networkUpdateProgress.percent,error:null}});break}case"training:status":{e({trainingOptIn:((x=o.data)==null?void 0:x.optedIn)??!1,trainingStats:o.data});break}case"config:updated":a().fetchBetaStatus(),a().fetchNetworkInstallStatus();break;case"conversation:created":{const v=o.data;v&&e(O=>({conversations:[v,...O.conversations.filter(w=>w.id!==v.id)]}));break}case"conversation:updated":{const v=o.data;v&&e(O=>({conversations:O.conversations.map(w=>w.id===v.id?{...w,...v}:w)}));break}case"conversation:deleted":{const v=((m=o.data)==null?void 0:m.id)||o.id;v&&e(O=>{const w=O.conversations.filter(S=>S.id!==v),j={...O.conversationMessages};delete j[v];const C=O.activeConversationId===v?null:O.activeConversationId;return C!==O.activeConversationId&&localStorage.setItem("groove:activeConversationId",""),{conversations:w,conversationMessages:j,activeConversationId:C}});break}case"conversation:chunk":{const{conversationId:v,text:O}=o.data||o;if(!v||!O)break;e(w=>{const j={...w.conversationMessages};j[v]||(j[v]=[]);const C=[...j[v]],S=C[C.length-1];return S&&S.from==="assistant"&&Date.now()-S.timestamp<3e4?C[C.length-1]={...S,text:S.text+O,timestamp:Date.now()}:C.push({from:"assistant",text:O,timestamp:Date.now()}),j[v]=C.slice(-200),{conversationMessages:j,streamingConversationId:v}});break}case"conversation:complete":{const{conversationId:v}=o.data||o;v&&a().streamingConversationId===v&&e({sendingMessage:!1,streamingConversationId:null}),v&&wt("groove:conversationMessages",a().conversationMessages);break}case"conversation:image":{const{conversationId:v,prompt:O,url:w,b64_json:j,mimeType:C,model:S,provider:B}=o.data||o;if(!v)break;const Q=w||(j?`data:${C||"image/png"};base64,${j}`:null);e(T=>{const N={...T.conversationMessages};N[v]||(N[v]=[]);const M=[...N[v]],I=M.findLastIndex(U=>U.type==="image-loading"&&U.prompt===O);I>=0?M[I]={from:"assistant",type:"image",imageUrl:Q,prompt:O,model:S,provider:B,timestamp:Date.now()}:M.push({from:"assistant",type:"image",imageUrl:Q,prompt:O,model:S,provider:B,timestamp:Date.now()}),N[v]=M.slice(-200),wt("groove:conversationMessages",N);const F=T.streamingConversationId===v;return{conversationMessages:N,sendingMessage:F?!1:T.sendingMessage,streamingConversationId:F?null:T.streamingConversationId}});break}case"conversation:image-progress":{const{conversationId:v,status:O,prompt:w,error:j}=o.data||o;if(!v)break;O==="generating"?e(C=>{const S={...C.conversationMessages};return S[v]||(S[v]=[]),S[v]=[...S[v],{from:"assistant",type:"image-loading",prompt:w,timestamp:Date.now()}],{conversationMessages:S,streamingConversationId:v}}):O==="error"&&e(C=>{const S={...C.conversationMessages};S[v]||(S[v]=[]);const B=[...S[v]],Q=B.findLastIndex(N=>N.type==="image-loading");Q>=0&&B.splice(Q,1),B.push({from:"system",text:`Image generation failed: ${j||"Unknown error"}`,timestamp:Date.now()}),S[v]=B,wt("groove:conversationMessages",S);const T=C.streamingConversationId===v;return{conversationMessages:S,sendingMessage:T?!1:C.sendingMessage,streamingConversationId:T?null:C.streamingConversationId}});break}case"conversation:error":{const{conversationId:v,error:O}=o.data||o;v&&e(w=>{const j={...w.conversationMessages};j[v]||(j[v]=[]),j[v]=[...j[v],{from:"system",text:`Error: ${O||"Unknown error"}`,timestamp:Date.now()}],wt("groove:conversationMessages",j);const C=w.streamingConversationId===v;return{conversationMessages:j,sendingMessage:C?!1:w.sendingMessage,streamingConversationId:C?null:w.streamingConversationId}});break}case"network:token:timing":{const{__proto__:v,constructor:O,prototype:w,...j}=o.data||{},C={networkTokenTiming:j,networkPerfSnapshots:[...a().networkPerfSnapshots,{t:Date.now(),tps:j.tps||0}].slice(-100)};if(Array.isArray(j.stages)){const S={...a().networkNodeTelemetry},B=new Set(["__proto__","constructor","prototype"]);for(const Q of j.stages){const T=(y=Q.node_telemetry)==null?void 0:y.node_id;T&&typeof T=="string"&&!B.has(T)&&(S[T]={...Q.node_telemetry,forward_ms:Q.forward_ms,updatedAt:Date.now()})}C.networkNodeTelemetry=S}e(C);break}case"network:timing:summary":{const{__proto__:v,constructor:O,prototype:w,...j}=o.data||{};e(C=>({networkBenchmarks:[...C.networkBenchmarks,j].slice(-100)}));break}}},n.onclose=()=>{ws&&(clearInterval(ws),ws=null),e({connected:!1,hydrated:!1,ws:null,daemonHost:null,tunneled:!1,remoteHomedir:null}),setTimeout(()=>a().connect(),2e3)},n.onerror=()=>n.close()},setActiveView(n){e({activeView:n})},async fetchTeams(){try{const n=await D.get("/teams");let s=n.teams||[];const o=n.defaultTeamId;try{const h=JSON.parse(localStorage.getItem("groove:teamOrder")||"[]");if(h.length){const f=Object.fromEntries(s.map(y=>[y.id,y])),x=h.filter(y=>f[y]).map(y=>f[y]),m=s.filter(y=>!h.includes(y.id));s=[...x,...m]}}catch{}const{activeTeamId:c}=a(),d=s.map(h=>h.id).includes(c)?c:o;e({teams:s,activeTeamId:d}),d&&localStorage.setItem("groove:activeTeamId",d)}catch{}},switchTeam(n){const{activeTeamId:s,detailPanel:o,teamDetailPanels:c}=a(),l={...c};s&&(l[s]=o);const d=l[n]||null;e({activeTeamId:n,detailPanel:d,teamDetailPanels:l}),localStorage.setItem("groove:activeTeamId",n)},async createTeam(n,s){try{const o={name:n};s&&(o.workingDir=s);const c=await D.post("/teams",o);return e({activeTeamId:c.id}),localStorage.setItem("groove:activeTeamId",c.id),a().addToast("success",`Team "${n}" created`),c}catch(o){throw a().addToast("error","Failed to create team",o.message),o}},async deleteTeam(n){const s=a().teams.find(o=>o.id===n);try{await D.delete(`/teams/${encodeURIComponent(n)}`);const o=s!=null&&s.isDefault?"wiped":"deleted";a().addToast("info",`Team "${s==null?void 0:s.name}" ${o}`)}catch(o){a().addToast("error","Failed to delete team",o.message)}},reorderTeams(n,s){const o=[...a().teams],[c]=o.splice(n,1);o.splice(s,0,c),e({teams:o});try{localStorage.setItem("groove:teamOrder",JSON.stringify(o.map(l=>l.id)))}catch{}},async cloneTeam(n){const s=a().teams.find(c=>c.id===n);if(!s)return;const o=a().agents.filter(c=>c.teamId===n);try{const c=await D.post("/teams",{name:`${s.name} (copy)`});e({activeTeamId:c.id}),localStorage.setItem("groove:activeTeamId",c.id);for(const l of o)await D.post("/agents",{role:l.role,name:l.name,provider:l.provider,model:l.model,scope:l.scope,teamId:c.id});return a().addToast("success",`Cloned "${s.name}" with ${o.length} agent${o.length!==1?"s":""}`),c}catch(c){a().addToast("error","Failed to clone team",c.message)}},async renameTeam(n,s){try{const o=await D.patch(`/teams/${encodeURIComponent(n)}`,{name:s});return e(c=>({teams:c.teams.map(l=>l.id===n?o:l)})),o}catch(o){throw a().addToast("error","Failed to rename team",o.message),o}},openDetail(n){const s=a().activeTeamId;e(o=>({detailPanel:n,teamDetailPanels:{...o.teamDetailPanels,[s]:n}}))},closeDetail(){const n=a().activeTeamId;e(s=>({detailPanel:null,teamDetailPanels:{...s.teamDetailPanels,[n]:null}}))},selectAgent(n){const s=a().activeTeamId,o=a().agents.find(l=>l.id===n);if(s&&o&&o.teamId&&o.teamId!==s)return;const c={type:"agent",agentId:n};e(l=>({detailPanel:c,teamDetailPanels:{...l.teamDetailPanels,[s]:c}}))},clearSelection(){const n=a().activeTeamId;e(s=>({detailPanel:null,teamDetailPanels:{...s.teamDetailPanels,[n]:null}}))},toggleCommandPalette(){e(n=>({commandPaletteOpen:!n.commandPaletteOpen}))},toggleQuickConnect(){e(n=>({quickConnectOpen:!n.quickConnectOpen}))},setUpgradeModalOpen:n=>e({upgradeModalOpen:n}),setDetailPanelWidth(n){e({detailPanelWidth:n}),localStorage.setItem("groove:detailWidth",String(n))},setTerminalVisible(n){e({terminalVisible:n}),localStorage.setItem("groove:terminalVisible",String(n))},setTerminalHeight(n){e({terminalHeight:n}),localStorage.setItem("groove:terminalHeight",String(n))},setTerminalFullHeight(n){e({terminalFullHeight:n})},toggleNodeExpanded(n){const s={...a().expandedNodes};s[n]=!s[n],s[n]||delete s[n],e({expandedNodes:s}),wt("groove:expandedNodes",s)},openPreview(n,s,o){e({previewState:{url:n,teamId:s,kind:o,deviceSize:"desktop",screenshotMode:!1},previewChat:[],showPreviewInAgents:!0})},closePreview(){const{previewState:n}=a();n.teamId&&D.delete(`/preview/${n.teamId}`).catch(()=>{}),e({previewState:{url:null,teamId:null,kind:null,deviceSize:"desktop",screenshotMode:!1},previewChat:[],previewIterating:!1,showPreviewInAgents:!1,activeView:"agents"})},togglePreviewInAgents(){e(n=>({showPreviewInAgents:!n.showPreviewInAgents}))},setPreviewDevice(n){e(s=>({previewState:{...s.previewState,deviceSize:n}}))},toggleScreenshotMode(){e(n=>({previewState:{...n.previewState,screenshotMode:!n.previewState.screenshotMode}}))},async iteratePreview(n,s){const{previewState:o}=a();if(!o.teamId)return;const c={role:"user",content:n,screenshot:s||null,timestamp:Date.now()};e(l=>({previewChat:[...l.previewChat,c],previewIterating:!0}));try{const l={message:n};s&&(l.screenshot=s);const d=await D.post(`/preview/${o.teamId}/iterate`,l),h={role:"assistant",content:d.response||d.message||"Changes routed to planner.",timestamp:Date.now()};e(f=>({previewChat:[...f.previewChat,h],previewIterating:!1}))}catch(l){const d={role:"assistant",content:`Failed to iterate: ${l.message}`,timestamp:Date.now()};e(h=>({previewChat:[...h.previewChat,d],previewIterating:!1}))}},addPreviewChatMessage(n,s,o){const c={role:n,content:s,screenshot:o||null,timestamp:Date.now()};e(l=>({previewChat:[...l.previewChat,c]}))},clearPreviewChat(){e({previewChat:[]})},addToast(n,s,o,c,l={}){const d=++fne,h=!!l.persistent,f=l.duration;e(x=>({toasts:[...x.toasts,{id:d,type:n,message:s,detail:o,action:c,persistent:h,duration:f}]}))},removeToast(n){e(s=>({toasts:s.toasts.filter(o=>o.id!==n)}))},installUpdate(){var n,s;(s=(n=window.groove)==null?void 0:n.update)==null||s.installUpdate()},setUpdateModalOpen(n){e({updateModalOpen:n})},checkForUpdate(){var n,s;(s=(n=window.groove)==null?void 0:n.update)==null||s.checkForUpdate()},async checkMarketplaceAuth(){try{const n=await D.get("/auth/status");e({marketplaceAuthenticated:n.authenticated||!1,marketplaceUser:n.user||null});try{const s=await D.get("/edition");e({edition:s.edition||"community",subscription:{plan:s.plan||"community",status:s.status||(s.subscriptionActive?"active":"none"),active:s.subscriptionActive===!0,features:s.features||[],seats:s.seats||1,periodEnd:s.periodEnd||null,cancelAtPeriodEnd:s.cancelAtPeriodEnd||!1}})}catch{}}catch{e({marketplaceAuthenticated:!1,marketplaceUser:null})}},async marketplaceLogin(){try{const n=await D.get("/auth/login-url");n.url&&window.open(n.url,"_blank");const s=setInterval(async()=>{var o,c;try{const l=await D.get("/auth/status");if(l.authenticated){clearInterval(s),e({marketplaceAuthenticated:!0,marketplaceUser:l.user}),a().addToast("success",`Signed in as ${((o=l.user)==null?void 0:o.displayName)||((c=l.user)==null?void 0:c.id)||"user"}`);try{const d=await D.get("/edition");e({edition:d.edition||"community",subscription:{plan:d.plan||"community",status:d.status||(d.subscriptionActive?"active":"none"),active:d.subscriptionActive===!0,features:d.features||[],seats:d.seats||1,periodEnd:d.periodEnd||null,cancelAtPeriodEnd:d.cancelAtPeriodEnd||!1}})}catch{}setTimeout(async()=>{try{const d=await D.get("/edition");e({edition:d.edition||"community",subscription:{plan:d.plan||"community",status:d.status||(d.subscriptionActive?"active":"none"),active:d.subscriptionActive===!0,features:d.features||[],seats:d.seats||1,periodEnd:d.periodEnd||null,cancelAtPeriodEnd:d.cancelAtPeriodEnd||!1}})}catch{}},2e3)}}catch{}},2e3);setTimeout(()=>clearInterval(s),3e5)}catch(n){a().addToast("error","Login failed",n.message)}},async marketplaceLogout(){try{await D.post("/auth/logout"),e({marketplaceAuthenticated:!1,marketplaceUser:null}),a().addToast("info","Signed out of marketplace")}catch(n){a().addToast("error","Logout failed",n.message)}},async marketplaceCheckout(n){try{const s=await D.post("/auth/checkout",{skillId:n});return s.url&&window.open(s.url,"_blank"),s}catch(s){throw a().addToast("error","Checkout failed",s.message),s}},async fetchSubscriptionPlans(){return D.get("/subscription/plans")},async startCheckout(n){var s,o;try{const c=await D.post("/subscription/checkout",{priceId:n});return c.url&&((s=window.groove)!=null&&s.openExternal?window.groove.openExternal(c.url):window.open(c.url,"_blank")),c}catch(c){throw c.status===401||(o=c.message)!=null&&o.includes("Not authenticated")?(a().addToast("info","Please sign in to subscribe"),a().marketplaceLogin()):c.status===409?a().addToast("info","Already subscribed","Use Manage Subscription to switch plans"):a().addToast("error","Checkout failed",c.message),c}},async openPortal(){var n;try{const s=await D.post("/subscription/portal");return s.url&&((n=window.groove)!=null&&n.openExternal?window.groove.openExternal(s.url):window.open(s.url,"_blank")),s}catch(s){throw a().addToast("error","Portal failed",s.message),s}},async updateSeats(n){try{const s=await D.patch("/subscription",{seats:n});return e({subscription:{...a().subscription,...s}}),a().addToast("success",`Updated to ${n} seat${n!==1?"s":""}`),s}catch(s){throw a().addToast("error","Seat update failed",s.message),s}},async fetchApprovals(){try{const n=await D.get("/approvals");e({pendingApprovals:n.pending||[],resolvedApprovals:n.resolved||[]})}catch{}},async approveRequest(n){try{await D.post(`/approvals/${encodeURIComponent(n)}/approve`),e(s=>({pendingApprovals:s.pendingApprovals.filter(o=>o.id!==n)})),a().addToast("success","Approved")}catch(s){a().addToast("error","Approve failed",s.message)}},async rejectRequest(n,s=""){try{await D.post(`/approvals/${encodeURIComponent(n)}/reject`,{reason:s}),e(o=>({pendingApprovals:o.pendingApprovals.filter(c=>c.id!==n)})),a().addToast("info","Rejected")}catch(o){a().addToast("error","Reject failed",o.message)}},async checkRecommendedTeam(){var n;try{const s=await D.get("/recommended-team");if(!s||!((n=s.agents)!=null&&n.length)){e({recommendedTeam:null});return}const o=s.teamId||null;if(o){const c=a().agents.filter(h=>h.teamId===o&&h.role!=="planner"),l=s.agents.filter(h=>!h.phase||h.phase===1).map(h=>h.role);if(l.every(h=>c.some(f=>f.role===h))&&l.length>0){if(a()._delegatingTeamIds.has(o))return;e(h=>({recommendedTeam:null,_delegatingTeamIds:new Set([...h._delegatingTeamIds,o])}));try{const h=a().teamLaunchConfig,f=await D.post("/recommended-team/launch",{teamId:o,...(h==null?void 0:h.provider)&&{teamProvider:h.provider},...(h==null?void 0:h.model)&&{teamModel:h.model},...(h==null?void 0:h.reasoningEffort)!=null&&{teamReasoningEffort:h.reasoningEffort},...(h==null?void 0:h.temperature)!=null&&{teamTemperature:h.temperature}}),x=f.agents||[],m=f.failed||[],y=x.map(v=>v.name).join(", ")||"";x.length===0&&m.length>0?a().addToast("error","Delegation failed",m.map(v=>v.role+": "+v.error).join(", ")):(a().addToast("success","Planner delegated work",y?`→ ${y}`:void 0),m.length>0&&a().addToast("warning",`${m.length} agent(s) failed to spawn`,m.map(v=>v.role+": "+v.error).join(", "))),x.length>0&&e(v=>({thinkingAgents:new Set([...v.thinkingAgents,...x.map(O=>O.id)])}))}finally{e(h=>{const f=new Set(h._delegatingTeamIds);return f.delete(o),{_delegatingTeamIds:f}})}return}}e({recommendedTeam:{...s,teamId:s.teamId||null}})}catch{e({recommendedTeam:null})}},async launchRecommendedTeam(n){var s;try{const o=((s=a().recommendedTeam)==null?void 0:s.teamId)||null,c=a().teamLaunchConfig;e({recommendedTeam:null}),a().addToast("info","Launching team...");const l={...n&&{agents:n},...o&&{teamId:o},...(c==null?void 0:c.provider)&&{teamProvider:c.provider},...(c==null?void 0:c.model)&&{teamModel:c.model},...(c==null?void 0:c.reasoningEffort)!=null&&{teamReasoningEffort:c.reasoningEffort},...(c==null?void 0:c.temperature)!=null&&{teamTemperature:c.temperature},...(c==null?void 0:c.verbosity)!=null&&{teamVerbosity:c.verbosity}},d=await D.post("/recommended-team/launch",l),h=(d.launched||0)+(d.reused||0),f=d.failed||[];if(h===0&&f.length>0)a().addToast("error","Team launch failed",f.map(y=>y.role+": "+y.error).join(", "));else{const y=[d.phase2Pending?`${d.phase2Pending} QC queued`:"",d.projectDir?`→ ${d.projectDir}/`:""].filter(Boolean).join(" · ");a().addToast("success",`Launched ${h} agents`,y||void 0),f.length>0&&a().addToast("warning",`${f.length} agent(s) failed to spawn`,f.map(v=>v.role+": "+v.error).join(", "))}const x=d.agents||[];x.length>0&&e(y=>({thinkingAgents:new Set([...y.thinkingAgents,...x.map(v=>v.id)])}));const m=(l==null?void 0:l.teamId)||(d==null?void 0:d.teamId)||null;return m&&D.post("/cleanup",{teamId:m}).catch(()=>{}),d}catch(o){throw a().addToast("error","Launch failed",o.message),o}},openTeamBuilder(){e({teamBuilderOpen:!0})},closeTeamBuilder(){e({teamBuilderOpen:!1,teamBuilderRoles:[],teamBuilderSettings:{provider:null,model:null,reasoningEffort:50,temperature:.5},teamBuilderTask:""})},addTeamBuilderRole(n){e(s=>({teamBuilderRoles:[...s.teamBuilderRoles,{role:n,name:"",provider:null,model:null,reasoningEffort:null,temperature:null,prompt:""}]}))},removeTeamBuilderRole(n){e(s=>({teamBuilderRoles:s.teamBuilderRoles.filter((o,c)=>c!==n)}))},updateTeamBuilderRole(n,s){e(o=>({teamBuilderRoles:o.teamBuilderRoles.map((c,l)=>l===n?{...c,...s}:c)}))},applyTemplate(n){e({teamBuilderRoles:(n.roles||[]).map(s=>({role:typeof s=="string"?s:s.role,name:"",provider:null,model:null,reasoningEffort:null,temperature:null,prompt:""}))})},setTeamBuilderSettings(n){e(s=>({teamBuilderSettings:{...s.teamBuilderSettings,...n}}))},setTeamBuilderTask(n){e({teamBuilderTask:n})},async fetchTeamTemplates(){try{const n=await D.get("/team-templates"),s=[],o=[];for(const[c,l]of Object.entries(n||{})){const d={...l,name:c};l.builtIn?s.push(d):o.push(d)}e({teamTemplates:{builtIn:s,custom:o}})}catch{}},async saveTeamTemplate(n){try{const{teamBuilderRoles:s,teamBuilderSettings:o}=a();await D.post("/team-templates",{name:n,roles:s.map(c=>c.role),settings:o}),a().addToast("success",`Template "${n}" saved`),a().fetchTeamTemplates()}catch(s){a().addToast("error","Failed to save template",s.message)}},async deleteTeamTemplate(n){try{await D.delete(`/team-templates/${encodeURIComponent(n)}`),a().addToast("info",`Template "${n}" deleted`),a().fetchTeamTemplates()}catch(s){a().addToast("error","Failed to delete template",s.message)}},async launchTeamBuilder(){const{teamBuilderRoles:n,teamBuilderSettings:s,teamBuilderTask:o,activeTeamId:c}=a();if(n.length!==0){e({teamLaunchConfig:{provider:s.provider||null,model:s.model||null,reasoningEffort:s.reasoningEffort,temperature:s.temperature}}),a().closeTeamBuilder();try{const l={task:o,roles:n,settings:s,launchMode:"plan-first",teamId:c},d=await D.post("/team-builder/launch",l);return a().addToast("success","Planner spawned — team will build automatically"),d}catch(l){throw a().addToast("error","Team launch failed",l.message),l}}},async fetchImportedRepos(){try{const n=await D.get("/repos/imported");e({importedRepos:n})}catch{}},async previewRepo(n){return D.post("/repos/preview",{repoUrl:n})},async importRepo(n,s,o,c){e({importInProgress:!0});try{const l=await D.post("/repos/import",{repoUrl:n,targetPath:s,createTeam:o,teamName:c});return a().fetchImportedRepos(),l}finally{e({importInProgress:!1})}},async softRemoveRepo(n){await D.delete(`/repos/${encodeURIComponent(n)}/remove`),a().fetchImportedRepos()},async hardNukeRepo(n,s=!0){await D.delete(`/repos/${encodeURIComponent(n)}/nuke?deleteFiles=${s}`),a().fetchImportedRepos()},async fetchProjectDir(){try{const n=await D.get("/project-dir"),s=/^\/home\/[^/]+$/.test(n.projectDir)||n.projectDir==="/root";e({projectDir:n.projectDir,recentProjects:n.recentProjects||[],showProjectPicker:s||(n.recentProjects||[]).length===0,editorTreeCache:{}})}catch{}},async setProjectDir(n){const s=await D.post("/project-dir",{path:n});try{await D.post("/files/root",{root:s.projectDir})}catch{}e({projectDir:s.projectDir,recentProjects:s.recentProjects||[],showProjectPicker:!1,editorTreeCache:{}}),a().fetchTreeDir("")},async removeRecentProject(n){try{await D.delete("/projects/recent",{path:n})}catch{}a().fetchProjectDir()},toggleProjectPicker(){e(n=>({showProjectPicker:!n.showProjectPicker}))},async fetchTunnels(){try{const n=await D.get("/tunnels");e({savedTunnels:Array.isArray(n)?n:[]})}catch{}},async saveTunnel(n){const s=await D.post("/tunnels",n);return a().fetchTunnels(),s},async updateTunnel(n,s){const o=await D.patch(`/tunnels/${encodeURIComponent(n)}`,s);return a().fetchTunnels(),o},async deleteTunnel(n){await D.delete(`/tunnels/${encodeURIComponent(n)}`),a().fetchTunnels()},async testTunnel(n){return D.post(`/tunnels/${encodeURIComponent(n)}/test`)},async connectTunnel(n){var o,c;const s=await D.post(`/tunnels/${encodeURIComponent(n)}/connect`);return e({activeTunnelId:n}),a().fetchTunnels(),s.localPort&&s.name&&((c=(o=window.groove)==null?void 0:o.remote)!=null&&c.openWindow?window.groove.remote.openWindow(s.localPort,s.name):window.open(`http://localhost:${s.localPort}?instance=${encodeURIComponent(s.name)}`,"_blank")),s},async upgradeTunnel(n){return D.post(`/tunnels/${encodeURIComponent(n)}/upgrade`)},async disconnectTunnel(n){var o,c;const s=a().savedTunnels.find(l=>l.id===n);await D.post(`/tunnels/${encodeURIComponent(n)}/disconnect`),e({activeTunnelId:null}),a().fetchTunnels(),s!=null&&s.localPort&&((c=(o=window.groove)==null?void 0:o.remote)!=null&&c.closeByPort)&&window.groove.remote.closeByPort(s.localPort)},async installTunnel(n){return D.post(`/tunnels/${encodeURIComponent(n)}/install`)},async startTunnel(n){return D.post(`/tunnels/${encodeURIComponent(n)}/start`)},async fetchJournalist(){try{const n=await D.get("/journalist");return e({journalistStatus:n}),n}catch{return null}},async triggerJournalistCycle(){try{const n=await D.post("/journalist/cycle");return a().addToast("success","Synthesis cycle triggered"),e({journalistStatus:n}),n}catch(n){throw a().addToast("error","Synthesis failed",n.message),n}},async spawnAgent(n){try{const s=a().activeTeamId,o=await D.post("/agents",{...n,teamId:s});return a().addToast("success",`Spawned ${o.name}`),o}catch(s){let o=s.message;if(o!=null&&o.includes("workingDir must be within project directory")){const c=a().projectDir||"unknown";o=`workingDir "${n.workingDir||"default"}" is outside project directory "${c}". Change the project directory or pick a subfolder within it.`}throw a().addToast("error","Spawn failed",o),s}},async killAgent(n,s=!1){try{await D.delete(`/agents/${encodeURIComponent(n)}?purge=${s}`),s&&e(o=>{const c={...o.chatHistory},l={...o.activityLog},d={...o.tokenTimeline};return delete c[n],delete l[n],delete d[n],wt("groove:chatHistory",c),wt("groove:activityLog",l),{chatHistory:c,activityLog:l,tokenTimeline:d}})}catch(o){a().addToast("error","Kill failed",o.message)}},async rotateAgent(n){try{return await D.post(`/agents/${encodeURIComponent(n)}/rotate`)}catch(s){throw a().addToast("error","Rotation failed",s.message),s}},async fetchProviders(){return D.get("/providers")},async fetchOnboardingStatus(){try{const n=await D.get("/onboarding/status");return n!=null&&n.complete&&(e({onboardingComplete:!0}),localStorage.setItem("groove:onboardingComplete","true")),n}catch{return null}},dismissOnboarding(){e({onboardingComplete:!0}),localStorage.setItem("groove:onboardingComplete","true"),D.post("/onboarding/dismiss").catch(()=>{})},providerInstallProgress:{},async installProvider(n){var o,c;const s=l=>e(d=>({providerInstallProgress:{...d.providerInstallProgress,[n]:{...d.providerInstallProgress[n],...l}}}));s({installing:!0,percent:0,message:"Starting install...",error:null,done:!1});try{const l=await fetch(`/api/providers/${encodeURIComponent(n)}/install`,{method:"POST",headers:{"Content-Type":"application/json"}});if(!l.ok){const x=await l.text();throw new Error(x||`Install failed (${l.status})`)}let d;try{d=await l.text()}catch(x){throw new Error(`Failed to read response: ${x.message}`)}let h=null,f=!1;for(const x of d.split(`
33
33
  `))if(x.trim())try{const m=JSON.parse(x),y=m.status==="error",v=m.status==="complete";y&&(h=m.output||"Install failed"),v&&(f=!0),s({percent:m.progress??((o=a().providerInstallProgress[n])==null?void 0:o.percent)??0,message:m.output||((c=a().providerInstallProgress[n])==null?void 0:c.message),error:y?m.output||"Install failed":null,done:v,installing:!v&&!y})}catch{}if(h)throw new Error(h);if(!f)throw new Error(d.slice(0,500)||"Install ended without confirmation");s({installing:!1,percent:100,message:"Installed",error:null,done:!0}),e({_providerRefreshTick:Date.now()}),a().addToast("success",`${n} installed`)}catch(l){throw s({installing:!1,percent:0,message:null,error:l.message,done:!1}),a().addToast("error",`Install failed: ${n}`,l.message),l}},async loginProvider(n,s){try{const o=await D.post(`/providers/${encodeURIComponent(n)}/login`,s);return o!=null&&o.url&&!(o!=null&&o.browserOpened)&&window.open(o.url,"_blank"),o}catch(o){throw a().addToast("error","Login failed",o.message),o}},async setProviderPath(n,s){try{await D.post(`/providers/${encodeURIComponent(n)}/set-path`,{path:s}),a().addToast("success",`Custom path set for ${n}`)}catch(o){throw a().addToast("error","Failed to set path",o.message),o}},async verifyProvider(n){try{return await D.post(`/providers/${encodeURIComponent(n)}/verify`)}catch(s){throw a().addToast("error","Verification failed",s.message),s}},async setDefaultProvider(n,s){try{await D.post("/onboarding/set-default",{provider:n,model:s}),a().addToast("success",`Default set to ${n} (${s})`)}catch(o){throw a().addToast("error","Failed to set default",o.message),o}},addChatMessage(n,s,o,c=!1){e(l=>{const d={...l.chatHistory};return d[n]||(d[n]=[]),d[n]=[...d[n].slice(-100),{from:s,text:o,timestamp:Date.now(),isQuery:c}],wt("groove:chatHistory",d),{chatHistory:d}})},thinkingAgents:new Set,async stopAgent(n){try{await D.post(`/agents/${encodeURIComponent(n)}/stop`),e(s=>{const o=new Set(s.thinkingAgents);return o.delete(n),{thinkingAgents:o}}),a().addToast("info","Stopped agent")}catch(s){a().addToast("error","Stop failed",s.message)}},async instructAgent(n,s){var l,d,h;a().addChatMessage(n,"user",s,!1),e(f=>({thinkingAgents:new Set([...f.thinkingAgents,n])}));let o=s;a().workspaceMode&&a().workspaceAgentId===n&&a().editorActiveFile&&(o=`[Active file: ${a().editorActiveFile}]
34
34
 
35
- ${s}`);const c={chatHistory:[...a().chatHistory[n]||[]],activityLog:[...a().activityLog[n]||[]],tokenTimeline:[...a().tokenTimeline[n]||[]]};try{const f=await D.post(`/agents/${encodeURIComponent(n)}/instruct`,{message:o});if(f.status==="message_sent")return f;if(f.status==="message_queued")return e(m=>{const y=new Set(m.thinkingAgents);return y.delete(n),{thinkingAgents:y}}),f;const x=f;for(const m of["chatHistory","activityLog","tokenTimeline"])(l=c[m])!=null&&l.length&&e(y=>({[m]:{...y[m],[x.id]:[...c[m]]}}));return e(m=>{const y=new Set(m.thinkingAgents);return y.delete(n),y.add(x.id),{thinkingAgents:y}}),(d=a().chatHistory[x.id])!=null&&d.length&&wt("groove:chatHistory",a().chatHistory),(h=a().activityLog[x.id])!=null&&h.length&&wt("groove:activityLog",a().activityLog),a().selectAgent(x.id),x}catch(f){throw e(x=>{const m=new Set(x.thinkingAgents);return m.delete(n),{thinkingAgents:m}}),a().addChatMessage(n,"system",`failed: ${f.message}`),f}},async queryAgent(n,s){a().addChatMessage(n,"user",s,!0);try{const o=await D.post(`/agents/${encodeURIComponent(n)}/query`,{message:s});return a().addChatMessage(n,"agent",o.response),o}catch(o){throw a().addChatMessage(n,"system",`query failed: ${o.message}`),o}},async fetchConversations(){try{const n=await D.get("/conversations");e({conversations:n.conversations||n||[]})}catch{}},async createConversation(n,s,o="api"){try{const c=await D.post("/conversations",{provider:n,model:s,mode:o});return e(l=>({conversations:[c,...l.conversations.filter(d=>d.id!==c.id)],activeConversationId:c.id})),localStorage.setItem("groove:activeConversationId",c.id),c}catch(c){throw a().addToast("error","Failed to create conversation",c.message),c}},async setConversationMode(n,s){if(!sU.has(n)){sU.add(n);try{const o=await D.patch(`/conversations/${encodeURIComponent(n)}`,{mode:s});e(c=>({conversations:c.conversations.map(l=>l.id===n?{...l,...o}:l)}))}catch(o){a().addToast("error","Mode change failed",o.message)}finally{sU.delete(n)}}},async setConversationModel(n,s,o){try{const c=await D.patch(`/conversations/${encodeURIComponent(n)}`,{provider:s,model:o});e(l=>({conversations:l.conversations.map(d=>d.id===n?{...d,...c}:d)}))}catch(c){a().addToast("error","Model change failed",c.message)}},async stopChatStreaming(n){try{await D.post(`/conversations/${encodeURIComponent(n)}/stop`),e({sendingMessage:!1,streamingConversationId:null})}catch{}},async deleteConversation(n){try{await D.delete(`/conversations/${encodeURIComponent(n)}`),e(s=>{var x;const o=s.conversations.filter(m=>m.id!==n),c={...s.conversationMessages};delete c[n],wt("groove:conversationMessages",c);const l=s.activeConversationId===n?((x=o[0])==null?void 0:x.id)||null:s.activeConversationId;localStorage.setItem("groove:activeConversationId",l||"");const d={...s.conversationRoles};delete d[n],wt("groove:conversationRoles",d);const h={...s.conversationReasoningEffort};delete h[n],wt("groove:conversationReasoningEffort",h);const f={...s.conversationVerbosity};return delete f[n],wt("groove:conversationVerbosity",f),{conversations:o,conversationMessages:c,conversationRoles:d,conversationReasoningEffort:h,conversationVerbosity:f,activeConversationId:l}})}catch(s){a().addToast("error","Delete failed",s.message)}},async renameConversation(n,s){try{const o=await D.patch(`/conversations/${encodeURIComponent(n)}`,{title:s});e(c=>({conversations:c.conversations.map(l=>l.id===n?{...l,...o}:l)}))}catch(o){a().addToast("error","Rename failed",o.message)}},async pinConversation(n,s){try{const o=await D.patch(`/conversations/${encodeURIComponent(n)}`,{pinned:s});e(c=>({conversations:c.conversations.map(l=>l.id===n?{...l,...o}:l)}))}catch(o){a().addToast("error","Pin failed",o.message)}},setActiveConversation(n){e({activeConversationId:n}),localStorage.setItem("groove:activeConversationId",n||"")},setConversationRole(n,s){e(o=>{const c={...o.conversationRoles};return s?c[n]=s:delete c[n],wt("groove:conversationRoles",c),{conversationRoles:c}})},setConversationReasoningEffort(n,s){e(o=>{const c={...o.conversationReasoningEffort};return c[n]=s||"medium",wt("groove:conversationReasoningEffort",c),{conversationReasoningEffort:c}})},setConversationVerbosity(n,s){e(o=>{const c={...o.conversationVerbosity};return c[n]=s||"medium",wt("groove:conversationVerbosity",c),{conversationVerbosity:c}})},async sendChatMessage(n,s){var c,l,d;const o=a().conversations.find(h=>h.id===n);if(o){e(h=>{const f={...h.conversationMessages};return f[n]||(f[n]=[]),f[n]=[...f[n],{from:"user",text:s,timestamp:Date.now()}],wt("groove:conversationMessages",f),{conversationMessages:f,sendingMessage:!0,streamingConversationId:n}});try{const h={message:s};if(o.mode==="api"||!o.mode){const m=a().conversationMessages[n]||[];h.history=m.slice(0,-1);const y=(c=a().conversationRoles)==null?void 0:c[n],v=["Never use emojis in your responses.","Be professional, concise, and direct."];y&&v.unshift(`You are a professional ${y}. Respond with deep expertise in that domain.`);const O=v.join(" ");h.history=[{from:"user",text:`Instructions: ${O}`},{from:"assistant",text:"Understood."},...h.history]}const f=((l=a().conversationReasoningEffort)==null?void 0:l[n])||"medium",x=((d=a().conversationVerbosity)==null?void 0:d[n])||"medium";o.provider==="codex"&&(h.reasoning_effort=f,h.verbosity=x),await D.post(`/conversations/${encodeURIComponent(n)}/message`,h)}catch(h){e(f=>{const x={...f.conversationMessages};return x[n]||(x[n]=[]),x[n]=[...x[n],{from:"system",text:`Failed: ${h.message}`,timestamp:Date.now()}],wt("groove:conversationMessages",x),{conversationMessages:x,sendingMessage:!1,streamingConversationId:null}}),a().addToast("error","Message failed",h.message)}}},async sendImageMessage(n,s,{model:o,size:c,quality:l}={}){if(a().conversations.find(h=>h.id===n)){e(h=>{const f={...h.conversationMessages};return f[n]||(f[n]=[]),f[n]=[...f[n],{from:"user",text:s,timestamp:Date.now()}],wt("groove:conversationMessages",f),{conversationMessages:f,sendingMessage:!0,streamingConversationId:n}});try{await D.post(`/conversations/${encodeURIComponent(n)}/generate-image`,{prompt:s,model:o,size:c,quality:l})}catch(h){e(f=>{const x={...f.conversationMessages};return x[n]||(x[n]=[]),x[n]=[...x[n],{from:"system",text:`Image failed: ${h.message}`,timestamp:Date.now()}],wt("groove:conversationMessages",x),{conversationMessages:x,sendingMessage:!1,streamingConversationId:null}}),a().addToast("error","Image generation failed",h.message)}}},async openFile(n){var c;if(a().editorFiles[n]||a().editorOpenTabs.includes(n)){e(l=>({editorActiveFile:n,editorOpenTabs:l.editorOpenTabs.includes(n)?l.editorOpenTabs:[...l.editorOpenTabs,n]}));return}const s=(c=n.split(".").pop())==null?void 0:c.toLowerCase();if(["png","jpg","jpeg","gif","svg","webp","ico","bmp","avif","mp4","webm","mov","avi","mkv","ogv"].includes(s)){e(l=>({editorActiveFile:n,editorOpenTabs:[...l.editorOpenTabs,n]}));return}try{const l=await D.get(`/files/read?path=${encodeURIComponent(n)}`);if(l.binary){a().addToast("warning","Binary file — cannot open");return}e(h=>({editorFiles:{...h.editorFiles,[n]:{content:l.content,originalContent:l.content,language:l.language,loadedAt:Date.now()}},editorActiveFile:n,editorOpenTabs:h.editorOpenTabs.includes(n)?h.editorOpenTabs:[...h.editorOpenTabs,n]}));const d=a().ws;(d==null?void 0:d.readyState)===1&&d.send(JSON.stringify({type:"editor:watch",path:n}))}catch(l){a().addToast("error","Failed to open file",l.message)}},closeFile(n){e(o=>{const c=o.editorOpenTabs.filter(f=>f!==n),l={...o.editorFiles};delete l[n];const d={...o.editorChangedFiles};delete d[n];let h=o.editorActiveFile;if(h===n){const f=o.editorOpenTabs.indexOf(n);h=c[Math.min(f,c.length-1)]||null}return{editorOpenTabs:c,editorFiles:l,editorChangedFiles:d,editorActiveFile:h}});const s=a().ws;(s==null?void 0:s.readyState)===1&&s.send(JSON.stringify({type:"editor:unwatch",path:n}))},setActiveFile(n){e({editorActiveFile:n})},setEditorSidebarWidth(n){e({editorSidebarWidth:n}),localStorage.setItem("groove:editorSidebarWidth",String(n))},updateFileContent(n,s){e(o=>({editorFiles:{...o.editorFiles,[n]:{...o.editorFiles[n],content:s}}}))},async saveFile(n){const s=a().editorFiles[n];if(s)try{await D.post("/files/write",{path:n,content:s.content}),e(o=>({editorFiles:{...o.editorFiles,[n]:{...o.editorFiles[n],originalContent:s.content}},editorChangedFiles:(()=>{const c={...o.editorChangedFiles};return delete c[n],c})(),editorRecentSaves:{...o.editorRecentSaves,[n]:Date.now()}})),a().addToast("success","File saved")}catch(o){a().addToast("error","Save failed",o.message)}},async reloadFile(n){try{const s=await D.get(`/files/read?path=${encodeURIComponent(n)}`);if(s.binary)return;e(o=>({editorFiles:{...o.editorFiles,[n]:{content:s.content,originalContent:s.content,language:s.language,loadedAt:Date.now()}},editorChangedFiles:(()=>{const c={...o.editorChangedFiles};return delete c[n],c})()}))}catch{}},dismissFileChange(n){e(s=>{const o={...s.editorChangedFiles};return delete o[n],{editorChangedFiles:o}})},async fetchTreeDir(n){try{const s=await D.get(`/files/tree?path=${encodeURIComponent(n)}`);e(o=>({editorTreeCache:{...o.editorTreeCache,[n]:s.entries||[]}}))}catch(s){console.error("[file-tree] fetchTreeDir failed for",n,s.message),e(o=>({editorTreeCache:{...o.editorTreeCache,[n]:[]}}))}},async createFile(n){try{await D.post("/files/create",{path:n});const s=n.includes("/")?n.split("/").slice(0,-1).join("/"):"";return await a().fetchTreeDir(s),a().addToast("success","File created"),!0}catch(s){return a().addToast("error","Create failed",s.message),!1}},async createDir(n){try{await D.post("/files/mkdir",{path:n});const s=n.includes("/")?n.split("/").slice(0,-1).join("/"):"";return await a().fetchTreeDir(s),a().addToast("success","Folder created"),!0}catch(s){return a().addToast("error","Create failed",s.message),!1}},async deleteFile(n){try{await D.delete(`/files/delete?path=${encodeURIComponent(n)}`),a().editorOpenTabs.includes(n)&&a().closeFile(n);const s=n.includes("/")?n.split("/").slice(0,-1).join("/"):"";return await a().fetchTreeDir(s),e(o=>{const c={...o.editorTreeCache};return delete c[n],{editorTreeCache:c}}),a().addToast("success","Deleted"),!0}catch(s){return a().addToast("error","Delete failed",s.message),!1}},setWorkspaceMode(n){var s,o;if(e({workspaceMode:n}),localStorage.setItem("groove:workspaceMode",String(n)),n){const c=a().agents.filter(f=>f.teamId===a().activeTeamId),l=a().workspaceAgentId;if(!(l&&c.some(f=>f.id===l))){const f=((s=a().detailPanel)==null?void 0:s.type)==="agent"?a().detailPanel.agentId:null,x=f&&c.some(y=>y.id===f),m=c.find(y=>y.status==="running");e({workspaceAgentId:(x?f:null)||(m==null?void 0:m.id)||((o=c[0])==null?void 0:o.id)||null})}const h=a().workspaceAgentId;h&&a().selectAgent(h)}},setWorkspaceAgent(n){e({workspaceAgentId:n}),n&&a().selectAgent(n)},captureSnapshot(n,s){e(o=>{if(o.workspaceSnapshots[n])return o;const c={...o.workspaceSnapshots,[n]:s},l=Object.keys(c);return l.length>200&&delete c[l[0]],{workspaceSnapshots:c}})},async toggleReviewMode(){const n=a();if(n.workspaceReviewMode){e({workspaceReviewMode:!1,workspaceReviewFiles:[]});return}const s=n.workspaceAgentId;if(s)try{const l=((await D.get(`/agents/${s}/files-touched`)).data||[]).filter(d=>d.writes>0).map(d=>({path:d.path,status:"pending",comment:""}));e({workspaceReviewMode:!0,workspaceReviewFiles:l})}catch(o){console.error("Failed to fetch touched files for review:",o)}},approveFile(n){e(s=>({workspaceReviewFiles:s.workspaceReviewFiles.map(o=>o.path===n?{...o,status:"approved"}:o)}))},rejectFile(n){e(s=>({workspaceReviewFiles:s.workspaceReviewFiles.map(o=>o.path===n?{...o,status:"rejected"}:o)}))},commentFile(n,s){e(o=>({workspaceReviewFiles:o.workspaceReviewFiles.map(c=>c.path===n?{...c,comment:s}:c)}))},async fetchFederationStatus(){try{const n=await D.get("/federation");return e(s=>{var o;return{federation:{...s.federation,peers:n.peers||[],whitelist:n.whitelist||[],connections:n.connections||[],ambassadors:((o=n.ambassadors)==null?void 0:o.ambassadors)||n.ambassadors||[]}}}),n}catch{return null}},async addToWhitelist(n,s=31415,o){try{await D.post("/federation/whitelist",{ip:n,port:s,...o&&{name:o}}),a().addToast("success",`Added ${n} to whitelist`),a().fetchFederationStatus()}catch(c){throw a().addToast("error","Whitelist failed",c.message),c}},async removeFromWhitelist(n){try{await D.delete(`/federation/whitelist/${encodeURIComponent(n)}`),a().addToast("info",`Removed ${n}`),a().fetchFederationStatus()}catch(s){a().addToast("error","Remove failed",s.message)}},setSelectedPeer(n){e(s=>({federation:{...s.federation,selectedPeerId:n}}))},async fetchPouchLog(n){try{const s=await D.get(`/federation/pouch/log${n?`?peerId=${encodeURIComponent(n)}`:""}`);e(o=>({federation:{...o.federation,pouchLog:s||[]}}))}catch{}},async sendPouch(n,s){try{const o=await D.post("/federation/pouch/send",{peerId:n,contract:s});return a().addToast("success","Pouch sent"),o}catch(o){throw a().addToast("error","Pouch send failed",o.message),o}},async disconnectPeer(n){try{await D.delete(`/federation/peers/${encodeURIComponent(n)}`),a().addToast("info","Peer disconnected"),a().fetchFederationStatus()}catch(s){a().addToast("error","Disconnect failed",s.message)}},async setTrainingOptIn(n){try{await D.post("/training/opt-in",{enabled:n}),e({trainingOptIn:n}),n||e({trainingStats:null})}catch{a().addToast("error","Failed to update training preference")}},async fetchTrainingStatus(){try{const n=await D.get("/training/status");e({trainingOptIn:n.optedIn,trainingStats:n})}catch{}},async fetchBetaStatus(){try{const n=await D.get("/beta/status");e({networkUnlocked:!!(n!=null&&n.unlocked)})}catch{}},async activateBeta(n){const s=await D.post("/beta/activate",{code:n});if(!(s!=null&&s.unlocked))throw new Error((s==null?void 0:s.message)||"Invalid invite code");return e({networkUnlocked:!0}),s},async deactivateBeta(){try{await D.post("/beta/deactivate"),e({networkUnlocked:!1,activeView:a().activeView==="network"?"agents":a().activeView})}catch(n){throw a().addToast("error","Deactivate failed",n.message),n}},async fetchNetworkNodeStatus(){try{const n=await D.get("/network/node/status"),s={networkNode:{...a().networkNode,...n||{}}};return n&&typeof n.installed=="boolean"&&(s.networkInstalled=n.installed),e(s),n}catch{return null}},async fetchNetworkInstallStatus(){try{const n=await D.get("/network/install/status");return n&&typeof n.installed=="boolean"&&e({networkInstalled:n.installed}),n}catch{return null}},async installNetworkPackage(){e({networkInstallProgress:{installing:!0,step:"starting",message:"Starting install…",percent:0,error:null}});try{await D.post("/network/install")}catch(n){e({networkInstallProgress:{installing:!1,step:"error",message:n.message,percent:0,error:n.message}}),a().addToast("error","Install failed",n.message)}},async uninstallNetworkPackage(){try{await D.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}}),a().addToast("success","Network package uninstalled")}catch(n){throw a().addToast("error","Uninstall failed",n.message),n}},async fetchNetworkStatus(){try{const n=await D.get("/network/status"),s={networkStatus:{...a().networkStatus,...n||{}},networkStatusReachable:!0};if(n!=null&&n.compute){const o=n.compute;s.networkCompute={totalRamMb:o.totalRamMb??o.total_ram_mb??0,totalVramMb:o.totalVramMb??o.total_vram_mb??0,totalCpuCores:o.totalCpuCores??o.total_cpu_cores??0,totalBandwidthMbps:o.totalBandwidthMbps??o.total_bandwidth_mbps??0,activeNodes:o.activeNodes??o.active_nodes??0,totalNodes:o.totalNodes??o.total_nodes??0,avgLoad:o.avgLoad??o.avg_load??0}}else if(Array.isArray(n==null?void 0:n.nodes)&&n.nodes.length>0){const o=n.nodes,c=o.filter(l=>l.status==="active");s.networkCompute={totalRamMb:o.reduce((l,d)=>l+(d.ram_mb||0),0),totalVramMb:o.reduce((l,d)=>l+(d.vram_mb||0),0),totalCpuCores:o.reduce((l,d)=>l+(d.cpu_cores||0),0),totalBandwidthMbps:o.reduce((l,d)=>l+(d.bandwidth_mbps||0),0),activeNodes:c.length,totalNodes:o.length,avgLoad:c.length>0?c.reduce((l,d)=>l+(d.load||0),0)/c.length:0}}if(e(s),n){const o=a().networkNode.nodeId,c=n.nodes||[],l=o?c.find(x=>(x.node_id||x.nodeId)===o):null,d=c.filter(x=>x.status==="active"),h={t:Date.now(),globalSessions:n.activeSessions||0,mySessions:(l==null?void 0:l.active_sessions)??(l==null?void 0:l.sessions)??0,nodeCount:d.length,avgLoad:d.length>0?d.reduce((x,m)=>x+(m.load||0),0)/d.length:0,myLoad:(l==null?void 0:l.load)??0,totalVramMb:c.reduce((x,m)=>x+(m.vram_mb||0),0),totalRamMb:c.reduce((x,m)=>x+(m.ram_mb||0),0)};let f=[...a().networkSnapshots,h];f.length>100&&(f=f.slice(-100)),e({networkSnapshots:f})}return n}catch{return e({networkStatusReachable:!1}),null}},async checkNetworkUpdate(){try{const n=await D.get("/network/update/check");return n?(e({networkVersion:{installed:n.installed??null,latest:n.latest??null,updateAvailable:!!n.updateAvailable}}),n):null}catch{return null}},async updateNetworkPackage(){e({networkUpdateProgress:{updating:!0,step:"starting",message:"Starting update…",percent:0,error:null}});try{await D.post("/network/update")}catch(n){e({networkUpdateProgress:{updating:!1,step:"error",message:n.message,percent:0,error:n.message}}),a().addToast("error","Update failed",n.message)}},async startNetworkNode(){e({networkNode:{...a().networkNode,status:"connecting"}});try{const n=await D.post("/network/node/start");return e({networkNode:{...a().networkNode,active:!0,...n||{}}}),a().addToast("success","Node started","Connecting to the Groove network"),n}catch(n){throw e({networkNode:{...a().networkNode,status:"disconnected",active:!1}}),a().addToast("error","Node start failed",n.message),n}},async stopNetworkNode(){try{await D.post("/network/node/stop"),e({networkNode:{...a().networkNode,active:!1,status:"disconnected"}}),a().addToast("info","Node stopped")}catch(n){throw a().addToast("error","Node stop failed",n.message),n}},async fetchNetworkWallet(){return a().networkWallet},async fetchNetworkEarnings(){return a().networkEarnings},async fetchNetworkBenchmarks(){try{const n=await D.get("/network/benchmarks");return Array.isArray(n)&&e({networkBenchmarks:n.slice(-100)}),n}catch{return null}},async fetchNetworkTraces(){try{const n=await D.get("/network/traces");return Array.isArray(n)&&e({networkTraces:n}),n}catch{return null}},async fetchNetworkTrace(n){try{return await D.get(`/network/traces/${encodeURIComponent(n)}`)}catch{return null}},async fetchLiveTrace(n=0){try{return await D.get(`/network/traces/live?offset=${n}`)}catch{return null}},async renameFile(n,s){try{await D.post("/files/rename",{oldPath:n,newPath:s}),e(l=>{const d=l.editorOpenTabs.map(x=>x===n?s:x),h={...l.editorFiles};h[n]&&(h[s]=h[n],delete h[n]);const f=l.editorActiveFile===n?s:l.editorActiveFile;return{editorOpenTabs:d,editorFiles:h,editorActiveFile:f}});const o=n.includes("/")?n.split("/").slice(0,-1).join("/"):"",c=s.includes("/")?s.split("/").slice(0,-1).join("/"):"";return await a().fetchTreeDir(o),c!==o&&await a().fetchTreeDir(c),a().addToast("success","Renamed"),!0}catch(o){return a().addToast("error","Rename failed",o.message),!1}}}));function GX(e){g.useEffect(()=>{function a(n){for(const s of e){const o=s.meta?n.metaKey||n.ctrlKey:!0,c=s.shift?n.shiftKey:!n.shiftKey;if(n.key.toLowerCase()===s.key.toLowerCase()&&o&&c){n.preventDefault(),s.handler();return}}}return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[e])}function ju(){return!!(window.groove||navigator.userAgent.includes("Electron"))}function WX(){var e;return((e=window.groove)==null?void 0:e.platform)||"browser"}function mP(e){window.groove?window.groove.openExternal(e):window.open(e,"_blank")}async function xne(e={}){var a,n;return(n=(a=window.groove)==null?void 0:a.folders)!=null&&n.select?window.groove.folders.select(e):null}async function KX(e){var a,n;if((n=(a=window.groove)==null?void 0:a.integrations)!=null&&n.oauthStart)return window.groove.integrations.oauthStart(e);window.open(e,"_blank","noopener")}function YX(e){var a,n,s="";if(typeof e=="string"||typeof e=="number")s+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(a=0;a<o;a++)e[a]&&(n=YX(e[a]))&&(s&&(s+=" "),s+=n)}else for(n in e)e[n]&&(s&&(s+=" "),s+=n);return s}function mne(){for(var e,a,n=0,s="",o=arguments.length;n<o;n++)(e=arguments[n])&&(a=YX(e))&&(s&&(s+=" "),s+=a);return s}const gne=(e,a)=>{const n=new Array(e.length+a.length);for(let s=0;s<e.length;s++)n[s]=e[s];for(let s=0;s<a.length;s++)n[e.length+s]=a[s];return n},yne=(e,a)=>({classGroupId:e,validator:a}),JX=(e=new Map,a=null,n)=>({nextPart:e,validators:a,classGroupId:n}),SL="-",zq=[],vne="arbitrary..",kne=e=>{const a=bne(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:s}=e;return{getClassGroupId:l=>{if(l.startsWith("[")&&l.endsWith("]"))return One(l);const d=l.split(SL),h=d[0]===""&&d.length>1?1:0;return eZ(d,h,a)},getConflictingClassGroupIds:(l,d)=>{if(d){const h=s[l],f=n[l];return h?f?gne(f,h):h:f||zq}return n[l]||zq}}},eZ=(e,a,n)=>{if(e.length-a===0)return n.classGroupId;const o=e[a],c=n.nextPart.get(o);if(c){const f=eZ(e,a+1,c);if(f)return f}const l=n.validators;if(l===null)return;const d=a===0?e.join(SL):e.slice(a).join(SL),h=l.length;for(let f=0;f<h;f++){const x=l[f];if(x.validator(d))return x.classGroupId}},One=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const a=e.slice(1,-1),n=a.indexOf(":"),s=a.slice(0,n);return s?vne+s:void 0})(),bne=e=>{const{theme:a,classGroups:n}=e;return wne(n,a)},wne=(e,a)=>{const n=JX();for(const s in e){const o=e[s];vE(o,n,s,a)}return n},vE=(e,a,n,s)=>{const o=e.length;for(let c=0;c<o;c++){const l=e[c];Cne(l,a,n,s)}},Cne=(e,a,n,s)=>{if(typeof e=="string"){jne(e,a,n);return}if(typeof e=="function"){Mne(e,a,n,s);return}Sne(e,a,n,s)},jne=(e,a,n)=>{const s=e===""?a:tZ(a,e);s.classGroupId=n},Mne=(e,a,n,s)=>{if(Qne(e)){vE(e(s),a,n,s);return}a.validators===null&&(a.validators=[]),a.validators.push(yne(n,e))},Sne=(e,a,n,s)=>{const o=Object.entries(e),c=o.length;for(let l=0;l<c;l++){const[d,h]=o[l];vE(h,tZ(a,d),n,s)}},tZ=(e,a)=>{let n=e;const s=a.split(SL),o=s.length;for(let c=0;c<o;c++){const l=s[c];let d=n.nextPart.get(l);d||(d=JX(),n.nextPart.set(l,d)),n=d}return n},Qne=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,Nne=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,n=Object.create(null),s=Object.create(null);const o=(c,l)=>{n[c]=l,a++,a>e&&(a=0,s=n,n=Object.create(null))};return{get(c){let l=n[c];if(l!==void 0)return l;if((l=s[c])!==void 0)return o(c,l),l},set(c,l){c in n?n[c]=l:o(c,l)}}},gP="!",Fq=":",Bne=[],Rq=(e,a,n,s,o)=>({modifiers:e,hasImportantModifier:a,baseClassName:n,maybePostfixModifierPosition:s,isExternal:o}),_ne=e=>{const{prefix:a,experimentalParseClassName:n}=e;let s=o=>{const c=[];let l=0,d=0,h=0,f;const x=o.length;for(let w=0;w<x;w++){const j=o[w];if(l===0&&d===0){if(j===Fq){c.push(o.slice(h,w)),h=w+1;continue}if(j==="/"){f=w;continue}}j==="["?l++:j==="]"?l--:j==="("?d++:j===")"&&d--}const m=c.length===0?o:o.slice(h);let y=m,v=!1;m.endsWith(gP)?(y=m.slice(0,-1),v=!0):m.startsWith(gP)&&(y=m.slice(1),v=!0);const O=f&&f>h?f-h:void 0;return Rq(c,v,y,O)};if(a){const o=a+Fq,c=s;s=l=>l.startsWith(o)?c(l.slice(o.length)):Rq(Bne,!1,l,void 0,!0)}if(n){const o=s;s=c=>n({className:c,parseClassName:o})}return s},Lne=e=>{const a=new Map;return e.orderSensitiveModifiers.forEach((n,s)=>{a.set(n,1e6+s)}),n=>{const s=[];let o=[];for(let c=0;c<n.length;c++){const l=n[c],d=l[0]==="[",h=a.has(l);d||h?(o.length>0&&(o.sort(),s.push(...o),o=[]),s.push(l)):o.push(l)}return o.length>0&&(o.sort(),s.push(...o)),s}},Tne=e=>({cache:Nne(e.cacheSize),parseClassName:_ne(e),sortModifiers:Lne(e),...kne(e)}),$ne=/\s+/,Ine=(e,a)=>{const{parseClassName:n,getClassGroupId:s,getConflictingClassGroupIds:o,sortModifiers:c}=a,l=[],d=e.trim().split($ne);let h="";for(let f=d.length-1;f>=0;f-=1){const x=d[f],{isExternal:m,modifiers:y,hasImportantModifier:v,baseClassName:O,maybePostfixModifierPosition:w}=n(x);if(m){h=x+(h.length>0?" "+h:h);continue}let j=!!w,C=s(j?O.substring(0,w):O);if(!C){if(!j){h=x+(h.length>0?" "+h:h);continue}if(C=s(O),!C){h=x+(h.length>0?" "+h:h);continue}j=!1}const S=y.length===0?"":y.length===1?y[0]:c(y).join(":"),B=v?S+gP:S,Q=B+C;if(l.indexOf(Q)>-1)continue;l.push(Q);const T=o(C,j);for(let N=0;N<T.length;++N){const M=T[N];l.push(B+M)}h=x+(h.length>0?" "+h:h)}return h},Une=(...e)=>{let a=0,n,s,o="";for(;a<e.length;)(n=e[a++])&&(s=aZ(n))&&(o&&(o+=" "),o+=s);return o},aZ=e=>{if(typeof e=="string")return e;let a,n="";for(let s=0;s<e.length;s++)e[s]&&(a=aZ(e[s]))&&(n&&(n+=" "),n+=a);return n},Pne=(e,...a)=>{let n,s,o,c;const l=h=>{const f=a.reduce((x,m)=>m(x),e());return n=Tne(f),s=n.cache.get,o=n.cache.set,c=d,d(h)},d=h=>{const f=s(h);if(f)return f;const x=Ine(h,n);return o(h,x),x};return c=l,(...h)=>c(Une(...h))},Ene=[],na=e=>{const a=n=>n[e]||Ene;return a.isThemeGetter=!0,a},nZ=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,sZ=/^\((?:(\w[\w-]*):)?(.+)\)$/i,zne=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Fne=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Rne=/\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$/,Hne=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,qne=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Dne=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,mo=e=>zne.test(e),Xe=e=>!!e&&!Number.isNaN(Number(e)),go=e=>!!e&&Number.isInteger(Number(e)),rU=e=>e.endsWith("%")&&Xe(e.slice(0,-1)),gr=e=>Fne.test(e),rZ=()=>!0,Vne=e=>Rne.test(e)&&!Hne.test(e),kE=()=>!1,Xne=e=>qne.test(e),Zne=e=>Dne.test(e),Gne=e=>!Qe(e)&&!Ne(e),Wne=e=>si(e,cZ,kE),Qe=e=>nZ.test(e),ji=e=>si(e,lZ,Vne),Hq=e=>si(e,sse,Xe),Kne=e=>si(e,dZ,rZ),Yne=e=>si(e,AZ,kE),qq=e=>si(e,oZ,kE),Jne=e=>si(e,iZ,Zne),Cp=e=>si(e,uZ,Xne),Ne=e=>sZ.test(e),Uh=e=>Dd(e,lZ),ese=e=>Dd(e,AZ),Dq=e=>Dd(e,oZ),tse=e=>Dd(e,cZ),ase=e=>Dd(e,iZ),jp=e=>Dd(e,uZ,!0),nse=e=>Dd(e,dZ,!0),si=(e,a,n)=>{const s=nZ.exec(e);return s?s[1]?a(s[1]):n(s[2]):!1},Dd=(e,a,n=!1)=>{const s=sZ.exec(e);return s?s[1]?a(s[1]):n:!1},oZ=e=>e==="position"||e==="percentage",iZ=e=>e==="image"||e==="url",cZ=e=>e==="length"||e==="size"||e==="bg-size",lZ=e=>e==="length",sse=e=>e==="number",AZ=e=>e==="family-name",dZ=e=>e==="number"||e==="weight",uZ=e=>e==="shadow",rse=()=>{const e=na("color"),a=na("font"),n=na("text"),s=na("font-weight"),o=na("tracking"),c=na("leading"),l=na("breakpoint"),d=na("container"),h=na("spacing"),f=na("radius"),x=na("shadow"),m=na("inset-shadow"),y=na("text-shadow"),v=na("drop-shadow"),O=na("blur"),w=na("perspective"),j=na("aspect"),C=na("ease"),S=na("animate"),B=()=>["auto","avoid","all","avoid-page","page","left","right","column"],Q=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],T=()=>[...Q(),Ne,Qe],N=()=>["auto","hidden","clip","visible","scroll"],M=()=>["auto","contain","none"],I=()=>[Ne,Qe,h],F=()=>[mo,"full","auto",...I()],U=()=>[go,"none","subgrid",Ne,Qe],V=()=>["auto",{span:["full",go,Ne,Qe]},go,Ne,Qe],Z=()=>[go,"auto",Ne,Qe],te=()=>["auto","min","max","fr",Ne,Qe],H=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],P=()=>["start","end","center","stretch","center-safe","end-safe"],L=()=>["auto",...I()],z=()=>[mo,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...I()],q=()=>[mo,"screen","full","dvw","lvw","svw","min","max","fit",...I()],X=()=>[mo,"screen","full","lh","dvh","lvh","svh","min","max","fit",...I()],R=()=>[e,Ne,Qe],pe=()=>[...Q(),Dq,qq,{position:[Ne,Qe]}],Y=()=>["no-repeat",{repeat:["","x","y","space","round"]}],W=()=>["auto","cover","contain",tse,Wne,{size:[Ne,Qe]}],de=()=>[rU,Uh,ji],xe=()=>["","none","full",f,Ne,Qe],ie=()=>["",Xe,Uh,ji],J=()=>["solid","dashed","dotted","double"],ke=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ye=()=>[Xe,rU,Dq,qq],Ie=()=>["","none",O,Ne,Qe],Te=()=>["none",Xe,Ne,Qe],Pe=()=>["none",Xe,Ne,Qe],lt=()=>[Xe,Ne,Qe],We=()=>[mo,"full",...I()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[gr],breakpoint:[gr],color:[rZ],container:[gr],"drop-shadow":[gr],ease:["in","out","in-out"],font:[Gne],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[gr],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[gr],shadow:[gr],spacing:["px",Xe],text:[gr],"text-shadow":[gr],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",mo,Qe,Ne,j]}],container:["container"],columns:[{columns:[Xe,Qe,Ne,d]}],"break-after":[{"break-after":B()}],"break-before":[{"break-before":B()}],"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:N()}],"overflow-x":[{"overflow-x":N()}],"overflow-y":[{"overflow-y":N()}],overscroll:[{overscroll:M()}],"overscroll-x":[{"overscroll-x":M()}],"overscroll-y":[{"overscroll-y":M()}],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:[go,"auto",Ne,Qe]}],basis:[{basis:[mo,"full","auto",d,...I()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Xe,mo,"auto","initial","none",Qe]}],grow:[{grow:["",Xe,Ne,Qe]}],shrink:[{shrink:["",Xe,Ne,Qe]}],order:[{order:[go,"first","last","none",Ne,Qe]}],"grid-cols":[{"grid-cols":U()}],"col-start-end":[{col:V()}],"col-start":[{"col-start":Z()}],"col-end":[{"col-end":Z()}],"grid-rows":[{"grid-rows":U()}],"row-start-end":[{row:V()}],"row-start":[{"row-start":Z()}],"row-end":[{"row-end":Z()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":te()}],"auto-rows":[{"auto-rows":te()}],gap:[{gap:I()}],"gap-x":[{"gap-x":I()}],"gap-y":[{"gap-y":I()}],"justify-content":[{justify:[...H(),"normal"]}],"justify-items":[{"justify-items":[...P(),"normal"]}],"justify-self":[{"justify-self":["auto",...P()]}],"align-content":[{content:["normal",...H()]}],"align-items":[{items:[...P(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...P(),{baseline:["","last"]}]}],"place-content":[{"place-content":H()}],"place-items":[{"place-items":[...P(),"baseline"]}],"place-self":[{"place-self":["auto",...P()]}],p:[{p:I()}],px:[{px:I()}],py:[{py:I()}],ps:[{ps:I()}],pe:[{pe:I()}],pbs:[{pbs:I()}],pbe:[{pbe:I()}],pt:[{pt:I()}],pr:[{pr:I()}],pb:[{pb:I()}],pl:[{pl:I()}],m:[{m:L()}],mx:[{mx:L()}],my:[{my:L()}],ms:[{ms:L()}],me:[{me:L()}],mbs:[{mbs:L()}],mbe:[{mbe:L()}],mt:[{mt:L()}],mr:[{mr:L()}],mb:[{mb:L()}],ml:[{ml:L()}],"space-x":[{"space-x":I()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":I()}],"space-y-reverse":["space-y-reverse"],size:[{size:z()}],"inline-size":[{inline:["auto",...q()]}],"min-inline-size":[{"min-inline":["auto",...q()]}],"max-inline-size":[{"max-inline":["none",...q()]}],"block-size":[{block:["auto",...X()]}],"min-block-size":[{"min-block":["auto",...X()]}],"max-block-size":[{"max-block":["none",...X()]}],w:[{w:[d,"screen",...z()]}],"min-w":[{"min-w":[d,"screen","none",...z()]}],"max-w":[{"max-w":[d,"screen","none","prose",{screen:[l]},...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",n,Uh,ji]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[s,nse,Kne]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",rU,Qe]}],"font-family":[{font:[ese,Yne,a]}],"font-features":[{"font-features":[Qe]}],"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:[o,Ne,Qe]}],"line-clamp":[{"line-clamp":[Xe,"none",Ne,Hq]}],leading:[{leading:[c,...I()]}],"list-image":[{"list-image":["none",Ne,Qe]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Ne,Qe]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:R()}],"text-color":[{text:R()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...J(),"wavy"]}],"text-decoration-thickness":[{decoration:[Xe,"from-font","auto",Ne,ji]}],"text-decoration-color":[{decoration:R()}],"underline-offset":[{"underline-offset":[Xe,"auto",Ne,Qe]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:I()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Ne,Qe]}],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",Ne,Qe]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:pe()}],"bg-repeat":[{bg:Y()}],"bg-size":[{bg:W()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},go,Ne,Qe],radial:["",Ne,Qe],conic:[go,Ne,Qe]},ase,Jne]}],"bg-color":[{bg:R()}],"gradient-from-pos":[{from:de()}],"gradient-via-pos":[{via:de()}],"gradient-to-pos":[{to:de()}],"gradient-from":[{from:R()}],"gradient-via":[{via:R()}],"gradient-to":[{to:R()}],rounded:[{rounded:xe()}],"rounded-s":[{"rounded-s":xe()}],"rounded-e":[{"rounded-e":xe()}],"rounded-t":[{"rounded-t":xe()}],"rounded-r":[{"rounded-r":xe()}],"rounded-b":[{"rounded-b":xe()}],"rounded-l":[{"rounded-l":xe()}],"rounded-ss":[{"rounded-ss":xe()}],"rounded-se":[{"rounded-se":xe()}],"rounded-ee":[{"rounded-ee":xe()}],"rounded-es":[{"rounded-es":xe()}],"rounded-tl":[{"rounded-tl":xe()}],"rounded-tr":[{"rounded-tr":xe()}],"rounded-br":[{"rounded-br":xe()}],"rounded-bl":[{"rounded-bl":xe()}],"border-w":[{border:ie()}],"border-w-x":[{"border-x":ie()}],"border-w-y":[{"border-y":ie()}],"border-w-s":[{"border-s":ie()}],"border-w-e":[{"border-e":ie()}],"border-w-bs":[{"border-bs":ie()}],"border-w-be":[{"border-be":ie()}],"border-w-t":[{"border-t":ie()}],"border-w-r":[{"border-r":ie()}],"border-w-b":[{"border-b":ie()}],"border-w-l":[{"border-l":ie()}],"divide-x":[{"divide-x":ie()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ie()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...J(),"hidden","none"]}],"divide-style":[{divide:[...J(),"hidden","none"]}],"border-color":[{border:R()}],"border-color-x":[{"border-x":R()}],"border-color-y":[{"border-y":R()}],"border-color-s":[{"border-s":R()}],"border-color-e":[{"border-e":R()}],"border-color-bs":[{"border-bs":R()}],"border-color-be":[{"border-be":R()}],"border-color-t":[{"border-t":R()}],"border-color-r":[{"border-r":R()}],"border-color-b":[{"border-b":R()}],"border-color-l":[{"border-l":R()}],"divide-color":[{divide:R()}],"outline-style":[{outline:[...J(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Xe,Ne,Qe]}],"outline-w":[{outline:["",Xe,Uh,ji]}],"outline-color":[{outline:R()}],shadow:[{shadow:["","none",x,jp,Cp]}],"shadow-color":[{shadow:R()}],"inset-shadow":[{"inset-shadow":["none",m,jp,Cp]}],"inset-shadow-color":[{"inset-shadow":R()}],"ring-w":[{ring:ie()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:R()}],"ring-offset-w":[{"ring-offset":[Xe,ji]}],"ring-offset-color":[{"ring-offset":R()}],"inset-ring-w":[{"inset-ring":ie()}],"inset-ring-color":[{"inset-ring":R()}],"text-shadow":[{"text-shadow":["none",y,jp,Cp]}],"text-shadow-color":[{"text-shadow":R()}],opacity:[{opacity:[Xe,Ne,Qe]}],"mix-blend":[{"mix-blend":[...ke(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ke()}],"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":[Xe]}],"mask-image-linear-from-pos":[{"mask-linear-from":ye()}],"mask-image-linear-to-pos":[{"mask-linear-to":ye()}],"mask-image-linear-from-color":[{"mask-linear-from":R()}],"mask-image-linear-to-color":[{"mask-linear-to":R()}],"mask-image-t-from-pos":[{"mask-t-from":ye()}],"mask-image-t-to-pos":[{"mask-t-to":ye()}],"mask-image-t-from-color":[{"mask-t-from":R()}],"mask-image-t-to-color":[{"mask-t-to":R()}],"mask-image-r-from-pos":[{"mask-r-from":ye()}],"mask-image-r-to-pos":[{"mask-r-to":ye()}],"mask-image-r-from-color":[{"mask-r-from":R()}],"mask-image-r-to-color":[{"mask-r-to":R()}],"mask-image-b-from-pos":[{"mask-b-from":ye()}],"mask-image-b-to-pos":[{"mask-b-to":ye()}],"mask-image-b-from-color":[{"mask-b-from":R()}],"mask-image-b-to-color":[{"mask-b-to":R()}],"mask-image-l-from-pos":[{"mask-l-from":ye()}],"mask-image-l-to-pos":[{"mask-l-to":ye()}],"mask-image-l-from-color":[{"mask-l-from":R()}],"mask-image-l-to-color":[{"mask-l-to":R()}],"mask-image-x-from-pos":[{"mask-x-from":ye()}],"mask-image-x-to-pos":[{"mask-x-to":ye()}],"mask-image-x-from-color":[{"mask-x-from":R()}],"mask-image-x-to-color":[{"mask-x-to":R()}],"mask-image-y-from-pos":[{"mask-y-from":ye()}],"mask-image-y-to-pos":[{"mask-y-to":ye()}],"mask-image-y-from-color":[{"mask-y-from":R()}],"mask-image-y-to-color":[{"mask-y-to":R()}],"mask-image-radial":[{"mask-radial":[Ne,Qe]}],"mask-image-radial-from-pos":[{"mask-radial-from":ye()}],"mask-image-radial-to-pos":[{"mask-radial-to":ye()}],"mask-image-radial-from-color":[{"mask-radial-from":R()}],"mask-image-radial-to-color":[{"mask-radial-to":R()}],"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":Q()}],"mask-image-conic-pos":[{"mask-conic":[Xe]}],"mask-image-conic-from-pos":[{"mask-conic-from":ye()}],"mask-image-conic-to-pos":[{"mask-conic-to":ye()}],"mask-image-conic-from-color":[{"mask-conic-from":R()}],"mask-image-conic-to-color":[{"mask-conic-to":R()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:pe()}],"mask-repeat":[{mask:Y()}],"mask-size":[{mask:W()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Ne,Qe]}],filter:[{filter:["","none",Ne,Qe]}],blur:[{blur:Ie()}],brightness:[{brightness:[Xe,Ne,Qe]}],contrast:[{contrast:[Xe,Ne,Qe]}],"drop-shadow":[{"drop-shadow":["","none",v,jp,Cp]}],"drop-shadow-color":[{"drop-shadow":R()}],grayscale:[{grayscale:["",Xe,Ne,Qe]}],"hue-rotate":[{"hue-rotate":[Xe,Ne,Qe]}],invert:[{invert:["",Xe,Ne,Qe]}],saturate:[{saturate:[Xe,Ne,Qe]}],sepia:[{sepia:["",Xe,Ne,Qe]}],"backdrop-filter":[{"backdrop-filter":["","none",Ne,Qe]}],"backdrop-blur":[{"backdrop-blur":Ie()}],"backdrop-brightness":[{"backdrop-brightness":[Xe,Ne,Qe]}],"backdrop-contrast":[{"backdrop-contrast":[Xe,Ne,Qe]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Xe,Ne,Qe]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Xe,Ne,Qe]}],"backdrop-invert":[{"backdrop-invert":["",Xe,Ne,Qe]}],"backdrop-opacity":[{"backdrop-opacity":[Xe,Ne,Qe]}],"backdrop-saturate":[{"backdrop-saturate":[Xe,Ne,Qe]}],"backdrop-sepia":[{"backdrop-sepia":["",Xe,Ne,Qe]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":I()}],"border-spacing-x":[{"border-spacing-x":I()}],"border-spacing-y":[{"border-spacing-y":I()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Ne,Qe]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Xe,"initial",Ne,Qe]}],ease:[{ease:["linear","initial",C,Ne,Qe]}],delay:[{delay:[Xe,Ne,Qe]}],animate:[{animate:["none",S,Ne,Qe]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,Ne,Qe]}],"perspective-origin":[{"perspective-origin":T()}],rotate:[{rotate:Te()}],"rotate-x":[{"rotate-x":Te()}],"rotate-y":[{"rotate-y":Te()}],"rotate-z":[{"rotate-z":Te()}],scale:[{scale:Pe()}],"scale-x":[{"scale-x":Pe()}],"scale-y":[{"scale-y":Pe()}],"scale-z":[{"scale-z":Pe()}],"scale-3d":["scale-3d"],skew:[{skew:lt()}],"skew-x":[{"skew-x":lt()}],"skew-y":[{"skew-y":lt()}],transform:[{transform:[Ne,Qe,"","none","gpu","cpu"]}],"transform-origin":[{origin:T()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:We()}],"translate-x":[{"translate-x":We()}],"translate-y":[{"translate-y":We()}],"translate-z":[{"translate-z":We()}],"translate-none":["translate-none"],accent:[{accent:R()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:R()}],"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",Ne,Qe]}],"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":I()}],"scroll-mx":[{"scroll-mx":I()}],"scroll-my":[{"scroll-my":I()}],"scroll-ms":[{"scroll-ms":I()}],"scroll-me":[{"scroll-me":I()}],"scroll-mbs":[{"scroll-mbs":I()}],"scroll-mbe":[{"scroll-mbe":I()}],"scroll-mt":[{"scroll-mt":I()}],"scroll-mr":[{"scroll-mr":I()}],"scroll-mb":[{"scroll-mb":I()}],"scroll-ml":[{"scroll-ml":I()}],"scroll-p":[{"scroll-p":I()}],"scroll-px":[{"scroll-px":I()}],"scroll-py":[{"scroll-py":I()}],"scroll-ps":[{"scroll-ps":I()}],"scroll-pe":[{"scroll-pe":I()}],"scroll-pbs":[{"scroll-pbs":I()}],"scroll-pbe":[{"scroll-pbe":I()}],"scroll-pt":[{"scroll-pt":I()}],"scroll-pr":[{"scroll-pr":I()}],"scroll-pb":[{"scroll-pb":I()}],"scroll-pl":[{"scroll-pl":I()}],"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",Ne,Qe]}],fill:[{fill:["none",...R()]}],"stroke-w":[{stroke:[Xe,Uh,ji,Hq]}],stroke:[{stroke:["none",...R()]}],"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"]}},ose=Pne(rse);function G(...e){return ose(mne(e))}function Ce(e,a,{checkForDefaultPrevented:n=!0}={}){return function(o){if(e==null||e(o),n===!1||!o.defaultPrevented)return a==null?void 0:a(o)}}function Vq(e,a){if(typeof e=="function")return e(a);e!=null&&(e.current=a)}function OE(...e){return a=>{let n=!1;const s=e.map(o=>{const c=Vq(o,a);return!n&&typeof c=="function"&&(n=!0),c});if(n)return()=>{for(let o=0;o<s.length;o++){const c=s[o];typeof c=="function"?c():Vq(e[o],null)}}}}function tt(...e){return g.useCallback(OE(...e),e)}function ise(e,a){const n=g.createContext(a),s=c=>{const{children:l,...d}=c,h=g.useMemo(()=>d,Object.values(d));return t.jsx(n.Provider,{value:h,children:l})};s.displayName=e+"Provider";function o(c){const l=g.useContext(n);if(l)return l;if(a!==void 0)return a;throw new Error(`\`${c}\` must be used within \`${e}\``)}return[s,o]}function Ds(e,a=[]){let n=[];function s(c,l){const d=g.createContext(l),h=n.length;n=[...n,l];const f=m=>{var C;const{scope:y,children:v,...O}=m,w=((C=y==null?void 0:y[e])==null?void 0:C[h])||d,j=g.useMemo(()=>O,Object.values(O));return t.jsx(w.Provider,{value:j,children:v})};f.displayName=c+"Provider";function x(m,y){var w;const v=((w=y==null?void 0:y[e])==null?void 0:w[h])||d,O=g.useContext(v);if(O)return O;if(l!==void 0)return l;throw new Error(`\`${m}\` must be used within \`${c}\``)}return[f,x]}const o=()=>{const c=n.map(l=>g.createContext(l));return function(d){const h=(d==null?void 0:d[e])||c;return g.useMemo(()=>({[`__scope${e}`]:{...d,[e]:h}}),[d,h])}};return o.scopeName=e,[s,cse(o,...a)]}function cse(...e){const a=e[0];if(e.length===1)return a;const n=()=>{const s=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(c){const l=s.reduce((d,{useScope:h,scopeName:f})=>{const m=h(c)[`__scope${f}`];return{...d,...m}},{});return g.useMemo(()=>({[`__scope${a.scopeName}`]:l}),[l])}};return n.scopeName=a.scopeName,n}function Mu(e){const a=lse(e),n=g.forwardRef((s,o)=>{const{children:c,...l}=s,d=g.Children.toArray(c),h=d.find(dse);if(h){const f=h.props.children,x=d.map(m=>m===h?g.Children.count(f)>1?g.Children.only(null):g.isValidElement(f)?f.props.children:null:m);return t.jsx(a,{...l,ref:o,children:g.isValidElement(f)?g.cloneElement(f,void 0,x):null})}return t.jsx(a,{...l,ref:o,children:c})});return n.displayName=`${e}.Slot`,n}function lse(e){const a=g.forwardRef((n,s)=>{const{children:o,...c}=n;if(g.isValidElement(o)){const l=hse(o),d=use(c,o.props);return o.type!==g.Fragment&&(d.ref=s?OE(s,l):l),g.cloneElement(o,d)}return g.Children.count(o)>1?g.Children.only(null):null});return a.displayName=`${e}.SlotClone`,a}var hZ=Symbol("radix.slottable");function Ase(e){const a=({children:n})=>t.jsx(t.Fragment,{children:n});return a.displayName=`${e}.Slottable`,a.__radixId=hZ,a}function dse(e){return g.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===hZ}function use(e,a){const n={...a};for(const s in a){const o=e[s],c=a[s];/^on[A-Z]/.test(s)?o&&c?n[s]=(...d)=>{const h=c(...d);return o(...d),h}:o&&(n[s]=o):s==="style"?n[s]={...o,...c}:s==="className"&&(n[s]=[o,c].filter(Boolean).join(" "))}return{...e,...n}}function hse(e){var s,o;let a=(s=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:s.get,n=a&&"isReactWarning"in a&&a.isReactWarning;return n?e.ref:(a=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=a&&"isReactWarning"in a&&a.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var pse=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Re=pse.reduce((e,a)=>{const n=Mu(`Primitive.${a}`),s=g.forwardRef((o,c)=>{const{asChild:l,...d}=o,h=l?n:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),t.jsx(h,{...d,ref:c})});return s.displayName=`Primitive.${a}`,{...e,[a]:s}},{});function pZ(e,a){e&&iT.flushSync(()=>e.dispatchEvent(a))}function da(e){const a=g.useRef(e);return g.useEffect(()=>{a.current=e}),g.useMemo(()=>(...n)=>{var s;return(s=a.current)==null?void 0:s.call(a,...n)},[])}function fse(e,a=globalThis==null?void 0:globalThis.document){const n=da(e);g.useEffect(()=>{const s=o=>{o.key==="Escape"&&n(o)};return a.addEventListener("keydown",s,{capture:!0}),()=>a.removeEventListener("keydown",s,{capture:!0})},[n,a])}var xse="DismissableLayer",yP="dismissableLayer.update",mse="dismissableLayer.pointerDownOutside",gse="dismissableLayer.focusOutside",Xq,fZ=g.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),a2=g.forwardRef((e,a)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:s,onPointerDownOutside:o,onFocusOutside:c,onInteractOutside:l,onDismiss:d,...h}=e,f=g.useContext(fZ),[x,m]=g.useState(null),y=(x==null?void 0:x.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,v]=g.useState({}),O=tt(a,M=>m(M)),w=Array.from(f.layers),[j]=[...f.layersWithOutsidePointerEventsDisabled].slice(-1),C=w.indexOf(j),S=x?w.indexOf(x):-1,B=f.layersWithOutsidePointerEventsDisabled.size>0,Q=S>=C,T=kse(M=>{const I=M.target,F=[...f.branches].some(U=>U.contains(I));!Q||F||(o==null||o(M),l==null||l(M),M.defaultPrevented||d==null||d())},y),N=Ose(M=>{const I=M.target;[...f.branches].some(U=>U.contains(I))||(c==null||c(M),l==null||l(M),M.defaultPrevented||d==null||d())},y);return fse(M=>{S===f.layers.size-1&&(s==null||s(M),!M.defaultPrevented&&d&&(M.preventDefault(),d()))},y),g.useEffect(()=>{if(x)return n&&(f.layersWithOutsidePointerEventsDisabled.size===0&&(Xq=y.body.style.pointerEvents,y.body.style.pointerEvents="none"),f.layersWithOutsidePointerEventsDisabled.add(x)),f.layers.add(x),Zq(),()=>{n&&f.layersWithOutsidePointerEventsDisabled.size===1&&(y.body.style.pointerEvents=Xq)}},[x,y,n,f]),g.useEffect(()=>()=>{x&&(f.layers.delete(x),f.layersWithOutsidePointerEventsDisabled.delete(x),Zq())},[x,f]),g.useEffect(()=>{const M=()=>v({});return document.addEventListener(yP,M),()=>document.removeEventListener(yP,M)},[]),t.jsx(Re.div,{...h,ref:O,style:{pointerEvents:B?Q?"auto":"none":void 0,...e.style},onFocusCapture:Ce(e.onFocusCapture,N.onFocusCapture),onBlurCapture:Ce(e.onBlurCapture,N.onBlurCapture),onPointerDownCapture:Ce(e.onPointerDownCapture,T.onPointerDownCapture)})});a2.displayName=xse;var yse="DismissableLayerBranch",vse=g.forwardRef((e,a)=>{const n=g.useContext(fZ),s=g.useRef(null),o=tt(a,s);return g.useEffect(()=>{const c=s.current;if(c)return n.branches.add(c),()=>{n.branches.delete(c)}},[n.branches]),t.jsx(Re.div,{...e,ref:o})});vse.displayName=yse;function kse(e,a=globalThis==null?void 0:globalThis.document){const n=da(e),s=g.useRef(!1),o=g.useRef(()=>{});return g.useEffect(()=>{const c=d=>{if(d.target&&!s.current){let h=function(){xZ(mse,n,f,{discrete:!0})};const f={originalEvent:d};d.pointerType==="touch"?(a.removeEventListener("click",o.current),o.current=h,a.addEventListener("click",o.current,{once:!0})):h()}else a.removeEventListener("click",o.current);s.current=!1},l=window.setTimeout(()=>{a.addEventListener("pointerdown",c)},0);return()=>{window.clearTimeout(l),a.removeEventListener("pointerdown",c),a.removeEventListener("click",o.current)}},[a,n]),{onPointerDownCapture:()=>s.current=!0}}function Ose(e,a=globalThis==null?void 0:globalThis.document){const n=da(e),s=g.useRef(!1);return g.useEffect(()=>{const o=c=>{c.target&&!s.current&&xZ(gse,n,{originalEvent:c},{discrete:!1})};return a.addEventListener("focusin",o),()=>a.removeEventListener("focusin",o)},[a,n]),{onFocusCapture:()=>s.current=!0,onBlurCapture:()=>s.current=!1}}function Zq(){const e=new CustomEvent(yP);document.dispatchEvent(e)}function xZ(e,a,n,{discrete:s}){const o=n.originalEvent.target,c=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});a&&o.addEventListener(e,a,{once:!0}),s?pZ(o,c):o.dispatchEvent(c)}var wa=globalThis!=null&&globalThis.document?g.useLayoutEffect:()=>{},bse=FX[" useId ".trim().toString()]||(()=>{}),wse=0;function Br(e){const[a,n]=g.useState(bse());return wa(()=>{n(s=>s??String(wse++))},[e]),a?`radix-${a}`:""}const Cse=["top","right","bottom","left"],ei=Math.min,hn=Math.max,QL=Math.round,Mp=Math.floor,Es=e=>({x:e,y:e}),jse={left:"right",right:"left",bottom:"top",top:"bottom"};function vP(e,a,n){return hn(e,ei(a,n))}function Fr(e,a){return typeof e=="function"?e(a):e}function Rr(e){return e.split("-")[0]}function Pu(e){return e.split("-")[1]}function bE(e){return e==="x"?"y":"x"}function wE(e){return e==="y"?"height":"width"}function Ps(e){const a=e[0];return a==="t"||a==="b"?"y":"x"}function CE(e){return bE(Ps(e))}function Mse(e,a,n){n===void 0&&(n=!1);const s=Pu(e),o=CE(e),c=wE(o);let l=o==="x"?s===(n?"end":"start")?"right":"left":s==="start"?"bottom":"top";return a.reference[c]>a.floating[c]&&(l=NL(l)),[l,NL(l)]}function Sse(e){const a=NL(e);return[kP(e),a,kP(a)]}function kP(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const Gq=["left","right"],Wq=["right","left"],Qse=["top","bottom"],Nse=["bottom","top"];function Bse(e,a,n){switch(e){case"top":case"bottom":return n?a?Wq:Gq:a?Gq:Wq;case"left":case"right":return a?Qse:Nse;default:return[]}}function _se(e,a,n,s){const o=Pu(e);let c=Bse(Rr(e),n==="start",s);return o&&(c=c.map(l=>l+"-"+o),a&&(c=c.concat(c.map(kP)))),c}function NL(e){const a=Rr(e);return jse[a]+e.slice(a.length)}function Lse(e){return{top:0,right:0,bottom:0,left:0,...e}}function mZ(e){return typeof e!="number"?Lse(e):{top:e,right:e,bottom:e,left:e}}function BL(e){const{x:a,y:n,width:s,height:o}=e;return{width:s,height:o,top:n,left:a,right:a+s,bottom:n+o,x:a,y:n}}function Kq(e,a,n){let{reference:s,floating:o}=e;const c=Ps(a),l=CE(a),d=wE(l),h=Rr(a),f=c==="y",x=s.x+s.width/2-o.width/2,m=s.y+s.height/2-o.height/2,y=s[d]/2-o[d]/2;let v;switch(h){case"top":v={x,y:s.y-o.height};break;case"bottom":v={x,y:s.y+s.height};break;case"right":v={x:s.x+s.width,y:m};break;case"left":v={x:s.x-o.width,y:m};break;default:v={x:s.x,y:s.y}}switch(Pu(a)){case"start":v[l]-=y*(n&&f?-1:1);break;case"end":v[l]+=y*(n&&f?-1:1);break}return v}async function Tse(e,a){var n;a===void 0&&(a={});const{x:s,y:o,platform:c,rects:l,elements:d,strategy:h}=e,{boundary:f="clippingAncestors",rootBoundary:x="viewport",elementContext:m="floating",altBoundary:y=!1,padding:v=0}=Fr(a,e),O=mZ(v),j=d[y?m==="floating"?"reference":"floating":m],C=BL(await c.getClippingRect({element:(n=await(c.isElement==null?void 0:c.isElement(j)))==null||n?j:j.contextElement||await(c.getDocumentElement==null?void 0:c.getDocumentElement(d.floating)),boundary:f,rootBoundary:x,strategy:h})),S=m==="floating"?{x:s,y:o,width:l.floating.width,height:l.floating.height}:l.reference,B=await(c.getOffsetParent==null?void 0:c.getOffsetParent(d.floating)),Q=await(c.isElement==null?void 0:c.isElement(B))?await(c.getScale==null?void 0:c.getScale(B))||{x:1,y:1}:{x:1,y:1},T=BL(c.convertOffsetParentRelativeRectToViewportRelativeRect?await c.convertOffsetParentRelativeRectToViewportRelativeRect({elements:d,rect:S,offsetParent:B,strategy:h}):S);return{top:(C.top-T.top+O.top)/Q.y,bottom:(T.bottom-C.bottom+O.bottom)/Q.y,left:(C.left-T.left+O.left)/Q.x,right:(T.right-C.right+O.right)/Q.x}}const $se=50,Ise=async(e,a,n)=>{const{placement:s="bottom",strategy:o="absolute",middleware:c=[],platform:l}=n,d=l.detectOverflow?l:{...l,detectOverflow:Tse},h=await(l.isRTL==null?void 0:l.isRTL(a));let f=await l.getElementRects({reference:e,floating:a,strategy:o}),{x,y:m}=Kq(f,s,h),y=s,v=0;const O={};for(let w=0;w<c.length;w++){const j=c[w];if(!j)continue;const{name:C,fn:S}=j,{x:B,y:Q,data:T,reset:N}=await S({x,y:m,initialPlacement:s,placement:y,strategy:o,middlewareData:O,rects:f,platform:d,elements:{reference:e,floating:a}});x=B??x,m=Q??m,O[C]={...O[C],...T},N&&v<$se&&(v++,typeof N=="object"&&(N.placement&&(y=N.placement),N.rects&&(f=N.rects===!0?await l.getElementRects({reference:e,floating:a,strategy:o}):N.rects),{x,y:m}=Kq(f,y,h)),w=-1)}return{x,y:m,placement:y,strategy:o,middlewareData:O}},Use=e=>({name:"arrow",options:e,async fn(a){const{x:n,y:s,placement:o,rects:c,platform:l,elements:d,middlewareData:h}=a,{element:f,padding:x=0}=Fr(e,a)||{};if(f==null)return{};const m=mZ(x),y={x:n,y:s},v=CE(o),O=wE(v),w=await l.getDimensions(f),j=v==="y",C=j?"top":"left",S=j?"bottom":"right",B=j?"clientHeight":"clientWidth",Q=c.reference[O]+c.reference[v]-y[v]-c.floating[O],T=y[v]-c.reference[v],N=await(l.getOffsetParent==null?void 0:l.getOffsetParent(f));let M=N?N[B]:0;(!M||!await(l.isElement==null?void 0:l.isElement(N)))&&(M=d.floating[B]||c.floating[O]);const I=Q/2-T/2,F=M/2-w[O]/2-1,U=ei(m[C],F),V=ei(m[S],F),Z=U,te=M-w[O]-V,H=M/2-w[O]/2+I,P=vP(Z,H,te),L=!h.arrow&&Pu(o)!=null&&H!==P&&c.reference[O]/2-(H<Z?U:V)-w[O]/2<0,z=L?H<Z?H-Z:H-te:0;return{[v]:y[v]+z,data:{[v]:P,centerOffset:H-P-z,...L&&{alignmentOffset:z}},reset:L}}}),Pse=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(a){var n,s;const{placement:o,middlewareData:c,rects:l,initialPlacement:d,platform:h,elements:f}=a,{mainAxis:x=!0,crossAxis:m=!0,fallbackPlacements:y,fallbackStrategy:v="bestFit",fallbackAxisSideDirection:O="none",flipAlignment:w=!0,...j}=Fr(e,a);if((n=c.arrow)!=null&&n.alignmentOffset)return{};const C=Rr(o),S=Ps(d),B=Rr(d)===d,Q=await(h.isRTL==null?void 0:h.isRTL(f.floating)),T=y||(B||!w?[NL(d)]:Sse(d)),N=O!=="none";!y&&N&&T.push(..._se(d,w,O,Q));const M=[d,...T],I=await h.detectOverflow(a,j),F=[];let U=((s=c.flip)==null?void 0:s.overflows)||[];if(x&&F.push(I[C]),m){const H=Mse(o,l,Q);F.push(I[H[0]],I[H[1]])}if(U=[...U,{placement:o,overflows:F}],!F.every(H=>H<=0)){var V,Z;const H=(((V=c.flip)==null?void 0:V.index)||0)+1,P=M[H];if(P&&(!(m==="alignment"?S!==Ps(P):!1)||U.every(q=>Ps(q.placement)===S?q.overflows[0]>0:!0)))return{data:{index:H,overflows:U},reset:{placement:P}};let L=(Z=U.filter(z=>z.overflows[0]<=0).sort((z,q)=>z.overflows[1]-q.overflows[1])[0])==null?void 0:Z.placement;if(!L)switch(v){case"bestFit":{var te;const z=(te=U.filter(q=>{if(N){const X=Ps(q.placement);return X===S||X==="y"}return!0}).map(q=>[q.placement,q.overflows.filter(X=>X>0).reduce((X,R)=>X+R,0)]).sort((q,X)=>q[1]-X[1])[0])==null?void 0:te[0];z&&(L=z);break}case"initialPlacement":L=d;break}if(o!==L)return{reset:{placement:L}}}return{}}}};function Yq(e,a){return{top:e.top-a.height,right:e.right-a.width,bottom:e.bottom-a.height,left:e.left-a.width}}function Jq(e){return Cse.some(a=>e[a]>=0)}const Ese=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(a){const{rects:n,platform:s}=a,{strategy:o="referenceHidden",...c}=Fr(e,a);switch(o){case"referenceHidden":{const l=await s.detectOverflow(a,{...c,elementContext:"reference"}),d=Yq(l,n.reference);return{data:{referenceHiddenOffsets:d,referenceHidden:Jq(d)}}}case"escaped":{const l=await s.detectOverflow(a,{...c,altBoundary:!0}),d=Yq(l,n.floating);return{data:{escapedOffsets:d,escaped:Jq(d)}}}default:return{}}}}},gZ=new Set(["left","top"]);async function zse(e,a){const{placement:n,platform:s,elements:o}=e,c=await(s.isRTL==null?void 0:s.isRTL(o.floating)),l=Rr(n),d=Pu(n),h=Ps(n)==="y",f=gZ.has(l)?-1:1,x=c&&h?-1:1,m=Fr(a,e);let{mainAxis:y,crossAxis:v,alignmentAxis:O}=typeof m=="number"?{mainAxis:m,crossAxis:0,alignmentAxis:null}:{mainAxis:m.mainAxis||0,crossAxis:m.crossAxis||0,alignmentAxis:m.alignmentAxis};return d&&typeof O=="number"&&(v=d==="end"?O*-1:O),h?{x:v*x,y:y*f}:{x:y*f,y:v*x}}const Fse=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(a){var n,s;const{x:o,y:c,placement:l,middlewareData:d}=a,h=await zse(a,e);return l===((n=d.offset)==null?void 0:n.placement)&&(s=d.arrow)!=null&&s.alignmentOffset?{}:{x:o+h.x,y:c+h.y,data:{...h,placement:l}}}}},Rse=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(a){const{x:n,y:s,placement:o,platform:c}=a,{mainAxis:l=!0,crossAxis:d=!1,limiter:h={fn:C=>{let{x:S,y:B}=C;return{x:S,y:B}}},...f}=Fr(e,a),x={x:n,y:s},m=await c.detectOverflow(a,f),y=Ps(Rr(o)),v=bE(y);let O=x[v],w=x[y];if(l){const C=v==="y"?"top":"left",S=v==="y"?"bottom":"right",B=O+m[C],Q=O-m[S];O=vP(B,O,Q)}if(d){const C=y==="y"?"top":"left",S=y==="y"?"bottom":"right",B=w+m[C],Q=w-m[S];w=vP(B,w,Q)}const j=h.fn({...a,[v]:O,[y]:w});return{...j,data:{x:j.x-n,y:j.y-s,enabled:{[v]:l,[y]:d}}}}}},Hse=function(e){return e===void 0&&(e={}),{options:e,fn(a){const{x:n,y:s,placement:o,rects:c,middlewareData:l}=a,{offset:d=0,mainAxis:h=!0,crossAxis:f=!0}=Fr(e,a),x={x:n,y:s},m=Ps(o),y=bE(m);let v=x[y],O=x[m];const w=Fr(d,a),j=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(h){const B=y==="y"?"height":"width",Q=c.reference[y]-c.floating[B]+j.mainAxis,T=c.reference[y]+c.reference[B]-j.mainAxis;v<Q?v=Q:v>T&&(v=T)}if(f){var C,S;const B=y==="y"?"width":"height",Q=gZ.has(Rr(o)),T=c.reference[m]-c.floating[B]+(Q&&((C=l.offset)==null?void 0:C[m])||0)+(Q?0:j.crossAxis),N=c.reference[m]+c.reference[B]+(Q?0:((S=l.offset)==null?void 0:S[m])||0)-(Q?j.crossAxis:0);O<T?O=T:O>N&&(O=N)}return{[y]:v,[m]:O}}}},qse=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(a){var n,s;const{placement:o,rects:c,platform:l,elements:d}=a,{apply:h=()=>{},...f}=Fr(e,a),x=await l.detectOverflow(a,f),m=Rr(o),y=Pu(o),v=Ps(o)==="y",{width:O,height:w}=c.floating;let j,C;m==="top"||m==="bottom"?(j=m,C=y===(await(l.isRTL==null?void 0:l.isRTL(d.floating))?"start":"end")?"left":"right"):(C=m,j=y==="end"?"top":"bottom");const S=w-x.top-x.bottom,B=O-x.left-x.right,Q=ei(w-x[j],S),T=ei(O-x[C],B),N=!a.middlewareData.shift;let M=Q,I=T;if((n=a.middlewareData.shift)!=null&&n.enabled.x&&(I=B),(s=a.middlewareData.shift)!=null&&s.enabled.y&&(M=S),N&&!y){const U=hn(x.left,0),V=hn(x.right,0),Z=hn(x.top,0),te=hn(x.bottom,0);v?I=O-2*(U!==0||V!==0?U+V:hn(x.left,x.right)):M=w-2*(Z!==0||te!==0?Z+te:hn(x.top,x.bottom))}await h({...a,availableWidth:I,availableHeight:M});const F=await l.getDimensions(d.floating);return O!==F.width||w!==F.height?{reset:{rects:!0}}:{}}}};function AT(){return typeof window<"u"}function Eu(e){return yZ(e)?(e.nodeName||"").toLowerCase():"#document"}function xn(e){var a;return(e==null||(a=e.ownerDocument)==null?void 0:a.defaultView)||window}function Vs(e){var a;return(a=(yZ(e)?e.ownerDocument:e.document)||window.document)==null?void 0:a.documentElement}function yZ(e){return AT()?e instanceof Node||e instanceof xn(e).Node:!1}function us(e){return AT()?e instanceof Element||e instanceof xn(e).Element:!1}function qr(e){return AT()?e instanceof HTMLElement||e instanceof xn(e).HTMLElement:!1}function eD(e){return!AT()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof xn(e).ShadowRoot}function n2(e){const{overflow:a,overflowX:n,overflowY:s,display:o}=hs(e);return/auto|scroll|overlay|hidden|clip/.test(a+s+n)&&o!=="inline"&&o!=="contents"}function Dse(e){return/^(table|td|th)$/.test(Eu(e))}function dT(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}const Vse=/transform|translate|scale|rotate|perspective|filter/,Xse=/paint|layout|strict|content/,Mi=e=>!!e&&e!=="none";let oU;function jE(e){const a=us(e)?hs(e):e;return Mi(a.transform)||Mi(a.translate)||Mi(a.scale)||Mi(a.rotate)||Mi(a.perspective)||!ME()&&(Mi(a.backdropFilter)||Mi(a.filter))||Vse.test(a.willChange||"")||Xse.test(a.contain||"")}function Zse(e){let a=ti(e);for(;qr(a)&&!Su(a);){if(jE(a))return a;if(dT(a))return null;a=ti(a)}return null}function ME(){return oU==null&&(oU=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),oU}function Su(e){return/^(html|body|#document)$/.test(Eu(e))}function hs(e){return xn(e).getComputedStyle(e)}function uT(e){return us(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ti(e){if(Eu(e)==="html")return e;const a=e.assignedSlot||e.parentNode||eD(e)&&e.host||Vs(e);return eD(a)?a.host:a}function vZ(e){const a=ti(e);return Su(a)?e.ownerDocument?e.ownerDocument.body:e.body:qr(a)&&n2(a)?a:vZ(a)}function R0(e,a,n){var s;a===void 0&&(a=[]),n===void 0&&(n=!0);const o=vZ(e),c=o===((s=e.ownerDocument)==null?void 0:s.body),l=xn(o);if(c){const d=OP(l);return a.concat(l,l.visualViewport||[],n2(o)?o:[],d&&n?R0(d):[])}else return a.concat(o,R0(o,[],n))}function OP(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function kZ(e){const a=hs(e);let n=parseFloat(a.width)||0,s=parseFloat(a.height)||0;const o=qr(e),c=o?e.offsetWidth:n,l=o?e.offsetHeight:s,d=QL(n)!==c||QL(s)!==l;return d&&(n=c,s=l),{width:n,height:s,$:d}}function SE(e){return us(e)?e:e.contextElement}function W1(e){const a=SE(e);if(!qr(a))return Es(1);const n=a.getBoundingClientRect(),{width:s,height:o,$:c}=kZ(a);let l=(c?QL(n.width):n.width)/s,d=(c?QL(n.height):n.height)/o;return(!l||!Number.isFinite(l))&&(l=1),(!d||!Number.isFinite(d))&&(d=1),{x:l,y:d}}const Gse=Es(0);function OZ(e){const a=xn(e);return!ME()||!a.visualViewport?Gse:{x:a.visualViewport.offsetLeft,y:a.visualViewport.offsetTop}}function Wse(e,a,n){return a===void 0&&(a=!1),!n||a&&n!==xn(e)?!1:a}function Pd(e,a,n,s){a===void 0&&(a=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),c=SE(e);let l=Es(1);a&&(s?us(s)&&(l=W1(s)):l=W1(e));const d=Wse(c,n,s)?OZ(c):Es(0);let h=(o.left+d.x)/l.x,f=(o.top+d.y)/l.y,x=o.width/l.x,m=o.height/l.y;if(c){const y=xn(c),v=s&&us(s)?xn(s):s;let O=y,w=OP(O);for(;w&&s&&v!==O;){const j=W1(w),C=w.getBoundingClientRect(),S=hs(w),B=C.left+(w.clientLeft+parseFloat(S.paddingLeft))*j.x,Q=C.top+(w.clientTop+parseFloat(S.paddingTop))*j.y;h*=j.x,f*=j.y,x*=j.x,m*=j.y,h+=B,f+=Q,O=xn(w),w=OP(O)}}return BL({width:x,height:m,x:h,y:f})}function hT(e,a){const n=uT(e).scrollLeft;return a?a.left+n:Pd(Vs(e)).left+n}function bZ(e,a){const n=e.getBoundingClientRect(),s=n.left+a.scrollLeft-hT(e,n),o=n.top+a.scrollTop;return{x:s,y:o}}function Kse(e){let{elements:a,rect:n,offsetParent:s,strategy:o}=e;const c=o==="fixed",l=Vs(s),d=a?dT(a.floating):!1;if(s===l||d&&c)return n;let h={scrollLeft:0,scrollTop:0},f=Es(1);const x=Es(0),m=qr(s);if((m||!m&&!c)&&((Eu(s)!=="body"||n2(l))&&(h=uT(s)),m)){const v=Pd(s);f=W1(s),x.x=v.x+s.clientLeft,x.y=v.y+s.clientTop}const y=l&&!m&&!c?bZ(l,h):Es(0);return{width:n.width*f.x,height:n.height*f.y,x:n.x*f.x-h.scrollLeft*f.x+x.x+y.x,y:n.y*f.y-h.scrollTop*f.y+x.y+y.y}}function Yse(e){return Array.from(e.getClientRects())}function Jse(e){const a=Vs(e),n=uT(e),s=e.ownerDocument.body,o=hn(a.scrollWidth,a.clientWidth,s.scrollWidth,s.clientWidth),c=hn(a.scrollHeight,a.clientHeight,s.scrollHeight,s.clientHeight);let l=-n.scrollLeft+hT(e);const d=-n.scrollTop;return hs(s).direction==="rtl"&&(l+=hn(a.clientWidth,s.clientWidth)-o),{width:o,height:c,x:l,y:d}}const tD=25;function ere(e,a){const n=xn(e),s=Vs(e),o=n.visualViewport;let c=s.clientWidth,l=s.clientHeight,d=0,h=0;if(o){c=o.width,l=o.height;const x=ME();(!x||x&&a==="fixed")&&(d=o.offsetLeft,h=o.offsetTop)}const f=hT(s);if(f<=0){const x=s.ownerDocument,m=x.body,y=getComputedStyle(m),v=x.compatMode==="CSS1Compat"&&parseFloat(y.marginLeft)+parseFloat(y.marginRight)||0,O=Math.abs(s.clientWidth-m.clientWidth-v);O<=tD&&(c-=O)}else f<=tD&&(c+=f);return{width:c,height:l,x:d,y:h}}function tre(e,a){const n=Pd(e,!0,a==="fixed"),s=n.top+e.clientTop,o=n.left+e.clientLeft,c=qr(e)?W1(e):Es(1),l=e.clientWidth*c.x,d=e.clientHeight*c.y,h=o*c.x,f=s*c.y;return{width:l,height:d,x:h,y:f}}function aD(e,a,n){let s;if(a==="viewport")s=ere(e,n);else if(a==="document")s=Jse(Vs(e));else if(us(a))s=tre(a,n);else{const o=OZ(e);s={x:a.x-o.x,y:a.y-o.y,width:a.width,height:a.height}}return BL(s)}function wZ(e,a){const n=ti(e);return n===a||!us(n)||Su(n)?!1:hs(n).position==="fixed"||wZ(n,a)}function are(e,a){const n=a.get(e);if(n)return n;let s=R0(e,[],!1).filter(d=>us(d)&&Eu(d)!=="body"),o=null;const c=hs(e).position==="fixed";let l=c?ti(e):e;for(;us(l)&&!Su(l);){const d=hs(l),h=jE(l);!h&&d.position==="fixed"&&(o=null),(c?!h&&!o:!h&&d.position==="static"&&!!o&&(o.position==="absolute"||o.position==="fixed")||n2(l)&&!h&&wZ(e,l))?s=s.filter(x=>x!==l):o=d,l=ti(l)}return a.set(e,s),s}function nre(e){let{element:a,boundary:n,rootBoundary:s,strategy:o}=e;const l=[...n==="clippingAncestors"?dT(a)?[]:are(a,this._c):[].concat(n),s],d=aD(a,l[0],o);let h=d.top,f=d.right,x=d.bottom,m=d.left;for(let y=1;y<l.length;y++){const v=aD(a,l[y],o);h=hn(v.top,h),f=ei(v.right,f),x=ei(v.bottom,x),m=hn(v.left,m)}return{width:f-m,height:x-h,x:m,y:h}}function sre(e){const{width:a,height:n}=kZ(e);return{width:a,height:n}}function rre(e,a,n){const s=qr(a),o=Vs(a),c=n==="fixed",l=Pd(e,!0,c,a);let d={scrollLeft:0,scrollTop:0};const h=Es(0);function f(){h.x=hT(o)}if(s||!s&&!c)if((Eu(a)!=="body"||n2(o))&&(d=uT(a)),s){const v=Pd(a,!0,c,a);h.x=v.x+a.clientLeft,h.y=v.y+a.clientTop}else o&&f();c&&!s&&o&&f();const x=o&&!s&&!c?bZ(o,d):Es(0),m=l.left+d.scrollLeft-h.x-x.x,y=l.top+d.scrollTop-h.y-x.y;return{x:m,y,width:l.width,height:l.height}}function iU(e){return hs(e).position==="static"}function nD(e,a){if(!qr(e)||hs(e).position==="fixed")return null;if(a)return a(e);let n=e.offsetParent;return Vs(e)===n&&(n=n.ownerDocument.body),n}function CZ(e,a){const n=xn(e);if(dT(e))return n;if(!qr(e)){let o=ti(e);for(;o&&!Su(o);){if(us(o)&&!iU(o))return o;o=ti(o)}return n}let s=nD(e,a);for(;s&&Dse(s)&&iU(s);)s=nD(s,a);return s&&Su(s)&&iU(s)&&!jE(s)?n:s||Zse(e)||n}const ore=async function(e){const a=this.getOffsetParent||CZ,n=this.getDimensions,s=await n(e.floating);return{reference:rre(e.reference,await a(e.floating),e.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function ire(e){return hs(e).direction==="rtl"}const cre={convertOffsetParentRelativeRectToViewportRelativeRect:Kse,getDocumentElement:Vs,getClippingRect:nre,getOffsetParent:CZ,getElementRects:ore,getClientRects:Yse,getDimensions:sre,getScale:W1,isElement:us,isRTL:ire};function jZ(e,a){return e.x===a.x&&e.y===a.y&&e.width===a.width&&e.height===a.height}function lre(e,a){let n=null,s;const o=Vs(e);function c(){var d;clearTimeout(s),(d=n)==null||d.disconnect(),n=null}function l(d,h){d===void 0&&(d=!1),h===void 0&&(h=1),c();const f=e.getBoundingClientRect(),{left:x,top:m,width:y,height:v}=f;if(d||a(),!y||!v)return;const O=Mp(m),w=Mp(o.clientWidth-(x+y)),j=Mp(o.clientHeight-(m+v)),C=Mp(x),B={rootMargin:-O+"px "+-w+"px "+-j+"px "+-C+"px",threshold:hn(0,ei(1,h))||1};let Q=!0;function T(N){const M=N[0].intersectionRatio;if(M!==h){if(!Q)return l();M?l(!1,M):s=setTimeout(()=>{l(!1,1e-7)},1e3)}M===1&&!jZ(f,e.getBoundingClientRect())&&l(),Q=!1}try{n=new IntersectionObserver(T,{...B,root:o.ownerDocument})}catch{n=new IntersectionObserver(T,B)}n.observe(e)}return l(!0),c}function Are(e,a,n,s){s===void 0&&(s={});const{ancestorScroll:o=!0,ancestorResize:c=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:d=typeof IntersectionObserver=="function",animationFrame:h=!1}=s,f=SE(e),x=o||c?[...f?R0(f):[],...a?R0(a):[]]:[];x.forEach(C=>{o&&C.addEventListener("scroll",n,{passive:!0}),c&&C.addEventListener("resize",n)});const m=f&&d?lre(f,n):null;let y=-1,v=null;l&&(v=new ResizeObserver(C=>{let[S]=C;S&&S.target===f&&v&&a&&(v.unobserve(a),cancelAnimationFrame(y),y=requestAnimationFrame(()=>{var B;(B=v)==null||B.observe(a)})),n()}),f&&!h&&v.observe(f),a&&v.observe(a));let O,w=h?Pd(e):null;h&&j();function j(){const C=Pd(e);w&&!jZ(w,C)&&n(),w=C,O=requestAnimationFrame(j)}return n(),()=>{var C;x.forEach(S=>{o&&S.removeEventListener("scroll",n),c&&S.removeEventListener("resize",n)}),m==null||m(),(C=v)==null||C.disconnect(),v=null,h&&cancelAnimationFrame(O)}}const dre=Fse,ure=Rse,hre=Pse,pre=qse,fre=Ese,sD=Use,xre=Hse,mre=(e,a,n)=>{const s=new Map,o={platform:cre,...n},c={...o.platform,_c:s};return Ise(e,a,{...o,platform:c})};var gre=typeof document<"u",yre=function(){},vf=gre?g.useLayoutEffect:yre;function _L(e,a){if(e===a)return!0;if(typeof e!=typeof a)return!1;if(typeof e=="function"&&e.toString()===a.toString())return!0;let n,s,o;if(e&&a&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==a.length)return!1;for(s=n;s--!==0;)if(!_L(e[s],a[s]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(a).length)return!1;for(s=n;s--!==0;)if(!{}.hasOwnProperty.call(a,o[s]))return!1;for(s=n;s--!==0;){const c=o[s];if(!(c==="_owner"&&e.$$typeof)&&!_L(e[c],a[c]))return!1}return!0}return e!==e&&a!==a}function MZ(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function rD(e,a){const n=MZ(e);return Math.round(a*n)/n}function cU(e){const a=g.useRef(e);return vf(()=>{a.current=e}),a}function vre(e){e===void 0&&(e={});const{placement:a="bottom",strategy:n="absolute",middleware:s=[],platform:o,elements:{reference:c,floating:l}={},transform:d=!0,whileElementsMounted:h,open:f}=e,[x,m]=g.useState({x:0,y:0,strategy:n,placement:a,middlewareData:{},isPositioned:!1}),[y,v]=g.useState(s);_L(y,s)||v(s);const[O,w]=g.useState(null),[j,C]=g.useState(null),S=g.useCallback(q=>{q!==N.current&&(N.current=q,w(q))},[]),B=g.useCallback(q=>{q!==M.current&&(M.current=q,C(q))},[]),Q=c||O,T=l||j,N=g.useRef(null),M=g.useRef(null),I=g.useRef(x),F=h!=null,U=cU(h),V=cU(o),Z=cU(f),te=g.useCallback(()=>{if(!N.current||!M.current)return;const q={placement:a,strategy:n,middleware:y};V.current&&(q.platform=V.current),mre(N.current,M.current,q).then(X=>{const R={...X,isPositioned:Z.current!==!1};H.current&&!_L(I.current,R)&&(I.current=R,iT.flushSync(()=>{m(R)}))})},[y,a,n,V,Z]);vf(()=>{f===!1&&I.current.isPositioned&&(I.current.isPositioned=!1,m(q=>({...q,isPositioned:!1})))},[f]);const H=g.useRef(!1);vf(()=>(H.current=!0,()=>{H.current=!1}),[]),vf(()=>{if(Q&&(N.current=Q),T&&(M.current=T),Q&&T){if(U.current)return U.current(Q,T,te);te()}},[Q,T,te,U,F]);const P=g.useMemo(()=>({reference:N,floating:M,setReference:S,setFloating:B}),[S,B]),L=g.useMemo(()=>({reference:Q,floating:T}),[Q,T]),z=g.useMemo(()=>{const q={position:n,left:0,top:0};if(!L.floating)return q;const X=rD(L.floating,x.x),R=rD(L.floating,x.y);return d?{...q,transform:"translate("+X+"px, "+R+"px)",...MZ(L.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:X,top:R}},[n,d,L.floating,x.x,x.y]);return g.useMemo(()=>({...x,update:te,refs:P,elements:L,floatingStyles:z}),[x,te,P,L,z])}const kre=e=>{function a(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:s,padding:o}=typeof e=="function"?e(n):e;return s&&a(s)?s.current!=null?sD({element:s.current,padding:o}).fn(n):{}:s?sD({element:s,padding:o}).fn(n):{}}}},Ore=(e,a)=>{const n=dre(e);return{name:n.name,fn:n.fn,options:[e,a]}},bre=(e,a)=>{const n=ure(e);return{name:n.name,fn:n.fn,options:[e,a]}},wre=(e,a)=>({fn:xre(e).fn,options:[e,a]}),Cre=(e,a)=>{const n=hre(e);return{name:n.name,fn:n.fn,options:[e,a]}},jre=(e,a)=>{const n=pre(e);return{name:n.name,fn:n.fn,options:[e,a]}},Mre=(e,a)=>{const n=fre(e);return{name:n.name,fn:n.fn,options:[e,a]}},Sre=(e,a)=>{const n=kre(e);return{name:n.name,fn:n.fn,options:[e,a]}};var Qre="Arrow",SZ=g.forwardRef((e,a)=>{const{children:n,width:s=10,height:o=5,...c}=e;return t.jsx(Re.svg,{...c,ref:a,width:s,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:t.jsx("polygon",{points:"0,0 30,0 15,10"})})});SZ.displayName=Qre;var Nre=SZ;function Bre(e){const[a,n]=g.useState(void 0);return wa(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const s=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const c=o[0];let l,d;if("borderBoxSize"in c){const h=c.borderBoxSize,f=Array.isArray(h)?h[0]:h;l=f.inlineSize,d=f.blockSize}else l=e.offsetWidth,d=e.offsetHeight;n({width:l,height:d})});return s.observe(e,{box:"border-box"}),()=>s.unobserve(e)}else n(void 0)},[e]),a}var QE="Popper",[QZ,zu]=Ds(QE),[_re,NZ]=QZ(QE),BZ=e=>{const{__scopePopper:a,children:n}=e,[s,o]=g.useState(null);return t.jsx(_re,{scope:a,anchor:s,onAnchorChange:o,children:n})};BZ.displayName=QE;var _Z="PopperAnchor",LZ=g.forwardRef((e,a)=>{const{__scopePopper:n,virtualRef:s,...o}=e,c=NZ(_Z,n),l=g.useRef(null),d=tt(a,l),h=g.useRef(null);return g.useEffect(()=>{const f=h.current;h.current=(s==null?void 0:s.current)||l.current,f!==h.current&&c.onAnchorChange(h.current)}),s?null:t.jsx(Re.div,{...o,ref:d})});LZ.displayName=_Z;var NE="PopperContent",[Lre,Tre]=QZ(NE),TZ=g.forwardRef((e,a)=>{var J,ke,ye,Ie,Te,Pe;const{__scopePopper:n,side:s="bottom",sideOffset:o=0,align:c="center",alignOffset:l=0,arrowPadding:d=0,avoidCollisions:h=!0,collisionBoundary:f=[],collisionPadding:x=0,sticky:m="partial",hideWhenDetached:y=!1,updatePositionStrategy:v="optimized",onPlaced:O,...w}=e,j=NZ(NE,n),[C,S]=g.useState(null),B=tt(a,lt=>S(lt)),[Q,T]=g.useState(null),N=Bre(Q),M=(N==null?void 0:N.width)??0,I=(N==null?void 0:N.height)??0,F=s+(c!=="center"?"-"+c:""),U=typeof x=="number"?x:{top:0,right:0,bottom:0,left:0,...x},V=Array.isArray(f)?f:[f],Z=V.length>0,te={padding:U,boundary:V.filter(Ire),altBoundary:Z},{refs:H,floatingStyles:P,placement:L,isPositioned:z,middlewareData:q}=vre({strategy:"fixed",placement:F,whileElementsMounted:(...lt)=>Are(...lt,{animationFrame:v==="always"}),elements:{reference:j.anchor},middleware:[Ore({mainAxis:o+I,alignmentAxis:l}),h&&bre({mainAxis:!0,crossAxis:!1,limiter:m==="partial"?wre():void 0,...te}),h&&Cre({...te}),jre({...te,apply:({elements:lt,rects:We,availableWidth:Nt,availableHeight:_a})=>{const{width:Ja,height:Ws}=We.reference,za=lt.floating.style;za.setProperty("--radix-popper-available-width",`${Nt}px`),za.setProperty("--radix-popper-available-height",`${_a}px`),za.setProperty("--radix-popper-anchor-width",`${Ja}px`),za.setProperty("--radix-popper-anchor-height",`${Ws}px`)}}),Q&&Sre({element:Q,padding:d}),Ure({arrowWidth:M,arrowHeight:I}),y&&Mre({strategy:"referenceHidden",...te})]}),[X,R]=UZ(L),pe=da(O);wa(()=>{z&&(pe==null||pe())},[z,pe]);const Y=(J=q.arrow)==null?void 0:J.x,W=(ke=q.arrow)==null?void 0:ke.y,de=((ye=q.arrow)==null?void 0:ye.centerOffset)!==0,[xe,ie]=g.useState();return wa(()=>{C&&ie(window.getComputedStyle(C).zIndex)},[C]),t.jsx("div",{ref:H.setFloating,"data-radix-popper-content-wrapper":"",style:{...P,transform:z?P.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:xe,"--radix-popper-transform-origin":[(Ie=q.transformOrigin)==null?void 0:Ie.x,(Te=q.transformOrigin)==null?void 0:Te.y].join(" "),...((Pe=q.hide)==null?void 0:Pe.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:t.jsx(Lre,{scope:n,placedSide:X,onArrowChange:T,arrowX:Y,arrowY:W,shouldHideArrow:de,children:t.jsx(Re.div,{"data-side":X,"data-align":R,...w,ref:B,style:{...w.style,animation:z?void 0:"none"}})})})});TZ.displayName=NE;var $Z="PopperArrow",$re={top:"bottom",right:"left",bottom:"top",left:"right"},IZ=g.forwardRef(function(a,n){const{__scopePopper:s,...o}=a,c=Tre($Z,s),l=$re[c.placedSide];return t.jsx("span",{ref:c.onArrowChange,style:{position:"absolute",left:c.arrowX,top:c.arrowY,[l]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[c.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[c.placedSide],visibility:c.shouldHideArrow?"hidden":void 0},children:t.jsx(Nre,{...o,ref:n,style:{...o.style,display:"block"}})})});IZ.displayName=$Z;function Ire(e){return e!==null}var Ure=e=>({name:"transformOrigin",options:e,fn(a){var j,C,S;const{placement:n,rects:s,middlewareData:o}=a,l=((j=o.arrow)==null?void 0:j.centerOffset)!==0,d=l?0:e.arrowWidth,h=l?0:e.arrowHeight,[f,x]=UZ(n),m={start:"0%",center:"50%",end:"100%"}[x],y=(((C=o.arrow)==null?void 0:C.x)??0)+d/2,v=(((S=o.arrow)==null?void 0:S.y)??0)+h/2;let O="",w="";return f==="bottom"?(O=l?m:`${y}px`,w=`${-h}px`):f==="top"?(O=l?m:`${y}px`,w=`${s.floating.height+h}px`):f==="right"?(O=`${-h}px`,w=l?m:`${v}px`):f==="left"&&(O=`${s.floating.width+h}px`,w=l?m:`${v}px`),{data:{x:O,y:w}}}});function UZ(e){const[a,n="center"]=e.split("-");return[a,n]}var BE=BZ,_E=LZ,LE=TZ,TE=IZ,Pre="Portal",s2=g.forwardRef((e,a)=>{var d;const{container:n,...s}=e,[o,c]=g.useState(!1);wa(()=>c(!0),[]);const l=n||o&&((d=globalThis==null?void 0:globalThis.document)==null?void 0:d.body);return l?Mae.createPortal(t.jsx(Re.div,{...s,ref:a}),l):null});s2.displayName=Pre;function Ere(e,a){return g.useReducer((n,s)=>a[n][s]??n,e)}var Pa=e=>{const{present:a,children:n}=e,s=zre(a),o=typeof n=="function"?n({present:s.isPresent}):g.Children.only(n),c=tt(s.ref,Fre(o));return typeof n=="function"||s.isPresent?g.cloneElement(o,{ref:c}):null};Pa.displayName="Presence";function zre(e){const[a,n]=g.useState(),s=g.useRef(null),o=g.useRef(e),c=g.useRef("none"),l=e?"mounted":"unmounted",[d,h]=Ere(l,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return g.useEffect(()=>{const f=Sp(s.current);c.current=d==="mounted"?f:"none"},[d]),wa(()=>{const f=s.current,x=o.current;if(x!==e){const y=c.current,v=Sp(f);e?h("MOUNT"):v==="none"||(f==null?void 0:f.display)==="none"?h("UNMOUNT"):h(x&&y!==v?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,h]),wa(()=>{if(a){let f;const x=a.ownerDocument.defaultView??window,m=v=>{const w=Sp(s.current).includes(CSS.escape(v.animationName));if(v.target===a&&w&&(h("ANIMATION_END"),!o.current)){const j=a.style.animationFillMode;a.style.animationFillMode="forwards",f=x.setTimeout(()=>{a.style.animationFillMode==="forwards"&&(a.style.animationFillMode=j)})}},y=v=>{v.target===a&&(c.current=Sp(s.current))};return a.addEventListener("animationstart",y),a.addEventListener("animationcancel",m),a.addEventListener("animationend",m),()=>{x.clearTimeout(f),a.removeEventListener("animationstart",y),a.removeEventListener("animationcancel",m),a.removeEventListener("animationend",m)}}else h("ANIMATION_END")},[a,h]),{isPresent:["mounted","unmountSuspended"].includes(d),ref:g.useCallback(f=>{s.current=f?getComputedStyle(f):null,n(f)},[])}}function Sp(e){return(e==null?void 0:e.animationName)||"none"}function Fre(e){var s,o;let a=(s=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:s.get,n=a&&"isReactWarning"in a&&a.isReactWarning;return n?e.ref:(a=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=a&&"isReactWarning"in a&&a.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Rre=FX[" useInsertionEffect ".trim().toString()]||wa;function Qu({prop:e,defaultProp:a,onChange:n=()=>{},caller:s}){const[o,c,l]=Hre({defaultProp:a,onChange:n}),d=e!==void 0,h=d?e:o;{const x=g.useRef(e!==void 0);g.useEffect(()=>{const m=x.current;m!==d&&console.warn(`${s} is changing from ${m?"controlled":"uncontrolled"} to ${d?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),x.current=d},[d,s])}const f=g.useCallback(x=>{var m;if(d){const y=qre(x)?x(e):x;y!==e&&((m=l.current)==null||m.call(l,y))}else c(x)},[d,e,c,l]);return[h,f]}function Hre({defaultProp:e,onChange:a}){const[n,s]=g.useState(e),o=g.useRef(n),c=g.useRef(a);return Rre(()=>{c.current=a},[a]),g.useEffect(()=>{var l;o.current!==n&&((l=c.current)==null||l.call(c,n),o.current=n)},[n,o]),[n,s,c]}function qre(e){return typeof e=="function"}var PZ=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"}),Dre="VisuallyHidden",EZ=g.forwardRef((e,a)=>t.jsx(Re.span,{...e,ref:a,style:{...PZ,...e.style}}));EZ.displayName=Dre;var Vre=EZ,[pT]=Ds("Tooltip",[zu]),fT=zu(),zZ="TooltipProvider",Xre=700,bP="tooltip.open",[Zre,$E]=pT(zZ),FZ=e=>{const{__scopeTooltip:a,delayDuration:n=Xre,skipDelayDuration:s=300,disableHoverableContent:o=!1,children:c}=e,l=g.useRef(!0),d=g.useRef(!1),h=g.useRef(0);return g.useEffect(()=>{const f=h.current;return()=>window.clearTimeout(f)},[]),t.jsx(Zre,{scope:a,isOpenDelayedRef:l,delayDuration:n,onOpen:g.useCallback(()=>{window.clearTimeout(h.current),l.current=!1},[]),onClose:g.useCallback(()=>{window.clearTimeout(h.current),h.current=window.setTimeout(()=>l.current=!0,s)},[s]),isPointerInTransitRef:d,onPointerInTransitChange:g.useCallback(f=>{d.current=f},[]),disableHoverableContent:o,children:c})};FZ.displayName=zZ;var H0="Tooltip",[Gre,r2]=pT(H0),RZ=e=>{const{__scopeTooltip:a,children:n,open:s,defaultOpen:o,onOpenChange:c,disableHoverableContent:l,delayDuration:d}=e,h=$E(H0,e.__scopeTooltip),f=fT(a),[x,m]=g.useState(null),y=Br(),v=g.useRef(0),O=l??h.disableHoverableContent,w=d??h.delayDuration,j=g.useRef(!1),[C,S]=Qu({prop:s,defaultProp:o??!1,onChange:M=>{M?(h.onOpen(),document.dispatchEvent(new CustomEvent(bP))):h.onClose(),c==null||c(M)},caller:H0}),B=g.useMemo(()=>C?j.current?"delayed-open":"instant-open":"closed",[C]),Q=g.useCallback(()=>{window.clearTimeout(v.current),v.current=0,j.current=!1,S(!0)},[S]),T=g.useCallback(()=>{window.clearTimeout(v.current),v.current=0,S(!1)},[S]),N=g.useCallback(()=>{window.clearTimeout(v.current),v.current=window.setTimeout(()=>{j.current=!0,S(!0),v.current=0},w)},[w,S]);return g.useEffect(()=>()=>{v.current&&(window.clearTimeout(v.current),v.current=0)},[]),t.jsx(BE,{...f,children:t.jsx(Gre,{scope:a,contentId:y,open:C,stateAttribute:B,trigger:x,onTriggerChange:m,onTriggerEnter:g.useCallback(()=>{h.isOpenDelayedRef.current?N():Q()},[h.isOpenDelayedRef,N,Q]),onTriggerLeave:g.useCallback(()=>{O?T():(window.clearTimeout(v.current),v.current=0)},[T,O]),onOpen:Q,onClose:T,disableHoverableContent:O,children:n})})};RZ.displayName=H0;var wP="TooltipTrigger",HZ=g.forwardRef((e,a)=>{const{__scopeTooltip:n,...s}=e,o=r2(wP,n),c=$E(wP,n),l=fT(n),d=g.useRef(null),h=tt(a,d,o.onTriggerChange),f=g.useRef(!1),x=g.useRef(!1),m=g.useCallback(()=>f.current=!1,[]);return g.useEffect(()=>()=>document.removeEventListener("pointerup",m),[m]),t.jsx(_E,{asChild:!0,...l,children:t.jsx(Re.button,{"aria-describedby":o.open?o.contentId:void 0,"data-state":o.stateAttribute,...s,ref:h,onPointerMove:Ce(e.onPointerMove,y=>{y.pointerType!=="touch"&&!x.current&&!c.isPointerInTransitRef.current&&(o.onTriggerEnter(),x.current=!0)}),onPointerLeave:Ce(e.onPointerLeave,()=>{o.onTriggerLeave(),x.current=!1}),onPointerDown:Ce(e.onPointerDown,()=>{o.open&&o.onClose(),f.current=!0,document.addEventListener("pointerup",m,{once:!0})}),onFocus:Ce(e.onFocus,()=>{f.current||o.onOpen()}),onBlur:Ce(e.onBlur,o.onClose),onClick:Ce(e.onClick,o.onClose)})})});HZ.displayName=wP;var IE="TooltipPortal",[Wre,Kre]=pT(IE,{forceMount:void 0}),qZ=e=>{const{__scopeTooltip:a,forceMount:n,children:s,container:o}=e,c=r2(IE,a);return t.jsx(Wre,{scope:a,forceMount:n,children:t.jsx(Pa,{present:n||c.open,children:t.jsx(s2,{asChild:!0,container:o,children:s})})})};qZ.displayName=IE;var Nu="TooltipContent",DZ=g.forwardRef((e,a)=>{const n=Kre(Nu,e.__scopeTooltip),{forceMount:s=n.forceMount,side:o="top",...c}=e,l=r2(Nu,e.__scopeTooltip);return t.jsx(Pa,{present:s||l.open,children:l.disableHoverableContent?t.jsx(VZ,{side:o,...c,ref:a}):t.jsx(Yre,{side:o,...c,ref:a})})}),Yre=g.forwardRef((e,a)=>{const n=r2(Nu,e.__scopeTooltip),s=$E(Nu,e.__scopeTooltip),o=g.useRef(null),c=tt(a,o),[l,d]=g.useState(null),{trigger:h,onClose:f}=n,x=o.current,{onPointerInTransitChange:m}=s,y=g.useCallback(()=>{d(null),m(!1)},[m]),v=g.useCallback((O,w)=>{const j=O.currentTarget,C={x:O.clientX,y:O.clientY},S=aoe(C,j.getBoundingClientRect()),B=noe(C,S),Q=soe(w.getBoundingClientRect()),T=ooe([...B,...Q]);d(T),m(!0)},[m]);return g.useEffect(()=>()=>y(),[y]),g.useEffect(()=>{if(h&&x){const O=j=>v(j,x),w=j=>v(j,h);return h.addEventListener("pointerleave",O),x.addEventListener("pointerleave",w),()=>{h.removeEventListener("pointerleave",O),x.removeEventListener("pointerleave",w)}}},[h,x,v,y]),g.useEffect(()=>{if(l){const O=w=>{const j=w.target,C={x:w.clientX,y:w.clientY},S=(h==null?void 0:h.contains(j))||(x==null?void 0:x.contains(j)),B=!roe(C,l);S?y():B&&(y(),f())};return document.addEventListener("pointermove",O),()=>document.removeEventListener("pointermove",O)}},[h,x,l,f,y]),t.jsx(VZ,{...e,ref:c})}),[Jre,eoe]=pT(H0,{isInside:!1}),toe=Ase("TooltipContent"),VZ=g.forwardRef((e,a)=>{const{__scopeTooltip:n,children:s,"aria-label":o,onEscapeKeyDown:c,onPointerDownOutside:l,...d}=e,h=r2(Nu,n),f=fT(n),{onClose:x}=h;return g.useEffect(()=>(document.addEventListener(bP,x),()=>document.removeEventListener(bP,x)),[x]),g.useEffect(()=>{if(h.trigger){const m=y=>{const v=y.target;v!=null&&v.contains(h.trigger)&&x()};return window.addEventListener("scroll",m,{capture:!0}),()=>window.removeEventListener("scroll",m,{capture:!0})}},[h.trigger,x]),t.jsx(a2,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:c,onPointerDownOutside:l,onFocusOutside:m=>m.preventDefault(),onDismiss:x,children:t.jsxs(LE,{"data-state":h.stateAttribute,...f,...d,ref:a,style:{...d.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(toe,{children:s}),t.jsx(Jre,{scope:n,isInside:!0,children:t.jsx(Vre,{id:h.contentId,role:"tooltip",children:o||s})})]})})});DZ.displayName=Nu;var XZ="TooltipArrow",ZZ=g.forwardRef((e,a)=>{const{__scopeTooltip:n,...s}=e,o=fT(n);return eoe(XZ,n).isInside?null:t.jsx(TE,{...o,...s,ref:a})});ZZ.displayName=XZ;function aoe(e,a){const n=Math.abs(a.top-e.y),s=Math.abs(a.bottom-e.y),o=Math.abs(a.right-e.x),c=Math.abs(a.left-e.x);switch(Math.min(n,s,o,c)){case c:return"left";case o:return"right";case n:return"top";case s:return"bottom";default:throw new Error("unreachable")}}function noe(e,a,n=5){const s=[];switch(a){case"top":s.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":s.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":s.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":s.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return s}function soe(e){const{top:a,right:n,bottom:s,left:o}=e;return[{x:o,y:a},{x:n,y:a},{x:n,y:s},{x:o,y:s}]}function roe(e,a){const{x:n,y:s}=e;let o=!1;for(let c=0,l=a.length-1;c<a.length;l=c++){const d=a[c],h=a[l],f=d.x,x=d.y,m=h.x,y=h.y;x>s!=y>s&&n<(m-f)*(s-x)/(y-x)+f&&(o=!o)}return o}function ooe(e){const a=e.slice();return a.sort((n,s)=>n.x<s.x?-1:n.x>s.x?1:n.y<s.y?-1:n.y>s.y?1:0),ioe(a)}function ioe(e){if(e.length<=1)return e.slice();const a=[];for(let s=0;s<e.length;s++){const o=e[s];for(;a.length>=2;){const c=a[a.length-1],l=a[a.length-2];if((c.x-l.x)*(o.y-l.y)>=(c.y-l.y)*(o.x-l.x))a.pop();else break}a.push(o)}a.pop();const n=[];for(let s=e.length-1;s>=0;s--){const o=e[s];for(;n.length>=2;){const c=n[n.length-1],l=n[n.length-2];if((c.x-l.x)*(o.y-l.y)>=(c.y-l.y)*(o.x-l.x))n.pop();else break}n.push(o)}return n.pop(),a.length===1&&n.length===1&&a[0].x===n[0].x&&a[0].y===n[0].y?a:a.concat(n)}var coe=FZ,loe=RZ,Aoe=HZ,doe=qZ,uoe=DZ,hoe=ZZ;function poe({children:e}){return t.jsx(coe,{delayDuration:300,children:e})}function qs({children:e,content:a,side:n="top",className:s}){return a?t.jsxs(loe,{children:[t.jsx(Aoe,{asChild:!0,children:e}),t.jsx(doe,{children:t.jsxs(uoe,{side:n,sideOffset:6,className:G("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",s),children:[a,t.jsx(hoe,{className:"fill-surface-4"})]})})]}):e}/**
35
+ ${s}`);const c={chatHistory:[...a().chatHistory[n]||[]],activityLog:[...a().activityLog[n]||[]],tokenTimeline:[...a().tokenTimeline[n]||[]]};try{const f=await D.post(`/agents/${encodeURIComponent(n)}/instruct`,{message:o});if(f.status==="message_sent")return f;if(f.status==="message_queued")return e(m=>{const y=new Set(m.thinkingAgents);return y.delete(n),{thinkingAgents:y}}),f;const x=f;for(const m of["chatHistory","activityLog","tokenTimeline"])(l=c[m])!=null&&l.length&&e(y=>({[m]:{...y[m],[x.id]:[...c[m]]}}));return e(m=>{const y=new Set(m.thinkingAgents);return y.delete(n),y.add(x.id),{thinkingAgents:y}}),(d=a().chatHistory[x.id])!=null&&d.length&&wt("groove:chatHistory",a().chatHistory),(h=a().activityLog[x.id])!=null&&h.length&&wt("groove:activityLog",a().activityLog),a().selectAgent(x.id),x}catch(f){throw e(x=>{const m=new Set(x.thinkingAgents);return m.delete(n),{thinkingAgents:m}}),a().addChatMessage(n,"system",`failed: ${f.message}`),f}},async queryAgent(n,s){a().addChatMessage(n,"user",s,!0);try{const o=await D.post(`/agents/${encodeURIComponent(n)}/query`,{message:s});return a().addChatMessage(n,"agent",o.response),o}catch(o){throw a().addChatMessage(n,"system",`query failed: ${o.message}`),o}},async fetchConversations(){try{const n=await D.get("/conversations");e({conversations:n.conversations||n||[]})}catch{}},async createConversation(n,s,o="api"){try{const c=await D.post("/conversations",{provider:n,model:s,mode:o});return e(l=>({conversations:[c,...l.conversations.filter(d=>d.id!==c.id)],activeConversationId:c.id})),localStorage.setItem("groove:activeConversationId",c.id),c}catch(c){throw a().addToast("error","Failed to create conversation",c.message),c}},async setConversationMode(n,s){if(!sU.has(n)){sU.add(n);try{const o=await D.patch(`/conversations/${encodeURIComponent(n)}`,{mode:s});e(c=>({conversations:c.conversations.map(l=>l.id===n?{...l,...o}:l)}))}catch(o){a().addToast("error","Mode change failed",o.message)}finally{sU.delete(n)}}},async setConversationModel(n,s,o){try{const c=await D.patch(`/conversations/${encodeURIComponent(n)}`,{provider:s,model:o});e(l=>({conversations:l.conversations.map(d=>d.id===n?{...d,...c}:d)}))}catch(c){a().addToast("error","Model change failed",c.message)}},async stopChatStreaming(n){try{await D.post(`/conversations/${encodeURIComponent(n)}/stop`),e({sendingMessage:!1,streamingConversationId:null})}catch{}},async deleteConversation(n){try{await D.delete(`/conversations/${encodeURIComponent(n)}`),e(s=>{var x;const o=s.conversations.filter(m=>m.id!==n),c={...s.conversationMessages};delete c[n],wt("groove:conversationMessages",c);const l=s.activeConversationId===n?((x=o[0])==null?void 0:x.id)||null:s.activeConversationId;localStorage.setItem("groove:activeConversationId",l||"");const d={...s.conversationRoles};delete d[n],wt("groove:conversationRoles",d);const h={...s.conversationReasoningEffort};delete h[n],wt("groove:conversationReasoningEffort",h);const f={...s.conversationVerbosity};return delete f[n],wt("groove:conversationVerbosity",f),{conversations:o,conversationMessages:c,conversationRoles:d,conversationReasoningEffort:h,conversationVerbosity:f,activeConversationId:l}})}catch(s){a().addToast("error","Delete failed",s.message)}},async renameConversation(n,s){try{const o=await D.patch(`/conversations/${encodeURIComponent(n)}`,{title:s});e(c=>({conversations:c.conversations.map(l=>l.id===n?{...l,...o}:l)}))}catch(o){a().addToast("error","Rename failed",o.message)}},async pinConversation(n,s){try{const o=await D.patch(`/conversations/${encodeURIComponent(n)}`,{pinned:s});e(c=>({conversations:c.conversations.map(l=>l.id===n?{...l,...o}:l)}))}catch(o){a().addToast("error","Pin failed",o.message)}},setActiveConversation(n){e({activeConversationId:n}),localStorage.setItem("groove:activeConversationId",n||"")},setConversationRole(n,s){e(o=>{const c={...o.conversationRoles};return s?c[n]=s:delete c[n],wt("groove:conversationRoles",c),{conversationRoles:c}})},setConversationReasoningEffort(n,s){e(o=>{const c={...o.conversationReasoningEffort};return c[n]=s||"medium",wt("groove:conversationReasoningEffort",c),{conversationReasoningEffort:c}})},setConversationVerbosity(n,s){e(o=>{const c={...o.conversationVerbosity};return c[n]=s||"medium",wt("groove:conversationVerbosity",c),{conversationVerbosity:c}})},async sendChatMessage(n,s){var c,l,d;const o=a().conversations.find(h=>h.id===n);if(o){e(h=>{const f={...h.conversationMessages};return f[n]||(f[n]=[]),f[n]=[...f[n],{from:"user",text:s,timestamp:Date.now()}],wt("groove:conversationMessages",f),{conversationMessages:f,sendingMessage:!0,streamingConversationId:n}});try{const h={message:s};if(o.mode==="api"||!o.mode){const m=a().conversationMessages[n]||[];h.history=m.slice(0,-1);const y=(c=a().conversationRoles)==null?void 0:c[n],v=["Never use emojis in your responses.","Be professional, concise, and direct."];y&&v.unshift(`You are a professional ${y}. Respond with deep expertise in that domain.`);const O=v.join(" ");h.history=[{from:"user",text:`Instructions: ${O}`},{from:"assistant",text:"Understood."},...h.history]}const f=((l=a().conversationReasoningEffort)==null?void 0:l[n])||"medium",x=((d=a().conversationVerbosity)==null?void 0:d[n])||"medium";o.provider==="codex"&&(h.reasoning_effort=f,h.verbosity=x),await D.post(`/conversations/${encodeURIComponent(n)}/message`,h)}catch(h){e(f=>{const x={...f.conversationMessages};return x[n]||(x[n]=[]),x[n]=[...x[n],{from:"system",text:`Failed: ${h.message}`,timestamp:Date.now()}],wt("groove:conversationMessages",x),{conversationMessages:x,sendingMessage:!1,streamingConversationId:null}}),a().addToast("error","Message failed",h.message)}}},async sendImageMessage(n,s,{model:o,size:c,quality:l}={}){if(a().conversations.find(h=>h.id===n)){e(h=>{const f={...h.conversationMessages};return f[n]||(f[n]=[]),f[n]=[...f[n],{from:"user",text:s,timestamp:Date.now()}],wt("groove:conversationMessages",f),{conversationMessages:f,sendingMessage:!0,streamingConversationId:n}});try{await D.post(`/conversations/${encodeURIComponent(n)}/generate-image`,{prompt:s,model:o,size:c,quality:l})}catch(h){e(f=>{const x={...f.conversationMessages};return x[n]||(x[n]=[]),x[n]=[...x[n],{from:"system",text:`Image failed: ${h.message}`,timestamp:Date.now()}],wt("groove:conversationMessages",x),{conversationMessages:x,sendingMessage:!1,streamingConversationId:null}}),a().addToast("error","Image generation failed",h.message)}}},async openFile(n){var c;if(a().editorFiles[n]||a().editorOpenTabs.includes(n)){e(l=>({editorActiveFile:n,editorOpenTabs:l.editorOpenTabs.includes(n)?l.editorOpenTabs:[...l.editorOpenTabs,n]}));return}const s=(c=n.split(".").pop())==null?void 0:c.toLowerCase();if(["png","jpg","jpeg","gif","svg","webp","ico","bmp","avif","mp4","webm","mov","avi","mkv","ogv"].includes(s)){e(l=>({editorActiveFile:n,editorOpenTabs:[...l.editorOpenTabs,n]}));return}try{const l=await D.get(`/files/read?path=${encodeURIComponent(n)}`);if(l.binary){a().addToast("warning","Binary file — cannot open");return}e(h=>({editorFiles:{...h.editorFiles,[n]:{content:l.content,originalContent:l.content,language:l.language,loadedAt:Date.now()}},editorActiveFile:n,editorOpenTabs:h.editorOpenTabs.includes(n)?h.editorOpenTabs:[...h.editorOpenTabs,n]}));const d=a().ws;(d==null?void 0:d.readyState)===1&&d.send(JSON.stringify({type:"editor:watch",path:n}))}catch(l){a().addToast("error","Failed to open file",l.message)}},closeFile(n){e(o=>{const c=o.editorOpenTabs.filter(f=>f!==n),l={...o.editorFiles};delete l[n];const d={...o.editorChangedFiles};delete d[n];let h=o.editorActiveFile;if(h===n){const f=o.editorOpenTabs.indexOf(n);h=c[Math.min(f,c.length-1)]||null}return{editorOpenTabs:c,editorFiles:l,editorChangedFiles:d,editorActiveFile:h}});const s=a().ws;(s==null?void 0:s.readyState)===1&&s.send(JSON.stringify({type:"editor:unwatch",path:n}))},setActiveFile(n){e({editorActiveFile:n})},setEditorSidebarWidth(n){e({editorSidebarWidth:n}),localStorage.setItem("groove:editorSidebarWidth",String(n))},updateFileContent(n,s){e(o=>({editorFiles:{...o.editorFiles,[n]:{...o.editorFiles[n],content:s}}}))},async saveFile(n){const s=a().editorFiles[n];if(s)try{await D.post("/files/write",{path:n,content:s.content}),e(o=>({editorFiles:{...o.editorFiles,[n]:{...o.editorFiles[n],originalContent:s.content}},editorChangedFiles:(()=>{const c={...o.editorChangedFiles};return delete c[n],c})(),editorRecentSaves:{...o.editorRecentSaves,[n]:Date.now()}})),a().addToast("success","File saved")}catch(o){a().addToast("error","Save failed",o.message)}},async reloadFile(n){try{const s=await D.get(`/files/read?path=${encodeURIComponent(n)}`);if(s.binary)return;e(o=>({editorFiles:{...o.editorFiles,[n]:{content:s.content,originalContent:s.content,language:s.language,loadedAt:Date.now()}},editorChangedFiles:(()=>{const c={...o.editorChangedFiles};return delete c[n],c})()}))}catch{}},dismissFileChange(n){e(s=>{const o={...s.editorChangedFiles};return delete o[n],{editorChangedFiles:o}})},async fetchTreeDir(n){try{const s=await D.get(`/files/tree?path=${encodeURIComponent(n)}`);e(o=>({editorTreeCache:{...o.editorTreeCache,[n]:s.entries||[]}}))}catch(s){console.error("[file-tree] fetchTreeDir failed for",n,s.message),e(o=>({editorTreeCache:{...o.editorTreeCache,[n]:[]}}))}},async createFile(n){try{await D.post("/files/create",{path:n});const s=n.includes("/")?n.split("/").slice(0,-1).join("/"):"";return await a().fetchTreeDir(s),a().addToast("success","File created"),!0}catch(s){return a().addToast("error","Create failed",s.message),!1}},async createDir(n){try{await D.post("/files/mkdir",{path:n});const s=n.includes("/")?n.split("/").slice(0,-1).join("/"):"";return await a().fetchTreeDir(s),a().addToast("success","Folder created"),!0}catch(s){return a().addToast("error","Create failed",s.message),!1}},async deleteFile(n){try{await D.delete(`/files/delete?path=${encodeURIComponent(n)}`),a().editorOpenTabs.includes(n)&&a().closeFile(n);const s=n.includes("/")?n.split("/").slice(0,-1).join("/"):"";return await a().fetchTreeDir(s),e(o=>{const c={...o.editorTreeCache};return delete c[n],{editorTreeCache:c}}),a().addToast("success","Deleted"),!0}catch(s){return a().addToast("error","Delete failed",s.message),!1}},setWorkspaceMode(n){var s,o;if(e({workspaceMode:n}),localStorage.setItem("groove:workspaceMode",String(n)),n){const c=a().agents.filter(f=>f.teamId===a().activeTeamId),l=a().workspaceAgentId;if(!(l&&c.some(f=>f.id===l))){const f=((s=a().detailPanel)==null?void 0:s.type)==="agent"?a().detailPanel.agentId:null,x=f&&c.some(y=>y.id===f),m=c.find(y=>y.status==="running");e({workspaceAgentId:(x?f:null)||(m==null?void 0:m.id)||((o=c[0])==null?void 0:o.id)||null})}const h=a().workspaceAgentId;h&&a().selectAgent(h)}},setWorkspaceAgent(n){e({workspaceAgentId:n}),n&&a().selectAgent(n)},captureSnapshot(n,s){e(o=>{if(o.workspaceSnapshots[n])return o;const c={...o.workspaceSnapshots,[n]:s},l=Object.keys(c);return l.length>200&&delete c[l[0]],{workspaceSnapshots:c}})},async toggleReviewMode(){const n=a();if(n.workspaceReviewMode){e({workspaceReviewMode:!1,workspaceReviewFiles:[]});return}const s=n.workspaceAgentId;if(s)try{const l=((await D.get(`/agents/${s}/files-touched`)).data||[]).filter(d=>d.writes>0).map(d=>({path:d.path,status:"pending",comment:""}));e({workspaceReviewMode:!0,workspaceReviewFiles:l})}catch(o){console.error("Failed to fetch touched files for review:",o)}},approveFile(n){e(s=>({workspaceReviewFiles:s.workspaceReviewFiles.map(o=>o.path===n?{...o,status:"approved"}:o)}))},rejectFile(n){e(s=>({workspaceReviewFiles:s.workspaceReviewFiles.map(o=>o.path===n?{...o,status:"rejected"}:o)}))},commentFile(n,s){e(o=>({workspaceReviewFiles:o.workspaceReviewFiles.map(c=>c.path===n?{...c,comment:s}:c)}))},async fetchFederationStatus(){try{const n=await D.get("/federation");return e(s=>{var o;return{federation:{...s.federation,peers:n.peers||[],whitelist:n.whitelist||[],connections:n.connections||[],ambassadors:((o=n.ambassadors)==null?void 0:o.ambassadors)||n.ambassadors||[]}}}),n}catch{return null}},async addToWhitelist(n,s=31415,o){try{await D.post("/federation/whitelist",{ip:n,port:s,...o&&{name:o}}),a().addToast("success",`Added ${n} to whitelist`),a().fetchFederationStatus()}catch(c){throw a().addToast("error","Whitelist failed",c.message),c}},async removeFromWhitelist(n){try{await D.delete(`/federation/whitelist/${encodeURIComponent(n)}`),a().addToast("info",`Removed ${n}`),a().fetchFederationStatus()}catch(s){a().addToast("error","Remove failed",s.message)}},setSelectedPeer(n){e(s=>({federation:{...s.federation,selectedPeerId:n}}))},async fetchPouchLog(n){try{const s=await D.get(`/federation/pouch/log${n?`?peerId=${encodeURIComponent(n)}`:""}`);e(o=>({federation:{...o.federation,pouchLog:s||[]}}))}catch{}},async sendPouch(n,s){try{const o=await D.post("/federation/pouch/send",{peerId:n,contract:s});return a().addToast("success","Pouch sent"),o}catch(o){throw a().addToast("error","Pouch send failed",o.message),o}},async disconnectPeer(n){try{await D.delete(`/federation/peers/${encodeURIComponent(n)}`),a().addToast("info","Peer disconnected"),a().fetchFederationStatus()}catch(s){a().addToast("error","Disconnect failed",s.message)}},async setTrainingOptIn(n){var s;try{await D.post("/training/opt-in",{enabled:n}),e({trainingOptIn:n}),n||e({trainingStats:null})}catch(o){a().addToast("error","Failed to update training preference",((s=o.body)==null?void 0:s.detail)||o.message)}},async fetchTrainingStatus(){try{const n=await D.get("/training/status");e({trainingOptIn:n.optedIn,trainingStats:n})}catch{}},async fetchBetaStatus(){try{const n=await D.get("/beta/status");e({networkUnlocked:!!(n!=null&&n.unlocked)})}catch{}},async activateBeta(n){const s=await D.post("/beta/activate",{code:n});if(!(s!=null&&s.unlocked))throw new Error((s==null?void 0:s.message)||"Invalid invite code");return e({networkUnlocked:!0}),s},async deactivateBeta(){try{await D.post("/beta/deactivate"),e({networkUnlocked:!1,activeView:a().activeView==="network"?"agents":a().activeView})}catch(n){throw a().addToast("error","Deactivate failed",n.message),n}},async fetchNetworkNodeStatus(){try{const n=await D.get("/network/node/status"),s={networkNode:{...a().networkNode,...n||{}}};return n&&typeof n.installed=="boolean"&&(s.networkInstalled=n.installed),e(s),n}catch{return null}},async fetchNetworkInstallStatus(){try{const n=await D.get("/network/install/status");return n&&typeof n.installed=="boolean"&&e({networkInstalled:n.installed}),n}catch{return null}},async installNetworkPackage(){e({networkInstallProgress:{installing:!0,step:"starting",message:"Starting install…",percent:0,error:null}});try{await D.post("/network/install")}catch(n){e({networkInstallProgress:{installing:!1,step:"error",message:n.message,percent:0,error:n.message}}),a().addToast("error","Install failed",n.message)}},async uninstallNetworkPackage(){try{await D.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}}),a().addToast("success","Network package uninstalled")}catch(n){throw a().addToast("error","Uninstall failed",n.message),n}},async fetchNetworkStatus(){try{const n=await D.get("/network/status"),s={networkStatus:{...a().networkStatus,...n||{}},networkStatusReachable:!0};if(n!=null&&n.compute){const o=n.compute;s.networkCompute={totalRamMb:o.totalRamMb??o.total_ram_mb??0,totalVramMb:o.totalVramMb??o.total_vram_mb??0,totalCpuCores:o.totalCpuCores??o.total_cpu_cores??0,totalBandwidthMbps:o.totalBandwidthMbps??o.total_bandwidth_mbps??0,activeNodes:o.activeNodes??o.active_nodes??0,totalNodes:o.totalNodes??o.total_nodes??0,avgLoad:o.avgLoad??o.avg_load??0}}else if(Array.isArray(n==null?void 0:n.nodes)&&n.nodes.length>0){const o=n.nodes,c=o.filter(l=>l.status==="active");s.networkCompute={totalRamMb:o.reduce((l,d)=>l+(d.ram_mb||0),0),totalVramMb:o.reduce((l,d)=>l+(d.vram_mb||0),0),totalCpuCores:o.reduce((l,d)=>l+(d.cpu_cores||0),0),totalBandwidthMbps:o.reduce((l,d)=>l+(d.bandwidth_mbps||0),0),activeNodes:c.length,totalNodes:o.length,avgLoad:c.length>0?c.reduce((l,d)=>l+(d.load||0),0)/c.length:0}}if(e(s),n){const o=a().networkNode.nodeId,c=n.nodes||[],l=o?c.find(x=>(x.node_id||x.nodeId)===o):null,d=c.filter(x=>x.status==="active"),h={t:Date.now(),globalSessions:n.activeSessions||0,mySessions:(l==null?void 0:l.active_sessions)??(l==null?void 0:l.sessions)??0,nodeCount:d.length,avgLoad:d.length>0?d.reduce((x,m)=>x+(m.load||0),0)/d.length:0,myLoad:(l==null?void 0:l.load)??0,totalVramMb:c.reduce((x,m)=>x+(m.vram_mb||0),0),totalRamMb:c.reduce((x,m)=>x+(m.ram_mb||0),0)};let f=[...a().networkSnapshots,h];f.length>100&&(f=f.slice(-100)),e({networkSnapshots:f})}return n}catch{return e({networkStatusReachable:!1}),null}},async checkNetworkUpdate(){try{const n=await D.get("/network/update/check");return n?(e({networkVersion:{installed:n.installed??null,latest:n.latest??null,updateAvailable:!!n.updateAvailable}}),n):null}catch{return null}},async updateNetworkPackage(){e({networkUpdateProgress:{updating:!0,step:"starting",message:"Starting update…",percent:0,error:null}});try{await D.post("/network/update")}catch(n){e({networkUpdateProgress:{updating:!1,step:"error",message:n.message,percent:0,error:n.message}}),a().addToast("error","Update failed",n.message)}},async startNetworkNode(){e({networkNode:{...a().networkNode,status:"connecting"}});try{const n=await D.post("/network/node/start");return e({networkNode:{...a().networkNode,active:!0,...n||{}}}),a().addToast("success","Node started","Connecting to the Groove network"),n}catch(n){throw e({networkNode:{...a().networkNode,status:"disconnected",active:!1}}),a().addToast("error","Node start failed",n.message),n}},async stopNetworkNode(){try{await D.post("/network/node/stop"),e({networkNode:{...a().networkNode,active:!1,status:"disconnected"}}),a().addToast("info","Node stopped")}catch(n){throw a().addToast("error","Node stop failed",n.message),n}},async fetchNetworkWallet(){return a().networkWallet},async fetchNetworkEarnings(){return a().networkEarnings},async fetchNetworkBenchmarks(){try{const n=await D.get("/network/benchmarks");return Array.isArray(n)&&e({networkBenchmarks:n.slice(-100)}),n}catch{return null}},async fetchNetworkTraces(){try{const n=await D.get("/network/traces");return Array.isArray(n)&&e({networkTraces:n}),n}catch{return null}},async fetchNetworkTrace(n){try{return await D.get(`/network/traces/${encodeURIComponent(n)}`)}catch{return null}},async fetchLiveTrace(n=0){try{return await D.get(`/network/traces/live?offset=${n}`)}catch{return null}},async renameFile(n,s){try{await D.post("/files/rename",{oldPath:n,newPath:s}),e(l=>{const d=l.editorOpenTabs.map(x=>x===n?s:x),h={...l.editorFiles};h[n]&&(h[s]=h[n],delete h[n]);const f=l.editorActiveFile===n?s:l.editorActiveFile;return{editorOpenTabs:d,editorFiles:h,editorActiveFile:f}});const o=n.includes("/")?n.split("/").slice(0,-1).join("/"):"",c=s.includes("/")?s.split("/").slice(0,-1).join("/"):"";return await a().fetchTreeDir(o),c!==o&&await a().fetchTreeDir(c),a().addToast("success","Renamed"),!0}catch(o){return a().addToast("error","Rename failed",o.message),!1}}}));function GX(e){g.useEffect(()=>{function a(n){for(const s of e){const o=s.meta?n.metaKey||n.ctrlKey:!0,c=s.shift?n.shiftKey:!n.shiftKey;if(n.key.toLowerCase()===s.key.toLowerCase()&&o&&c){n.preventDefault(),s.handler();return}}}return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[e])}function ju(){return!!(window.groove||navigator.userAgent.includes("Electron"))}function WX(){var e;return((e=window.groove)==null?void 0:e.platform)||"browser"}function mP(e){window.groove?window.groove.openExternal(e):window.open(e,"_blank")}async function xne(e={}){var a,n;return(n=(a=window.groove)==null?void 0:a.folders)!=null&&n.select?window.groove.folders.select(e):null}async function KX(e){var a,n;if((n=(a=window.groove)==null?void 0:a.integrations)!=null&&n.oauthStart)return window.groove.integrations.oauthStart(e);window.open(e,"_blank","noopener")}function YX(e){var a,n,s="";if(typeof e=="string"||typeof e=="number")s+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(a=0;a<o;a++)e[a]&&(n=YX(e[a]))&&(s&&(s+=" "),s+=n)}else for(n in e)e[n]&&(s&&(s+=" "),s+=n);return s}function mne(){for(var e,a,n=0,s="",o=arguments.length;n<o;n++)(e=arguments[n])&&(a=YX(e))&&(s&&(s+=" "),s+=a);return s}const gne=(e,a)=>{const n=new Array(e.length+a.length);for(let s=0;s<e.length;s++)n[s]=e[s];for(let s=0;s<a.length;s++)n[e.length+s]=a[s];return n},yne=(e,a)=>({classGroupId:e,validator:a}),JX=(e=new Map,a=null,n)=>({nextPart:e,validators:a,classGroupId:n}),SL="-",zq=[],vne="arbitrary..",kne=e=>{const a=bne(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:s}=e;return{getClassGroupId:l=>{if(l.startsWith("[")&&l.endsWith("]"))return One(l);const d=l.split(SL),h=d[0]===""&&d.length>1?1:0;return eZ(d,h,a)},getConflictingClassGroupIds:(l,d)=>{if(d){const h=s[l],f=n[l];return h?f?gne(f,h):h:f||zq}return n[l]||zq}}},eZ=(e,a,n)=>{if(e.length-a===0)return n.classGroupId;const o=e[a],c=n.nextPart.get(o);if(c){const f=eZ(e,a+1,c);if(f)return f}const l=n.validators;if(l===null)return;const d=a===0?e.join(SL):e.slice(a).join(SL),h=l.length;for(let f=0;f<h;f++){const x=l[f];if(x.validator(d))return x.classGroupId}},One=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const a=e.slice(1,-1),n=a.indexOf(":"),s=a.slice(0,n);return s?vne+s:void 0})(),bne=e=>{const{theme:a,classGroups:n}=e;return wne(n,a)},wne=(e,a)=>{const n=JX();for(const s in e){const o=e[s];vE(o,n,s,a)}return n},vE=(e,a,n,s)=>{const o=e.length;for(let c=0;c<o;c++){const l=e[c];Cne(l,a,n,s)}},Cne=(e,a,n,s)=>{if(typeof e=="string"){jne(e,a,n);return}if(typeof e=="function"){Mne(e,a,n,s);return}Sne(e,a,n,s)},jne=(e,a,n)=>{const s=e===""?a:tZ(a,e);s.classGroupId=n},Mne=(e,a,n,s)=>{if(Qne(e)){vE(e(s),a,n,s);return}a.validators===null&&(a.validators=[]),a.validators.push(yne(n,e))},Sne=(e,a,n,s)=>{const o=Object.entries(e),c=o.length;for(let l=0;l<c;l++){const[d,h]=o[l];vE(h,tZ(a,d),n,s)}},tZ=(e,a)=>{let n=e;const s=a.split(SL),o=s.length;for(let c=0;c<o;c++){const l=s[c];let d=n.nextPart.get(l);d||(d=JX(),n.nextPart.set(l,d)),n=d}return n},Qne=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,Nne=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,n=Object.create(null),s=Object.create(null);const o=(c,l)=>{n[c]=l,a++,a>e&&(a=0,s=n,n=Object.create(null))};return{get(c){let l=n[c];if(l!==void 0)return l;if((l=s[c])!==void 0)return o(c,l),l},set(c,l){c in n?n[c]=l:o(c,l)}}},gP="!",Fq=":",Bne=[],Rq=(e,a,n,s,o)=>({modifiers:e,hasImportantModifier:a,baseClassName:n,maybePostfixModifierPosition:s,isExternal:o}),_ne=e=>{const{prefix:a,experimentalParseClassName:n}=e;let s=o=>{const c=[];let l=0,d=0,h=0,f;const x=o.length;for(let w=0;w<x;w++){const j=o[w];if(l===0&&d===0){if(j===Fq){c.push(o.slice(h,w)),h=w+1;continue}if(j==="/"){f=w;continue}}j==="["?l++:j==="]"?l--:j==="("?d++:j===")"&&d--}const m=c.length===0?o:o.slice(h);let y=m,v=!1;m.endsWith(gP)?(y=m.slice(0,-1),v=!0):m.startsWith(gP)&&(y=m.slice(1),v=!0);const O=f&&f>h?f-h:void 0;return Rq(c,v,y,O)};if(a){const o=a+Fq,c=s;s=l=>l.startsWith(o)?c(l.slice(o.length)):Rq(Bne,!1,l,void 0,!0)}if(n){const o=s;s=c=>n({className:c,parseClassName:o})}return s},Lne=e=>{const a=new Map;return e.orderSensitiveModifiers.forEach((n,s)=>{a.set(n,1e6+s)}),n=>{const s=[];let o=[];for(let c=0;c<n.length;c++){const l=n[c],d=l[0]==="[",h=a.has(l);d||h?(o.length>0&&(o.sort(),s.push(...o),o=[]),s.push(l)):o.push(l)}return o.length>0&&(o.sort(),s.push(...o)),s}},Tne=e=>({cache:Nne(e.cacheSize),parseClassName:_ne(e),sortModifiers:Lne(e),...kne(e)}),$ne=/\s+/,Ine=(e,a)=>{const{parseClassName:n,getClassGroupId:s,getConflictingClassGroupIds:o,sortModifiers:c}=a,l=[],d=e.trim().split($ne);let h="";for(let f=d.length-1;f>=0;f-=1){const x=d[f],{isExternal:m,modifiers:y,hasImportantModifier:v,baseClassName:O,maybePostfixModifierPosition:w}=n(x);if(m){h=x+(h.length>0?" "+h:h);continue}let j=!!w,C=s(j?O.substring(0,w):O);if(!C){if(!j){h=x+(h.length>0?" "+h:h);continue}if(C=s(O),!C){h=x+(h.length>0?" "+h:h);continue}j=!1}const S=y.length===0?"":y.length===1?y[0]:c(y).join(":"),B=v?S+gP:S,Q=B+C;if(l.indexOf(Q)>-1)continue;l.push(Q);const T=o(C,j);for(let N=0;N<T.length;++N){const M=T[N];l.push(B+M)}h=x+(h.length>0?" "+h:h)}return h},Une=(...e)=>{let a=0,n,s,o="";for(;a<e.length;)(n=e[a++])&&(s=aZ(n))&&(o&&(o+=" "),o+=s);return o},aZ=e=>{if(typeof e=="string")return e;let a,n="";for(let s=0;s<e.length;s++)e[s]&&(a=aZ(e[s]))&&(n&&(n+=" "),n+=a);return n},Pne=(e,...a)=>{let n,s,o,c;const l=h=>{const f=a.reduce((x,m)=>m(x),e());return n=Tne(f),s=n.cache.get,o=n.cache.set,c=d,d(h)},d=h=>{const f=s(h);if(f)return f;const x=Ine(h,n);return o(h,x),x};return c=l,(...h)=>c(Une(...h))},Ene=[],na=e=>{const a=n=>n[e]||Ene;return a.isThemeGetter=!0,a},nZ=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,sZ=/^\((?:(\w[\w-]*):)?(.+)\)$/i,zne=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Fne=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Rne=/\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$/,Hne=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,qne=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Dne=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,mo=e=>zne.test(e),Xe=e=>!!e&&!Number.isNaN(Number(e)),go=e=>!!e&&Number.isInteger(Number(e)),rU=e=>e.endsWith("%")&&Xe(e.slice(0,-1)),gr=e=>Fne.test(e),rZ=()=>!0,Vne=e=>Rne.test(e)&&!Hne.test(e),kE=()=>!1,Xne=e=>qne.test(e),Zne=e=>Dne.test(e),Gne=e=>!Qe(e)&&!Ne(e),Wne=e=>si(e,cZ,kE),Qe=e=>nZ.test(e),ji=e=>si(e,lZ,Vne),Hq=e=>si(e,sse,Xe),Kne=e=>si(e,dZ,rZ),Yne=e=>si(e,AZ,kE),qq=e=>si(e,oZ,kE),Jne=e=>si(e,iZ,Zne),Cp=e=>si(e,uZ,Xne),Ne=e=>sZ.test(e),Uh=e=>Dd(e,lZ),ese=e=>Dd(e,AZ),Dq=e=>Dd(e,oZ),tse=e=>Dd(e,cZ),ase=e=>Dd(e,iZ),jp=e=>Dd(e,uZ,!0),nse=e=>Dd(e,dZ,!0),si=(e,a,n)=>{const s=nZ.exec(e);return s?s[1]?a(s[1]):n(s[2]):!1},Dd=(e,a,n=!1)=>{const s=sZ.exec(e);return s?s[1]?a(s[1]):n:!1},oZ=e=>e==="position"||e==="percentage",iZ=e=>e==="image"||e==="url",cZ=e=>e==="length"||e==="size"||e==="bg-size",lZ=e=>e==="length",sse=e=>e==="number",AZ=e=>e==="family-name",dZ=e=>e==="number"||e==="weight",uZ=e=>e==="shadow",rse=()=>{const e=na("color"),a=na("font"),n=na("text"),s=na("font-weight"),o=na("tracking"),c=na("leading"),l=na("breakpoint"),d=na("container"),h=na("spacing"),f=na("radius"),x=na("shadow"),m=na("inset-shadow"),y=na("text-shadow"),v=na("drop-shadow"),O=na("blur"),w=na("perspective"),j=na("aspect"),C=na("ease"),S=na("animate"),B=()=>["auto","avoid","all","avoid-page","page","left","right","column"],Q=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],T=()=>[...Q(),Ne,Qe],N=()=>["auto","hidden","clip","visible","scroll"],M=()=>["auto","contain","none"],I=()=>[Ne,Qe,h],F=()=>[mo,"full","auto",...I()],U=()=>[go,"none","subgrid",Ne,Qe],V=()=>["auto",{span:["full",go,Ne,Qe]},go,Ne,Qe],Z=()=>[go,"auto",Ne,Qe],te=()=>["auto","min","max","fr",Ne,Qe],H=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],P=()=>["start","end","center","stretch","center-safe","end-safe"],L=()=>["auto",...I()],z=()=>[mo,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...I()],q=()=>[mo,"screen","full","dvw","lvw","svw","min","max","fit",...I()],X=()=>[mo,"screen","full","lh","dvh","lvh","svh","min","max","fit",...I()],R=()=>[e,Ne,Qe],pe=()=>[...Q(),Dq,qq,{position:[Ne,Qe]}],Y=()=>["no-repeat",{repeat:["","x","y","space","round"]}],W=()=>["auto","cover","contain",tse,Wne,{size:[Ne,Qe]}],de=()=>[rU,Uh,ji],xe=()=>["","none","full",f,Ne,Qe],ie=()=>["",Xe,Uh,ji],J=()=>["solid","dashed","dotted","double"],ke=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ye=()=>[Xe,rU,Dq,qq],Ie=()=>["","none",O,Ne,Qe],Te=()=>["none",Xe,Ne,Qe],Pe=()=>["none",Xe,Ne,Qe],lt=()=>[Xe,Ne,Qe],We=()=>[mo,"full",...I()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[gr],breakpoint:[gr],color:[rZ],container:[gr],"drop-shadow":[gr],ease:["in","out","in-out"],font:[Gne],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[gr],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[gr],shadow:[gr],spacing:["px",Xe],text:[gr],"text-shadow":[gr],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",mo,Qe,Ne,j]}],container:["container"],columns:[{columns:[Xe,Qe,Ne,d]}],"break-after":[{"break-after":B()}],"break-before":[{"break-before":B()}],"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:N()}],"overflow-x":[{"overflow-x":N()}],"overflow-y":[{"overflow-y":N()}],overscroll:[{overscroll:M()}],"overscroll-x":[{"overscroll-x":M()}],"overscroll-y":[{"overscroll-y":M()}],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:[go,"auto",Ne,Qe]}],basis:[{basis:[mo,"full","auto",d,...I()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Xe,mo,"auto","initial","none",Qe]}],grow:[{grow:["",Xe,Ne,Qe]}],shrink:[{shrink:["",Xe,Ne,Qe]}],order:[{order:[go,"first","last","none",Ne,Qe]}],"grid-cols":[{"grid-cols":U()}],"col-start-end":[{col:V()}],"col-start":[{"col-start":Z()}],"col-end":[{"col-end":Z()}],"grid-rows":[{"grid-rows":U()}],"row-start-end":[{row:V()}],"row-start":[{"row-start":Z()}],"row-end":[{"row-end":Z()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":te()}],"auto-rows":[{"auto-rows":te()}],gap:[{gap:I()}],"gap-x":[{"gap-x":I()}],"gap-y":[{"gap-y":I()}],"justify-content":[{justify:[...H(),"normal"]}],"justify-items":[{"justify-items":[...P(),"normal"]}],"justify-self":[{"justify-self":["auto",...P()]}],"align-content":[{content:["normal",...H()]}],"align-items":[{items:[...P(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...P(),{baseline:["","last"]}]}],"place-content":[{"place-content":H()}],"place-items":[{"place-items":[...P(),"baseline"]}],"place-self":[{"place-self":["auto",...P()]}],p:[{p:I()}],px:[{px:I()}],py:[{py:I()}],ps:[{ps:I()}],pe:[{pe:I()}],pbs:[{pbs:I()}],pbe:[{pbe:I()}],pt:[{pt:I()}],pr:[{pr:I()}],pb:[{pb:I()}],pl:[{pl:I()}],m:[{m:L()}],mx:[{mx:L()}],my:[{my:L()}],ms:[{ms:L()}],me:[{me:L()}],mbs:[{mbs:L()}],mbe:[{mbe:L()}],mt:[{mt:L()}],mr:[{mr:L()}],mb:[{mb:L()}],ml:[{ml:L()}],"space-x":[{"space-x":I()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":I()}],"space-y-reverse":["space-y-reverse"],size:[{size:z()}],"inline-size":[{inline:["auto",...q()]}],"min-inline-size":[{"min-inline":["auto",...q()]}],"max-inline-size":[{"max-inline":["none",...q()]}],"block-size":[{block:["auto",...X()]}],"min-block-size":[{"min-block":["auto",...X()]}],"max-block-size":[{"max-block":["none",...X()]}],w:[{w:[d,"screen",...z()]}],"min-w":[{"min-w":[d,"screen","none",...z()]}],"max-w":[{"max-w":[d,"screen","none","prose",{screen:[l]},...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",n,Uh,ji]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[s,nse,Kne]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",rU,Qe]}],"font-family":[{font:[ese,Yne,a]}],"font-features":[{"font-features":[Qe]}],"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:[o,Ne,Qe]}],"line-clamp":[{"line-clamp":[Xe,"none",Ne,Hq]}],leading:[{leading:[c,...I()]}],"list-image":[{"list-image":["none",Ne,Qe]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Ne,Qe]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:R()}],"text-color":[{text:R()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...J(),"wavy"]}],"text-decoration-thickness":[{decoration:[Xe,"from-font","auto",Ne,ji]}],"text-decoration-color":[{decoration:R()}],"underline-offset":[{"underline-offset":[Xe,"auto",Ne,Qe]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:I()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Ne,Qe]}],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",Ne,Qe]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:pe()}],"bg-repeat":[{bg:Y()}],"bg-size":[{bg:W()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},go,Ne,Qe],radial:["",Ne,Qe],conic:[go,Ne,Qe]},ase,Jne]}],"bg-color":[{bg:R()}],"gradient-from-pos":[{from:de()}],"gradient-via-pos":[{via:de()}],"gradient-to-pos":[{to:de()}],"gradient-from":[{from:R()}],"gradient-via":[{via:R()}],"gradient-to":[{to:R()}],rounded:[{rounded:xe()}],"rounded-s":[{"rounded-s":xe()}],"rounded-e":[{"rounded-e":xe()}],"rounded-t":[{"rounded-t":xe()}],"rounded-r":[{"rounded-r":xe()}],"rounded-b":[{"rounded-b":xe()}],"rounded-l":[{"rounded-l":xe()}],"rounded-ss":[{"rounded-ss":xe()}],"rounded-se":[{"rounded-se":xe()}],"rounded-ee":[{"rounded-ee":xe()}],"rounded-es":[{"rounded-es":xe()}],"rounded-tl":[{"rounded-tl":xe()}],"rounded-tr":[{"rounded-tr":xe()}],"rounded-br":[{"rounded-br":xe()}],"rounded-bl":[{"rounded-bl":xe()}],"border-w":[{border:ie()}],"border-w-x":[{"border-x":ie()}],"border-w-y":[{"border-y":ie()}],"border-w-s":[{"border-s":ie()}],"border-w-e":[{"border-e":ie()}],"border-w-bs":[{"border-bs":ie()}],"border-w-be":[{"border-be":ie()}],"border-w-t":[{"border-t":ie()}],"border-w-r":[{"border-r":ie()}],"border-w-b":[{"border-b":ie()}],"border-w-l":[{"border-l":ie()}],"divide-x":[{"divide-x":ie()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ie()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...J(),"hidden","none"]}],"divide-style":[{divide:[...J(),"hidden","none"]}],"border-color":[{border:R()}],"border-color-x":[{"border-x":R()}],"border-color-y":[{"border-y":R()}],"border-color-s":[{"border-s":R()}],"border-color-e":[{"border-e":R()}],"border-color-bs":[{"border-bs":R()}],"border-color-be":[{"border-be":R()}],"border-color-t":[{"border-t":R()}],"border-color-r":[{"border-r":R()}],"border-color-b":[{"border-b":R()}],"border-color-l":[{"border-l":R()}],"divide-color":[{divide:R()}],"outline-style":[{outline:[...J(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Xe,Ne,Qe]}],"outline-w":[{outline:["",Xe,Uh,ji]}],"outline-color":[{outline:R()}],shadow:[{shadow:["","none",x,jp,Cp]}],"shadow-color":[{shadow:R()}],"inset-shadow":[{"inset-shadow":["none",m,jp,Cp]}],"inset-shadow-color":[{"inset-shadow":R()}],"ring-w":[{ring:ie()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:R()}],"ring-offset-w":[{"ring-offset":[Xe,ji]}],"ring-offset-color":[{"ring-offset":R()}],"inset-ring-w":[{"inset-ring":ie()}],"inset-ring-color":[{"inset-ring":R()}],"text-shadow":[{"text-shadow":["none",y,jp,Cp]}],"text-shadow-color":[{"text-shadow":R()}],opacity:[{opacity:[Xe,Ne,Qe]}],"mix-blend":[{"mix-blend":[...ke(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ke()}],"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":[Xe]}],"mask-image-linear-from-pos":[{"mask-linear-from":ye()}],"mask-image-linear-to-pos":[{"mask-linear-to":ye()}],"mask-image-linear-from-color":[{"mask-linear-from":R()}],"mask-image-linear-to-color":[{"mask-linear-to":R()}],"mask-image-t-from-pos":[{"mask-t-from":ye()}],"mask-image-t-to-pos":[{"mask-t-to":ye()}],"mask-image-t-from-color":[{"mask-t-from":R()}],"mask-image-t-to-color":[{"mask-t-to":R()}],"mask-image-r-from-pos":[{"mask-r-from":ye()}],"mask-image-r-to-pos":[{"mask-r-to":ye()}],"mask-image-r-from-color":[{"mask-r-from":R()}],"mask-image-r-to-color":[{"mask-r-to":R()}],"mask-image-b-from-pos":[{"mask-b-from":ye()}],"mask-image-b-to-pos":[{"mask-b-to":ye()}],"mask-image-b-from-color":[{"mask-b-from":R()}],"mask-image-b-to-color":[{"mask-b-to":R()}],"mask-image-l-from-pos":[{"mask-l-from":ye()}],"mask-image-l-to-pos":[{"mask-l-to":ye()}],"mask-image-l-from-color":[{"mask-l-from":R()}],"mask-image-l-to-color":[{"mask-l-to":R()}],"mask-image-x-from-pos":[{"mask-x-from":ye()}],"mask-image-x-to-pos":[{"mask-x-to":ye()}],"mask-image-x-from-color":[{"mask-x-from":R()}],"mask-image-x-to-color":[{"mask-x-to":R()}],"mask-image-y-from-pos":[{"mask-y-from":ye()}],"mask-image-y-to-pos":[{"mask-y-to":ye()}],"mask-image-y-from-color":[{"mask-y-from":R()}],"mask-image-y-to-color":[{"mask-y-to":R()}],"mask-image-radial":[{"mask-radial":[Ne,Qe]}],"mask-image-radial-from-pos":[{"mask-radial-from":ye()}],"mask-image-radial-to-pos":[{"mask-radial-to":ye()}],"mask-image-radial-from-color":[{"mask-radial-from":R()}],"mask-image-radial-to-color":[{"mask-radial-to":R()}],"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":Q()}],"mask-image-conic-pos":[{"mask-conic":[Xe]}],"mask-image-conic-from-pos":[{"mask-conic-from":ye()}],"mask-image-conic-to-pos":[{"mask-conic-to":ye()}],"mask-image-conic-from-color":[{"mask-conic-from":R()}],"mask-image-conic-to-color":[{"mask-conic-to":R()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:pe()}],"mask-repeat":[{mask:Y()}],"mask-size":[{mask:W()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Ne,Qe]}],filter:[{filter:["","none",Ne,Qe]}],blur:[{blur:Ie()}],brightness:[{brightness:[Xe,Ne,Qe]}],contrast:[{contrast:[Xe,Ne,Qe]}],"drop-shadow":[{"drop-shadow":["","none",v,jp,Cp]}],"drop-shadow-color":[{"drop-shadow":R()}],grayscale:[{grayscale:["",Xe,Ne,Qe]}],"hue-rotate":[{"hue-rotate":[Xe,Ne,Qe]}],invert:[{invert:["",Xe,Ne,Qe]}],saturate:[{saturate:[Xe,Ne,Qe]}],sepia:[{sepia:["",Xe,Ne,Qe]}],"backdrop-filter":[{"backdrop-filter":["","none",Ne,Qe]}],"backdrop-blur":[{"backdrop-blur":Ie()}],"backdrop-brightness":[{"backdrop-brightness":[Xe,Ne,Qe]}],"backdrop-contrast":[{"backdrop-contrast":[Xe,Ne,Qe]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Xe,Ne,Qe]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Xe,Ne,Qe]}],"backdrop-invert":[{"backdrop-invert":["",Xe,Ne,Qe]}],"backdrop-opacity":[{"backdrop-opacity":[Xe,Ne,Qe]}],"backdrop-saturate":[{"backdrop-saturate":[Xe,Ne,Qe]}],"backdrop-sepia":[{"backdrop-sepia":["",Xe,Ne,Qe]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":I()}],"border-spacing-x":[{"border-spacing-x":I()}],"border-spacing-y":[{"border-spacing-y":I()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Ne,Qe]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Xe,"initial",Ne,Qe]}],ease:[{ease:["linear","initial",C,Ne,Qe]}],delay:[{delay:[Xe,Ne,Qe]}],animate:[{animate:["none",S,Ne,Qe]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,Ne,Qe]}],"perspective-origin":[{"perspective-origin":T()}],rotate:[{rotate:Te()}],"rotate-x":[{"rotate-x":Te()}],"rotate-y":[{"rotate-y":Te()}],"rotate-z":[{"rotate-z":Te()}],scale:[{scale:Pe()}],"scale-x":[{"scale-x":Pe()}],"scale-y":[{"scale-y":Pe()}],"scale-z":[{"scale-z":Pe()}],"scale-3d":["scale-3d"],skew:[{skew:lt()}],"skew-x":[{"skew-x":lt()}],"skew-y":[{"skew-y":lt()}],transform:[{transform:[Ne,Qe,"","none","gpu","cpu"]}],"transform-origin":[{origin:T()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:We()}],"translate-x":[{"translate-x":We()}],"translate-y":[{"translate-y":We()}],"translate-z":[{"translate-z":We()}],"translate-none":["translate-none"],accent:[{accent:R()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:R()}],"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",Ne,Qe]}],"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":I()}],"scroll-mx":[{"scroll-mx":I()}],"scroll-my":[{"scroll-my":I()}],"scroll-ms":[{"scroll-ms":I()}],"scroll-me":[{"scroll-me":I()}],"scroll-mbs":[{"scroll-mbs":I()}],"scroll-mbe":[{"scroll-mbe":I()}],"scroll-mt":[{"scroll-mt":I()}],"scroll-mr":[{"scroll-mr":I()}],"scroll-mb":[{"scroll-mb":I()}],"scroll-ml":[{"scroll-ml":I()}],"scroll-p":[{"scroll-p":I()}],"scroll-px":[{"scroll-px":I()}],"scroll-py":[{"scroll-py":I()}],"scroll-ps":[{"scroll-ps":I()}],"scroll-pe":[{"scroll-pe":I()}],"scroll-pbs":[{"scroll-pbs":I()}],"scroll-pbe":[{"scroll-pbe":I()}],"scroll-pt":[{"scroll-pt":I()}],"scroll-pr":[{"scroll-pr":I()}],"scroll-pb":[{"scroll-pb":I()}],"scroll-pl":[{"scroll-pl":I()}],"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",Ne,Qe]}],fill:[{fill:["none",...R()]}],"stroke-w":[{stroke:[Xe,Uh,ji,Hq]}],stroke:[{stroke:["none",...R()]}],"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"]}},ose=Pne(rse);function G(...e){return ose(mne(e))}function Ce(e,a,{checkForDefaultPrevented:n=!0}={}){return function(o){if(e==null||e(o),n===!1||!o.defaultPrevented)return a==null?void 0:a(o)}}function Vq(e,a){if(typeof e=="function")return e(a);e!=null&&(e.current=a)}function OE(...e){return a=>{let n=!1;const s=e.map(o=>{const c=Vq(o,a);return!n&&typeof c=="function"&&(n=!0),c});if(n)return()=>{for(let o=0;o<s.length;o++){const c=s[o];typeof c=="function"?c():Vq(e[o],null)}}}}function tt(...e){return g.useCallback(OE(...e),e)}function ise(e,a){const n=g.createContext(a),s=c=>{const{children:l,...d}=c,h=g.useMemo(()=>d,Object.values(d));return t.jsx(n.Provider,{value:h,children:l})};s.displayName=e+"Provider";function o(c){const l=g.useContext(n);if(l)return l;if(a!==void 0)return a;throw new Error(`\`${c}\` must be used within \`${e}\``)}return[s,o]}function Ds(e,a=[]){let n=[];function s(c,l){const d=g.createContext(l),h=n.length;n=[...n,l];const f=m=>{var C;const{scope:y,children:v,...O}=m,w=((C=y==null?void 0:y[e])==null?void 0:C[h])||d,j=g.useMemo(()=>O,Object.values(O));return t.jsx(w.Provider,{value:j,children:v})};f.displayName=c+"Provider";function x(m,y){var w;const v=((w=y==null?void 0:y[e])==null?void 0:w[h])||d,O=g.useContext(v);if(O)return O;if(l!==void 0)return l;throw new Error(`\`${m}\` must be used within \`${c}\``)}return[f,x]}const o=()=>{const c=n.map(l=>g.createContext(l));return function(d){const h=(d==null?void 0:d[e])||c;return g.useMemo(()=>({[`__scope${e}`]:{...d,[e]:h}}),[d,h])}};return o.scopeName=e,[s,cse(o,...a)]}function cse(...e){const a=e[0];if(e.length===1)return a;const n=()=>{const s=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(c){const l=s.reduce((d,{useScope:h,scopeName:f})=>{const m=h(c)[`__scope${f}`];return{...d,...m}},{});return g.useMemo(()=>({[`__scope${a.scopeName}`]:l}),[l])}};return n.scopeName=a.scopeName,n}function Mu(e){const a=lse(e),n=g.forwardRef((s,o)=>{const{children:c,...l}=s,d=g.Children.toArray(c),h=d.find(dse);if(h){const f=h.props.children,x=d.map(m=>m===h?g.Children.count(f)>1?g.Children.only(null):g.isValidElement(f)?f.props.children:null:m);return t.jsx(a,{...l,ref:o,children:g.isValidElement(f)?g.cloneElement(f,void 0,x):null})}return t.jsx(a,{...l,ref:o,children:c})});return n.displayName=`${e}.Slot`,n}function lse(e){const a=g.forwardRef((n,s)=>{const{children:o,...c}=n;if(g.isValidElement(o)){const l=hse(o),d=use(c,o.props);return o.type!==g.Fragment&&(d.ref=s?OE(s,l):l),g.cloneElement(o,d)}return g.Children.count(o)>1?g.Children.only(null):null});return a.displayName=`${e}.SlotClone`,a}var hZ=Symbol("radix.slottable");function Ase(e){const a=({children:n})=>t.jsx(t.Fragment,{children:n});return a.displayName=`${e}.Slottable`,a.__radixId=hZ,a}function dse(e){return g.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===hZ}function use(e,a){const n={...a};for(const s in a){const o=e[s],c=a[s];/^on[A-Z]/.test(s)?o&&c?n[s]=(...d)=>{const h=c(...d);return o(...d),h}:o&&(n[s]=o):s==="style"?n[s]={...o,...c}:s==="className"&&(n[s]=[o,c].filter(Boolean).join(" "))}return{...e,...n}}function hse(e){var s,o;let a=(s=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:s.get,n=a&&"isReactWarning"in a&&a.isReactWarning;return n?e.ref:(a=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=a&&"isReactWarning"in a&&a.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var pse=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Re=pse.reduce((e,a)=>{const n=Mu(`Primitive.${a}`),s=g.forwardRef((o,c)=>{const{asChild:l,...d}=o,h=l?n:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),t.jsx(h,{...d,ref:c})});return s.displayName=`Primitive.${a}`,{...e,[a]:s}},{});function pZ(e,a){e&&iT.flushSync(()=>e.dispatchEvent(a))}function da(e){const a=g.useRef(e);return g.useEffect(()=>{a.current=e}),g.useMemo(()=>(...n)=>{var s;return(s=a.current)==null?void 0:s.call(a,...n)},[])}function fse(e,a=globalThis==null?void 0:globalThis.document){const n=da(e);g.useEffect(()=>{const s=o=>{o.key==="Escape"&&n(o)};return a.addEventListener("keydown",s,{capture:!0}),()=>a.removeEventListener("keydown",s,{capture:!0})},[n,a])}var xse="DismissableLayer",yP="dismissableLayer.update",mse="dismissableLayer.pointerDownOutside",gse="dismissableLayer.focusOutside",Xq,fZ=g.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),a2=g.forwardRef((e,a)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:s,onPointerDownOutside:o,onFocusOutside:c,onInteractOutside:l,onDismiss:d,...h}=e,f=g.useContext(fZ),[x,m]=g.useState(null),y=(x==null?void 0:x.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,v]=g.useState({}),O=tt(a,M=>m(M)),w=Array.from(f.layers),[j]=[...f.layersWithOutsidePointerEventsDisabled].slice(-1),C=w.indexOf(j),S=x?w.indexOf(x):-1,B=f.layersWithOutsidePointerEventsDisabled.size>0,Q=S>=C,T=kse(M=>{const I=M.target,F=[...f.branches].some(U=>U.contains(I));!Q||F||(o==null||o(M),l==null||l(M),M.defaultPrevented||d==null||d())},y),N=Ose(M=>{const I=M.target;[...f.branches].some(U=>U.contains(I))||(c==null||c(M),l==null||l(M),M.defaultPrevented||d==null||d())},y);return fse(M=>{S===f.layers.size-1&&(s==null||s(M),!M.defaultPrevented&&d&&(M.preventDefault(),d()))},y),g.useEffect(()=>{if(x)return n&&(f.layersWithOutsidePointerEventsDisabled.size===0&&(Xq=y.body.style.pointerEvents,y.body.style.pointerEvents="none"),f.layersWithOutsidePointerEventsDisabled.add(x)),f.layers.add(x),Zq(),()=>{n&&f.layersWithOutsidePointerEventsDisabled.size===1&&(y.body.style.pointerEvents=Xq)}},[x,y,n,f]),g.useEffect(()=>()=>{x&&(f.layers.delete(x),f.layersWithOutsidePointerEventsDisabled.delete(x),Zq())},[x,f]),g.useEffect(()=>{const M=()=>v({});return document.addEventListener(yP,M),()=>document.removeEventListener(yP,M)},[]),t.jsx(Re.div,{...h,ref:O,style:{pointerEvents:B?Q?"auto":"none":void 0,...e.style},onFocusCapture:Ce(e.onFocusCapture,N.onFocusCapture),onBlurCapture:Ce(e.onBlurCapture,N.onBlurCapture),onPointerDownCapture:Ce(e.onPointerDownCapture,T.onPointerDownCapture)})});a2.displayName=xse;var yse="DismissableLayerBranch",vse=g.forwardRef((e,a)=>{const n=g.useContext(fZ),s=g.useRef(null),o=tt(a,s);return g.useEffect(()=>{const c=s.current;if(c)return n.branches.add(c),()=>{n.branches.delete(c)}},[n.branches]),t.jsx(Re.div,{...e,ref:o})});vse.displayName=yse;function kse(e,a=globalThis==null?void 0:globalThis.document){const n=da(e),s=g.useRef(!1),o=g.useRef(()=>{});return g.useEffect(()=>{const c=d=>{if(d.target&&!s.current){let h=function(){xZ(mse,n,f,{discrete:!0})};const f={originalEvent:d};d.pointerType==="touch"?(a.removeEventListener("click",o.current),o.current=h,a.addEventListener("click",o.current,{once:!0})):h()}else a.removeEventListener("click",o.current);s.current=!1},l=window.setTimeout(()=>{a.addEventListener("pointerdown",c)},0);return()=>{window.clearTimeout(l),a.removeEventListener("pointerdown",c),a.removeEventListener("click",o.current)}},[a,n]),{onPointerDownCapture:()=>s.current=!0}}function Ose(e,a=globalThis==null?void 0:globalThis.document){const n=da(e),s=g.useRef(!1);return g.useEffect(()=>{const o=c=>{c.target&&!s.current&&xZ(gse,n,{originalEvent:c},{discrete:!1})};return a.addEventListener("focusin",o),()=>a.removeEventListener("focusin",o)},[a,n]),{onFocusCapture:()=>s.current=!0,onBlurCapture:()=>s.current=!1}}function Zq(){const e=new CustomEvent(yP);document.dispatchEvent(e)}function xZ(e,a,n,{discrete:s}){const o=n.originalEvent.target,c=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});a&&o.addEventListener(e,a,{once:!0}),s?pZ(o,c):o.dispatchEvent(c)}var wa=globalThis!=null&&globalThis.document?g.useLayoutEffect:()=>{},bse=FX[" useId ".trim().toString()]||(()=>{}),wse=0;function Br(e){const[a,n]=g.useState(bse());return wa(()=>{n(s=>s??String(wse++))},[e]),a?`radix-${a}`:""}const Cse=["top","right","bottom","left"],ei=Math.min,hn=Math.max,QL=Math.round,Mp=Math.floor,Es=e=>({x:e,y:e}),jse={left:"right",right:"left",bottom:"top",top:"bottom"};function vP(e,a,n){return hn(e,ei(a,n))}function Fr(e,a){return typeof e=="function"?e(a):e}function Rr(e){return e.split("-")[0]}function Pu(e){return e.split("-")[1]}function bE(e){return e==="x"?"y":"x"}function wE(e){return e==="y"?"height":"width"}function Ps(e){const a=e[0];return a==="t"||a==="b"?"y":"x"}function CE(e){return bE(Ps(e))}function Mse(e,a,n){n===void 0&&(n=!1);const s=Pu(e),o=CE(e),c=wE(o);let l=o==="x"?s===(n?"end":"start")?"right":"left":s==="start"?"bottom":"top";return a.reference[c]>a.floating[c]&&(l=NL(l)),[l,NL(l)]}function Sse(e){const a=NL(e);return[kP(e),a,kP(a)]}function kP(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const Gq=["left","right"],Wq=["right","left"],Qse=["top","bottom"],Nse=["bottom","top"];function Bse(e,a,n){switch(e){case"top":case"bottom":return n?a?Wq:Gq:a?Gq:Wq;case"left":case"right":return a?Qse:Nse;default:return[]}}function _se(e,a,n,s){const o=Pu(e);let c=Bse(Rr(e),n==="start",s);return o&&(c=c.map(l=>l+"-"+o),a&&(c=c.concat(c.map(kP)))),c}function NL(e){const a=Rr(e);return jse[a]+e.slice(a.length)}function Lse(e){return{top:0,right:0,bottom:0,left:0,...e}}function mZ(e){return typeof e!="number"?Lse(e):{top:e,right:e,bottom:e,left:e}}function BL(e){const{x:a,y:n,width:s,height:o}=e;return{width:s,height:o,top:n,left:a,right:a+s,bottom:n+o,x:a,y:n}}function Kq(e,a,n){let{reference:s,floating:o}=e;const c=Ps(a),l=CE(a),d=wE(l),h=Rr(a),f=c==="y",x=s.x+s.width/2-o.width/2,m=s.y+s.height/2-o.height/2,y=s[d]/2-o[d]/2;let v;switch(h){case"top":v={x,y:s.y-o.height};break;case"bottom":v={x,y:s.y+s.height};break;case"right":v={x:s.x+s.width,y:m};break;case"left":v={x:s.x-o.width,y:m};break;default:v={x:s.x,y:s.y}}switch(Pu(a)){case"start":v[l]-=y*(n&&f?-1:1);break;case"end":v[l]+=y*(n&&f?-1:1);break}return v}async function Tse(e,a){var n;a===void 0&&(a={});const{x:s,y:o,platform:c,rects:l,elements:d,strategy:h}=e,{boundary:f="clippingAncestors",rootBoundary:x="viewport",elementContext:m="floating",altBoundary:y=!1,padding:v=0}=Fr(a,e),O=mZ(v),j=d[y?m==="floating"?"reference":"floating":m],C=BL(await c.getClippingRect({element:(n=await(c.isElement==null?void 0:c.isElement(j)))==null||n?j:j.contextElement||await(c.getDocumentElement==null?void 0:c.getDocumentElement(d.floating)),boundary:f,rootBoundary:x,strategy:h})),S=m==="floating"?{x:s,y:o,width:l.floating.width,height:l.floating.height}:l.reference,B=await(c.getOffsetParent==null?void 0:c.getOffsetParent(d.floating)),Q=await(c.isElement==null?void 0:c.isElement(B))?await(c.getScale==null?void 0:c.getScale(B))||{x:1,y:1}:{x:1,y:1},T=BL(c.convertOffsetParentRelativeRectToViewportRelativeRect?await c.convertOffsetParentRelativeRectToViewportRelativeRect({elements:d,rect:S,offsetParent:B,strategy:h}):S);return{top:(C.top-T.top+O.top)/Q.y,bottom:(T.bottom-C.bottom+O.bottom)/Q.y,left:(C.left-T.left+O.left)/Q.x,right:(T.right-C.right+O.right)/Q.x}}const $se=50,Ise=async(e,a,n)=>{const{placement:s="bottom",strategy:o="absolute",middleware:c=[],platform:l}=n,d=l.detectOverflow?l:{...l,detectOverflow:Tse},h=await(l.isRTL==null?void 0:l.isRTL(a));let f=await l.getElementRects({reference:e,floating:a,strategy:o}),{x,y:m}=Kq(f,s,h),y=s,v=0;const O={};for(let w=0;w<c.length;w++){const j=c[w];if(!j)continue;const{name:C,fn:S}=j,{x:B,y:Q,data:T,reset:N}=await S({x,y:m,initialPlacement:s,placement:y,strategy:o,middlewareData:O,rects:f,platform:d,elements:{reference:e,floating:a}});x=B??x,m=Q??m,O[C]={...O[C],...T},N&&v<$se&&(v++,typeof N=="object"&&(N.placement&&(y=N.placement),N.rects&&(f=N.rects===!0?await l.getElementRects({reference:e,floating:a,strategy:o}):N.rects),{x,y:m}=Kq(f,y,h)),w=-1)}return{x,y:m,placement:y,strategy:o,middlewareData:O}},Use=e=>({name:"arrow",options:e,async fn(a){const{x:n,y:s,placement:o,rects:c,platform:l,elements:d,middlewareData:h}=a,{element:f,padding:x=0}=Fr(e,a)||{};if(f==null)return{};const m=mZ(x),y={x:n,y:s},v=CE(o),O=wE(v),w=await l.getDimensions(f),j=v==="y",C=j?"top":"left",S=j?"bottom":"right",B=j?"clientHeight":"clientWidth",Q=c.reference[O]+c.reference[v]-y[v]-c.floating[O],T=y[v]-c.reference[v],N=await(l.getOffsetParent==null?void 0:l.getOffsetParent(f));let M=N?N[B]:0;(!M||!await(l.isElement==null?void 0:l.isElement(N)))&&(M=d.floating[B]||c.floating[O]);const I=Q/2-T/2,F=M/2-w[O]/2-1,U=ei(m[C],F),V=ei(m[S],F),Z=U,te=M-w[O]-V,H=M/2-w[O]/2+I,P=vP(Z,H,te),L=!h.arrow&&Pu(o)!=null&&H!==P&&c.reference[O]/2-(H<Z?U:V)-w[O]/2<0,z=L?H<Z?H-Z:H-te:0;return{[v]:y[v]+z,data:{[v]:P,centerOffset:H-P-z,...L&&{alignmentOffset:z}},reset:L}}}),Pse=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(a){var n,s;const{placement:o,middlewareData:c,rects:l,initialPlacement:d,platform:h,elements:f}=a,{mainAxis:x=!0,crossAxis:m=!0,fallbackPlacements:y,fallbackStrategy:v="bestFit",fallbackAxisSideDirection:O="none",flipAlignment:w=!0,...j}=Fr(e,a);if((n=c.arrow)!=null&&n.alignmentOffset)return{};const C=Rr(o),S=Ps(d),B=Rr(d)===d,Q=await(h.isRTL==null?void 0:h.isRTL(f.floating)),T=y||(B||!w?[NL(d)]:Sse(d)),N=O!=="none";!y&&N&&T.push(..._se(d,w,O,Q));const M=[d,...T],I=await h.detectOverflow(a,j),F=[];let U=((s=c.flip)==null?void 0:s.overflows)||[];if(x&&F.push(I[C]),m){const H=Mse(o,l,Q);F.push(I[H[0]],I[H[1]])}if(U=[...U,{placement:o,overflows:F}],!F.every(H=>H<=0)){var V,Z;const H=(((V=c.flip)==null?void 0:V.index)||0)+1,P=M[H];if(P&&(!(m==="alignment"?S!==Ps(P):!1)||U.every(q=>Ps(q.placement)===S?q.overflows[0]>0:!0)))return{data:{index:H,overflows:U},reset:{placement:P}};let L=(Z=U.filter(z=>z.overflows[0]<=0).sort((z,q)=>z.overflows[1]-q.overflows[1])[0])==null?void 0:Z.placement;if(!L)switch(v){case"bestFit":{var te;const z=(te=U.filter(q=>{if(N){const X=Ps(q.placement);return X===S||X==="y"}return!0}).map(q=>[q.placement,q.overflows.filter(X=>X>0).reduce((X,R)=>X+R,0)]).sort((q,X)=>q[1]-X[1])[0])==null?void 0:te[0];z&&(L=z);break}case"initialPlacement":L=d;break}if(o!==L)return{reset:{placement:L}}}return{}}}};function Yq(e,a){return{top:e.top-a.height,right:e.right-a.width,bottom:e.bottom-a.height,left:e.left-a.width}}function Jq(e){return Cse.some(a=>e[a]>=0)}const Ese=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(a){const{rects:n,platform:s}=a,{strategy:o="referenceHidden",...c}=Fr(e,a);switch(o){case"referenceHidden":{const l=await s.detectOverflow(a,{...c,elementContext:"reference"}),d=Yq(l,n.reference);return{data:{referenceHiddenOffsets:d,referenceHidden:Jq(d)}}}case"escaped":{const l=await s.detectOverflow(a,{...c,altBoundary:!0}),d=Yq(l,n.floating);return{data:{escapedOffsets:d,escaped:Jq(d)}}}default:return{}}}}},gZ=new Set(["left","top"]);async function zse(e,a){const{placement:n,platform:s,elements:o}=e,c=await(s.isRTL==null?void 0:s.isRTL(o.floating)),l=Rr(n),d=Pu(n),h=Ps(n)==="y",f=gZ.has(l)?-1:1,x=c&&h?-1:1,m=Fr(a,e);let{mainAxis:y,crossAxis:v,alignmentAxis:O}=typeof m=="number"?{mainAxis:m,crossAxis:0,alignmentAxis:null}:{mainAxis:m.mainAxis||0,crossAxis:m.crossAxis||0,alignmentAxis:m.alignmentAxis};return d&&typeof O=="number"&&(v=d==="end"?O*-1:O),h?{x:v*x,y:y*f}:{x:y*f,y:v*x}}const Fse=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(a){var n,s;const{x:o,y:c,placement:l,middlewareData:d}=a,h=await zse(a,e);return l===((n=d.offset)==null?void 0:n.placement)&&(s=d.arrow)!=null&&s.alignmentOffset?{}:{x:o+h.x,y:c+h.y,data:{...h,placement:l}}}}},Rse=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(a){const{x:n,y:s,placement:o,platform:c}=a,{mainAxis:l=!0,crossAxis:d=!1,limiter:h={fn:C=>{let{x:S,y:B}=C;return{x:S,y:B}}},...f}=Fr(e,a),x={x:n,y:s},m=await c.detectOverflow(a,f),y=Ps(Rr(o)),v=bE(y);let O=x[v],w=x[y];if(l){const C=v==="y"?"top":"left",S=v==="y"?"bottom":"right",B=O+m[C],Q=O-m[S];O=vP(B,O,Q)}if(d){const C=y==="y"?"top":"left",S=y==="y"?"bottom":"right",B=w+m[C],Q=w-m[S];w=vP(B,w,Q)}const j=h.fn({...a,[v]:O,[y]:w});return{...j,data:{x:j.x-n,y:j.y-s,enabled:{[v]:l,[y]:d}}}}}},Hse=function(e){return e===void 0&&(e={}),{options:e,fn(a){const{x:n,y:s,placement:o,rects:c,middlewareData:l}=a,{offset:d=0,mainAxis:h=!0,crossAxis:f=!0}=Fr(e,a),x={x:n,y:s},m=Ps(o),y=bE(m);let v=x[y],O=x[m];const w=Fr(d,a),j=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(h){const B=y==="y"?"height":"width",Q=c.reference[y]-c.floating[B]+j.mainAxis,T=c.reference[y]+c.reference[B]-j.mainAxis;v<Q?v=Q:v>T&&(v=T)}if(f){var C,S;const B=y==="y"?"width":"height",Q=gZ.has(Rr(o)),T=c.reference[m]-c.floating[B]+(Q&&((C=l.offset)==null?void 0:C[m])||0)+(Q?0:j.crossAxis),N=c.reference[m]+c.reference[B]+(Q?0:((S=l.offset)==null?void 0:S[m])||0)-(Q?j.crossAxis:0);O<T?O=T:O>N&&(O=N)}return{[y]:v,[m]:O}}}},qse=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(a){var n,s;const{placement:o,rects:c,platform:l,elements:d}=a,{apply:h=()=>{},...f}=Fr(e,a),x=await l.detectOverflow(a,f),m=Rr(o),y=Pu(o),v=Ps(o)==="y",{width:O,height:w}=c.floating;let j,C;m==="top"||m==="bottom"?(j=m,C=y===(await(l.isRTL==null?void 0:l.isRTL(d.floating))?"start":"end")?"left":"right"):(C=m,j=y==="end"?"top":"bottom");const S=w-x.top-x.bottom,B=O-x.left-x.right,Q=ei(w-x[j],S),T=ei(O-x[C],B),N=!a.middlewareData.shift;let M=Q,I=T;if((n=a.middlewareData.shift)!=null&&n.enabled.x&&(I=B),(s=a.middlewareData.shift)!=null&&s.enabled.y&&(M=S),N&&!y){const U=hn(x.left,0),V=hn(x.right,0),Z=hn(x.top,0),te=hn(x.bottom,0);v?I=O-2*(U!==0||V!==0?U+V:hn(x.left,x.right)):M=w-2*(Z!==0||te!==0?Z+te:hn(x.top,x.bottom))}await h({...a,availableWidth:I,availableHeight:M});const F=await l.getDimensions(d.floating);return O!==F.width||w!==F.height?{reset:{rects:!0}}:{}}}};function AT(){return typeof window<"u"}function Eu(e){return yZ(e)?(e.nodeName||"").toLowerCase():"#document"}function xn(e){var a;return(e==null||(a=e.ownerDocument)==null?void 0:a.defaultView)||window}function Vs(e){var a;return(a=(yZ(e)?e.ownerDocument:e.document)||window.document)==null?void 0:a.documentElement}function yZ(e){return AT()?e instanceof Node||e instanceof xn(e).Node:!1}function us(e){return AT()?e instanceof Element||e instanceof xn(e).Element:!1}function qr(e){return AT()?e instanceof HTMLElement||e instanceof xn(e).HTMLElement:!1}function eD(e){return!AT()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof xn(e).ShadowRoot}function n2(e){const{overflow:a,overflowX:n,overflowY:s,display:o}=hs(e);return/auto|scroll|overlay|hidden|clip/.test(a+s+n)&&o!=="inline"&&o!=="contents"}function Dse(e){return/^(table|td|th)$/.test(Eu(e))}function dT(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}const Vse=/transform|translate|scale|rotate|perspective|filter/,Xse=/paint|layout|strict|content/,Mi=e=>!!e&&e!=="none";let oU;function jE(e){const a=us(e)?hs(e):e;return Mi(a.transform)||Mi(a.translate)||Mi(a.scale)||Mi(a.rotate)||Mi(a.perspective)||!ME()&&(Mi(a.backdropFilter)||Mi(a.filter))||Vse.test(a.willChange||"")||Xse.test(a.contain||"")}function Zse(e){let a=ti(e);for(;qr(a)&&!Su(a);){if(jE(a))return a;if(dT(a))return null;a=ti(a)}return null}function ME(){return oU==null&&(oU=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),oU}function Su(e){return/^(html|body|#document)$/.test(Eu(e))}function hs(e){return xn(e).getComputedStyle(e)}function uT(e){return us(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ti(e){if(Eu(e)==="html")return e;const a=e.assignedSlot||e.parentNode||eD(e)&&e.host||Vs(e);return eD(a)?a.host:a}function vZ(e){const a=ti(e);return Su(a)?e.ownerDocument?e.ownerDocument.body:e.body:qr(a)&&n2(a)?a:vZ(a)}function R0(e,a,n){var s;a===void 0&&(a=[]),n===void 0&&(n=!0);const o=vZ(e),c=o===((s=e.ownerDocument)==null?void 0:s.body),l=xn(o);if(c){const d=OP(l);return a.concat(l,l.visualViewport||[],n2(o)?o:[],d&&n?R0(d):[])}else return a.concat(o,R0(o,[],n))}function OP(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function kZ(e){const a=hs(e);let n=parseFloat(a.width)||0,s=parseFloat(a.height)||0;const o=qr(e),c=o?e.offsetWidth:n,l=o?e.offsetHeight:s,d=QL(n)!==c||QL(s)!==l;return d&&(n=c,s=l),{width:n,height:s,$:d}}function SE(e){return us(e)?e:e.contextElement}function W1(e){const a=SE(e);if(!qr(a))return Es(1);const n=a.getBoundingClientRect(),{width:s,height:o,$:c}=kZ(a);let l=(c?QL(n.width):n.width)/s,d=(c?QL(n.height):n.height)/o;return(!l||!Number.isFinite(l))&&(l=1),(!d||!Number.isFinite(d))&&(d=1),{x:l,y:d}}const Gse=Es(0);function OZ(e){const a=xn(e);return!ME()||!a.visualViewport?Gse:{x:a.visualViewport.offsetLeft,y:a.visualViewport.offsetTop}}function Wse(e,a,n){return a===void 0&&(a=!1),!n||a&&n!==xn(e)?!1:a}function Pd(e,a,n,s){a===void 0&&(a=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),c=SE(e);let l=Es(1);a&&(s?us(s)&&(l=W1(s)):l=W1(e));const d=Wse(c,n,s)?OZ(c):Es(0);let h=(o.left+d.x)/l.x,f=(o.top+d.y)/l.y,x=o.width/l.x,m=o.height/l.y;if(c){const y=xn(c),v=s&&us(s)?xn(s):s;let O=y,w=OP(O);for(;w&&s&&v!==O;){const j=W1(w),C=w.getBoundingClientRect(),S=hs(w),B=C.left+(w.clientLeft+parseFloat(S.paddingLeft))*j.x,Q=C.top+(w.clientTop+parseFloat(S.paddingTop))*j.y;h*=j.x,f*=j.y,x*=j.x,m*=j.y,h+=B,f+=Q,O=xn(w),w=OP(O)}}return BL({width:x,height:m,x:h,y:f})}function hT(e,a){const n=uT(e).scrollLeft;return a?a.left+n:Pd(Vs(e)).left+n}function bZ(e,a){const n=e.getBoundingClientRect(),s=n.left+a.scrollLeft-hT(e,n),o=n.top+a.scrollTop;return{x:s,y:o}}function Kse(e){let{elements:a,rect:n,offsetParent:s,strategy:o}=e;const c=o==="fixed",l=Vs(s),d=a?dT(a.floating):!1;if(s===l||d&&c)return n;let h={scrollLeft:0,scrollTop:0},f=Es(1);const x=Es(0),m=qr(s);if((m||!m&&!c)&&((Eu(s)!=="body"||n2(l))&&(h=uT(s)),m)){const v=Pd(s);f=W1(s),x.x=v.x+s.clientLeft,x.y=v.y+s.clientTop}const y=l&&!m&&!c?bZ(l,h):Es(0);return{width:n.width*f.x,height:n.height*f.y,x:n.x*f.x-h.scrollLeft*f.x+x.x+y.x,y:n.y*f.y-h.scrollTop*f.y+x.y+y.y}}function Yse(e){return Array.from(e.getClientRects())}function Jse(e){const a=Vs(e),n=uT(e),s=e.ownerDocument.body,o=hn(a.scrollWidth,a.clientWidth,s.scrollWidth,s.clientWidth),c=hn(a.scrollHeight,a.clientHeight,s.scrollHeight,s.clientHeight);let l=-n.scrollLeft+hT(e);const d=-n.scrollTop;return hs(s).direction==="rtl"&&(l+=hn(a.clientWidth,s.clientWidth)-o),{width:o,height:c,x:l,y:d}}const tD=25;function ere(e,a){const n=xn(e),s=Vs(e),o=n.visualViewport;let c=s.clientWidth,l=s.clientHeight,d=0,h=0;if(o){c=o.width,l=o.height;const x=ME();(!x||x&&a==="fixed")&&(d=o.offsetLeft,h=o.offsetTop)}const f=hT(s);if(f<=0){const x=s.ownerDocument,m=x.body,y=getComputedStyle(m),v=x.compatMode==="CSS1Compat"&&parseFloat(y.marginLeft)+parseFloat(y.marginRight)||0,O=Math.abs(s.clientWidth-m.clientWidth-v);O<=tD&&(c-=O)}else f<=tD&&(c+=f);return{width:c,height:l,x:d,y:h}}function tre(e,a){const n=Pd(e,!0,a==="fixed"),s=n.top+e.clientTop,o=n.left+e.clientLeft,c=qr(e)?W1(e):Es(1),l=e.clientWidth*c.x,d=e.clientHeight*c.y,h=o*c.x,f=s*c.y;return{width:l,height:d,x:h,y:f}}function aD(e,a,n){let s;if(a==="viewport")s=ere(e,n);else if(a==="document")s=Jse(Vs(e));else if(us(a))s=tre(a,n);else{const o=OZ(e);s={x:a.x-o.x,y:a.y-o.y,width:a.width,height:a.height}}return BL(s)}function wZ(e,a){const n=ti(e);return n===a||!us(n)||Su(n)?!1:hs(n).position==="fixed"||wZ(n,a)}function are(e,a){const n=a.get(e);if(n)return n;let s=R0(e,[],!1).filter(d=>us(d)&&Eu(d)!=="body"),o=null;const c=hs(e).position==="fixed";let l=c?ti(e):e;for(;us(l)&&!Su(l);){const d=hs(l),h=jE(l);!h&&d.position==="fixed"&&(o=null),(c?!h&&!o:!h&&d.position==="static"&&!!o&&(o.position==="absolute"||o.position==="fixed")||n2(l)&&!h&&wZ(e,l))?s=s.filter(x=>x!==l):o=d,l=ti(l)}return a.set(e,s),s}function nre(e){let{element:a,boundary:n,rootBoundary:s,strategy:o}=e;const l=[...n==="clippingAncestors"?dT(a)?[]:are(a,this._c):[].concat(n),s],d=aD(a,l[0],o);let h=d.top,f=d.right,x=d.bottom,m=d.left;for(let y=1;y<l.length;y++){const v=aD(a,l[y],o);h=hn(v.top,h),f=ei(v.right,f),x=ei(v.bottom,x),m=hn(v.left,m)}return{width:f-m,height:x-h,x:m,y:h}}function sre(e){const{width:a,height:n}=kZ(e);return{width:a,height:n}}function rre(e,a,n){const s=qr(a),o=Vs(a),c=n==="fixed",l=Pd(e,!0,c,a);let d={scrollLeft:0,scrollTop:0};const h=Es(0);function f(){h.x=hT(o)}if(s||!s&&!c)if((Eu(a)!=="body"||n2(o))&&(d=uT(a)),s){const v=Pd(a,!0,c,a);h.x=v.x+a.clientLeft,h.y=v.y+a.clientTop}else o&&f();c&&!s&&o&&f();const x=o&&!s&&!c?bZ(o,d):Es(0),m=l.left+d.scrollLeft-h.x-x.x,y=l.top+d.scrollTop-h.y-x.y;return{x:m,y,width:l.width,height:l.height}}function iU(e){return hs(e).position==="static"}function nD(e,a){if(!qr(e)||hs(e).position==="fixed")return null;if(a)return a(e);let n=e.offsetParent;return Vs(e)===n&&(n=n.ownerDocument.body),n}function CZ(e,a){const n=xn(e);if(dT(e))return n;if(!qr(e)){let o=ti(e);for(;o&&!Su(o);){if(us(o)&&!iU(o))return o;o=ti(o)}return n}let s=nD(e,a);for(;s&&Dse(s)&&iU(s);)s=nD(s,a);return s&&Su(s)&&iU(s)&&!jE(s)?n:s||Zse(e)||n}const ore=async function(e){const a=this.getOffsetParent||CZ,n=this.getDimensions,s=await n(e.floating);return{reference:rre(e.reference,await a(e.floating),e.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function ire(e){return hs(e).direction==="rtl"}const cre={convertOffsetParentRelativeRectToViewportRelativeRect:Kse,getDocumentElement:Vs,getClippingRect:nre,getOffsetParent:CZ,getElementRects:ore,getClientRects:Yse,getDimensions:sre,getScale:W1,isElement:us,isRTL:ire};function jZ(e,a){return e.x===a.x&&e.y===a.y&&e.width===a.width&&e.height===a.height}function lre(e,a){let n=null,s;const o=Vs(e);function c(){var d;clearTimeout(s),(d=n)==null||d.disconnect(),n=null}function l(d,h){d===void 0&&(d=!1),h===void 0&&(h=1),c();const f=e.getBoundingClientRect(),{left:x,top:m,width:y,height:v}=f;if(d||a(),!y||!v)return;const O=Mp(m),w=Mp(o.clientWidth-(x+y)),j=Mp(o.clientHeight-(m+v)),C=Mp(x),B={rootMargin:-O+"px "+-w+"px "+-j+"px "+-C+"px",threshold:hn(0,ei(1,h))||1};let Q=!0;function T(N){const M=N[0].intersectionRatio;if(M!==h){if(!Q)return l();M?l(!1,M):s=setTimeout(()=>{l(!1,1e-7)},1e3)}M===1&&!jZ(f,e.getBoundingClientRect())&&l(),Q=!1}try{n=new IntersectionObserver(T,{...B,root:o.ownerDocument})}catch{n=new IntersectionObserver(T,B)}n.observe(e)}return l(!0),c}function Are(e,a,n,s){s===void 0&&(s={});const{ancestorScroll:o=!0,ancestorResize:c=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:d=typeof IntersectionObserver=="function",animationFrame:h=!1}=s,f=SE(e),x=o||c?[...f?R0(f):[],...a?R0(a):[]]:[];x.forEach(C=>{o&&C.addEventListener("scroll",n,{passive:!0}),c&&C.addEventListener("resize",n)});const m=f&&d?lre(f,n):null;let y=-1,v=null;l&&(v=new ResizeObserver(C=>{let[S]=C;S&&S.target===f&&v&&a&&(v.unobserve(a),cancelAnimationFrame(y),y=requestAnimationFrame(()=>{var B;(B=v)==null||B.observe(a)})),n()}),f&&!h&&v.observe(f),a&&v.observe(a));let O,w=h?Pd(e):null;h&&j();function j(){const C=Pd(e);w&&!jZ(w,C)&&n(),w=C,O=requestAnimationFrame(j)}return n(),()=>{var C;x.forEach(S=>{o&&S.removeEventListener("scroll",n),c&&S.removeEventListener("resize",n)}),m==null||m(),(C=v)==null||C.disconnect(),v=null,h&&cancelAnimationFrame(O)}}const dre=Fse,ure=Rse,hre=Pse,pre=qse,fre=Ese,sD=Use,xre=Hse,mre=(e,a,n)=>{const s=new Map,o={platform:cre,...n},c={...o.platform,_c:s};return Ise(e,a,{...o,platform:c})};var gre=typeof document<"u",yre=function(){},vf=gre?g.useLayoutEffect:yre;function _L(e,a){if(e===a)return!0;if(typeof e!=typeof a)return!1;if(typeof e=="function"&&e.toString()===a.toString())return!0;let n,s,o;if(e&&a&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==a.length)return!1;for(s=n;s--!==0;)if(!_L(e[s],a[s]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(a).length)return!1;for(s=n;s--!==0;)if(!{}.hasOwnProperty.call(a,o[s]))return!1;for(s=n;s--!==0;){const c=o[s];if(!(c==="_owner"&&e.$$typeof)&&!_L(e[c],a[c]))return!1}return!0}return e!==e&&a!==a}function MZ(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function rD(e,a){const n=MZ(e);return Math.round(a*n)/n}function cU(e){const a=g.useRef(e);return vf(()=>{a.current=e}),a}function vre(e){e===void 0&&(e={});const{placement:a="bottom",strategy:n="absolute",middleware:s=[],platform:o,elements:{reference:c,floating:l}={},transform:d=!0,whileElementsMounted:h,open:f}=e,[x,m]=g.useState({x:0,y:0,strategy:n,placement:a,middlewareData:{},isPositioned:!1}),[y,v]=g.useState(s);_L(y,s)||v(s);const[O,w]=g.useState(null),[j,C]=g.useState(null),S=g.useCallback(q=>{q!==N.current&&(N.current=q,w(q))},[]),B=g.useCallback(q=>{q!==M.current&&(M.current=q,C(q))},[]),Q=c||O,T=l||j,N=g.useRef(null),M=g.useRef(null),I=g.useRef(x),F=h!=null,U=cU(h),V=cU(o),Z=cU(f),te=g.useCallback(()=>{if(!N.current||!M.current)return;const q={placement:a,strategy:n,middleware:y};V.current&&(q.platform=V.current),mre(N.current,M.current,q).then(X=>{const R={...X,isPositioned:Z.current!==!1};H.current&&!_L(I.current,R)&&(I.current=R,iT.flushSync(()=>{m(R)}))})},[y,a,n,V,Z]);vf(()=>{f===!1&&I.current.isPositioned&&(I.current.isPositioned=!1,m(q=>({...q,isPositioned:!1})))},[f]);const H=g.useRef(!1);vf(()=>(H.current=!0,()=>{H.current=!1}),[]),vf(()=>{if(Q&&(N.current=Q),T&&(M.current=T),Q&&T){if(U.current)return U.current(Q,T,te);te()}},[Q,T,te,U,F]);const P=g.useMemo(()=>({reference:N,floating:M,setReference:S,setFloating:B}),[S,B]),L=g.useMemo(()=>({reference:Q,floating:T}),[Q,T]),z=g.useMemo(()=>{const q={position:n,left:0,top:0};if(!L.floating)return q;const X=rD(L.floating,x.x),R=rD(L.floating,x.y);return d?{...q,transform:"translate("+X+"px, "+R+"px)",...MZ(L.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:X,top:R}},[n,d,L.floating,x.x,x.y]);return g.useMemo(()=>({...x,update:te,refs:P,elements:L,floatingStyles:z}),[x,te,P,L,z])}const kre=e=>{function a(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:s,padding:o}=typeof e=="function"?e(n):e;return s&&a(s)?s.current!=null?sD({element:s.current,padding:o}).fn(n):{}:s?sD({element:s,padding:o}).fn(n):{}}}},Ore=(e,a)=>{const n=dre(e);return{name:n.name,fn:n.fn,options:[e,a]}},bre=(e,a)=>{const n=ure(e);return{name:n.name,fn:n.fn,options:[e,a]}},wre=(e,a)=>({fn:xre(e).fn,options:[e,a]}),Cre=(e,a)=>{const n=hre(e);return{name:n.name,fn:n.fn,options:[e,a]}},jre=(e,a)=>{const n=pre(e);return{name:n.name,fn:n.fn,options:[e,a]}},Mre=(e,a)=>{const n=fre(e);return{name:n.name,fn:n.fn,options:[e,a]}},Sre=(e,a)=>{const n=kre(e);return{name:n.name,fn:n.fn,options:[e,a]}};var Qre="Arrow",SZ=g.forwardRef((e,a)=>{const{children:n,width:s=10,height:o=5,...c}=e;return t.jsx(Re.svg,{...c,ref:a,width:s,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:t.jsx("polygon",{points:"0,0 30,0 15,10"})})});SZ.displayName=Qre;var Nre=SZ;function Bre(e){const[a,n]=g.useState(void 0);return wa(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const s=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const c=o[0];let l,d;if("borderBoxSize"in c){const h=c.borderBoxSize,f=Array.isArray(h)?h[0]:h;l=f.inlineSize,d=f.blockSize}else l=e.offsetWidth,d=e.offsetHeight;n({width:l,height:d})});return s.observe(e,{box:"border-box"}),()=>s.unobserve(e)}else n(void 0)},[e]),a}var QE="Popper",[QZ,zu]=Ds(QE),[_re,NZ]=QZ(QE),BZ=e=>{const{__scopePopper:a,children:n}=e,[s,o]=g.useState(null);return t.jsx(_re,{scope:a,anchor:s,onAnchorChange:o,children:n})};BZ.displayName=QE;var _Z="PopperAnchor",LZ=g.forwardRef((e,a)=>{const{__scopePopper:n,virtualRef:s,...o}=e,c=NZ(_Z,n),l=g.useRef(null),d=tt(a,l),h=g.useRef(null);return g.useEffect(()=>{const f=h.current;h.current=(s==null?void 0:s.current)||l.current,f!==h.current&&c.onAnchorChange(h.current)}),s?null:t.jsx(Re.div,{...o,ref:d})});LZ.displayName=_Z;var NE="PopperContent",[Lre,Tre]=QZ(NE),TZ=g.forwardRef((e,a)=>{var J,ke,ye,Ie,Te,Pe;const{__scopePopper:n,side:s="bottom",sideOffset:o=0,align:c="center",alignOffset:l=0,arrowPadding:d=0,avoidCollisions:h=!0,collisionBoundary:f=[],collisionPadding:x=0,sticky:m="partial",hideWhenDetached:y=!1,updatePositionStrategy:v="optimized",onPlaced:O,...w}=e,j=NZ(NE,n),[C,S]=g.useState(null),B=tt(a,lt=>S(lt)),[Q,T]=g.useState(null),N=Bre(Q),M=(N==null?void 0:N.width)??0,I=(N==null?void 0:N.height)??0,F=s+(c!=="center"?"-"+c:""),U=typeof x=="number"?x:{top:0,right:0,bottom:0,left:0,...x},V=Array.isArray(f)?f:[f],Z=V.length>0,te={padding:U,boundary:V.filter(Ire),altBoundary:Z},{refs:H,floatingStyles:P,placement:L,isPositioned:z,middlewareData:q}=vre({strategy:"fixed",placement:F,whileElementsMounted:(...lt)=>Are(...lt,{animationFrame:v==="always"}),elements:{reference:j.anchor},middleware:[Ore({mainAxis:o+I,alignmentAxis:l}),h&&bre({mainAxis:!0,crossAxis:!1,limiter:m==="partial"?wre():void 0,...te}),h&&Cre({...te}),jre({...te,apply:({elements:lt,rects:We,availableWidth:Nt,availableHeight:_a})=>{const{width:Ja,height:Ws}=We.reference,za=lt.floating.style;za.setProperty("--radix-popper-available-width",`${Nt}px`),za.setProperty("--radix-popper-available-height",`${_a}px`),za.setProperty("--radix-popper-anchor-width",`${Ja}px`),za.setProperty("--radix-popper-anchor-height",`${Ws}px`)}}),Q&&Sre({element:Q,padding:d}),Ure({arrowWidth:M,arrowHeight:I}),y&&Mre({strategy:"referenceHidden",...te})]}),[X,R]=UZ(L),pe=da(O);wa(()=>{z&&(pe==null||pe())},[z,pe]);const Y=(J=q.arrow)==null?void 0:J.x,W=(ke=q.arrow)==null?void 0:ke.y,de=((ye=q.arrow)==null?void 0:ye.centerOffset)!==0,[xe,ie]=g.useState();return wa(()=>{C&&ie(window.getComputedStyle(C).zIndex)},[C]),t.jsx("div",{ref:H.setFloating,"data-radix-popper-content-wrapper":"",style:{...P,transform:z?P.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:xe,"--radix-popper-transform-origin":[(Ie=q.transformOrigin)==null?void 0:Ie.x,(Te=q.transformOrigin)==null?void 0:Te.y].join(" "),...((Pe=q.hide)==null?void 0:Pe.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:t.jsx(Lre,{scope:n,placedSide:X,onArrowChange:T,arrowX:Y,arrowY:W,shouldHideArrow:de,children:t.jsx(Re.div,{"data-side":X,"data-align":R,...w,ref:B,style:{...w.style,animation:z?void 0:"none"}})})})});TZ.displayName=NE;var $Z="PopperArrow",$re={top:"bottom",right:"left",bottom:"top",left:"right"},IZ=g.forwardRef(function(a,n){const{__scopePopper:s,...o}=a,c=Tre($Z,s),l=$re[c.placedSide];return t.jsx("span",{ref:c.onArrowChange,style:{position:"absolute",left:c.arrowX,top:c.arrowY,[l]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[c.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[c.placedSide],visibility:c.shouldHideArrow?"hidden":void 0},children:t.jsx(Nre,{...o,ref:n,style:{...o.style,display:"block"}})})});IZ.displayName=$Z;function Ire(e){return e!==null}var Ure=e=>({name:"transformOrigin",options:e,fn(a){var j,C,S;const{placement:n,rects:s,middlewareData:o}=a,l=((j=o.arrow)==null?void 0:j.centerOffset)!==0,d=l?0:e.arrowWidth,h=l?0:e.arrowHeight,[f,x]=UZ(n),m={start:"0%",center:"50%",end:"100%"}[x],y=(((C=o.arrow)==null?void 0:C.x)??0)+d/2,v=(((S=o.arrow)==null?void 0:S.y)??0)+h/2;let O="",w="";return f==="bottom"?(O=l?m:`${y}px`,w=`${-h}px`):f==="top"?(O=l?m:`${y}px`,w=`${s.floating.height+h}px`):f==="right"?(O=`${-h}px`,w=l?m:`${v}px`):f==="left"&&(O=`${s.floating.width+h}px`,w=l?m:`${v}px`),{data:{x:O,y:w}}}});function UZ(e){const[a,n="center"]=e.split("-");return[a,n]}var BE=BZ,_E=LZ,LE=TZ,TE=IZ,Pre="Portal",s2=g.forwardRef((e,a)=>{var d;const{container:n,...s}=e,[o,c]=g.useState(!1);wa(()=>c(!0),[]);const l=n||o&&((d=globalThis==null?void 0:globalThis.document)==null?void 0:d.body);return l?Mae.createPortal(t.jsx(Re.div,{...s,ref:a}),l):null});s2.displayName=Pre;function Ere(e,a){return g.useReducer((n,s)=>a[n][s]??n,e)}var Pa=e=>{const{present:a,children:n}=e,s=zre(a),o=typeof n=="function"?n({present:s.isPresent}):g.Children.only(n),c=tt(s.ref,Fre(o));return typeof n=="function"||s.isPresent?g.cloneElement(o,{ref:c}):null};Pa.displayName="Presence";function zre(e){const[a,n]=g.useState(),s=g.useRef(null),o=g.useRef(e),c=g.useRef("none"),l=e?"mounted":"unmounted",[d,h]=Ere(l,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return g.useEffect(()=>{const f=Sp(s.current);c.current=d==="mounted"?f:"none"},[d]),wa(()=>{const f=s.current,x=o.current;if(x!==e){const y=c.current,v=Sp(f);e?h("MOUNT"):v==="none"||(f==null?void 0:f.display)==="none"?h("UNMOUNT"):h(x&&y!==v?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,h]),wa(()=>{if(a){let f;const x=a.ownerDocument.defaultView??window,m=v=>{const w=Sp(s.current).includes(CSS.escape(v.animationName));if(v.target===a&&w&&(h("ANIMATION_END"),!o.current)){const j=a.style.animationFillMode;a.style.animationFillMode="forwards",f=x.setTimeout(()=>{a.style.animationFillMode==="forwards"&&(a.style.animationFillMode=j)})}},y=v=>{v.target===a&&(c.current=Sp(s.current))};return a.addEventListener("animationstart",y),a.addEventListener("animationcancel",m),a.addEventListener("animationend",m),()=>{x.clearTimeout(f),a.removeEventListener("animationstart",y),a.removeEventListener("animationcancel",m),a.removeEventListener("animationend",m)}}else h("ANIMATION_END")},[a,h]),{isPresent:["mounted","unmountSuspended"].includes(d),ref:g.useCallback(f=>{s.current=f?getComputedStyle(f):null,n(f)},[])}}function Sp(e){return(e==null?void 0:e.animationName)||"none"}function Fre(e){var s,o;let a=(s=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:s.get,n=a&&"isReactWarning"in a&&a.isReactWarning;return n?e.ref:(a=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=a&&"isReactWarning"in a&&a.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Rre=FX[" useInsertionEffect ".trim().toString()]||wa;function Qu({prop:e,defaultProp:a,onChange:n=()=>{},caller:s}){const[o,c,l]=Hre({defaultProp:a,onChange:n}),d=e!==void 0,h=d?e:o;{const x=g.useRef(e!==void 0);g.useEffect(()=>{const m=x.current;m!==d&&console.warn(`${s} is changing from ${m?"controlled":"uncontrolled"} to ${d?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),x.current=d},[d,s])}const f=g.useCallback(x=>{var m;if(d){const y=qre(x)?x(e):x;y!==e&&((m=l.current)==null||m.call(l,y))}else c(x)},[d,e,c,l]);return[h,f]}function Hre({defaultProp:e,onChange:a}){const[n,s]=g.useState(e),o=g.useRef(n),c=g.useRef(a);return Rre(()=>{c.current=a},[a]),g.useEffect(()=>{var l;o.current!==n&&((l=c.current)==null||l.call(c,n),o.current=n)},[n,o]),[n,s,c]}function qre(e){return typeof e=="function"}var PZ=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"}),Dre="VisuallyHidden",EZ=g.forwardRef((e,a)=>t.jsx(Re.span,{...e,ref:a,style:{...PZ,...e.style}}));EZ.displayName=Dre;var Vre=EZ,[pT]=Ds("Tooltip",[zu]),fT=zu(),zZ="TooltipProvider",Xre=700,bP="tooltip.open",[Zre,$E]=pT(zZ),FZ=e=>{const{__scopeTooltip:a,delayDuration:n=Xre,skipDelayDuration:s=300,disableHoverableContent:o=!1,children:c}=e,l=g.useRef(!0),d=g.useRef(!1),h=g.useRef(0);return g.useEffect(()=>{const f=h.current;return()=>window.clearTimeout(f)},[]),t.jsx(Zre,{scope:a,isOpenDelayedRef:l,delayDuration:n,onOpen:g.useCallback(()=>{window.clearTimeout(h.current),l.current=!1},[]),onClose:g.useCallback(()=>{window.clearTimeout(h.current),h.current=window.setTimeout(()=>l.current=!0,s)},[s]),isPointerInTransitRef:d,onPointerInTransitChange:g.useCallback(f=>{d.current=f},[]),disableHoverableContent:o,children:c})};FZ.displayName=zZ;var H0="Tooltip",[Gre,r2]=pT(H0),RZ=e=>{const{__scopeTooltip:a,children:n,open:s,defaultOpen:o,onOpenChange:c,disableHoverableContent:l,delayDuration:d}=e,h=$E(H0,e.__scopeTooltip),f=fT(a),[x,m]=g.useState(null),y=Br(),v=g.useRef(0),O=l??h.disableHoverableContent,w=d??h.delayDuration,j=g.useRef(!1),[C,S]=Qu({prop:s,defaultProp:o??!1,onChange:M=>{M?(h.onOpen(),document.dispatchEvent(new CustomEvent(bP))):h.onClose(),c==null||c(M)},caller:H0}),B=g.useMemo(()=>C?j.current?"delayed-open":"instant-open":"closed",[C]),Q=g.useCallback(()=>{window.clearTimeout(v.current),v.current=0,j.current=!1,S(!0)},[S]),T=g.useCallback(()=>{window.clearTimeout(v.current),v.current=0,S(!1)},[S]),N=g.useCallback(()=>{window.clearTimeout(v.current),v.current=window.setTimeout(()=>{j.current=!0,S(!0),v.current=0},w)},[w,S]);return g.useEffect(()=>()=>{v.current&&(window.clearTimeout(v.current),v.current=0)},[]),t.jsx(BE,{...f,children:t.jsx(Gre,{scope:a,contentId:y,open:C,stateAttribute:B,trigger:x,onTriggerChange:m,onTriggerEnter:g.useCallback(()=>{h.isOpenDelayedRef.current?N():Q()},[h.isOpenDelayedRef,N,Q]),onTriggerLeave:g.useCallback(()=>{O?T():(window.clearTimeout(v.current),v.current=0)},[T,O]),onOpen:Q,onClose:T,disableHoverableContent:O,children:n})})};RZ.displayName=H0;var wP="TooltipTrigger",HZ=g.forwardRef((e,a)=>{const{__scopeTooltip:n,...s}=e,o=r2(wP,n),c=$E(wP,n),l=fT(n),d=g.useRef(null),h=tt(a,d,o.onTriggerChange),f=g.useRef(!1),x=g.useRef(!1),m=g.useCallback(()=>f.current=!1,[]);return g.useEffect(()=>()=>document.removeEventListener("pointerup",m),[m]),t.jsx(_E,{asChild:!0,...l,children:t.jsx(Re.button,{"aria-describedby":o.open?o.contentId:void 0,"data-state":o.stateAttribute,...s,ref:h,onPointerMove:Ce(e.onPointerMove,y=>{y.pointerType!=="touch"&&!x.current&&!c.isPointerInTransitRef.current&&(o.onTriggerEnter(),x.current=!0)}),onPointerLeave:Ce(e.onPointerLeave,()=>{o.onTriggerLeave(),x.current=!1}),onPointerDown:Ce(e.onPointerDown,()=>{o.open&&o.onClose(),f.current=!0,document.addEventListener("pointerup",m,{once:!0})}),onFocus:Ce(e.onFocus,()=>{f.current||o.onOpen()}),onBlur:Ce(e.onBlur,o.onClose),onClick:Ce(e.onClick,o.onClose)})})});HZ.displayName=wP;var IE="TooltipPortal",[Wre,Kre]=pT(IE,{forceMount:void 0}),qZ=e=>{const{__scopeTooltip:a,forceMount:n,children:s,container:o}=e,c=r2(IE,a);return t.jsx(Wre,{scope:a,forceMount:n,children:t.jsx(Pa,{present:n||c.open,children:t.jsx(s2,{asChild:!0,container:o,children:s})})})};qZ.displayName=IE;var Nu="TooltipContent",DZ=g.forwardRef((e,a)=>{const n=Kre(Nu,e.__scopeTooltip),{forceMount:s=n.forceMount,side:o="top",...c}=e,l=r2(Nu,e.__scopeTooltip);return t.jsx(Pa,{present:s||l.open,children:l.disableHoverableContent?t.jsx(VZ,{side:o,...c,ref:a}):t.jsx(Yre,{side:o,...c,ref:a})})}),Yre=g.forwardRef((e,a)=>{const n=r2(Nu,e.__scopeTooltip),s=$E(Nu,e.__scopeTooltip),o=g.useRef(null),c=tt(a,o),[l,d]=g.useState(null),{trigger:h,onClose:f}=n,x=o.current,{onPointerInTransitChange:m}=s,y=g.useCallback(()=>{d(null),m(!1)},[m]),v=g.useCallback((O,w)=>{const j=O.currentTarget,C={x:O.clientX,y:O.clientY},S=aoe(C,j.getBoundingClientRect()),B=noe(C,S),Q=soe(w.getBoundingClientRect()),T=ooe([...B,...Q]);d(T),m(!0)},[m]);return g.useEffect(()=>()=>y(),[y]),g.useEffect(()=>{if(h&&x){const O=j=>v(j,x),w=j=>v(j,h);return h.addEventListener("pointerleave",O),x.addEventListener("pointerleave",w),()=>{h.removeEventListener("pointerleave",O),x.removeEventListener("pointerleave",w)}}},[h,x,v,y]),g.useEffect(()=>{if(l){const O=w=>{const j=w.target,C={x:w.clientX,y:w.clientY},S=(h==null?void 0:h.contains(j))||(x==null?void 0:x.contains(j)),B=!roe(C,l);S?y():B&&(y(),f())};return document.addEventListener("pointermove",O),()=>document.removeEventListener("pointermove",O)}},[h,x,l,f,y]),t.jsx(VZ,{...e,ref:c})}),[Jre,eoe]=pT(H0,{isInside:!1}),toe=Ase("TooltipContent"),VZ=g.forwardRef((e,a)=>{const{__scopeTooltip:n,children:s,"aria-label":o,onEscapeKeyDown:c,onPointerDownOutside:l,...d}=e,h=r2(Nu,n),f=fT(n),{onClose:x}=h;return g.useEffect(()=>(document.addEventListener(bP,x),()=>document.removeEventListener(bP,x)),[x]),g.useEffect(()=>{if(h.trigger){const m=y=>{const v=y.target;v!=null&&v.contains(h.trigger)&&x()};return window.addEventListener("scroll",m,{capture:!0}),()=>window.removeEventListener("scroll",m,{capture:!0})}},[h.trigger,x]),t.jsx(a2,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:c,onPointerDownOutside:l,onFocusOutside:m=>m.preventDefault(),onDismiss:x,children:t.jsxs(LE,{"data-state":h.stateAttribute,...f,...d,ref:a,style:{...d.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(toe,{children:s}),t.jsx(Jre,{scope:n,isInside:!0,children:t.jsx(Vre,{id:h.contentId,role:"tooltip",children:o||s})})]})})});DZ.displayName=Nu;var XZ="TooltipArrow",ZZ=g.forwardRef((e,a)=>{const{__scopeTooltip:n,...s}=e,o=fT(n);return eoe(XZ,n).isInside?null:t.jsx(TE,{...o,...s,ref:a})});ZZ.displayName=XZ;function aoe(e,a){const n=Math.abs(a.top-e.y),s=Math.abs(a.bottom-e.y),o=Math.abs(a.right-e.x),c=Math.abs(a.left-e.x);switch(Math.min(n,s,o,c)){case c:return"left";case o:return"right";case n:return"top";case s:return"bottom";default:throw new Error("unreachable")}}function noe(e,a,n=5){const s=[];switch(a){case"top":s.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":s.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":s.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":s.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return s}function soe(e){const{top:a,right:n,bottom:s,left:o}=e;return[{x:o,y:a},{x:n,y:a},{x:n,y:s},{x:o,y:s}]}function roe(e,a){const{x:n,y:s}=e;let o=!1;for(let c=0,l=a.length-1;c<a.length;l=c++){const d=a[c],h=a[l],f=d.x,x=d.y,m=h.x,y=h.y;x>s!=y>s&&n<(m-f)*(s-x)/(y-x)+f&&(o=!o)}return o}function ooe(e){const a=e.slice();return a.sort((n,s)=>n.x<s.x?-1:n.x>s.x?1:n.y<s.y?-1:n.y>s.y?1:0),ioe(a)}function ioe(e){if(e.length<=1)return e.slice();const a=[];for(let s=0;s<e.length;s++){const o=e[s];for(;a.length>=2;){const c=a[a.length-1],l=a[a.length-2];if((c.x-l.x)*(o.y-l.y)>=(c.y-l.y)*(o.x-l.x))a.pop();else break}a.push(o)}a.pop();const n=[];for(let s=e.length-1;s>=0;s--){const o=e[s];for(;n.length>=2;){const c=n[n.length-1],l=n[n.length-2];if((c.x-l.x)*(o.y-l.y)>=(c.y-l.y)*(o.x-l.x))n.pop();else break}n.push(o)}return n.pop(),a.length===1&&n.length===1&&a[0].x===n[0].x&&a[0].y===n[0].y?a:a.concat(n)}var coe=FZ,loe=RZ,Aoe=HZ,doe=qZ,uoe=DZ,hoe=ZZ;function poe({children:e}){return t.jsx(coe,{delayDuration:300,children:e})}function qs({children:e,content:a,side:n="top",className:s}){return a?t.jsxs(loe,{children:[t.jsx(Aoe,{asChild:!0,children:e}),t.jsx(doe,{children:t.jsxs(uoe,{side:n,sideOffset:6,className:G("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",s),children:[a,t.jsx(hoe,{className:"fill-surface-4"})]})})]}):e}/**
36
36
  * @license lucide-react v1.11.0 - ISC
37
37
  *
38
38
  * This source code is licensed under the ISC license.