claude-session-dashboard 0.3.0 → 0.3.1

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 (28) hide show
  1. package/dist/client/assets/{_dashboard-I7m6D7BE.js → _dashboard-C-1YOzkf.js} +1 -1
  2. package/dist/client/assets/_sessionId-C4jQeEqE.js +12 -0
  3. package/dist/client/assets/app-DNBe9Acr.css +1 -0
  4. package/dist/client/assets/{createServerFn-Bn6_ISOt.js → createServerFn-B5mibSc4.js} +1 -1
  5. package/dist/client/assets/{index-BkqRvnEf.js → index-C83jHUdL.js} +1 -1
  6. package/dist/client/assets/{main-CfJIADCp.js → main-CkUc_xJ0.js} +2 -2
  7. package/dist/client/assets/{sessions.queries-CrJg4dYU.js → sessions.queries-C-HTNzuR.js} +1 -1
  8. package/dist/client/assets/{settings-C4_lsEzl.js → settings-D56cUmNH.js} +1 -1
  9. package/dist/client/assets/{settings.types-9Qf5WcRY.js → settings.types-l5MKKuAK.js} +1 -1
  10. package/dist/client/assets/{stats-_r1gmaTe.js → stats-BunIdzj_.js} +1 -1
  11. package/dist/client/assets/{useSessionCost-DPZ-ubM1.js → useSessionCost-BDldLkTA.js} +1 -1
  12. package/dist/server/assets/{_sessionId-C-XZIPqn.js → _sessionId-BvDwvNyA.js} +132 -114
  13. package/dist/server/assets/{_tanstack-start-manifest_v-B51mSkGz.js → _tanstack-start-manifest_v-CVdzOaof.js} +1 -1
  14. package/dist/server/assets/{claude-path-BdwflgZ1.js → claude-path-B2oho3NT.js} +2 -2
  15. package/dist/server/assets/{index-CKfH7HpA.js → index-Biupny11.js} +1 -1
  16. package/dist/server/assets/{project-analytics.server-BkWSd6a8.js → project-analytics.server-t1bM6wAa.js} +3 -3
  17. package/dist/server/assets/{router-Cb_hBXHI.js → router-kB-tCwY9.js} +5 -5
  18. package/dist/server/assets/{session-detail.server-DLXl-Pn-.js → session-detail.server-IUw67jz-.js} +2 -2
  19. package/dist/server/assets/{session-parser-CAEXxF1D.js → session-parser-CIucKYBT.js} +67 -0
  20. package/dist/server/assets/{session-scanner-CLfls9u-.js → session-scanner-1h9TTTAV.js} +2 -2
  21. package/dist/server/assets/{sessions.server-CUhasKW2.js → sessions.server-Cpffr3MU.js} +3 -3
  22. package/dist/server/assets/{settings-C0_KyVQQ.js → settings-jxAA3KAS.js} +1 -1
  23. package/dist/server/assets/{stats-BtgVene-.js → stats-CzGBAoxT.js} +1 -1
  24. package/dist/server/assets/{stats.server-qTOvID9-.js → stats.server-DXJiLqey.js} +1 -1
  25. package/dist/server/server.js +13 -13
  26. package/package.json +1 -1
  27. package/dist/client/assets/_sessionId-DEliIff6.js +0 -12
  28. package/dist/client/assets/app-D7yorIIh.css +0 -1
@@ -1 +1 @@
1
- import{j as e,u as o,L as r,O as i}from"./main-CfJIADCp.js";import{u as c}from"./createServerFn-Bn6_ISOt.js";import{a as x}from"./sessions.queries-CrJg4dYU.js";function h(){const{data:t}=c(x),a=t?.length??0;return a===0?null:e.jsx("span",{className:"ml-auto rounded-full bg-emerald-500/20 px-1.5 py-0.5 text-[10px] font-medium text-emerald-400",children:a})}const d=[{to:"/sessions",label:"Sessions",icon:e.jsxs("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[e.jsx("line",{x1:"2",y1:"4",x2:"14",y2:"4"}),e.jsx("line",{x1:"2",y1:"8",x2:"14",y2:"8"}),e.jsx("line",{x1:"2",y1:"12",x2:"14",y2:"12"})]})},{to:"/stats",label:"Stats",icon:e.jsxs("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"currentColor",children:[e.jsx("rect",{x:"1",y:"8",width:"3",height:"7",rx:"0.5"}),e.jsx("rect",{x:"6.5",y:"4",width:"3",height:"11",rx:"0.5"}),e.jsx("rect",{x:"12",y:"1",width:"3",height:"14",rx:"0.5"})]})},{to:"/settings",label:"Settings",icon:e.jsxs("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"currentColor",children:[e.jsx("path",{d:"M8 10a2 2 0 100-4 2 2 0 000 4z"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M6.5.8a1 1 0 011-.8h1a1 1 0 011 .8l.15.9a5.5 5.5 0 011.1.64l.86-.36a1 1 0 011.17.36l.5.86a1 1 0 01-.18 1.17l-.7.55a5.5 5.5 0 010 1.27l.7.55a1 1 0 01.18 1.17l-.5.86a1 1 0 01-1.17.36l-.86-.36a5.5 5.5 0 01-1.1.64l-.14.9a1 1 0 01-1 .8h-1a1 1 0 01-1-.8l-.14-.9a5.5 5.5 0 01-1.1-.64l-.87.36a1 1 0 01-1.17-.36l-.5-.86a1 1 0 01.18-1.17l.7-.55a5.5 5.5 0 010-1.27l-.7-.55a1 1 0 01-.18-1.17l.5-.86a1 1 0 011.17-.36l.87.36a5.5 5.5 0 011.1-.64L6.5.8zM8 11a3 3 0 100-6 3 3 0 000 6z"})]})}];function m({children:t}){const a=o(),l=a[a.length-1]?.pathname??"";return e.jsxs("div",{className:"flex min-h-screen",children:[e.jsxs("aside",{className:"flex w-56 shrink-0 flex-col border-r border-gray-800 bg-gray-950",children:[e.jsx("div",{className:"flex h-14 items-center border-b border-gray-800 px-4",children:e.jsxs(r,{to:"/sessions",className:"text-sm font-bold text-white",children:[e.jsx("span",{className:"text-brand-500",children:"Claude"})," Dashboard"]})}),e.jsx("nav",{className:"flex-1 p-3",children:d.map(s=>{const n=l.startsWith(s.to);return e.jsxs(r,{to:s.to,className:`flex items-center gap-2.5 rounded-lg px-3 py-2 text-sm transition-colors ${n?"bg-gray-800 text-white":"text-gray-400 hover:bg-gray-800/50 hover:text-gray-200"}`,children:[e.jsx("span",{className:"text-gray-500",children:s.icon}),s.label,s.to==="/sessions"&&e.jsx(h,{})]},s.to)})}),e.jsx("div",{className:"border-t border-gray-800 p-3",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("a",{href:"https://github.com/dlupiak/claude-session-dashboard",target:"_blank",rel:"noopener noreferrer",className:"text-gray-500 hover:text-gray-300 transition-colors",title:"GitHub Repository",children:e.jsx("svg",{className:"w-4 h-4",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsx("path",{d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"})})}),e.jsx("a",{href:"https://www.npmjs.com/package/claude-session-dashboard",target:"_blank",rel:"noopener noreferrer",className:"text-gray-500 hover:text-gray-300 transition-colors",title:"npm Package",children:e.jsx("svg",{className:"w-4 h-4",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsx("path",{d:"M0 0v16h16V0H0zm13 13H8V5H5v8H3V3h10v10z"})})})]}),e.jsx("p",{className:"text-xs text-gray-600",children:"Read-only"})]})})]}),e.jsx("main",{className:"flex-1 overflow-auto",children:e.jsx("div",{className:"mx-auto max-w-5xl px-6 py-6",children:t})})]})}function j(){return e.jsx(m,{children:e.jsx(i,{})})}export{j as component};
1
+ import{j as e,u as o,L as r,O as i}from"./main-CkUc_xJ0.js";import{u as c}from"./createServerFn-B5mibSc4.js";import{a as x}from"./sessions.queries-C-HTNzuR.js";function h(){const{data:t}=c(x),a=t?.length??0;return a===0?null:e.jsx("span",{className:"ml-auto rounded-full bg-emerald-500/20 px-1.5 py-0.5 text-[10px] font-medium text-emerald-400",children:a})}const d=[{to:"/sessions",label:"Sessions",icon:e.jsxs("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[e.jsx("line",{x1:"2",y1:"4",x2:"14",y2:"4"}),e.jsx("line",{x1:"2",y1:"8",x2:"14",y2:"8"}),e.jsx("line",{x1:"2",y1:"12",x2:"14",y2:"12"})]})},{to:"/stats",label:"Stats",icon:e.jsxs("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"currentColor",children:[e.jsx("rect",{x:"1",y:"8",width:"3",height:"7",rx:"0.5"}),e.jsx("rect",{x:"6.5",y:"4",width:"3",height:"11",rx:"0.5"}),e.jsx("rect",{x:"12",y:"1",width:"3",height:"14",rx:"0.5"})]})},{to:"/settings",label:"Settings",icon:e.jsxs("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"currentColor",children:[e.jsx("path",{d:"M8 10a2 2 0 100-4 2 2 0 000 4z"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M6.5.8a1 1 0 011-.8h1a1 1 0 011 .8l.15.9a5.5 5.5 0 011.1.64l.86-.36a1 1 0 011.17.36l.5.86a1 1 0 01-.18 1.17l-.7.55a5.5 5.5 0 010 1.27l.7.55a1 1 0 01.18 1.17l-.5.86a1 1 0 01-1.17.36l-.86-.36a5.5 5.5 0 01-1.1.64l-.14.9a1 1 0 01-1 .8h-1a1 1 0 01-1-.8l-.14-.9a5.5 5.5 0 01-1.1-.64l-.87.36a1 1 0 01-1.17-.36l-.5-.86a1 1 0 01.18-1.17l.7-.55a5.5 5.5 0 010-1.27l-.7-.55a1 1 0 01-.18-1.17l.5-.86a1 1 0 011.17-.36l.87.36a5.5 5.5 0 011.1-.64L6.5.8zM8 11a3 3 0 100-6 3 3 0 000 6z"})]})}];function m({children:t}){const a=o(),l=a[a.length-1]?.pathname??"";return e.jsxs("div",{className:"flex min-h-screen",children:[e.jsxs("aside",{className:"flex w-56 shrink-0 flex-col border-r border-gray-800 bg-gray-950",children:[e.jsx("div",{className:"flex h-14 items-center border-b border-gray-800 px-4",children:e.jsxs(r,{to:"/sessions",className:"text-sm font-bold text-white",children:[e.jsx("span",{className:"text-brand-500",children:"Claude"})," Dashboard"]})}),e.jsx("nav",{className:"flex-1 p-3",children:d.map(s=>{const n=l.startsWith(s.to);return e.jsxs(r,{to:s.to,className:`flex items-center gap-2.5 rounded-lg px-3 py-2 text-sm transition-colors ${n?"bg-gray-800 text-white":"text-gray-400 hover:bg-gray-800/50 hover:text-gray-200"}`,children:[e.jsx("span",{className:"text-gray-500",children:s.icon}),s.label,s.to==="/sessions"&&e.jsx(h,{})]},s.to)})}),e.jsx("div",{className:"border-t border-gray-800 p-3",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("a",{href:"https://github.com/dlupiak/claude-session-dashboard",target:"_blank",rel:"noopener noreferrer",className:"text-gray-500 hover:text-gray-300 transition-colors",title:"GitHub Repository",children:e.jsx("svg",{className:"w-4 h-4",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsx("path",{d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"})})}),e.jsx("a",{href:"https://www.npmjs.com/package/claude-session-dashboard",target:"_blank",rel:"noopener noreferrer",className:"text-gray-500 hover:text-gray-300 transition-colors",title:"npm Package",children:e.jsx("svg",{className:"w-4 h-4",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsx("path",{d:"M0 0v16h16V0H0zm13 13H8V5H5v8H3V3h10v10z"})})})]}),e.jsx("p",{className:"text-xs text-gray-600",children:"Read-only"})]})})]}),e.jsx("main",{className:"flex-1 overflow-auto",children:e.jsx("div",{className:"mx-auto max-w-5xl px-6 py-6",children:t})})]})}function j(){return e.jsx(m,{children:e.jsx(i,{})})}export{j as component};
@@ -0,0 +1,12 @@
1
+ import{c as K,r as M,j as e,L as A,h as _,b as Z}from"./main-CkUc_xJ0.js";import{c as J,q as V,u as O}from"./createServerFn-B5mibSc4.js";import{f as C,d as P,b as T,i as H,g as U}from"./format-Bsprb3az.js";import{R as ee,V as se,Y as te,U as ae,a5 as B,W as ne,a6 as le,a7 as re,_ as z,$ as oe,a0 as ie,a8 as ce}from"./useSessionCost-BDldLkTA.js";import{s as de}from"./settings.types-l5MKKuAK.js";import{a as xe}from"./sessions.queries-C-HTNzuR.js";const me=J({method:"GET"}).handler(K("ff8a3161afdfa175e9c519e4146a56ab5bce6e80745e99cfc2191ebbb7a859bb"));function pe(s,a,t){return V({queryKey:["session","detail",s],queryFn:()=>me({data:{sessionId:s,projectPath:a}}),staleTime:t?2e3:3e4,refetchInterval:t?5e3:void 0})}function ue(s,a,t,r){const l=[];for(const o of s)if(o.timestamp){const p=new Date(o.timestamp).getTime();isNaN(p)||l.push(p)}for(const o of a)if(o.timestamp){const p=new Date(o.timestamp).getTime();isNaN(p)||l.push(p)}for(const o of t)if(o.timestamp){const p=new Date(o.timestamp).getTime();isNaN(p)||l.push(p)}if(l.length===0)return{startMs:0,endMs:0,durationMs:0,mainLane:[],agentLanes:[],skillMarkers:[],errorMarkers:[]};const c=Math.min(...l),n=Math.max(...l),m=Math.max(n-c,1);function d(o){return(o-c)/m}const f=new Set(a.map(o=>o.toolUseId)),u=new Set(t.map(o=>o.toolUseId)),y=[];for(const o of s){if(o.type!=="assistant"||o.toolCalls.length===0)continue;const p=new Date(o.timestamp).getTime();if(!isNaN(p))for(const i of o.toolCalls)f.has(i.toolUseId)||u.has(i.toolUseId)||y.push({timestampMs:p,toolName:i.toolName,toolUseId:i.toolUseId,relativeX:d(p)})}const h=a.map(o=>{const p=new Date(o.timestamp).getTime(),i=o.durationMs?p+o.durationMs:p+m*.02,j=[];if(o.toolCalls){const x=Object.entries(o.toolCalls).sort(([,w],[,R])=>R-w),b=x.reduce((w,[,R])=>w+R,0);let g=0;for(const[w,R]of x)for(let F=0;F<R;F++){const q=b>1?g/(b-1):.5,Q=p+(i-p)*q;j.push({toolName:w,count:1,relativeX:d(Q)}),g++}}return{subagentType:o.subagentType,description:o.description,startMs:p,endMs:i,startX:d(p),endX:d(i),durationMs:o.durationMs??null,totalTokens:o.totalTokens??null,totalToolUseCount:o.totalToolUseCount??null,toolDots:j,skills:o.skills?.map(x=>({skill:x.skill,args:x.args}))??[]}}),k=t.map(o=>{const p=new Date(o.timestamp).getTime();return isNaN(p)?null:{skill:o.skill,args:o.args,timestampMs:p,relativeX:d(p)}}).filter(o=>o!==null),v=r.map(o=>{const p=new Date(o.timestamp).getTime();return isNaN(p)?null:{message:o.message,type:o.type,timestampMs:p,relativeX:d(p)}}).filter(o=>o!==null);return{startMs:c,endMs:n,durationMs:m,mainLane:y,agentLanes:h,skillMarkers:k,errorMarkers:v}}function W(s){const a=s.match(/^mcp__[^_]+_[^_]+_[^_]+__(.+)$/);return a?a[1]:s}const he={Read:"#e09070",Grep:"#e09070",Glob:"#e09070",Write:"#34d399",Edit:"#34d399",NotebookEdit:"#34d399",Bash:"#fbbf24",Task:"#818cf8",TaskCreate:"#c084fc",TaskUpdate:"#c084fc",TaskList:"#c084fc",TaskGet:"#c084fc",Skill:"#fcd34d",WebSearch:"#22d3ee",WebFetch:"#22d3ee",EnterPlanMode:"#f472b6",ExitPlanMode:"#f472b6",AskUserQuestion:"#a78bfa"},ge="#9ca3af";function X(s){return he[s]??ge}const S=90,$=16,D=24,N=32,E=8,Y=4;function ye(s,a,t){const r=a-s;if(r<=0)return[];const l=Math.max(3,Math.round(t/120)),c=r/l,n=[5e3,1e4,15e3,3e4,6e4,2*6e4,5*6e4,10*6e4,15*6e4,30*6e4,60*6e4,120*6e4],m=n.find(h=>h>=c)??n[n.length-1],f=r<5*6e4?"HH:mm:ss":"HH:mm",u=Math.ceil(s/m)*m,y=[];for(let h=u;h<=a;h+=m){const k=(h-s)/r;y.push({ms:h,label:C(new Date(h),f),x:S+k*(t-S-$)})}return y}function fe({data:s,width:a,onHover:t}){const r=M.useRef(null),l=a,c=l-S-$,n=s.skillMarkers.length>0,m=s.errorMarkers.length>0;let d=D;const f=d;d+=N;const u=[];for(let i=0;i<s.agentLanes.length;i++)d+=E,u.push(d),d+=N;let y=0;n&&(d+=E,y=d,d+=N);let h=0;m&&(d+=E,h=d,d+=N);const k=Math.max(d+8,80);function v(i){return S+i*c}const o=M.useCallback(i=>{if(!r.current)return{x:0,y:0};const j=r.current.getBoundingClientRect();return{x:i.clientX-j.left,y:i.clientY-j.top}},[]),p=ye(s.startMs,s.endMs,l);return e.jsxs("svg",{ref:r,width:l,height:k,className:"select-none",role:"img","aria-label":"Session timeline showing tool calls, agent runs, and skill invocations",onMouseLeave:()=>t(null,{x:0,y:0}),children:[e.jsx("line",{x1:S,y1:D-4,x2:l-$,y2:D-4,stroke:"#374151",strokeWidth:1}),p.map(i=>e.jsxs("g",{children:[e.jsx("line",{x1:i.x,y1:D-8,x2:i.x,y2:D-4,stroke:"#4b5563",strokeWidth:1}),e.jsx("text",{x:i.x,y:D-12,textAnchor:"middle",className:"fill-gray-500 text-[10px]",children:i.label})]},i.ms)),e.jsx("text",{x:4,y:f+N/2+4,className:"fill-gray-500 text-[11px] font-medium",children:"Main"}),e.jsx("line",{x1:S,y1:f+N/2,x2:l-$,y2:f+N/2,stroke:"#1f2937",strokeWidth:1,strokeDasharray:"2,4"}),s.mainLane.map(i=>e.jsx("circle",{cx:v(i.relativeX),cy:f+N/2,r:Y,fill:X(i.toolName),opacity:.85,className:"cursor-pointer transition-transform hover:opacity-100",onMouseEnter:j=>t({kind:"tool",toolName:i.toolName,timestamp:new Date(i.timestampMs).toISOString(),toolUseId:i.toolUseId},o(j)),onMouseLeave:()=>t(null,{x:0,y:0}),children:e.jsx("title",{children:i.toolName})},i.toolUseId)),s.agentLanes.map((i,j)=>e.jsx(be,{lane:i,y:u[j],toX:v,laneHeight:N,onHover:t,getPosition:o},`${i.subagentType}-${j}`)),n&&e.jsxs(e.Fragment,{children:[e.jsx("text",{x:4,y:y+N/2+4,className:"fill-amber-400/70 text-[11px] font-medium",children:"Skills"}),e.jsx("line",{x1:S,y1:y+N/2,x2:l-$,y2:y+N/2,stroke:"#1f2937",strokeWidth:1,strokeDasharray:"2,4"}),s.skillMarkers.map((i,j)=>{const x=v(i.relativeX),b=y+N/2,g=5;return e.jsx("polygon",{points:`${x},${b-g} ${x+g},${b} ${x},${b+g} ${x-g},${b}`,fill:"#fbbf24",opacity:.85,className:"cursor-pointer hover:opacity-100",onMouseEnter:w=>t({kind:"skill",skill:i.skill,args:i.args,timestamp:new Date(i.timestampMs).toISOString()},o(w)),onMouseLeave:()=>t(null,{x:0,y:0}),children:e.jsxs("title",{children:["/",i.skill]})},`${i.skill}-${j}`)})]}),m&&e.jsxs(e.Fragment,{children:[e.jsx("text",{x:4,y:h+N/2+4,className:"fill-red-400/70 text-[11px] font-medium",children:"Errors"}),e.jsx("line",{x1:S,y1:h+N/2,x2:l-$,y2:h+N/2,stroke:"#1f2937",strokeWidth:1,strokeDasharray:"2,4"}),s.errorMarkers.map((i,j)=>{const x=v(i.relativeX),b=h+N/2,g=5;return e.jsxs("g",{className:"cursor-pointer hover:opacity-100",opacity:.85,onMouseEnter:w=>t({kind:"error",message:i.message,type:i.type,timestamp:new Date(i.timestampMs).toISOString()},o(w)),onMouseLeave:()=>t(null,{x:0,y:0}),children:[e.jsx("line",{x1:x-g,y1:b-g,x2:x+g,y2:b+g,stroke:"#f87171",strokeWidth:2,strokeLinecap:"round"}),e.jsx("line",{x1:x+g,y1:b-g,x2:x-g,y2:b+g,stroke:"#f87171",strokeWidth:2,strokeLinecap:"round"}),e.jsxs("title",{children:[i.type,": ",i.message]})]},`err-${j}`)})]})]})}function be({lane:s,y:a,toX:t,laneHeight:r,onHover:l,getPosition:c}){const n=t(s.startX),m=Math.max(t(s.endX)-n,8),d=a+r/2,f=s.subagentType.length>10?s.subagentType.slice(0,10)+"...":s.subagentType;return e.jsxs("g",{children:[e.jsx("text",{x:4,y:d+4,className:"fill-indigo-400/70 text-[11px] font-medium",children:f}),e.jsx("rect",{x:n,y:a+2,width:m,height:r-4,rx:6,fill:"rgba(99, 102, 241, 0.08)",stroke:"rgba(99, 102, 241, 0.2)",strokeWidth:1,className:"cursor-pointer hover:fill-indigo-500/15",onMouseEnter:u=>l({kind:"agent",agent:s},c(u)),onMouseLeave:()=>l(null,{x:0,y:0}),children:e.jsxs("title",{children:[s.subagentType,": ",s.description]})}),e.jsx("line",{x1:n+4,y1:d,x2:n+m-4,y2:d,stroke:"rgba(99, 102, 241, 0.15)",strokeWidth:1}),s.toolDots.map((u,y)=>e.jsx("circle",{cx:t(u.relativeX),cy:d,r:Y-.5,fill:X(u.toolName),opacity:.75,className:"cursor-pointer hover:opacity-100",onMouseEnter:h=>l({kind:"tool",toolName:u.toolName,timestamp:new Date(s.startMs+(u.relativeX-s.startX)/(s.endX-s.startX)*(s.endMs-s.startMs)).toISOString(),toolUseId:`${s.subagentType}-${u.toolName}-${y}`},c(h)),onMouseLeave:()=>l(null,{x:0,y:0}),children:e.jsxs("title",{children:[u.toolName," (",s.subagentType,")"]})},`${u.toolName}-${y}`)),s.skills&&s.skills.length>0&&s.skills.map((u,y)=>{const h=s.startX+(s.endX-s.startX)/(s.skills.length+1)*(y+1),k=t(h),v=a+6,o=3;return e.jsx("polygon",{points:`${k},${v-o} ${k+o},${v} ${k},${v+o} ${k-o},${v}`,fill:"#fbbf24",opacity:.85,className:"cursor-pointer hover:opacity-100",onMouseEnter:p=>l({kind:"skill",skill:u.skill,args:u.args,timestamp:new Date(s.startMs).toISOString()},c(p)),onMouseLeave:()=>l(null,{x:0,y:0}),children:e.jsxs("title",{children:["/",u.skill," (",s.subagentType,")"]})},`skill-${u.skill}-${y}`)})]})}function je({item:s,position:a}){return e.jsxs("div",{className:"pointer-events-none absolute z-50 rounded-lg border border-gray-700 bg-gray-900 px-3 py-2 text-xs shadow-xl",style:{left:a.x,top:a.y,transform:"translate(-50%, -100%) translateY(-8px)"},children:[s.kind==="tool"&&e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold text-gray-100",children:W(s.toolName)}),e.jsx("div",{className:"text-gray-400",children:C(new Date(s.timestamp),"HH:mm:ss")}),e.jsxs("div",{className:"font-mono text-[10px] text-gray-600",children:[s.toolUseId.slice(0,16),"..."]})]}),s.kind==="agent"&&e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold text-indigo-300",children:s.agent.subagentType}),e.jsx("div",{className:"max-w-48 truncate text-gray-400",children:s.agent.description}),e.jsx("div",{className:"mt-1 flex items-center gap-2 text-gray-500",children:s.agent.durationMs!=null&&e.jsxs("span",{children:[C(new Date(s.agent.startMs),"HH:mm")," -"," ",C(new Date(s.agent.endMs),"HH:mm")," (",P(s.agent.durationMs),")"]})}),e.jsxs("div",{className:"flex items-center gap-2 text-gray-500",children:[s.agent.totalTokens!=null&&e.jsxs("span",{children:[T(s.agent.totalTokens)," tokens"]}),s.agent.totalToolUseCount!=null&&e.jsxs("span",{children:[s.agent.totalToolUseCount," tools"]})]})]}),s.kind==="skill"&&e.jsxs("div",{children:[e.jsxs("div",{className:"font-semibold text-amber-300",children:["/",s.skill]}),s.args&&e.jsx("div",{className:"text-gray-400",children:s.args}),e.jsx("div",{className:"text-gray-500",children:C(new Date(s.timestamp),"HH:mm:ss")})]}),s.kind==="error"&&e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold text-red-400",children:s.type}),e.jsx("div",{className:"max-w-48 truncate text-gray-400",children:s.message}),e.jsx("div",{className:"text-gray-500",children:C(new Date(s.timestamp),"HH:mm:ss")})]})]})}function Ne({toolNames:s}){const a=[...new Set(s)].slice(0,12);return a.length===0?null:e.jsxs("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1 px-1 text-[10px] text-gray-500",children:[a.map(t=>e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"inline-block h-2 w-2 rounded-full",style:{backgroundColor:X(t)}}),e.jsx("span",{children:W(t)})]},t)),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"inline-block h-2 w-2 rotate-45 bg-amber-400"}),e.jsx("span",{children:"Skill"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"text-red-400 font-bold leading-none",children:"×"}),e.jsx("span",{children:"Error"})]})]})}function ve({turns:s,agents:a,skills:t,errors:r}){const l=M.useRef(null),[c,n]=M.useState(0),[m,d]=M.useState(1),[f,u]=M.useState(null);M.useEffect(()=>{if(!l.current)return;const x=new ResizeObserver(b=>{const g=b[0];g&&n(g.contentRect.width)});return x.observe(l.current),()=>x.disconnect()},[]);const y=M.useMemo(()=>ue(s,a,t,r),[s,a,t,r]),h=M.useMemo(()=>{const x=y.mainLane.map(g=>g.toolName);for(const g of y.agentLanes)for(const w of g.toolDots)x.push(w.toolName);const b={};for(const g of x)b[g]=(b[g]??0)+1;return Object.entries(b).sort(([,g],[,w])=>w-g).map(([g])=>g)},[y]),k=(x,b)=>{u(x?{item:x,position:b}:null)};if(s.length===0)return e.jsx("div",{className:"py-8 text-center text-sm text-gray-500",children:"No timeline data available"});const v=new Set(a.map(x=>x.toolUseId)),o=new Set(t.map(x=>x.toolUseId));let p=0,i=0,j=0;for(const x of s)if(x.type==="user"&&x.message?.trim()&&p++,x.type==="assistant"){i++;for(const b of x.toolCalls)!v.has(b.toolUseId)&&!o.has(b.toolUseId)&&j++}return e.jsxs("div",{className:"rounded-xl border border-gray-800 bg-gray-900/50 p-4",children:[e.jsxs("div",{className:"mb-3 flex flex-wrap items-center gap-4",children:[e.jsx(I,{label:"User commands",value:p,color:"blue"}),e.jsx(I,{label:"AI responses",value:i,color:"purple"}),j>0&&e.jsx(I,{label:"Tool calls",value:j,color:"gray"}),a.length>0&&e.jsx(I,{label:"Agents",value:a.length,color:"indigo"}),t.length>0&&e.jsx(I,{label:"Skills",value:t.length,color:"amber"}),r.length>0&&e.jsx(I,{label:"Errors",value:r.length,color:"red"})]}),e.jsxs("div",{className:"mb-3 flex items-start justify-between gap-2",children:[e.jsx("div",{className:"flex-1",children:h.length>0&&e.jsx(Ne,{toolNames:h})}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[e.jsx("button",{type:"button",onClick:()=>d(x=>Math.max(1,x-.5)),disabled:m<=1,className:"rounded bg-gray-800 px-2 py-0.5 text-xs text-gray-300 transition-colors hover:bg-gray-700 disabled:opacity-30",title:"Zoom out",children:"−"}),e.jsx("span",{className:"min-w-[3rem] text-center text-[10px] tabular-nums text-gray-500",children:m===1?"Fit":`${m.toFixed(1)}x`}),e.jsx("button",{type:"button",onClick:()=>d(x=>Math.min(8,x+.5)),disabled:m>=8,className:"rounded bg-gray-800 px-2 py-0.5 text-xs text-gray-300 transition-colors hover:bg-gray-700 disabled:opacity-30",title:"Zoom in",children:"+"}),m>1&&e.jsx("button",{type:"button",onClick:()=>d(1),className:"ml-1 rounded bg-gray-800 px-2 py-0.5 text-[10px] text-gray-400 transition-colors hover:bg-gray-700",title:"Reset zoom",children:"Reset"})]})]}),e.jsx("div",{ref:l,className:"relative overflow-x-auto",children:c>0&&e.jsxs(e.Fragment,{children:[e.jsx(fe,{data:y,width:Math.max(c*m,400),onHover:k}),f&&e.jsx(je,{item:f.item,position:f.position})]})})]})}function I({label:s,value:a,color:t}){const r={blue:"bg-brand-500/15 text-brand-400",purple:"bg-purple-500/15 text-purple-400",gray:"bg-gray-800 text-gray-300",indigo:"bg-indigo-500/15 text-indigo-400",amber:"bg-amber-500/15 text-amber-400",red:"bg-red-500/15 text-red-400"};return e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:`rounded-md px-2 py-1 text-sm font-bold tabular-nums ${r[t]}`,children:a}),e.jsx("span",{className:"text-[11px] text-gray-500",children:s})]})}function ke({contextWindow:s,tokens:a}){const[t,r]=M.useState(!1);if(!s)return e.jsx(we,{tokens:a});const{contextLimit:l,modelName:c,systemOverhead:n,currentContextSize:m,messagesEstimate:d,freeSpace:f,autocompactBuffer:u,usagePercent:y,snapshots:h}=s,k=n/l*100,v=d/l*100,o=u/l*100,p=Math.max(0,100-k-v),i=c.replace(/^claude-/,"").split("-202")[0],j=h.map(x=>({turn:x.turnIndex,context:x.contextSize}));return e.jsxs("div",{className:"rounded-xl border border-gray-800 bg-gray-900/50 p-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-300",children:"Context Window"}),e.jsx("span",{className:"rounded bg-gray-800 px-1.5 py-0.5 text-[10px] font-mono text-gray-400",children:i})]}),e.jsxs("div",{className:"mt-1 flex items-baseline gap-1",children:[e.jsx("span",{className:"text-2xl font-bold text-white",children:T(m)}),e.jsxs("span",{className:"text-sm text-gray-500",children:["/ ",T(l)]}),e.jsxs("span",{className:"text-sm text-gray-400",children:["(",y,"%)"]})]}),e.jsx("p",{className:"text-[10px] text-gray-500",children:"~estimated from token usage"}),e.jsxs("div",{className:"mt-3 flex h-3 overflow-hidden rounded-full bg-gray-800",children:[e.jsx("div",{className:"bg-purple-500",style:{width:`${k}%`},title:`System: ~${T(n)}`}),e.jsx("div",{className:"bg-brand-500",style:{width:`${v}%`},title:`Messages: ~${T(d)}`}),p>0&&e.jsx(e.Fragment,{children:p>o?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"bg-gray-700",style:{width:`${p-o}%`}}),e.jsx("div",{className:"autocompact-stripe",style:{width:`${Math.min(o,p)}%`}})]}):e.jsx("div",{className:"autocompact-stripe",style:{width:`${p}%`}})})]}),e.jsxs("div",{className:"mt-1 flex gap-3 text-[10px] text-gray-500",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"inline-block h-2 w-2 rounded-sm bg-purple-500"}),"system"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"inline-block h-2 w-2 rounded-sm bg-brand-500"}),"messages"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"inline-block h-2 w-2 rounded-sm bg-gray-700"}),"free"]})]}),e.jsxs("div",{className:"mt-3 space-y-1.5",children:[e.jsx(L,{label:"System overhead",value:n,total:l,color:"bg-purple-500",prefix:"~"}),e.jsx(L,{label:"Messages",value:d,total:l,color:"bg-brand-500",prefix:"~"}),e.jsx(L,{label:"Autocompact buffer",value:u,total:l,color:"bg-amber-500"}),e.jsx(L,{label:"Free space",value:f,total:l,color:"bg-gray-600"})]}),j.length>1&&e.jsxs("div",{className:"mt-3",children:[e.jsx("p",{className:"mb-1 text-[10px] text-gray-500",children:"Context growth"}),e.jsx(ee,{width:"100%",height:96,children:e.jsxs(se,{data:j,children:[e.jsx("defs",{children:e.jsxs("linearGradient",{id:"contextGrad",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:"#d97757",stopOpacity:.3}),e.jsx("stop",{offset:"100%",stopColor:"#d97757",stopOpacity:.05})]})}),e.jsx(te,{domain:[0,l],hide:!0}),e.jsx(ae,{contentStyle:{background:"#1c1c1a",border:"1px solid #3d3b36",borderRadius:"8px",fontSize:"11px"},labelFormatter:x=>`Turn ${x}`,formatter:x=>[T(x),"Context"]}),e.jsx(B,{y:l,stroke:"#ef4444",strokeDasharray:"4 4",strokeOpacity:.5}),e.jsx(B,{y:l-u,stroke:"#f59e0b",strokeDasharray:"2 4",strokeOpacity:.3}),e.jsx(ne,{type:"stepAfter",dataKey:"context",stroke:"#d97757",fill:"url(#contextGrad)",strokeWidth:1.5,dot:!1})]})})]}),e.jsxs("button",{onClick:()=>r(!t),className:"mt-3 flex w-full items-center gap-1 text-xs text-gray-400 hover:text-gray-300 transition-colors",children:[e.jsx("span",{className:"text-[10px]",children:t?"▾":"▸"}),"Token Details"]}),t&&e.jsx(Te,{tokens:a}),e.jsx("style",{children:`
2
+ .autocompact-stripe {
3
+ background: repeating-linear-gradient(
4
+ -45deg,
5
+ #78716c,
6
+ #78716c 2px,
7
+ #f59e0b 2px,
8
+ #f59e0b 4px
9
+ );
10
+ opacity: 0.4;
11
+ }
12
+ `})]})}function L({label:s,value:a,total:t,color:r,prefix:l=""}){const c=Math.max(0,Math.min(100,a/t*100));return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"w-32 text-xs text-gray-400 shrink-0",children:s}),e.jsxs("span",{className:"w-16 text-right text-xs font-mono text-gray-300 shrink-0",children:[l,T(a)]}),e.jsx("div",{className:"flex-1 h-1.5 rounded-full bg-gray-800 overflow-hidden",children:e.jsx("div",{className:`h-full rounded-full ${r}`,style:{width:`${c}%`,opacity:.7}})})]})}function Te({tokens:s}){const a=s.inputTokens+s.outputTokens+s.cacheReadInputTokens+s.cacheCreationInputTokens,t=[{label:"Input",value:s.inputTokens,color:"bg-brand-400"},{label:"Output",value:s.outputTokens,color:"bg-emerald-400"},{label:"Cache Read",value:s.cacheReadInputTokens,color:"bg-amber-400"},{label:"Cache Create",value:s.cacheCreationInputTokens,color:"bg-purple-400"}];return e.jsxs("div",{className:"mt-2 space-y-1.5",children:[t.map(r=>e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-xs text-gray-400",children:r.label}),e.jsx("span",{className:"text-xs font-mono text-gray-300",children:T(r.value)})]},r.label)),a>0&&e.jsx("div",{className:"flex h-2 overflow-hidden rounded-full bg-gray-800",children:t.filter(r=>r.value>0).map(r=>e.jsx("div",{className:`${r.color} opacity-60`,style:{width:`${r.value/a*100}%`}},r.label))})]})}function we({tokens:s}){const a=s.inputTokens+s.outputTokens,t=a+s.cacheReadInputTokens+s.cacheCreationInputTokens,r=[{label:"Input",value:s.inputTokens,color:"text-brand-400"},{label:"Output",value:s.outputTokens,color:"text-emerald-400"},{label:"Cache Read",value:s.cacheReadInputTokens,color:"text-amber-400"},{label:"Cache Create",value:s.cacheCreationInputTokens,color:"text-purple-400"}];return e.jsxs("div",{className:"rounded-xl border border-gray-800 bg-gray-900/50 p-4",children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-300",children:"Token Usage"}),e.jsx("p",{className:"mt-1 text-2xl font-bold text-white",children:T(a)}),e.jsxs("p",{className:"text-[10px] text-gray-500",children:["input + output (",T(t)," incl. cache)"]}),e.jsx("div",{className:"mt-3 space-y-2",children:r.map(l=>e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-xs text-gray-400",children:l.label}),e.jsx("span",{className:`text-xs font-mono ${l.color}`,children:T(l.value)})]},l.label))}),t>0&&e.jsx("div",{className:"mt-3 flex h-2 overflow-hidden rounded-full bg-gray-800",children:r.filter(l=>l.value>0).map(l=>e.jsx("div",{className:`${l.color.replace("text-","bg-")} opacity-60`,style:{width:`${l.value/t*100}%`}},l.label))})]})}function Me({toolFrequency:s}){const a=Object.entries(s).sort(([,r],[,l])=>l-r),t=a[0]?.[1]??1;return a.length===0?e.jsxs("div",{className:"rounded-xl border border-gray-800 bg-gray-900/50 p-4",children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-300",children:"Tool Usage"}),e.jsx("p",{className:"mt-2 text-xs text-gray-500",children:"No tools used"})]}):e.jsxs("div",{className:"rounded-xl border border-gray-800 bg-gray-900/50 p-4",children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-300",children:"Tool Usage"}),e.jsxs("p",{className:"mt-1 text-xs text-gray-500",children:[a.length," tools, ",a.reduce((r,[,l])=>r+l,0)," calls"]}),e.jsx("div",{className:"mt-3 space-y-1.5",children:a.slice(0,15).map(([r,l])=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"w-32 shrink-0 truncate text-xs font-mono text-gray-400",title:r,children:W(r)}),e.jsx("div",{className:"flex-1",children:e.jsx("div",{className:"h-4 rounded bg-brand-500/20",style:{width:`${l/t*100}%`},children:e.jsx("span",{className:"px-1.5 text-xs text-brand-300",children:l})})})]},r))})]})}function Ce({errors:s}){return s.length===0?null:e.jsxs("div",{className:"rounded-xl border border-red-900/50 bg-red-950/20 p-4",children:[e.jsxs("h3",{className:"text-sm font-semibold text-red-400",children:["Errors (",s.length,")"]}),e.jsx("div",{className:"mt-3 max-h-64 space-y-2 overflow-y-auto",children:s.map((a,t)=>e.jsxs("div",{className:"rounded-lg bg-red-950/30 p-2.5",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-xs font-mono text-red-300",children:a.type}),a.timestamp&&e.jsx("span",{className:"text-xs text-gray-500",children:H(a.timestamp)})]}),e.jsx("p",{className:"mt-1 text-xs text-red-200/80",children:a.message})]},t))})]})}function G(s){if(s.tokens)return s.tokens.inputTokens+s.tokens.outputTokens}function Se({agents:s}){const{data:a}=O(de),{agentCosts:t,totalAgentCost:r}=M.useMemo(()=>{if(!a)return{agentCosts:new Map,totalAgentCost:0};const c=le(a),n=new Map;let m=0;for(let d=0;d<s.length;d++){const f=s[d];if(!f.tokens)continue;const y={[f.model??"claude-sonnet-4"]:f.tokens},h=re(y,c);n.set(d,h.totalUSD),m+=h.totalUSD}return{agentCosts:n,totalAgentCost:m}},[a,s]);if(s.length===0)return null;const l=s.reduce((c,n)=>c+(n.totalTokens??G(n)??0),0);return e.jsxs("div",{className:"rounded-xl border border-gray-800 bg-gray-900/50 p-4",children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-300",children:"Agent Dispatches"}),e.jsxs("p",{className:"mt-1 text-xs text-gray-500",children:[s.length," agent dispatch",s.length!==1?"es":"",l>0&&e.jsxs("span",{className:"ml-1 text-indigo-400",children:["(",T(l)," tokens",r>0&&` · ~${U(r)}`,")"]})]}),e.jsx("div",{className:"mt-3 space-y-1",children:s.map((c,n)=>{const m=c.totalTokens??G(c),d=t.get(n);return e.jsxs("div",{className:"flex items-start gap-2 rounded bg-gray-950/40 px-2 py-1.5",children:[e.jsx("span",{className:"shrink-0 rounded bg-indigo-500/20 px-1.5 py-0.5 text-[10px] font-semibold text-indigo-300",children:c.subagentType}),c.model&&e.jsx("span",{className:"shrink-0 rounded bg-gray-800 px-1.5 py-0.5 text-[10px] font-mono text-gray-400",children:c.model.replace(/^claude-/,"").replace(/-\d{8}$/,"")}),e.jsx("span",{className:"min-w-0 flex-1 truncate text-xs text-gray-400",children:c.description}),e.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[m!=null&&m>0&&e.jsx("span",{className:"text-[10px] font-mono text-indigo-400/80",children:T(m)}),d!=null&&d>0&&e.jsxs("span",{className:"text-[10px] font-mono text-emerald-400/80",children:["~",U(d)]}),c.totalToolUseCount!=null&&e.jsxs("span",{className:"text-[10px] text-gray-500",children:[c.totalToolUseCount," tools"]}),c.durationMs!=null&&e.jsx("span",{className:"text-[10px] text-gray-600",children:P(c.durationMs)}),c.timestamp&&e.jsx("span",{className:"text-[10px] text-gray-600",children:C(new Date(c.timestamp),"HH:mm:ss")})]})]},`a-${n}`)})})]})}function De({agents:s,skills:a}){const{groups:t,totalCount:r}=M.useMemo(()=>{const l=[...a.map(n=>({...n,agentSource:null})),...s.flatMap(n=>(n.skills??[]).map(m=>({...m,agentSource:n.subagentType})))].sort((n,m)=>n.timestamp.localeCompare(m.timestamp)),c=new Map;for(const n of l){let m=c.get(n.skill);m||(m={skill:n.skill,count:0,hasInjected:!1,invocations:[]},c.set(n.skill,m)),m.count++,n.source==="injected"&&(m.hasInjected=!0),m.invocations.push({agentSource:n.agentSource,timestamp:n.timestamp,source:n.source})}return{groups:Array.from(c.values()),totalCount:l.length}},[a,s]);return r===0?null:e.jsxs("div",{className:"rounded-xl border border-gray-800 bg-gray-900/50 p-4",children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-300",children:"Skill Invocations"}),e.jsxs("p",{className:"mt-1 text-xs text-gray-500",children:[t.length," unique skill",t.length!==1?"s":"",","," ",r," invocation",r!==1?"s":""]}),e.jsx("div",{className:"mt-3 space-y-1",children:t.map(l=>e.jsxs("div",{className:"rounded bg-gray-950/40 px-2 py-1.5",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"shrink-0 rounded bg-amber-500/20 px-1.5 py-0.5 text-[10px] font-semibold text-amber-300",children:["/",l.skill]}),e.jsxs("span",{className:"text-[10px] text-gray-500",children:["×",l.count]}),l.hasInjected&&e.jsx("span",{className:"shrink-0 rounded bg-gray-800/40 px-1 py-0.5 text-[9px] text-gray-500",children:"context"})]}),e.jsx("div",{className:"mt-1 ml-2 flex flex-wrap gap-x-1 text-[10px] text-gray-500",children:l.invocations.map((c,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-gray-400",children:c.agentSource??"session"}),", ",e.jsx("span",{className:"text-gray-600",children:C(new Date(c.timestamp),"HH:mm:ss")}),n<l.invocations.length-1&&e.jsx("span",{className:"text-gray-700",children:"; "})]},n))})]},l.skill))})]})}const Ie={pending:{label:"Pending",bg:"bg-gray-500/20",text:"text-gray-400"},in_progress:{label:"In Progress",bg:"bg-brand-500/20",text:"text-brand-400"},completed:{label:"Done",bg:"bg-emerald-500/20",text:"text-emerald-400"},deleted:{label:"Deleted",bg:"bg-red-500/20",text:"text-red-400"}};function $e({tasks:s}){if(s.length===0)return null;const a=s.filter(r=>r.status==="completed").length,t=s.filter(r=>r.status!=="deleted").length;return e.jsxs("div",{className:"rounded-xl border border-gray-800 bg-gray-900/50 p-4",children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-300",children:"Tasks"}),e.jsxs("p",{className:"mt-1 text-xs text-gray-500",children:[a,"/",t," completed"]}),e.jsx("div",{className:"mt-3 space-y-1",children:s.map((r,l)=>{const c=Ie[r.status];return e.jsxs("div",{className:"flex items-start gap-2 rounded bg-gray-950/40 px-2 py-1.5",children:[e.jsx("span",{className:`shrink-0 rounded px-1.5 py-0.5 text-[10px] font-semibold ${c.bg} ${c.text}`,children:c.label}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"text-xs text-gray-300",children:r.subject}),r.description&&e.jsx("p",{className:"mt-0.5 truncate text-[10px] text-gray-500",children:r.description})]}),r.taskId&&e.jsxs("span",{className:"shrink-0 text-[10px] font-mono text-gray-600",children:["#",r.taskId]}),r.timestamp&&e.jsx("span",{className:"shrink-0 text-[10px] text-gray-600",children:C(new Date(r.timestamp),"HH:mm:ss")})]},r.taskId||l)})})]})}function Ue({tokensByModel:s}){const{cost:a,isLoading:t}=z(s);return t?e.jsx("div",{className:"rounded-xl border border-gray-800 bg-gray-900/50 p-4",children:e.jsx("div",{className:"h-6 w-32 animate-pulse rounded bg-gray-800"})}):!a||a.totalUSD===0?e.jsxs("div",{className:"rounded-xl border border-gray-800 bg-gray-900/50 p-4",children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-300",children:"Cost Estimation"}),e.jsx("p",{className:"mt-2 text-xs text-gray-500",children:"No token data available"})]}):e.jsxs("div",{className:"rounded-xl border border-gray-800 bg-gray-900/50 p-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-300",children:"Cost Estimation"}),e.jsxs("span",{className:"font-mono text-lg font-bold text-white",children:["~",U(a.totalUSD)]})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx("p",{className:"text-xs font-medium text-gray-400",children:"By Category"}),e.jsx(Re,{cost:a}),e.jsx(Le,{cost:a})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx("p",{className:"text-xs font-medium text-gray-400",children:"By Model"}),e.jsx(Ee,{cost:a})]}),e.jsxs("div",{className:"mt-3 flex items-center justify-between border-t border-gray-800 pt-3",children:[e.jsx("p",{className:"text-[10px] text-gray-600",children:"Estimated based on API pricing. Actual costs may vary."}),e.jsx(A,{to:"/settings",className:"text-[10px] text-gray-500 hover:text-gray-300",children:"Configure pricing"})]})]})}function Re({cost:s}){const a=[{label:"Input tokens",value:s.byCategory.input,color:"text-brand-400"},{label:"Output tokens",value:s.byCategory.output,color:"text-emerald-400"},{label:"Cache read",value:s.byCategory.cacheRead,color:"text-amber-400"},{label:"Cache write",value:s.byCategory.cacheWrite,color:"text-purple-400"}];return e.jsx("div",{className:"mt-2 space-y-1",children:a.map(t=>e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-xs text-gray-400",children:t.label}),e.jsx("span",{className:`font-mono text-xs ${t.color}`,children:U(t.value)})]},t.label))})}function Le({cost:s}){if(s.totalUSD===0)return null;const a=[{key:"input",value:s.byCategory.input,color:"bg-brand-400"},{key:"output",value:s.byCategory.output,color:"bg-emerald-400"},{key:"cacheRead",value:s.byCategory.cacheRead,color:"bg-amber-400"},{key:"cacheWrite",value:s.byCategory.cacheWrite,color:"bg-purple-400"}];return e.jsx("div",{className:"mt-2 flex h-2 overflow-hidden rounded-full bg-gray-800",children:a.map(t=>{const r=t.value/s.totalUSD*100;return r<.5?null:e.jsx("div",{className:`${t.color} opacity-60`,style:{width:`${r}%`}},t.key)})})}function Ee({cost:s}){const a=Object.values(s.byModel).sort((t,r)=>r.totalCost-t.totalCost);return a.length===0?null:e.jsx("div",{className:"mt-2 space-y-1",children:a.map(t=>{const r=s.totalUSD>0?Math.round(t.totalCost/s.totalUSD*100):0;return e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"font-mono text-xs text-gray-300",children:t.displayName}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-mono text-xs text-gray-300",children:U(t.totalCost)}),e.jsxs("span",{className:"text-[10px] text-gray-500",children:["(",r,"%)"]}),e.jsxs("span",{className:"text-[10px] text-gray-600",children:[T(t.tokens.inputTokens+t.tokens.outputTokens+t.tokens.cacheReadInputTokens+t.tokens.cacheCreationInputTokens)," ","tok"]})]})]},t.modelId)})})}function Ae({tokensByModel:s}){const{cost:a,isLoading:t}=z(s);return t||!a||a.totalUSD===0?null:e.jsxs("span",{className:"font-mono text-xs text-emerald-400",title:"Estimated cost based on API pricing",children:["~",U(a.totalUSD)]})}function Oe(){return e.jsxs("div",{className:"mb-4 flex items-center gap-2 rounded-lg border border-emerald-800 bg-emerald-900/30 px-4 py-2 text-sm text-emerald-300",children:[e.jsxs("span",{className:"relative flex h-2 w-2",children:[e.jsx("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-emerald-400 opacity-75"}),e.jsx("span",{className:"relative inline-flex h-2 w-2 rounded-full bg-emerald-500"})]}),"This session is currently active. Data refreshes automatically."]})}function Pe(s){const{data:a}=O(xe);return a?.some(t=>t.sessionId===s)??!1}function He(){const{sessionId:s}=_.useParams(),{project:a=""}=_.useSearch(),{privacyMode:t,anonymizeProjectName:r,anonymizeBranch:l}=Z(),c=Pe(s),{data:n,isLoading:m,error:d}=O(pe(s,a,c));if(m)return e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"h-8 w-48 animate-pulse rounded bg-gray-800"}),e.jsx("div",{className:"h-64 animate-pulse rounded-xl bg-gray-900/50"})]});if(d||!n)return e.jsxs("div",{className:"py-12 text-center",children:[e.jsxs("p",{className:"text-sm text-red-400",children:["Failed to load session: ",d?.message??"Not found"]}),e.jsx(A,{to:"/sessions",className:"mt-2 inline-block text-sm text-brand-300 hover:underline",children:"Back to sessions"})]});const f=n.turns[0]?.timestamp,u=n.turns[n.turns.length-1]?.timestamp,y=f&&u?new Date(u).getTime()-new Date(f).getTime():0;return e.jsxs("div",{children:[c&&e.jsx(Oe,{}),e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{children:[e.jsx(A,{to:"/sessions",className:"text-xs text-gray-500 hover:text-gray-300",children:"← Sessions"}),e.jsx("h1",{className:"mt-1 text-xl font-bold text-white",children:t?r(n.projectName):n.projectName}),e.jsxs("div",{className:"mt-1 flex items-center gap-3 text-xs text-gray-400",children:[n.branch&&e.jsx("span",{className:"font-mono",children:l(n.branch)}),f&&e.jsx("span",{children:H(f)}),e.jsx("span",{children:P(y)}),e.jsxs("span",{children:[n.turns.length," turns"]}),e.jsx(Ae,{tokensByModel:n.tokensByModel})]}),n.models.length>0&&e.jsx("div",{className:"mt-1 flex gap-1",children:n.models.map(h=>e.jsx("span",{className:"rounded bg-gray-800 px-1.5 py-0.5 text-[10px] font-mono text-gray-400",children:h.replace(/^claude-/,"").split("-202")[0]},h))})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(oe,{options:[{label:"Export Session (JSON)",onClick:()=>ie(ce(n),`session-${s.slice(0,8)}.json`,"application/json")}]}),e.jsx("span",{className:"font-mono text-xs text-gray-600",children:s.slice(0,8)})]})]}),e.jsxs("div",{className:"mt-6 grid grid-cols-1 gap-4 md:grid-cols-2",children:[e.jsx(ke,{contextWindow:n.contextWindow,tokens:n.totalTokens}),e.jsx(Me,{toolFrequency:n.toolFrequency})]}),e.jsx("div",{className:"mt-4",children:e.jsx(Ue,{tokensByModel:n.tokensByModel})}),n.agents.length>0&&e.jsx("div",{className:"mt-4",children:e.jsx(Se,{agents:n.agents})}),n.tasks.length>0&&e.jsx("div",{className:"mt-4",children:e.jsx($e,{tasks:n.tasks})}),e.jsx("div",{className:"mt-4",children:e.jsx(Ce,{errors:n.errors})}),e.jsxs("div",{className:"mt-6",children:[e.jsx("h2",{className:"mb-3 text-sm font-semibold text-gray-300",children:"Timeline"}),e.jsx(ve,{turns:n.turns,agents:n.agents,skills:n.skills,errors:n.errors})]}),(n.skills.length>0||n.agents.some(h=>(h.skills?.length??0)>0))&&e.jsx("div",{className:"mt-6",children:e.jsx(De,{agents:n.agents,skills:n.skills})})]})}export{He as component};
@@ -0,0 +1 @@
1
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-900:oklch(39.6% .141 25.723);--color-red-950:oklch(25.8% .092 26.042);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-900:oklch(37.8% .077 168.94);--color-cyan-400:oklch(78.9% .154 211.53);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-900:oklch(35.9% .144 278.697);--color-indigo-950:oklch(25.7% .09 281.288);--color-violet-400:oklch(70.2% .183 293.541);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-pink-400:oklch(71.8% .202 349.761);--color-gray-100:#eae6dc;--color-gray-200:#e0dbd0;--color-gray-300:#cdc8b8;--color-gray-400:#a39e90;--color-gray-500:#7a7668;--color-gray-600:#565349;--color-gray-700:#3d3b36;--color-gray-800:#2a2926;--color-gray-900:#1c1c1a;--color-gray-950:#141413;--color-white:#fff;--spacing:.25rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-ping:ping 1s cubic-bezier(0,0,.2,1)infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-brand-300:#f0b8a0;--color-brand-400:#e09070;--color-brand-500:#d97757;--color-brand-600:#c4643f}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.-top-8{top:calc(var(--spacing)*-8)}.right-0{right:calc(var(--spacing)*0)}.bottom-0{bottom:calc(var(--spacing)*0)}.left-1\/2{left:50%}.z-10{z-index:10}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-14{height:calc(var(--spacing)*14)}.h-20{height:calc(var(--spacing)*20)}.h-28{height:calc(var(--spacing)*28)}.h-32{height:calc(var(--spacing)*32)}.h-64{height:calc(var(--spacing)*64)}.h-72{height:calc(var(--spacing)*72)}.h-full{height:100%}.max-h-64{max-height:calc(var(--spacing)*64)}.min-h-screen{min-height:100vh}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-9{width:calc(var(--spacing)*9)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-32{width:calc(var(--spacing)*32)}.w-48{width:calc(var(--spacing)*48)}.w-56{width:calc(var(--spacing)*56)}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-48{max-width:calc(var(--spacing)*48)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\[2rem\]{min-width:2rem}.min-w-\[3rem\]{min-width:3rem}.min-w-\[200px\]{min-width:200px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[3px\]{--tw-translate-x:3px;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[18px\]{--tw-translate-x:18px;translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-45{rotate:45deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-1{column-gap:calc(var(--spacing)*1)}.gap-x-3{column-gap:calc(var(--spacing)*3)}.gap-y-1{row-gap:calc(var(--spacing)*1)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l-lg{border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.rounded-r-lg{border-top-right-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-brand-500{border-color:var(--color-brand-500)}.border-brand-500\/50{border-color:#d9775780}@supports (color:color-mix(in lab,red,red)){.border-brand-500\/50{border-color:color-mix(in oklab,var(--color-brand-500)50%,transparent)}}.border-emerald-800{border-color:var(--color-emerald-800)}.border-gray-700{border-color:var(--color-gray-700)}.border-gray-800{border-color:var(--color-gray-800)}.border-gray-800\/50{border-color:#2a292680}@supports (color:color-mix(in lab,red,red)){.border-gray-800\/50{border-color:color-mix(in oklab,var(--color-gray-800)50%,transparent)}}.border-indigo-500\/10{border-color:#625fff1a}@supports (color:color-mix(in lab,red,red)){.border-indigo-500\/10{border-color:color-mix(in oklab,var(--color-indigo-500)10%,transparent)}}.border-indigo-500\/20{border-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.border-indigo-500\/20{border-color:color-mix(in oklab,var(--color-indigo-500)20%,transparent)}}.border-red-900\/50{border-color:#82181a80}@supports (color:color-mix(in lab,red,red)){.border-red-900\/50{border-color:color-mix(in oklab,var(--color-red-900)50%,transparent)}}.border-transparent{border-color:#0000}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/15{background-color:#f99c0026}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/15{background-color:color-mix(in oklab,var(--color-amber-500)15%,transparent)}}.bg-amber-500\/20{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/20{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.bg-brand-400{background-color:var(--color-brand-400)}.bg-brand-500{background-color:var(--color-brand-500)}.bg-brand-500\/10{background-color:#d977571a}@supports (color:color-mix(in lab,red,red)){.bg-brand-500\/10{background-color:color-mix(in oklab,var(--color-brand-500)10%,transparent)}}.bg-brand-500\/15{background-color:#d9775726}@supports (color:color-mix(in lab,red,red)){.bg-brand-500\/15{background-color:color-mix(in oklab,var(--color-brand-500)15%,transparent)}}.bg-brand-500\/20{background-color:#d9775733}@supports (color:color-mix(in lab,red,red)){.bg-brand-500\/20{background-color:color-mix(in oklab,var(--color-brand-500)20%,transparent)}}.bg-brand-600{background-color:var(--color-brand-600)}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/15{background-color:color-mix(in oklab,var(--color-emerald-500)15%,transparent)}}.bg-emerald-500\/20{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/20{background-color:color-mix(in oklab,var(--color-emerald-500)20%,transparent)}}.bg-emerald-900\/30{background-color:#004e3b4d}@supports (color:color-mix(in lab,red,red)){.bg-emerald-900\/30{background-color:color-mix(in oklab,var(--color-emerald-900)30%,transparent)}}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-500\/15{background-color:#7a766826}@supports (color:color-mix(in lab,red,red)){.bg-gray-500\/15{background-color:color-mix(in oklab,var(--color-gray-500)15%,transparent)}}.bg-gray-500\/20{background-color:#7a766833}@supports (color:color-mix(in lab,red,red)){.bg-gray-500\/20{background-color:color-mix(in oklab,var(--color-gray-500)20%,transparent)}}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-800\/40{background-color:#2a292666}@supports (color:color-mix(in lab,red,red)){.bg-gray-800\/40{background-color:color-mix(in oklab,var(--color-gray-800)40%,transparent)}}.bg-gray-800\/50{background-color:#2a292680}@supports (color:color-mix(in lab,red,red)){.bg-gray-800\/50{background-color:color-mix(in oklab,var(--color-gray-800)50%,transparent)}}.bg-gray-900{background-color:var(--color-gray-900)}.bg-gray-900\/50{background-color:#1c1c1a80}@supports (color:color-mix(in lab,red,red)){.bg-gray-900\/50{background-color:color-mix(in oklab,var(--color-gray-900)50%,transparent)}}.bg-gray-950{background-color:var(--color-gray-950)}.bg-gray-950\/40{background-color:#14141366}@supports (color:color-mix(in lab,red,red)){.bg-gray-950\/40{background-color:color-mix(in oklab,var(--color-gray-950)40%,transparent)}}.bg-indigo-500\/15{background-color:#625fff26}@supports (color:color-mix(in lab,red,red)){.bg-indigo-500\/15{background-color:color-mix(in oklab,var(--color-indigo-500)15%,transparent)}}.bg-indigo-500\/20{background-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.bg-indigo-500\/20{background-color:color-mix(in oklab,var(--color-indigo-500)20%,transparent)}}.bg-indigo-900\/30{background-color:#312c854d}@supports (color:color-mix(in lab,red,red)){.bg-indigo-900\/30{background-color:color-mix(in oklab,var(--color-indigo-900)30%,transparent)}}.bg-indigo-950\/15{background-color:#1e1a4d26}@supports (color:color-mix(in lab,red,red)){.bg-indigo-950\/15{background-color:color-mix(in oklab,var(--color-indigo-950)15%,transparent)}}.bg-purple-400{background-color:var(--color-purple-400)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-purple-500\/15{background-color:#ac4bff26}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/15{background-color:color-mix(in oklab,var(--color-purple-500)15%,transparent)}}.bg-red-500\/15{background-color:#fb2c3626}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/15{background-color:color-mix(in oklab,var(--color-red-500)15%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.bg-red-950\/20{background-color:#46080933}@supports (color:color-mix(in lab,red,red)){.bg-red-950\/20{background-color:color-mix(in oklab,var(--color-red-950)20%,transparent)}}.bg-red-950\/30{background-color:#4608094d}@supports (color:color-mix(in lab,red,red)){.bg-red-950\/30{background-color:color-mix(in oklab,var(--color-red-950)30%,transparent)}}.bg-white{background-color:var(--color-white)}.fill-amber-400\/70{fill:#fcbb00b3}@supports (color:color-mix(in lab,red,red)){.fill-amber-400\/70{fill:color-mix(in oklab,var(--color-amber-400)70%,transparent)}}.fill-gray-500{fill:var(--color-gray-500)}.fill-indigo-400\/70{fill:#7d87ffb3}@supports (color:color-mix(in lab,red,red)){.fill-indigo-400\/70{fill:color-mix(in oklab,var(--color-indigo-400)70%,transparent)}}.fill-red-400\/70{fill:#ff6568b3}@supports (color:color-mix(in lab,red,red)){.fill-red-400\/70{fill:color-mix(in oklab,var(--color-red-400)70%,transparent)}}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-1\.5{padding-top:calc(var(--spacing)*1.5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pr-4{padding-right:calc(var(--spacing)*4)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-amber-300{color:var(--color-amber-300)}.text-amber-400{color:var(--color-amber-400)}.text-amber-400\/60{color:#fcbb0099}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/60{color:color-mix(in oklab,var(--color-amber-400)60%,transparent)}}.text-brand-300{color:var(--color-brand-300)}.text-brand-400{color:var(--color-brand-400)}.text-brand-500{color:var(--color-brand-500)}.text-cyan-400{color:var(--color-cyan-400)}.text-emerald-300{color:var(--color-emerald-300)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-400\/80{color:#00d294cc}@supports (color:color-mix(in lab,red,red)){.text-emerald-400\/80{color:color-mix(in oklab,var(--color-emerald-400)80%,transparent)}}.text-gray-100{color:var(--color-gray-100)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-indigo-300{color:var(--color-indigo-300)}.text-indigo-300\/70{color:#a4b3ffb3}@supports (color:color-mix(in lab,red,red)){.text-indigo-300\/70{color:color-mix(in oklab,var(--color-indigo-300)70%,transparent)}}.text-indigo-400{color:var(--color-indigo-400)}.text-indigo-400\/50{color:#7d87ff80}@supports (color:color-mix(in lab,red,red)){.text-indigo-400\/50{color:color-mix(in oklab,var(--color-indigo-400)50%,transparent)}}.text-indigo-400\/80{color:#7d87ffcc}@supports (color:color-mix(in lab,red,red)){.text-indigo-400\/80{color:color-mix(in oklab,var(--color-indigo-400)80%,transparent)}}.text-pink-400{color:var(--color-pink-400)}.text-purple-400{color:var(--color-purple-400)}.text-red-200\/80{color:#ffcacacc}@supports (color:color-mix(in lab,red,red)){.text-red-200\/80{color:color-mix(in oklab,var(--color-red-200)80%,transparent)}}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-violet-400{color:var(--color-violet-400)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.placeholder-gray-500::placeholder{color:var(--color-gray-500)}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:block:is(:where(.group):hover *){display:block}.hover\:border-gray-600:hover{border-color:var(--color-gray-600)}.hover\:border-gray-700:hover{border-color:var(--color-gray-700)}.hover\:bg-brand-500:hover{background-color:var(--color-brand-500)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-gray-800\/30:hover{background-color:#2a29264d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-gray-800\/30:hover{background-color:color-mix(in oklab,var(--color-gray-800)30%,transparent)}}.hover\:bg-gray-800\/50:hover{background-color:#2a292680}@supports (color:color-mix(in lab,red,red)){.hover\:bg-gray-800\/50:hover{background-color:color-mix(in oklab,var(--color-gray-800)50%,transparent)}}.hover\:bg-gray-900:hover{background-color:var(--color-gray-900)}.hover\:bg-indigo-950\/30:hover{background-color:#1e1a4d4d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-indigo-950\/30:hover{background-color:color-mix(in oklab,var(--color-indigo-950)30%,transparent)}}.hover\:fill-indigo-500\/15:hover{fill:#625fff26}@supports (color:color-mix(in lab,red,red)){.hover\:fill-indigo-500\/15:hover{fill:color-mix(in oklab,var(--color-indigo-500)15%,transparent)}}.hover\:text-gray-200:hover{color:var(--color-gray-200)}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}}.focus\:border-brand-500:focus{border-color:var(--color-brand-500)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-brand-500:focus{--tw-ring-color:var(--color-brand-500)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}@media(hover:hover){.disabled\:hover\:bg-gray-800:disabled:hover{background-color:var(--color-gray-800)}.disabled\:hover\:text-gray-400:disabled:hover{color:var(--color-gray-400)}}@media(min-width:40rem){.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-between{justify-content:space-between}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}
@@ -1 +1 @@
1
- import{S as te,B as L,C as v,s as _,D as m,p as F,E as Q,F as V,G as se,H as E,I as re,J as ne,K as k,n as J,r as w,q as Y,o as ie,M as ae,T as B,N as oe,P as ce}from"./main-CfJIADCp.js";function $(e){if(Array.isArray(e))return e.flatMap(a=>$(a));if(typeof e!="string")return[];const t=[];let s=0,n,i,c,r,o;const d=()=>{for(;s<e.length&&/\s/.test(e.charAt(s));)s+=1;return s<e.length},h=()=>(i=e.charAt(s),i!=="="&&i!==";"&&i!==",");for(;s<e.length;){for(n=s,o=!1;d();)if(i=e.charAt(s),i===","){for(c=s,s+=1,d(),r=s;s<e.length&&h();)s+=1;s<e.length&&e.charAt(s)==="="?(o=!0,s=r,t.push(e.slice(n,c)),n=s):s=c+1}else s+=1;(!o||s>=e.length)&&t.push(e.slice(n))}return t}function he(e){return e instanceof Headers?e:Array.isArray(e)?new Headers(e):typeof e=="object"?new Headers(e):null}function le(...e){return e.reduce((t,s)=>{const n=he(s);if(!n)return t;for(const[i,c]of n.entries())i==="set-cookie"?$(c).forEach(o=>t.append("set-cookie",o)):t.set(i,c);return t},new Headers)}var ue=class extends te{constructor(e,t){super(),this.options=t,this.#s=e,this.#n=null,this.#r=L(),this.bindMethods(),this.setOptions(t)}#s;#e=void 0;#p=void 0;#t=void 0;#a;#l;#r;#n;#v;#u;#d;#o;#c;#i;#f=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#e.addObserver(this),W(this.#e,this.options)?this.#h():this.updateResult(),this.#R())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return P(this.#e,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return P(this.#e,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#m(),this.#O(),this.#e.removeObserver(this)}setOptions(e){const t=this.options,s=this.#e;if(this.options=this.#s.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof v(this.options.enabled,this.#e)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#g(),this.#e.setOptions(this.options),t._defaulted&&!_(this.options,t)&&this.#s.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#e,observer:this});const n=this.hasListeners();n&&G(this.#e,s,this.options,t)&&this.#h(),this.updateResult(),n&&(this.#e!==s||v(this.options.enabled,this.#e)!==v(t.enabled,this.#e)||m(this.options.staleTime,this.#e)!==m(t.staleTime,this.#e))&&this.#y();const i=this.#w();n&&(this.#e!==s||v(this.options.enabled,this.#e)!==v(t.enabled,this.#e)||i!==this.#i)&&this.#b(i)}getOptimisticResult(e){const t=this.#s.getQueryCache().build(this.#s,e),s=this.createResult(t,e);return fe(this,s)&&(this.#t=s,this.#l=this.options,this.#a=this.#e.state),s}getCurrentResult(){return this.#t}trackResult(e,t){return new Proxy(e,{get:(s,n)=>(this.trackProp(n),t?.(n),n==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&this.#r.status==="pending"&&this.#r.reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(s,n))})}trackProp(e){this.#f.add(e)}getCurrentQuery(){return this.#e}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){const t=this.#s.defaultQueryOptions(e),s=this.#s.getQueryCache().build(this.#s,t);return s.fetch().then(()=>this.createResult(s,t))}fetch(e){return this.#h({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#t))}#h(e){this.#g();let t=this.#e.fetch(this.options,e);return e?.throwOnError||(t=t.catch(F)),t}#y(){this.#m();const e=m(this.options.staleTime,this.#e);if(Q||this.#t.isStale||!V(e))return;const s=se(this.#t.dataUpdatedAt,e)+1;this.#o=E.setTimeout(()=>{this.#t.isStale||this.updateResult()},s)}#w(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#e):this.options.refetchInterval)??!1}#b(e){this.#O(),this.#i=e,!(Q||v(this.options.enabled,this.#e)===!1||!V(this.#i)||this.#i===0)&&(this.#c=E.setInterval(()=>{(this.options.refetchIntervalInBackground||re.isFocused())&&this.#h()},this.#i))}#R(){this.#y(),this.#b(this.#w())}#m(){this.#o&&(E.clearTimeout(this.#o),this.#o=void 0)}#O(){this.#c&&(E.clearInterval(this.#c),this.#c=void 0)}createResult(e,t){const s=this.#e,n=this.options,i=this.#t,c=this.#a,r=this.#l,d=e!==s?e.state:this.#p,{state:h}=e;let a={...h},l=!1,u;if(t._optimisticResults){const f=this.hasListeners(),R=!f&&W(e,t),O=f&&G(e,s,t,n);(R||O)&&(a={...a,...ne(h.data,e.options)}),t._optimisticResults==="isRestoring"&&(a.fetchStatus="idle")}let{error:y,errorUpdatedAt:C,status:p}=a;u=a.data;let N=!1;if(t.placeholderData!==void 0&&u===void 0&&p==="pending"){let f;i?.isPlaceholderData&&t.placeholderData===r?.placeholderData?(f=i.data,N=!0):f=typeof t.placeholderData=="function"?t.placeholderData(this.#d?.state.data,this.#d):t.placeholderData,f!==void 0&&(p="success",u=k(i?.data,f,t),l=!0)}if(t.select&&u!==void 0&&!N)if(i&&u===c?.data&&t.select===this.#v)u=this.#u;else try{this.#v=t.select,u=t.select(u),u=k(i?.data,u,t),this.#u=u,this.#n=null}catch(f){this.#n=f}this.#n&&(y=this.#n,u=this.#u,C=Date.now(),p="error");const M=a.fetchStatus==="fetching",I=p==="pending",x=p==="error",A=I&&M,j=u!==void 0,b={status:p,fetchStatus:a.fetchStatus,isPending:I,isSuccess:p==="success",isError:x,isInitialLoading:A,isLoading:A,data:u,dataUpdatedAt:a.dataUpdatedAt,error:y,errorUpdatedAt:C,failureCount:a.fetchFailureCount,failureReason:a.fetchFailureReason,errorUpdateCount:a.errorUpdateCount,isFetched:a.dataUpdateCount>0||a.errorUpdateCount>0,isFetchedAfterMount:a.dataUpdateCount>d.dataUpdateCount||a.errorUpdateCount>d.errorUpdateCount,isFetching:M,isRefetching:M&&!I,isLoadingError:x&&!j,isPaused:a.fetchStatus==="paused",isPlaceholderData:l,isRefetchError:x&&j,isStale:D(e,t),refetch:this.refetch,promise:this.#r,isEnabled:v(t.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){const f=b.data!==void 0,R=b.status==="error"&&!f,O=S=>{R?S.reject(b.error):f&&S.resolve(b.data)},H=()=>{const S=this.#r=b.promise=L();O(S)},g=this.#r;switch(g.status){case"pending":e.queryHash===s.queryHash&&O(g);break;case"fulfilled":(R||b.data!==g.value)&&H();break;case"rejected":(!R||b.error!==g.reason)&&H();break}}return b}updateResult(){const e=this.#t,t=this.createResult(this.#e,this.options);if(this.#a=this.#e.state,this.#l=this.options,this.#a.data!==void 0&&(this.#d=this.#e),_(t,e))return;this.#t=t;const s=()=>{if(!e)return!0;const{notifyOnChangeProps:n}=this.options,i=typeof n=="function"?n():n;if(i==="all"||!i&&!this.#f.size)return!0;const c=new Set(i??this.#f);return this.options.throwOnError&&c.add("error"),Object.keys(this.#t).some(r=>{const o=r;return this.#t[o]!==e[o]&&c.has(o)})};this.#S({listeners:s()})}#g(){const e=this.#s.getQueryCache().build(this.#s,this.options);if(e===this.#e)return;const t=this.#e;this.#e=e,this.#p=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#R()}#S(e){J.batch(()=>{e.listeners&&this.listeners.forEach(t=>{t(this.#t)}),this.#s.getQueryCache().notify({query:this.#e,type:"observerResultsUpdated"})})}};function de(e,t){return v(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status==="error"&&t.retryOnMount===!1)}function W(e,t){return de(e,t)||e.state.data!==void 0&&P(e,t,t.refetchOnMount)}function P(e,t,s){if(v(t.enabled,e)!==!1&&m(t.staleTime,e)!=="static"){const n=typeof s=="function"?s(e):s;return n==="always"||n!==!1&&D(e,t)}return!1}function G(e,t,s,n){return(e!==t||v(n.enabled,e)===!1)&&(!s.suspense||e.state.status!=="error")&&D(e,s)}function D(e,t){return v(t.enabled,e)!==!1&&e.isStaleByTime(m(t.staleTime,e))}function fe(e,t){return!_(e.getCurrentResult(),t)}var X=w.createContext(!1),pe=()=>w.useContext(X);X.Provider;function ve(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var ye=w.createContext(ve()),we=()=>w.useContext(ye),be=(e,t,s)=>{const n=s?.state.error&&typeof e.throwOnError=="function"?Y(e.throwOnError,[s.state.error,s]):e.throwOnError;(e.suspense||e.experimental_prefetchInRender||n)&&(t.isReset()||(e.retryOnMount=!1))},Re=e=>{w.useEffect(()=>{e.clearReset()},[e])},me=({result:e,errorResetBoundary:t,throwOnError:s,query:n,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&n&&(i&&e.data===void 0||Y(s,[e.error,n])),Oe=e=>{if(e.suspense){const s=i=>i==="static"?i:Math.max(i??1e3,1e3),n=e.staleTime;e.staleTime=typeof n=="function"?(...i)=>s(n(...i)):s(n),typeof e.gcTime=="number"&&(e.gcTime=Math.max(e.gcTime,1e3))}},ge=(e,t)=>e.isLoading&&e.isFetching&&!t,Se=(e,t)=>e?.suspense&&t.isPending,z=(e,t,s)=>t.fetchOptimistic(e).catch(()=>{s.clearReset()});function Ee(e,t,s){const n=pe(),i=we(),c=ie(),r=c.defaultQueryOptions(e);c.getDefaultOptions().queries?._experimental_beforeQuery?.(r);const o=c.getQueryCache().get(r.queryHash);r._optimisticResults=n?"isRestoring":"optimistic",Oe(r),be(r,i,o),Re(i);const d=!c.getQueryCache().get(r.queryHash),[h]=w.useState(()=>new t(c,r)),a=h.getOptimisticResult(r),l=!n&&e.subscribed!==!1;if(w.useSyncExternalStore(w.useCallback(u=>{const y=l?h.subscribe(J.batchCalls(u)):F;return h.updateResult(),y},[h,l]),()=>h.getCurrentResult(),()=>h.getCurrentResult()),w.useEffect(()=>{h.setOptions(r)},[r,h]),Se(r,a))throw z(r,h,i);if(me({result:a,errorResetBoundary:i,throwOnError:r.throwOnError,query:o,suspense:r.suspense}))throw a.error;return c.getDefaultOptions().queries?._experimental_afterQuery?.(r,a),r.experimental_prefetchInRender&&!Q&&ge(a,n)&&(d?z(r,h,i):o?.promise)?.catch(F).finally(()=>{h.updateResult()}),r.notifyOnChangeProps?a:h.trackResult(a)}function _e(e,t){return Ee(e,ue)}function Fe(e){return e}const Z=()=>{throw new Error("createServerOnlyFn() functions can only be called on the server!")};function K(e){return e!=="__proto__"&&e!=="constructor"&&e!=="prototype"}function U(e,t){const s=Object.create(null);if(e)for(const n of Object.keys(e))K(n)&&(s[n]=e[n]);if(t&&typeof t=="object")for(const n of Object.keys(t))K(n)&&(s[n]=t[n]);return s}function ee(e){return Object.create(null)}const T=(e,t)=>{const s=t||e||{};return typeof s.method>"u"&&(s.method="GET"),Object.assign(c=>{const r={...s,...c};return T(void 0,r)},{options:s,middleware:c=>{const r=[...s.middleware||[]];c.map(h=>{B in h?h.options.middleware&&r.push(...h.options.middleware):r.push(h)});const o={...s,middleware:r},d=T(void 0,o);return d[B]=!0,d},inputValidator:c=>{const r={...s,inputValidator:c};return T(void 0,r)},handler:(...c)=>{const[r,o]=c,d={...s,extractedFn:r,serverFn:o},h=[...d.middleware||[],Ie(d)];return Object.assign(async a=>{const l=await q(h,"client",{...r,...d,data:a?.data,headers:a?.headers,signal:a?.signal,fetch:a?.fetch,context:ee()}),u=ae(l.error);if(u)throw u;if(l.error)throw l.error;return l.result},{...r,__executeServer:async a=>{const l=Z(),u=l.contextAfterGlobalMiddlewares,y={...r,...a,serverFnMeta:r.serverFnMeta,context:U(u,a.context),request:l.request};return await q(h,"server",y).then(p=>({result:p.result,error:p.error,context:p.sendContext}))}})}})};async function q(e,t,s){const n=oe()?.functionMiddleware||[];let i=Ce([...n,...e]);if(t==="server"){const r=Z();r?.executedRequestMiddlewares&&(i=i.filter(o=>!r.executedRequestMiddlewares.has(o)))}const c=async r=>{const o=i.shift();if(!o)return r;try{"inputValidator"in o.options&&o.options.inputValidator&&t==="server"&&(r.data=await Me(o.options.inputValidator,r.data));let d;if(t==="client"?"client"in o.options&&(d=o.options.client):"server"in o.options&&(d=o.options.server),d){const a=await d({...r,next:async(l={})=>{const u={...r,...l,context:U(r.context,l.context),sendContext:U(r.sendContext,l.sendContext),headers:le(r.headers,l.headers),_callSiteFetch:r._callSiteFetch,fetch:r._callSiteFetch??l.fetch??r.fetch,result:l.result!==void 0?l.result:l instanceof Response?l:r.result,error:l.error??r.error},y=await c(u);if(y.error)throw y.error;return y}});if(ce(a))return{...r,error:a};if(a instanceof Response)return{...r,result:a};if(!a)throw new Error("User middleware returned undefined. You must call next() or return a result in your middlewares.");return a}return c(r)}catch(d){return{...r,error:d}}};return c({...s,headers:s.headers||{},sendContext:s.sendContext||{},context:s.context||ee(),_callSiteFetch:s.fetch})}function Ce(e,t=100){const s=new Set,n=[],i=(c,r)=>{if(r>t)throw new Error(`Middleware nesting depth exceeded maximum of ${t}. Check for circular references.`);c.forEach(o=>{o.options.middleware&&i(o.options.middleware,r+1),s.has(o)||(s.add(o),n.push(o))})};return i(e,0),n}async function Me(e,t){if(e==null)return{};if("~standard"in e){const s=await e["~standard"].validate(t);if(s.issues)throw new Error(JSON.stringify(s.issues,void 0,2));return s.value}if("parse"in e)return e.parse(t);if(typeof e=="function")return e(t);throw new Error("Invalid validator type!")}function Ie(e){return{"~types":void 0,options:{inputValidator:e.inputValidator,client:async({next:t,sendContext:s,fetch:n,...i})=>{const c={...i,context:s,fetch:n},r=await e.extractedFn?.(c);return t(r)},server:async({next:t,...s})=>{const n=await e.serverFn?.(s);return t({...s,result:n})}}}}export{T as c,Fe as q,_e as u};
1
+ import{S as te,B as L,C as v,s as _,D as m,p as F,E as Q,F as V,G as se,H as E,I as re,J as ne,K as k,n as J,r as w,q as Y,o as ie,M as ae,T as B,N as oe,P as ce}from"./main-CkUc_xJ0.js";function $(e){if(Array.isArray(e))return e.flatMap(a=>$(a));if(typeof e!="string")return[];const t=[];let s=0,n,i,c,r,o;const d=()=>{for(;s<e.length&&/\s/.test(e.charAt(s));)s+=1;return s<e.length},h=()=>(i=e.charAt(s),i!=="="&&i!==";"&&i!==",");for(;s<e.length;){for(n=s,o=!1;d();)if(i=e.charAt(s),i===","){for(c=s,s+=1,d(),r=s;s<e.length&&h();)s+=1;s<e.length&&e.charAt(s)==="="?(o=!0,s=r,t.push(e.slice(n,c)),n=s):s=c+1}else s+=1;(!o||s>=e.length)&&t.push(e.slice(n))}return t}function he(e){return e instanceof Headers?e:Array.isArray(e)?new Headers(e):typeof e=="object"?new Headers(e):null}function le(...e){return e.reduce((t,s)=>{const n=he(s);if(!n)return t;for(const[i,c]of n.entries())i==="set-cookie"?$(c).forEach(o=>t.append("set-cookie",o)):t.set(i,c);return t},new Headers)}var ue=class extends te{constructor(e,t){super(),this.options=t,this.#s=e,this.#n=null,this.#r=L(),this.bindMethods(),this.setOptions(t)}#s;#e=void 0;#p=void 0;#t=void 0;#a;#l;#r;#n;#v;#u;#d;#o;#c;#i;#f=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#e.addObserver(this),W(this.#e,this.options)?this.#h():this.updateResult(),this.#R())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return P(this.#e,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return P(this.#e,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#m(),this.#O(),this.#e.removeObserver(this)}setOptions(e){const t=this.options,s=this.#e;if(this.options=this.#s.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof v(this.options.enabled,this.#e)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#g(),this.#e.setOptions(this.options),t._defaulted&&!_(this.options,t)&&this.#s.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#e,observer:this});const n=this.hasListeners();n&&G(this.#e,s,this.options,t)&&this.#h(),this.updateResult(),n&&(this.#e!==s||v(this.options.enabled,this.#e)!==v(t.enabled,this.#e)||m(this.options.staleTime,this.#e)!==m(t.staleTime,this.#e))&&this.#y();const i=this.#w();n&&(this.#e!==s||v(this.options.enabled,this.#e)!==v(t.enabled,this.#e)||i!==this.#i)&&this.#b(i)}getOptimisticResult(e){const t=this.#s.getQueryCache().build(this.#s,e),s=this.createResult(t,e);return fe(this,s)&&(this.#t=s,this.#l=this.options,this.#a=this.#e.state),s}getCurrentResult(){return this.#t}trackResult(e,t){return new Proxy(e,{get:(s,n)=>(this.trackProp(n),t?.(n),n==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&this.#r.status==="pending"&&this.#r.reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(s,n))})}trackProp(e){this.#f.add(e)}getCurrentQuery(){return this.#e}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){const t=this.#s.defaultQueryOptions(e),s=this.#s.getQueryCache().build(this.#s,t);return s.fetch().then(()=>this.createResult(s,t))}fetch(e){return this.#h({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#t))}#h(e){this.#g();let t=this.#e.fetch(this.options,e);return e?.throwOnError||(t=t.catch(F)),t}#y(){this.#m();const e=m(this.options.staleTime,this.#e);if(Q||this.#t.isStale||!V(e))return;const s=se(this.#t.dataUpdatedAt,e)+1;this.#o=E.setTimeout(()=>{this.#t.isStale||this.updateResult()},s)}#w(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#e):this.options.refetchInterval)??!1}#b(e){this.#O(),this.#i=e,!(Q||v(this.options.enabled,this.#e)===!1||!V(this.#i)||this.#i===0)&&(this.#c=E.setInterval(()=>{(this.options.refetchIntervalInBackground||re.isFocused())&&this.#h()},this.#i))}#R(){this.#y(),this.#b(this.#w())}#m(){this.#o&&(E.clearTimeout(this.#o),this.#o=void 0)}#O(){this.#c&&(E.clearInterval(this.#c),this.#c=void 0)}createResult(e,t){const s=this.#e,n=this.options,i=this.#t,c=this.#a,r=this.#l,d=e!==s?e.state:this.#p,{state:h}=e;let a={...h},l=!1,u;if(t._optimisticResults){const f=this.hasListeners(),R=!f&&W(e,t),O=f&&G(e,s,t,n);(R||O)&&(a={...a,...ne(h.data,e.options)}),t._optimisticResults==="isRestoring"&&(a.fetchStatus="idle")}let{error:y,errorUpdatedAt:C,status:p}=a;u=a.data;let N=!1;if(t.placeholderData!==void 0&&u===void 0&&p==="pending"){let f;i?.isPlaceholderData&&t.placeholderData===r?.placeholderData?(f=i.data,N=!0):f=typeof t.placeholderData=="function"?t.placeholderData(this.#d?.state.data,this.#d):t.placeholderData,f!==void 0&&(p="success",u=k(i?.data,f,t),l=!0)}if(t.select&&u!==void 0&&!N)if(i&&u===c?.data&&t.select===this.#v)u=this.#u;else try{this.#v=t.select,u=t.select(u),u=k(i?.data,u,t),this.#u=u,this.#n=null}catch(f){this.#n=f}this.#n&&(y=this.#n,u=this.#u,C=Date.now(),p="error");const M=a.fetchStatus==="fetching",I=p==="pending",x=p==="error",A=I&&M,j=u!==void 0,b={status:p,fetchStatus:a.fetchStatus,isPending:I,isSuccess:p==="success",isError:x,isInitialLoading:A,isLoading:A,data:u,dataUpdatedAt:a.dataUpdatedAt,error:y,errorUpdatedAt:C,failureCount:a.fetchFailureCount,failureReason:a.fetchFailureReason,errorUpdateCount:a.errorUpdateCount,isFetched:a.dataUpdateCount>0||a.errorUpdateCount>0,isFetchedAfterMount:a.dataUpdateCount>d.dataUpdateCount||a.errorUpdateCount>d.errorUpdateCount,isFetching:M,isRefetching:M&&!I,isLoadingError:x&&!j,isPaused:a.fetchStatus==="paused",isPlaceholderData:l,isRefetchError:x&&j,isStale:D(e,t),refetch:this.refetch,promise:this.#r,isEnabled:v(t.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){const f=b.data!==void 0,R=b.status==="error"&&!f,O=S=>{R?S.reject(b.error):f&&S.resolve(b.data)},H=()=>{const S=this.#r=b.promise=L();O(S)},g=this.#r;switch(g.status){case"pending":e.queryHash===s.queryHash&&O(g);break;case"fulfilled":(R||b.data!==g.value)&&H();break;case"rejected":(!R||b.error!==g.reason)&&H();break}}return b}updateResult(){const e=this.#t,t=this.createResult(this.#e,this.options);if(this.#a=this.#e.state,this.#l=this.options,this.#a.data!==void 0&&(this.#d=this.#e),_(t,e))return;this.#t=t;const s=()=>{if(!e)return!0;const{notifyOnChangeProps:n}=this.options,i=typeof n=="function"?n():n;if(i==="all"||!i&&!this.#f.size)return!0;const c=new Set(i??this.#f);return this.options.throwOnError&&c.add("error"),Object.keys(this.#t).some(r=>{const o=r;return this.#t[o]!==e[o]&&c.has(o)})};this.#S({listeners:s()})}#g(){const e=this.#s.getQueryCache().build(this.#s,this.options);if(e===this.#e)return;const t=this.#e;this.#e=e,this.#p=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#R()}#S(e){J.batch(()=>{e.listeners&&this.listeners.forEach(t=>{t(this.#t)}),this.#s.getQueryCache().notify({query:this.#e,type:"observerResultsUpdated"})})}};function de(e,t){return v(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status==="error"&&t.retryOnMount===!1)}function W(e,t){return de(e,t)||e.state.data!==void 0&&P(e,t,t.refetchOnMount)}function P(e,t,s){if(v(t.enabled,e)!==!1&&m(t.staleTime,e)!=="static"){const n=typeof s=="function"?s(e):s;return n==="always"||n!==!1&&D(e,t)}return!1}function G(e,t,s,n){return(e!==t||v(n.enabled,e)===!1)&&(!s.suspense||e.state.status!=="error")&&D(e,s)}function D(e,t){return v(t.enabled,e)!==!1&&e.isStaleByTime(m(t.staleTime,e))}function fe(e,t){return!_(e.getCurrentResult(),t)}var X=w.createContext(!1),pe=()=>w.useContext(X);X.Provider;function ve(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var ye=w.createContext(ve()),we=()=>w.useContext(ye),be=(e,t,s)=>{const n=s?.state.error&&typeof e.throwOnError=="function"?Y(e.throwOnError,[s.state.error,s]):e.throwOnError;(e.suspense||e.experimental_prefetchInRender||n)&&(t.isReset()||(e.retryOnMount=!1))},Re=e=>{w.useEffect(()=>{e.clearReset()},[e])},me=({result:e,errorResetBoundary:t,throwOnError:s,query:n,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&n&&(i&&e.data===void 0||Y(s,[e.error,n])),Oe=e=>{if(e.suspense){const s=i=>i==="static"?i:Math.max(i??1e3,1e3),n=e.staleTime;e.staleTime=typeof n=="function"?(...i)=>s(n(...i)):s(n),typeof e.gcTime=="number"&&(e.gcTime=Math.max(e.gcTime,1e3))}},ge=(e,t)=>e.isLoading&&e.isFetching&&!t,Se=(e,t)=>e?.suspense&&t.isPending,z=(e,t,s)=>t.fetchOptimistic(e).catch(()=>{s.clearReset()});function Ee(e,t,s){const n=pe(),i=we(),c=ie(),r=c.defaultQueryOptions(e);c.getDefaultOptions().queries?._experimental_beforeQuery?.(r);const o=c.getQueryCache().get(r.queryHash);r._optimisticResults=n?"isRestoring":"optimistic",Oe(r),be(r,i,o),Re(i);const d=!c.getQueryCache().get(r.queryHash),[h]=w.useState(()=>new t(c,r)),a=h.getOptimisticResult(r),l=!n&&e.subscribed!==!1;if(w.useSyncExternalStore(w.useCallback(u=>{const y=l?h.subscribe(J.batchCalls(u)):F;return h.updateResult(),y},[h,l]),()=>h.getCurrentResult(),()=>h.getCurrentResult()),w.useEffect(()=>{h.setOptions(r)},[r,h]),Se(r,a))throw z(r,h,i);if(me({result:a,errorResetBoundary:i,throwOnError:r.throwOnError,query:o,suspense:r.suspense}))throw a.error;return c.getDefaultOptions().queries?._experimental_afterQuery?.(r,a),r.experimental_prefetchInRender&&!Q&&ge(a,n)&&(d?z(r,h,i):o?.promise)?.catch(F).finally(()=>{h.updateResult()}),r.notifyOnChangeProps?a:h.trackResult(a)}function _e(e,t){return Ee(e,ue)}function Fe(e){return e}const Z=()=>{throw new Error("createServerOnlyFn() functions can only be called on the server!")};function K(e){return e!=="__proto__"&&e!=="constructor"&&e!=="prototype"}function U(e,t){const s=Object.create(null);if(e)for(const n of Object.keys(e))K(n)&&(s[n]=e[n]);if(t&&typeof t=="object")for(const n of Object.keys(t))K(n)&&(s[n]=t[n]);return s}function ee(e){return Object.create(null)}const T=(e,t)=>{const s=t||e||{};return typeof s.method>"u"&&(s.method="GET"),Object.assign(c=>{const r={...s,...c};return T(void 0,r)},{options:s,middleware:c=>{const r=[...s.middleware||[]];c.map(h=>{B in h?h.options.middleware&&r.push(...h.options.middleware):r.push(h)});const o={...s,middleware:r},d=T(void 0,o);return d[B]=!0,d},inputValidator:c=>{const r={...s,inputValidator:c};return T(void 0,r)},handler:(...c)=>{const[r,o]=c,d={...s,extractedFn:r,serverFn:o},h=[...d.middleware||[],Ie(d)];return Object.assign(async a=>{const l=await q(h,"client",{...r,...d,data:a?.data,headers:a?.headers,signal:a?.signal,fetch:a?.fetch,context:ee()}),u=ae(l.error);if(u)throw u;if(l.error)throw l.error;return l.result},{...r,__executeServer:async a=>{const l=Z(),u=l.contextAfterGlobalMiddlewares,y={...r,...a,serverFnMeta:r.serverFnMeta,context:U(u,a.context),request:l.request};return await q(h,"server",y).then(p=>({result:p.result,error:p.error,context:p.sendContext}))}})}})};async function q(e,t,s){const n=oe()?.functionMiddleware||[];let i=Ce([...n,...e]);if(t==="server"){const r=Z();r?.executedRequestMiddlewares&&(i=i.filter(o=>!r.executedRequestMiddlewares.has(o)))}const c=async r=>{const o=i.shift();if(!o)return r;try{"inputValidator"in o.options&&o.options.inputValidator&&t==="server"&&(r.data=await Me(o.options.inputValidator,r.data));let d;if(t==="client"?"client"in o.options&&(d=o.options.client):"server"in o.options&&(d=o.options.server),d){const a=await d({...r,next:async(l={})=>{const u={...r,...l,context:U(r.context,l.context),sendContext:U(r.sendContext,l.sendContext),headers:le(r.headers,l.headers),_callSiteFetch:r._callSiteFetch,fetch:r._callSiteFetch??l.fetch??r.fetch,result:l.result!==void 0?l.result:l instanceof Response?l:r.result,error:l.error??r.error},y=await c(u);if(y.error)throw y.error;return y}});if(ce(a))return{...r,error:a};if(a instanceof Response)return{...r,result:a};if(!a)throw new Error("User middleware returned undefined. You must call next() or return a result in your middlewares.");return a}return c(r)}catch(d){return{...r,error:d}}};return c({...s,headers:s.headers||{},sendContext:s.sendContext||{},context:s.context||ee(),_callSiteFetch:s.fetch})}function Ce(e,t=100){const s=new Set,n=[],i=(c,r)=>{if(r>t)throw new Error(`Middleware nesting depth exceeded maximum of ${t}. Check for circular references.`);c.forEach(o=>{o.options.middleware&&i(o.options.middleware,r+1),s.has(o)||(s.add(o),n.push(o))})};return i(e,0),n}async function Me(e,t){if(e==null)return{};if("~standard"in e){const s=await e["~standard"].validate(t);if(s.issues)throw new Error(JSON.stringify(s.issues,void 0,2));return s.value}if("parse"in e)return e.parse(t);if(typeof e=="function")return e(t);throw new Error("Invalid validator type!")}function Ie(e){return{"~types":void 0,options:{inputValidator:e.inputValidator,client:async({next:t,sendContext:s,fetch:n,...i})=>{const c={...i,context:s,fetch:n},r=await e.extractedFn?.(c);return t(r)},server:async({next:t,...s})=>{const n=await e.serverFn?.(s);return t({...s,result:n})}}}}export{T as c,Fe as q,_e as u};
@@ -1 +1 @@
1
- import{j as e,r as g,b as v,L as T,e as N,f as S}from"./main-CfJIADCp.js";import{u as j}from"./createServerFn-Bn6_ISOt.js";import{p as k,a as D}from"./sessions.queries-CrJg4dYU.js";import{d as w,e as R,h as L}from"./format-Bsprb3az.js";function M({isActive:t}){return t?e.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded-full bg-emerald-500/15 px-2.5 py-0.5 text-xs font-medium text-emerald-400",children:[e.jsxs("span",{className:"relative flex h-2 w-2",children:[e.jsx("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-emerald-400 opacity-75"}),e.jsx("span",{className:"relative inline-flex h-2 w-2 rounded-full bg-emerald-500"})]}),"Active"]}):e.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded-full bg-gray-500/15 px-2.5 py-0.5 text-xs font-medium text-gray-400",children:[e.jsx("span",{className:"h-2 w-2 rounded-full bg-gray-500"}),"Completed"]})}function $({startedAt:t}){const[n,a]=g.useState(()=>Date.now()-new Date(t).getTime());return g.useEffect(()=>{const l=setInterval(()=>{a(Date.now()-new Date(t).getTime())},1e3);return()=>clearInterval(l)},[t]),e.jsx("span",{className:"text-emerald-400",children:w(n)})}function B({session:t}){const{privacyMode:n,anonymizePath:a,anonymizeProjectName:l,anonymizeBranch:i}=v(),r=n?l(t.projectName):t.projectName,c=t.cwd?a(t.cwd,t.projectName):null,m=t.branch?i(t.branch):null;return e.jsxs(T,{to:"/sessions/$sessionId",params:{sessionId:t.sessionId},search:{project:t.projectPath},className:"group block rounded-xl border border-gray-800 bg-gray-900/50 p-4 transition-all hover:border-gray-700 hover:bg-gray-900",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"truncate text-sm font-semibold text-white",children:r}),e.jsx(M,{isActive:t.isActive})]}),m&&e.jsx("p",{className:"mt-1 truncate text-xs text-gray-500",children:e.jsx("span",{className:"font-mono",children:m})})]}),e.jsx("span",{className:"shrink-0 text-xs text-gray-500",children:R(t.lastActiveAt)})]}),e.jsxs("div",{className:"mt-3 flex items-center gap-4 text-xs text-gray-400",children:[e.jsx("span",{title:"Duration",children:t.isActive?e.jsx($,{startedAt:t.startedAt}):w(t.durationMs)}),e.jsxs("span",{title:"Messages",children:[t.messageCount," msgs"]}),t.model&&e.jsx("span",{title:"Model",className:"truncate font-mono text-gray-500",children:t.model.replace(/^claude-/,"").split("-202")[0]}),e.jsx("span",{title:"File size",className:"text-gray-500",children:L(t.fileSizeBytes)})]}),c&&e.jsx("p",{className:"mt-2 truncate text-xs font-mono text-gray-600",children:c})]})}function _({projects:t,activeCount:n}){const a=N(),{search:l,status:i,project:r}=S.useSearch(),{privacyMode:c,anonymizeProjectName:m}=v(),[p,d]=g.useState(l),o=g.useRef(null);g.useEffect(()=>()=>{o.current&&clearTimeout(o.current)},[]),g.useEffect(()=>{d(l)},[l]);function f(s){d(s),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{a({to:"/sessions",search:h=>({...h,search:s,page:1})})},300)}function y(s){a({to:"/sessions",search:h=>({...h,status:s,page:1})})}function b(s){a({to:"/sessions",search:h=>({...h,project:s,page:1})})}return e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsx("input",{type:"text",placeholder:"Search sessions...",value:p,onChange:s=>f(s.target.value),className:"rounded-lg border border-gray-700 bg-gray-800/50 px-3 py-1.5 text-sm text-gray-200 placeholder-gray-500 outline-none focus:border-brand-500 focus:ring-1 focus:ring-brand-500"}),e.jsx("div",{className:"flex rounded-lg border border-gray-700 text-xs",children:["all","active","completed"].map(s=>e.jsxs("button",{onClick:()=>y(s),className:`px-3 py-1.5 capitalize transition-colors ${i===s?"bg-gray-700 text-white":"text-gray-400 hover:text-gray-200"} ${s==="all"?"rounded-l-lg":""} ${s==="completed"?"rounded-r-lg":""}`,children:[s,s==="active"&&n>0&&e.jsxs("span",{className:"ml-1 text-emerald-400",children:["(",n,")"]})]},s))}),t.length>1&&e.jsxs("select",{value:r,onChange:s=>b(s.target.value),className:"rounded-lg border border-gray-700 bg-gray-800/50 px-3 py-1.5 text-sm text-gray-200 outline-none focus:border-brand-500",children:[e.jsx("option",{value:"",children:"All projects"}),t.map(s=>e.jsx("option",{value:s,children:c?m(s):s},s))]})]})}const P="claude-dashboard:page-size",C=[5,10,25,50];function A(t){return C.includes(t)}function Q(){if(typeof window>"u")return null;try{const t=localStorage.getItem(P);if(t!==null){const n=Number(t);if(A(n))return n}}catch{}return null}function F(){const[t,n]=g.useState(Q),a=g.useCallback(l=>{if(A(l))try{localStorage.setItem(P,String(l)),n(l)}catch{}},[]);return{storedPageSize:t,setPageSize:a}}function V({page:t,totalPages:n,totalCount:a,pageSize:l,onPageChange:i,onPageSizeChange:r}){if(a===0)return null;const c=(t-1)*l+1,m=Math.min(t*l,a),p=n>1,d=p?G(t,n):[];return e.jsxs("div",{className:"flex flex-col items-center gap-3 sm:flex-row sm:justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("select",{value:l,onChange:o=>r(Number(o.target.value)),className:"rounded-lg border border-gray-700 bg-gray-800/50 px-2 py-1 text-xs text-gray-200 outline-none focus:border-brand-500",children:C.map(o=>e.jsxs("option",{value:o,children:[o," / page"]},o))}),e.jsxs("p",{className:"text-xs text-gray-400",children:["Showing"," ",e.jsxs("span",{className:"font-mono text-gray-300",children:[c,"-",m]})," ","of"," ",e.jsx("span",{className:"font-mono text-gray-300",children:a})," sessions"]})]}),p&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>i(t-1),disabled:t<=1,className:"rounded-lg border border-gray-700 bg-gray-800 px-2.5 py-1.5 text-xs text-gray-400 transition-colors hover:bg-gray-700 hover:text-gray-200 disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-gray-800 disabled:hover:text-gray-400",children:"Previous"}),d.map((o,f)=>o==="ellipsis"?e.jsx("span",{className:"px-1.5 text-xs text-gray-500",children:"..."},`ellipsis-${f}`):e.jsx("button",{onClick:()=>i(o),className:`min-w-[2rem] rounded-lg px-2 py-1.5 text-xs font-mono transition-colors ${o===t?"bg-brand-600 text-white":"border border-gray-700 bg-gray-800 text-gray-400 hover:bg-gray-700 hover:text-gray-200"}`,children:o},o)),e.jsx("button",{onClick:()=>i(t+1),disabled:t>=n,className:"rounded-lg border border-gray-700 bg-gray-800 px-2.5 py-1.5 text-xs text-gray-400 transition-colors hover:bg-gray-700 hover:text-gray-200 disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-gray-800 disabled:hover:text-gray-400",children:"Next"})]})]})}function G(t,n){if(n<=7)return Array.from({length:n},(r,c)=>c+1);const a=new Set;a.add(1),a.add(n);for(let r=t-2;r<=t+2;r++)r>=1&&r<=n&&a.add(r);const l=Array.from(a).sort((r,c)=>r-c),i=[];for(let r=0;r<l.length;r++)r>0&&l[r]-l[r-1]>1&&i.push("ellipsis"),i.push(l[r]);return i}function K(){const t=N(),{page:n,pageSize:a,search:l,status:i,project:r}=S.useSearch(),{storedPageSize:c,setPageSize:m}=F(),p=g.useRef(!1);g.useEffect(()=>{c!==null&&!p.current&&c!==a&&(p.current=!0,t({to:"/sessions",search:u=>({...u,pageSize:c,page:1}),replace:!0}))},[c,a,t]);const{data:d,isLoading:o}=j(k({page:n,pageSize:a,search:l,status:i,project:r})),{data:f=[]}=j(D),y=g.useMemo(()=>{if(!d)return[];const u=new Set(f.map(x=>x.sessionId));return d.sessions.map(x=>({...x,isActive:u.has(x.sessionId)||x.isActive}))},[d,f]);function b(u){t({to:"/sessions",search:x=>({...x,page:u})})}function s(u){m(u),t({to:"/sessions",search:x=>({...x,pageSize:u,page:1})})}if(o)return e.jsx("div",{className:"space-y-3",children:Array.from({length:a}).map((u,x)=>e.jsx("div",{className:"h-28 animate-pulse rounded-xl border border-gray-800 bg-gray-900/50"},x))});const h=d?.totalCount??0,z=d?.totalPages??1,I=d?.projects??[],E=f.length;return e.jsxs("div",{children:[e.jsx(_,{projects:I,activeCount:E}),e.jsx("div",{className:"mt-4 space-y-2",children:y.length===0?e.jsx("div",{className:"py-12 text-center text-sm text-gray-500",children:h===0&&!l&&i==="all"&&!r?"No sessions found in ~/.claude":"No sessions match your filters"}):y.map(u=>e.jsx(B,{session:u},u.sessionId))}),e.jsx("div",{className:"mt-4",children:e.jsx(V,{page:d?.page??n,totalPages:z,totalCount:h,pageSize:a,onPageChange:b,onPageSizeChange:s})})]})}function H(){return e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-white",children:"Sessions"}),e.jsx("p",{className:"mt-1 text-sm text-gray-400",children:"All Claude Code sessions from ~/.claude"}),e.jsx("div",{className:"mt-6",children:e.jsx(K,{})})]})}export{H as component};
1
+ import{j as e,r as g,b as v,L as T,e as N,f as S}from"./main-CkUc_xJ0.js";import{u as j}from"./createServerFn-B5mibSc4.js";import{p as k,a as D}from"./sessions.queries-C-HTNzuR.js";import{d as w,e as R,h as L}from"./format-Bsprb3az.js";function M({isActive:t}){return t?e.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded-full bg-emerald-500/15 px-2.5 py-0.5 text-xs font-medium text-emerald-400",children:[e.jsxs("span",{className:"relative flex h-2 w-2",children:[e.jsx("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-emerald-400 opacity-75"}),e.jsx("span",{className:"relative inline-flex h-2 w-2 rounded-full bg-emerald-500"})]}),"Active"]}):e.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded-full bg-gray-500/15 px-2.5 py-0.5 text-xs font-medium text-gray-400",children:[e.jsx("span",{className:"h-2 w-2 rounded-full bg-gray-500"}),"Completed"]})}function $({startedAt:t}){const[n,a]=g.useState(()=>Date.now()-new Date(t).getTime());return g.useEffect(()=>{const l=setInterval(()=>{a(Date.now()-new Date(t).getTime())},1e3);return()=>clearInterval(l)},[t]),e.jsx("span",{className:"text-emerald-400",children:w(n)})}function B({session:t}){const{privacyMode:n,anonymizePath:a,anonymizeProjectName:l,anonymizeBranch:i}=v(),r=n?l(t.projectName):t.projectName,c=t.cwd?a(t.cwd,t.projectName):null,m=t.branch?i(t.branch):null;return e.jsxs(T,{to:"/sessions/$sessionId",params:{sessionId:t.sessionId},search:{project:t.projectPath},className:"group block rounded-xl border border-gray-800 bg-gray-900/50 p-4 transition-all hover:border-gray-700 hover:bg-gray-900",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"truncate text-sm font-semibold text-white",children:r}),e.jsx(M,{isActive:t.isActive})]}),m&&e.jsx("p",{className:"mt-1 truncate text-xs text-gray-500",children:e.jsx("span",{className:"font-mono",children:m})})]}),e.jsx("span",{className:"shrink-0 text-xs text-gray-500",children:R(t.lastActiveAt)})]}),e.jsxs("div",{className:"mt-3 flex items-center gap-4 text-xs text-gray-400",children:[e.jsx("span",{title:"Duration",children:t.isActive?e.jsx($,{startedAt:t.startedAt}):w(t.durationMs)}),e.jsxs("span",{title:"Messages",children:[t.messageCount," msgs"]}),t.model&&e.jsx("span",{title:"Model",className:"truncate font-mono text-gray-500",children:t.model.replace(/^claude-/,"").split("-202")[0]}),e.jsx("span",{title:"File size",className:"text-gray-500",children:L(t.fileSizeBytes)})]}),c&&e.jsx("p",{className:"mt-2 truncate text-xs font-mono text-gray-600",children:c})]})}function _({projects:t,activeCount:n}){const a=N(),{search:l,status:i,project:r}=S.useSearch(),{privacyMode:c,anonymizeProjectName:m}=v(),[p,d]=g.useState(l),o=g.useRef(null);g.useEffect(()=>()=>{o.current&&clearTimeout(o.current)},[]),g.useEffect(()=>{d(l)},[l]);function f(s){d(s),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{a({to:"/sessions",search:h=>({...h,search:s,page:1})})},300)}function y(s){a({to:"/sessions",search:h=>({...h,status:s,page:1})})}function b(s){a({to:"/sessions",search:h=>({...h,project:s,page:1})})}return e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsx("input",{type:"text",placeholder:"Search sessions...",value:p,onChange:s=>f(s.target.value),className:"rounded-lg border border-gray-700 bg-gray-800/50 px-3 py-1.5 text-sm text-gray-200 placeholder-gray-500 outline-none focus:border-brand-500 focus:ring-1 focus:ring-brand-500"}),e.jsx("div",{className:"flex rounded-lg border border-gray-700 text-xs",children:["all","active","completed"].map(s=>e.jsxs("button",{onClick:()=>y(s),className:`px-3 py-1.5 capitalize transition-colors ${i===s?"bg-gray-700 text-white":"text-gray-400 hover:text-gray-200"} ${s==="all"?"rounded-l-lg":""} ${s==="completed"?"rounded-r-lg":""}`,children:[s,s==="active"&&n>0&&e.jsxs("span",{className:"ml-1 text-emerald-400",children:["(",n,")"]})]},s))}),t.length>1&&e.jsxs("select",{value:r,onChange:s=>b(s.target.value),className:"rounded-lg border border-gray-700 bg-gray-800/50 px-3 py-1.5 text-sm text-gray-200 outline-none focus:border-brand-500",children:[e.jsx("option",{value:"",children:"All projects"}),t.map(s=>e.jsx("option",{value:s,children:c?m(s):s},s))]})]})}const P="claude-dashboard:page-size",C=[5,10,25,50];function A(t){return C.includes(t)}function Q(){if(typeof window>"u")return null;try{const t=localStorage.getItem(P);if(t!==null){const n=Number(t);if(A(n))return n}}catch{}return null}function F(){const[t,n]=g.useState(Q),a=g.useCallback(l=>{if(A(l))try{localStorage.setItem(P,String(l)),n(l)}catch{}},[]);return{storedPageSize:t,setPageSize:a}}function V({page:t,totalPages:n,totalCount:a,pageSize:l,onPageChange:i,onPageSizeChange:r}){if(a===0)return null;const c=(t-1)*l+1,m=Math.min(t*l,a),p=n>1,d=p?G(t,n):[];return e.jsxs("div",{className:"flex flex-col items-center gap-3 sm:flex-row sm:justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("select",{value:l,onChange:o=>r(Number(o.target.value)),className:"rounded-lg border border-gray-700 bg-gray-800/50 px-2 py-1 text-xs text-gray-200 outline-none focus:border-brand-500",children:C.map(o=>e.jsxs("option",{value:o,children:[o," / page"]},o))}),e.jsxs("p",{className:"text-xs text-gray-400",children:["Showing"," ",e.jsxs("span",{className:"font-mono text-gray-300",children:[c,"-",m]})," ","of"," ",e.jsx("span",{className:"font-mono text-gray-300",children:a})," sessions"]})]}),p&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>i(t-1),disabled:t<=1,className:"rounded-lg border border-gray-700 bg-gray-800 px-2.5 py-1.5 text-xs text-gray-400 transition-colors hover:bg-gray-700 hover:text-gray-200 disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-gray-800 disabled:hover:text-gray-400",children:"Previous"}),d.map((o,f)=>o==="ellipsis"?e.jsx("span",{className:"px-1.5 text-xs text-gray-500",children:"..."},`ellipsis-${f}`):e.jsx("button",{onClick:()=>i(o),className:`min-w-[2rem] rounded-lg px-2 py-1.5 text-xs font-mono transition-colors ${o===t?"bg-brand-600 text-white":"border border-gray-700 bg-gray-800 text-gray-400 hover:bg-gray-700 hover:text-gray-200"}`,children:o},o)),e.jsx("button",{onClick:()=>i(t+1),disabled:t>=n,className:"rounded-lg border border-gray-700 bg-gray-800 px-2.5 py-1.5 text-xs text-gray-400 transition-colors hover:bg-gray-700 hover:text-gray-200 disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-gray-800 disabled:hover:text-gray-400",children:"Next"})]})]})}function G(t,n){if(n<=7)return Array.from({length:n},(r,c)=>c+1);const a=new Set;a.add(1),a.add(n);for(let r=t-2;r<=t+2;r++)r>=1&&r<=n&&a.add(r);const l=Array.from(a).sort((r,c)=>r-c),i=[];for(let r=0;r<l.length;r++)r>0&&l[r]-l[r-1]>1&&i.push("ellipsis"),i.push(l[r]);return i}function K(){const t=N(),{page:n,pageSize:a,search:l,status:i,project:r}=S.useSearch(),{storedPageSize:c,setPageSize:m}=F(),p=g.useRef(!1);g.useEffect(()=>{c!==null&&!p.current&&c!==a&&(p.current=!0,t({to:"/sessions",search:u=>({...u,pageSize:c,page:1}),replace:!0}))},[c,a,t]);const{data:d,isLoading:o}=j(k({page:n,pageSize:a,search:l,status:i,project:r})),{data:f=[]}=j(D),y=g.useMemo(()=>{if(!d)return[];const u=new Set(f.map(x=>x.sessionId));return d.sessions.map(x=>({...x,isActive:u.has(x.sessionId)||x.isActive}))},[d,f]);function b(u){t({to:"/sessions",search:x=>({...x,page:u})})}function s(u){m(u),t({to:"/sessions",search:x=>({...x,pageSize:u,page:1})})}if(o)return e.jsx("div",{className:"space-y-3",children:Array.from({length:a}).map((u,x)=>e.jsx("div",{className:"h-28 animate-pulse rounded-xl border border-gray-800 bg-gray-900/50"},x))});const h=d?.totalCount??0,z=d?.totalPages??1,I=d?.projects??[],E=f.length;return e.jsxs("div",{children:[e.jsx(_,{projects:I,activeCount:E}),e.jsx("div",{className:"mt-4 space-y-2",children:y.length===0?e.jsx("div",{className:"py-12 text-center text-sm text-gray-500",children:h===0&&!l&&i==="all"&&!r?"No sessions found in ~/.claude":"No sessions match your filters"}):y.map(u=>e.jsx(B,{session:u},u.sessionId))}),e.jsx("div",{className:"mt-4",children:e.jsx(V,{page:d?.page??n,totalPages:z,totalCount:h,pageSize:a,onPageChange:b,onPageSizeChange:s})})]})}function H(){return e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-white",children:"Sessions"}),e.jsx("p",{className:"mt-1 text-sm text-gray-400",children:"All Claude Code sessions from ~/.claude"}),e.jsx("div",{className:"mt-6",children:e.jsx(K,{})})]})}export{H as component};