nomnomtokens 0.2.0 → 0.3.0

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 (181) hide show
  1. package/README.md +15 -10
  2. package/dist/index.js +4208 -3455
  3. package/dist/index.js.map +1 -1
  4. package/package.json +1 -1
  5. package/web/nitro.json +1 -1
  6. package/web/public/_nuxt/4C_a23zt.js +1 -0
  7. package/web/public/_nuxt/B1jhn8zK.js +1 -0
  8. package/web/public/_nuxt/B2aHje2L.js +1 -0
  9. package/web/public/_nuxt/BAfR3Wl32.js +1 -0
  10. package/web/public/_nuxt/BMSLzLlT.js +1 -0
  11. package/web/public/_nuxt/BOKlFKrX.js +1 -0
  12. package/web/public/_nuxt/Ba6z8j_4.js +1 -0
  13. package/web/public/_nuxt/{B1O-ibEy.js → Bag9D5rq.js} +2 -2
  14. package/web/public/_nuxt/Bia8fJFj.js +1 -0
  15. package/web/public/_nuxt/{tqUqm2f-.js → Bprokln-.js} +1 -1
  16. package/web/public/_nuxt/C51OzH6V.js +1 -0
  17. package/web/public/_nuxt/C9MiT_Wm.js +96 -0
  18. package/web/public/_nuxt/CDzUujek.js +2 -0
  19. package/web/public/_nuxt/CIHIOSzn.js +1 -0
  20. package/web/public/_nuxt/CIKwfDBl.js +1 -0
  21. package/web/public/_nuxt/COwSpxrx.js +1 -0
  22. package/web/public/_nuxt/CZSbzIi-.js +1 -0
  23. package/web/public/_nuxt/CfBMjq8x.js +1 -0
  24. package/web/public/_nuxt/Ch3y3mGJ.js +1 -0
  25. package/web/public/_nuxt/{B7bAnU98.js → CkRZsevx.js} +1 -1
  26. package/web/public/_nuxt/Cq1Sq3Go.js +1 -0
  27. package/web/public/_nuxt/CsN_oUfs.js +1 -0
  28. package/web/public/_nuxt/CvIugsJe2.js +1 -0
  29. package/web/public/_nuxt/D49wVVwm2.js +1 -0
  30. package/web/public/_nuxt/D4C6J8YV.js +1 -0
  31. package/web/public/_nuxt/D7Ph0tZD.js +1 -0
  32. package/web/public/_nuxt/D9Mxq5ER.js +1 -0
  33. package/web/public/_nuxt/D9j6aFUy.js +1 -0
  34. package/web/public/_nuxt/DMgad8mU.js +1 -0
  35. package/web/public/_nuxt/DPnm6zS2.js +1 -0
  36. package/web/public/_nuxt/DQEnwY-5.js +1 -0
  37. package/web/public/_nuxt/Dh50_bkx.js +1 -0
  38. package/web/public/_nuxt/DhJW7zb9.js +1 -0
  39. package/web/public/_nuxt/DnTwjl0_2.js +47 -0
  40. package/web/public/_nuxt/DsH8sTHf.js +1 -0
  41. package/web/public/_nuxt/Dy30RUCD2.js +1 -0
  42. package/web/public/_nuxt/OU1MVgXQ.js +1 -0
  43. package/web/public/_nuxt/W3KL_OjU.js +1 -0
  44. package/web/public/_nuxt/{BgvEQa6E.js → ZjfInHdu.js} +2 -2
  45. package/web/public/_nuxt/builds/latest.json +1 -1
  46. package/web/public/_nuxt/builds/meta/e90c8a2d-9e50-4b58-8019-6b1bf4c8fc6d.json +1 -0
  47. package/web/public/_nuxt/cbxnBwm6.js +1 -0
  48. package/web/public/_nuxt/entry.MbqNBIeH.css +2 -0
  49. package/web/public/_nuxt/m3-Vaz25.js +1 -0
  50. package/web/server/chunks/_/filters.mjs +1 -1
  51. package/web/server/chunks/build/{Badge-C0eTW_zX.mjs → Badge-BmQgPqZ1.mjs} +2 -2
  52. package/web/server/chunks/build/{Badge-C0eTW_zX.mjs.map → Badge-BmQgPqZ1.mjs.map} +1 -1
  53. package/web/server/chunks/build/{Button-7BTto1uR.mjs → Button-DnpDAHT3.mjs} +2 -2
  54. package/web/server/chunks/build/{Button-7BTto1uR.mjs.map → Button-DnpDAHT3.mjs.map} +1 -1
  55. package/web/server/chunks/build/Card-Be4cmWue.mjs +30 -0
  56. package/web/server/chunks/build/Card-Be4cmWue.mjs.map +1 -0
  57. package/web/server/chunks/build/{CardAction-M7nFIGyX.mjs → CardAction-CkY0xYx3.mjs} +2 -2
  58. package/web/server/chunks/build/{CardAction-M7nFIGyX.mjs.map → CardAction-CkY0xYx3.mjs.map} +1 -1
  59. package/web/server/chunks/build/{CardTitle-D9ve_H9E.mjs → CardContent-C_IMqI8K.mjs} +26 -26
  60. package/web/server/chunks/build/CardContent-C_IMqI8K.mjs.map +1 -0
  61. package/web/server/chunks/build/{EmptyState-DWgJMVCI.mjs → EmptyState-FUeBWCT0.mjs} +2 -2
  62. package/web/server/chunks/build/{EmptyState-DWgJMVCI.mjs.map → EmptyState-FUeBWCT0.mjs.map} +1 -1
  63. package/web/server/chunks/build/{FilterBar-vwbfttN7.mjs → FilterBar-BlEsJ5dy.mjs} +5 -5
  64. package/web/server/chunks/build/{FilterBar-vwbfttN7.mjs.map → FilterBar-BlEsJ5dy.mjs.map} +1 -1
  65. package/web/server/chunks/build/{Progress-BckzQSF5.mjs → Progress-BUpfE9Os.mjs} +2 -2
  66. package/web/server/chunks/build/{Progress-BckzQSF5.mjs.map → Progress-BUpfE9Os.mjs.map} +1 -1
  67. package/web/server/chunks/build/Skeleton-BidW2_bw.mjs +28 -0
  68. package/web/server/chunks/build/Skeleton-BidW2_bw.mjs.map +1 -0
  69. package/web/server/chunks/build/{Sparkline-Cxifh2uK.mjs → Sparkline-CaCRq45J.mjs} +6 -5
  70. package/web/server/chunks/build/Sparkline-CaCRq45J.mjs.map +1 -0
  71. package/web/server/chunks/build/{TableCell-BZwItbY_.mjs → TableCell-xM3CadYu.mjs} +2 -2
  72. package/web/server/chunks/build/{TableCell-BZwItbY_.mjs.map → TableCell-xM3CadYu.mjs.map} +1 -1
  73. package/web/server/chunks/build/{Tooltip-BVTXdgMT.mjs → Tooltip-BZX3jLtj.mjs} +16 -4
  74. package/web/server/chunks/build/Tooltip-BZX3jLtj.mjs.map +1 -0
  75. package/web/server/chunks/build/{_id_-BKmH0aHH.mjs → _id_-BvccBwzH.mjs} +14 -11
  76. package/web/server/chunks/build/_id_-BvccBwzH.mjs.map +1 -0
  77. package/web/server/chunks/build/alerts-6wBAzQHU.mjs +159 -0
  78. package/web/server/chunks/build/alerts-6wBAzQHU.mjs.map +1 -0
  79. package/web/server/chunks/build/{fetch-Debw9R9i.mjs → asyncData-CMa0z9Yw.mjs} +8 -129
  80. package/web/server/chunks/build/asyncData-CMa0z9Yw.mjs.map +1 -0
  81. package/web/server/chunks/build/default-BokiYQNv.mjs +847 -0
  82. package/web/server/chunks/build/default-BokiYQNv.mjs.map +1 -0
  83. package/web/server/chunks/build/error-404-DPRNxhXC.mjs +2 -2
  84. package/web/server/chunks/build/error-500-DXGrtqsW.mjs +2 -2
  85. package/web/server/chunks/build/export-BhfwmSMl.mjs +184 -0
  86. package/web/server/chunks/build/export-BhfwmSMl.mjs.map +1 -0
  87. package/web/server/chunks/build/fetch-DJ9NNbFP.mjs +131 -0
  88. package/web/server/chunks/build/fetch-DJ9NNbFP.mjs.map +1 -0
  89. package/web/server/chunks/build/import-CO3NEu0P.mjs +233 -0
  90. package/web/server/chunks/build/import-CO3NEu0P.mjs.map +1 -0
  91. package/web/server/chunks/build/{limits-CnRLojCD.mjs → limits-CX9zBSqw.mjs} +15 -12
  92. package/web/server/chunks/build/limits-CX9zBSqw.mjs.map +1 -0
  93. package/web/server/chunks/build/nuxt-link-mYiLFsJs.mjs +2 -2
  94. package/web/server/chunks/build/{pages-DlIWqsLr.mjs → pages-DyXqJyPq.mjs} +140 -15
  95. package/web/server/chunks/build/pages-DyXqJyPq.mjs.map +1 -0
  96. package/web/server/chunks/build/{providers-DOMeWSDZ.mjs → providers-Ca7keu2G.mjs} +17 -14
  97. package/web/server/chunks/build/providers-Ca7keu2G.mjs.map +1 -0
  98. package/web/server/chunks/build/scopes-E5z80S19.mjs +1348 -0
  99. package/web/server/chunks/build/scopes-E5z80S19.mjs.map +1 -0
  100. package/web/server/chunks/build/{sessions-peyhKv2_.mjs → sessions-CESRiCOS.mjs} +14 -11
  101. package/web/server/chunks/build/sessions-CESRiCOS.mjs.map +1 -0
  102. package/web/server/chunks/build/{timeline-P2RrZyBs.mjs → timeline-d27OlbZN.mjs} +16 -13
  103. package/web/server/chunks/build/timeline-d27OlbZN.mjs.map +1 -0
  104. package/web/server/chunks/build/useFormat-NkyUqeik.mjs +71 -0
  105. package/web/server/chunks/build/useFormat-NkyUqeik.mjs.map +1 -0
  106. package/web/server/chunks/build/{useStats-Dor6kLek.mjs → useStats-CmYzpdbE.mjs} +11 -3
  107. package/web/server/chunks/build/useStats-CmYzpdbE.mjs.map +1 -0
  108. package/web/server/chunks/nitro/nitro.mjs +739 -195
  109. package/web/server/chunks/nitro/nitro.mjs.map +1 -1
  110. package/web/server/chunks/routes/api/alerts.get.mjs +24 -0
  111. package/web/server/chunks/routes/api/alerts.get.mjs.map +1 -0
  112. package/web/server/chunks/routes/api/alerts.put.mjs +27 -0
  113. package/web/server/chunks/routes/api/alerts.put.mjs.map +1 -0
  114. package/web/server/chunks/routes/api/events/stream.get.mjs +3 -3
  115. package/web/server/chunks/routes/api/export.get.mjs +36 -0
  116. package/web/server/chunks/routes/api/export.get.mjs.map +1 -0
  117. package/web/server/chunks/routes/api/import/csv.post.mjs +65 -0
  118. package/web/server/chunks/routes/api/import/csv.post.mjs.map +1 -0
  119. package/web/server/chunks/routes/api/ingest.post.mjs +3 -3
  120. package/web/server/chunks/routes/api/meta.get.mjs +3 -3
  121. package/web/server/chunks/routes/api/stats/heatmap.get.mjs +2 -2
  122. package/web/server/chunks/routes/api/stats/limits.get.mjs +3 -3
  123. package/web/server/chunks/routes/api/stats/providers.get.mjs +3 -3
  124. package/web/server/chunks/routes/api/stats/scopes.get.mjs +3 -3
  125. package/web/server/chunks/routes/api/stats/series.get.mjs +3 -3
  126. package/web/server/chunks/routes/api/stats/session/_id_.get.mjs +3 -3
  127. package/web/server/chunks/routes/api/stats/sessions.get.mjs +3 -3
  128. package/web/server/chunks/routes/api/stats/summary.get.mjs +3 -3
  129. package/web/server/chunks/routes/renderer.mjs +2 -2
  130. package/web/server/chunks/virtual/entry.mjs +26 -11
  131. package/web/server/chunks/virtual/precomputed.mjs +1 -1
  132. package/web/server/chunks/virtual/precomputed.mjs.map +1 -1
  133. package/web/server/index.mjs +3 -3
  134. package/web/public/_nuxt/075nz0Lp.js +0 -1
  135. package/web/public/_nuxt/BDF8cO8j.js +0 -1
  136. package/web/public/_nuxt/BGnU88BC.js +0 -1
  137. package/web/public/_nuxt/BPhzhJvP.js +0 -1
  138. package/web/public/_nuxt/BgaLDD2o.js +0 -1
  139. package/web/public/_nuxt/BioUjjBz.js +0 -1
  140. package/web/public/_nuxt/BlvSknce.js +0 -1
  141. package/web/public/_nuxt/Bn14i44R.js +0 -1
  142. package/web/public/_nuxt/BnfUOzcc.js +0 -1
  143. package/web/public/_nuxt/Bv0odo9W.js +0 -1
  144. package/web/public/_nuxt/Bxx0Z5z6.js +0 -1
  145. package/web/public/_nuxt/CiWIPYVi.js +0 -1
  146. package/web/public/_nuxt/CqSNCP5f.js +0 -1
  147. package/web/public/_nuxt/Ctg1e1JV.js +0 -1
  148. package/web/public/_nuxt/Cu3rIkF2.js +0 -47
  149. package/web/public/_nuxt/Cutk9Ewh.js +0 -1
  150. package/web/public/_nuxt/DCVp7cZB.js +0 -96
  151. package/web/public/_nuxt/DCnkQFS0.js +0 -1
  152. package/web/public/_nuxt/DJbGqyvB.js +0 -1
  153. package/web/public/_nuxt/DMT7tA5C.js +0 -1
  154. package/web/public/_nuxt/M0pG6UQn.js +0 -1
  155. package/web/public/_nuxt/RlymLGHS.js +0 -1
  156. package/web/public/_nuxt/TmkSb4nj.js +0 -1
  157. package/web/public/_nuxt/_S09PGd-.js +0 -1
  158. package/web/public/_nuxt/builds/meta/63ad5f37-5b40-456d-8f53-69ff57b4903c.json +0 -1
  159. package/web/public/_nuxt/cHkFs-ms.js +0 -1
  160. package/web/public/_nuxt/entry.DTNjKx6y.css +0 -2
  161. package/web/public/_nuxt/fjfS4ymU.js +0 -1
  162. package/web/public/_nuxt/moFy8lON.js +0 -2
  163. package/web/public/_nuxt/oT-x2NdZ.js +0 -1
  164. package/web/server/chunks/build/CardTitle-D9ve_H9E.mjs.map +0 -1
  165. package/web/server/chunks/build/Sparkline-Cxifh2uK.mjs.map +0 -1
  166. package/web/server/chunks/build/Tooltip-BVTXdgMT.mjs.map +0 -1
  167. package/web/server/chunks/build/_id_-BKmH0aHH.mjs.map +0 -1
  168. package/web/server/chunks/build/default-C8deLrP0.mjs +0 -556
  169. package/web/server/chunks/build/default-C8deLrP0.mjs.map +0 -1
  170. package/web/server/chunks/build/fetch-Debw9R9i.mjs.map +0 -1
  171. package/web/server/chunks/build/limits-CnRLojCD.mjs.map +0 -1
  172. package/web/server/chunks/build/pages-DlIWqsLr.mjs.map +0 -1
  173. package/web/server/chunks/build/providers-DOMeWSDZ.mjs.map +0 -1
  174. package/web/server/chunks/build/scopes-Bagepvnf.mjs +0 -794
  175. package/web/server/chunks/build/scopes-Bagepvnf.mjs.map +0 -1
  176. package/web/server/chunks/build/sessions-peyhKv2_.mjs.map +0 -1
  177. package/web/server/chunks/build/timeline-P2RrZyBs.mjs.map +0 -1
  178. package/web/server/chunks/build/useFormat-BfI0x0lv.mjs +0 -119
  179. package/web/server/chunks/build/useFormat-BfI0x0lv.mjs.map +0 -1
  180. package/web/server/chunks/build/useStats-Dor6kLek.mjs.map +0 -1
  181. /package/web/public/_nuxt/{BDNMzG2s.js → BDNMzG2s2.js} +0 -0
@@ -1 +0,0 @@
1
- import{C as e,D as t,E as n,M as r,P as i,T as a,Z as o,ct as s,et as c,j as l,lt as u,qt as d,v as f,w as p,wt as m}from"./BgvEQa6E.js";import{it as h}from"./BgaLDD2o.js";import{n as g}from"./DCnkQFS0.js";import{t as _}from"./Bv0odo9W.js";import{n as v,t as y}from"./BPhzhJvP.js";import{t as b}from"./RlymLGHS.js";import{n as x,t as S}from"./CiWIPYVi.js";import{i as C,n as ee,r as te,t as ne}from"./M0pG6UQn.js";import{l as re,o as ie,r as ae,s as w,t as T,u as E}from"./075nz0Lp.js";import{a as D,i as O,n as k,o as A,r as j,t as M}from"./TmkSb4nj.js";var N=y(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),P={class:`space-y-6`},F={key:0},I={class:`font-mono text-2xl font-semibold tracking-tight`},L={class:`text-muted-foreground mt-1 text-sm`},R={class:`grid gap-4 sm:grid-cols-2 lg:grid-cols-4`},z={key:0},oe={class:`text-success`},B={class:`text-destructive ml-1`},V={key:1,class:`text-muted-foreground`},H=i({__name:`[id]`,async setup(i){let y,H,U=h(),W=e(()=>String(U.params.id)),{data:G,pending:K,error:q}=([y,H]=s(()=>_(()=>`/api/stats/session/${W.value}`,`$1wtwpSAQCo`)),y=await y,H(),y);g({title:()=>`Session ${W.value.slice(0,8)} — nomnomtokens`});let se=e(()=>{let e=0;return(G.value?.events??[]).map(t=>(e+=t.costUsd??0,e))}),J=e(()=>(G.value?.events??[]).reduce((e,t)=>e===null||(t.costUsd??0)>e.cost?{cost:t.costUsd??0,ts:t.ts}:e,null));return(e,i)=>{let s=v,h=b,g=S,_=ne,y=C,H=te,U=x,W=ee,Y=re,X=A,Z=D,ce=O,Q=j,le=k,$=M,ue=E;return o(),t(`div`,P,[r(s,{to:`/sessions`,variant:`ghost`,size:`sm`,class:`-ml-2 gap-1.5`},{default:u(()=>[r(m(N),{class:`size-4`}),i[0]||=l(` Sessions `,-1)]),_:1}),m(q)?(o(),t(`div`,F,[r(h,{title:`No such session`,description:`It may have been outside the scanned history, or the id is wrong.`})])):m(G)?(o(),t(f,{key:1},[p(`div`,null,[p(`h1`,I,d(m(G).sessionId.slice(0,8)),1),p(`p`,L,d(m(G).events.length)+` priced turns · `+d(m(G).lines.added+m(G).lines.removed)+` lines changed `,1)]),p(`div`,R,[r(g,{label:`Cost`,value:(`formatUsd`in e?e.formatUsd:m(w))(m(G).totals.costUsd)},null,8,[`value`]),r(g,{label:`Tokens`,value:(`formatCompact`in e?e.formatCompact:m(T))(m(G).totals.tokens)},null,8,[`value`]),r(g,{label:`Cache read`,value:(`formatCompact`in e?e.formatCompact:m(T))(m(G).totals.qtyCacheRead),detail:`${(`formatRatio`in e?e.formatRatio:m(ie))(m(G).totals.qtyCacheRead/(m(G).totals.qtyCacheRead+m(G).totals.qtyIn||1))} hit rate`},null,8,[`value`,`detail`]),r(g,{label:`Most expensive turn`,value:(`formatUsd`in e?e.formatUsd:m(w))(m(J)?.cost??0),detail:m(J)?(`formatDateTime`in e?e.formatDateTime:m(ae))(m(J).ts):void 0},null,8,[`value`,`detail`])]),r(Y,null,{default:u(()=>[r(H,{class:`border-b pb-4`},{default:u(()=>[r(_,null,{default:u(()=>[...i[1]||=[l(`Cumulative spend`,-1)]]),_:1}),r(y,null,{default:u(()=>[...i[2]||=[l(`How the bill accrued across the session.`,-1)]]),_:1})]),_:1}),r(W,{class:`pt-5`},{default:u(()=>[r(U,{values:m(se),class:`h-24 w-full`},null,8,[`values`])]),_:1})]),_:1}),r(Y,{class:`py-0`},{default:u(()=>[r($,null,{default:u(()=>[r(ce,null,{default:u(()=>[r(Z,null,{default:u(()=>[r(X,{class:`pl-4`},{default:u(()=>[...i[3]||=[l(`Time`,-1)]]),_:1}),r(X,null,{default:u(()=>[...i[4]||=[l(`Model`,-1)]]),_:1}),r(X,{numeric:``},{default:u(()=>[...i[5]||=[l(`Cost`,-1)]]),_:1}),r(X,{numeric:``},{default:u(()=>[...i[6]||=[l(`In`,-1)]]),_:1}),r(X,{numeric:``},{default:u(()=>[...i[7]||=[l(`Out`,-1)]]),_:1}),r(X,{numeric:``},{default:u(()=>[...i[8]||=[l(`Cache read`,-1)]]),_:1}),r(X,{numeric:``,class:`pr-4`},{default:u(()=>[...i[9]||=[l(`Lines`,-1)]]),_:1})]),_:1})]),_:1}),r(le,null,{default:u(()=>[(o(!0),t(f,null,c(m(G).events,n=>(o(),a(Z,{key:n.id},{default:u(()=>[r(Q,{class:`text-muted-foreground pl-4 tabular text-xs`},{default:u(()=>[l(d(new Date(n.ts).toLocaleTimeString()),1)]),_:2},1024),r(Q,{class:`font-mono text-xs`},{default:u(()=>[l(d(n.unitLabel??`—`),1)]),_:2},1024),r(Q,{numeric:``},{default:u(()=>[l(d((`formatUsd`in e?e.formatUsd:m(w))(n.costUsd)),1)]),_:2},1024),r(Q,{numeric:``},{default:u(()=>[l(d((`formatCompact`in e?e.formatCompact:m(T))(n.qty.in??0)),1)]),_:2},1024),r(Q,{numeric:``},{default:u(()=>[l(d((`formatCompact`in e?e.formatCompact:m(T))(n.qty.out??0)),1)]),_:2},1024),r(Q,{numeric:``},{default:u(()=>[l(d((`formatCompact`in e?e.formatCompact:m(T))(n.qty.cacheRead??0)),1)]),_:2},1024),r(Q,{numeric:``,class:`pr-4`},{default:u(()=>[(n.meta.linesAdded??0)+(n.meta.linesRemoved??0)>0?(o(),t(`span`,z,[p(`span`,oe,`+`+d(n.meta.linesAdded??0),1),p(`span`,B,`−`+d(n.meta.linesRemoved??0),1)])):(o(),t(`span`,V,`—`))]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})],64)):m(K)?(o(),a(ue,{key:2,class:`h-96 w-full`})):n(``,!0)])}}});export{H as default};
@@ -1 +0,0 @@
1
- import{D as e,P as t,Wt as n,Z as r,tt as i,wt as a}from"./BgvEQa6E.js";import{i as o}from"./Bv0odo9W.js";var s=Object.assign(t({__name:`CardAction`,props:{class:{}},setup(t){let s=t;return(t,c)=>(r(),e(`div`,{"data-slot":`card-action`,class:n(a(o)(`col-start-2 row-span-2 row-start-1 self-start justify-self-end`,s.class))},[i(t.$slots,`default`)],2))}}),{__name:`UiCardAction`});export{s as t};
@@ -1,47 +0,0 @@
1
- import{A as e,B as t,E as n,F as r,I as i,L as a,M as o,O as s,P as c,R as l,T as u,_ as d,a as f,d as p,i as m,j as h,k as g,l as _,m as v,n as y,o as b,p as x,r as S,s as C,t as w,w as T,y as E}from"./B1O-ibEy.js";import{C as D,D as O,E as ee,Kt as k,M as A,P as j,T as M,U as te,V as ne,Wt as N,X as re,Y as ie,Z as P,_t as F,at as ae,et as I,j as L,lt as R,ot as z,qt as B,ut as oe,v as V,w as H,wt as U,z as se}from"./BgvEQa6E.js";import{Dt as ce,at as le,it as ue}from"./BgaLDD2o.js";import{n as de}from"./DCnkQFS0.js";import{i as W,n as fe}from"./Bv0odo9W.js";import{t as pe}from"./BPhzhJvP.js";import{s as me,t as he,u as ge}from"./DJbGqyvB.js";import{n as _e,t as ve}from"./BlvSknce.js";import{i as ye,n as be,r as xe,t as Se}from"./M0pG6UQn.js";import{l as Ce,n as G,s as K,t as q,u as J}from"./075nz0Lp.js";import{t as we}from"./Ctg1e1JV.js";var Te=pe(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]);function Ee({x:e,y:t,w:n,h:r,tl:i=!1,tr:a=!1,bl:o=!1,br:s=!1,r:c=0}){let l;l=`M${e+c},${t}h${n-2*c}`;let u=a?c:0,d=a?0:c;return l+=`a${u},${u} 0 0 1 ${u},${u}`,l+=`h${d}v${d}`,l+=`v${r-2*c}`,u=s?c:0,d=s?0:c,l+=`a${u},${u} 0 0 1 ${-u},${u}`,l+=`v${d}h${-d}`,l+=`h${2*c-n}`,u=o?c:0,d=o?0:c,l+=`a${u},${u} 0 0 1 ${-u},${-u}`,l+=`h${-d}v${-d}`,l+=`v${2*c-r}`,u=i?c:0,d=i?0:c,l+=`a${u},${u} 0 0 1 ${u},${-u}`,l+=`v${-d}h${d}`,l+=`z`,l}var De=Object.assign(Object.assign({},v),{color:void 0,barMaxWidth:void 0,barWidth:void 0,dataStep:void 0,barPadding:0,roundedCorners:2,cursor:null,barMinHeight1Px:!1,barMinHeightZeroValue:null,orientation:p.Vertical}),Oe=t({bar:()=>X,barGroup:()=>Z,barGroupExit:()=>Q,globalStyles:()=>ke,root:()=>Y}),Y=T`
2
- label: stacked-bar-component;
3
- `,ke=u`
4
- :root {
5
- --vis-stacked-bar-cursor: default;
6
- --vis-stacked-bar-fill-color: var(--vis-color-main);
7
- --vis-stacked-bar-stroke-color: none;
8
- --vis-stacked-bar-stroke-width: 0px;
9
- --vis-stacked-bar-hover-stroke-width: none;
10
- --vis-stacked-bar-hover-stroke-color: none;
11
-
12
- /* Dark Theme */
13
- --vis-dark-stacked-bar-stroke-color: none;
14
- }
15
-
16
- ${E} ${`.${Y}`} {
17
- --vis-stacked-bar-stroke-color: var(--vis-dark-stacked-bar-stroke-color);
18
- }
19
- `,X=T`
20
- label: bar;
21
- fill: var(--vis-stacked-bar-fill-color);
22
- stroke: var(--vis-stacked-bar-stroke-color);
23
- stroke-width: var(--vis-stacked-bar-stroke-width);
24
- cursor: var(--vis-stacked-bar-cursor);
25
-
26
- &:hover {
27
- stroke-width: var(--vis-stacked-bar-hover-stroke-width);
28
- stroke: var(--vis-stacked-bar-hover-stroke-color);
29
- }
30
- `,Z=T`
31
- label: barGroup;
32
- `,Q=T`
33
- label: barGroupExit;
34
- `,$=class extends x{constructor(e){super(),this._defaultConfig=De,this.config=this._defaultConfig,this.getAccessors=()=>c(this.config.y)?this.config.y:[this.config.y],this.stacked=!0,this.events={},this._barData=[],e&&this.setConfig(e)}get bleed(){if(this._barData=this._getVisibleData(),this._barData.length===0)return{top:0,bottom:0,left:0,right:0};let e=!this.isVertical()&&this.dataScale.range()[0]>this.dataScale.range()[1],t=this.dataScale.domain(),n=this._getBarWidth()/2,r=this._barData.map((e,t)=>g(e,this.config.x,t)),i=a(r),o=l(r),s=this.dataScale(i),c=this.dataScale(o),u=this.dataScale.invert(s+(e?n:-n)),d=this.dataScale.invert(c+(e?-n:n)),f=u<=t[0]?this.dataScale(t[0])-this.dataScale(u):0,p=d>t[1]?this.dataScale(d)-this.dataScale(t[1]):0;return{top:this.isVertical()?0:e?-p:f,bottom:this.isVertical()?0:e?-f:p,left:this.isVertical()?f:0,right:this.isVertical()?p:0}}get dataScale(){return this.isVertical()?this.xScale:this.yScale}get valueScale(){return this.isVertical()?this.yScale:this.xScale}isVertical(){return this.config.orientation===p.Vertical}_render(t){let{config:n}=this,r=i(t)?t:n.duration,a=this.getAccessors(),s=e(this._barData,0,a,this._prevNegative);this._prevNegative=s.map(e=>!!e.isMostlyNegative);let c=this.g.selectAll(`.${Z}`).data(this._barData,(e,t)=>`${o(e,n.id,t)??t}`),l=(e,t)=>{let r=this.dataScale(g(e,n.x,t));return`translate(${this.isVertical()?r:0},${this.isVertical()?0:r})`},u=c.enter().append(`g`).attr(`class`,Z).attr(`transform`,l).style(`opacity`,1).merge(c);d(u,r).attr(`transform`,l).style(`opacity`,1);let f=c.exit().attr(`class`,Q);d(f,r).style(`opacity`,0).remove().on(`interrupt`,function(){this.remove()}),d(f.selectAll(`.${X}`),r).attr(`transform`,this.isVertical()?`translate(0,${this._height/3})`:`translate(${this._width/6},0)`);let p=u.selectAll(`.${X}`).data((e,t)=>{let n=s.map((n,r)=>({datum:e,index:t,stacked:n[t],stackIndex:r})).filter(e=>e.stacked[0]!==e.stacked[1]);return n.forEach((e,t)=>{e.isEnding=t===n.length-1||t<=n.length-1&&n[t+1].stacked[0]!==e.stacked[1]}),n},e=>e.stackIndex),m=p.enter().append(`path`).attr(`class`,X).attr(`d`,e=>this._getBarPath(e,!0)).style(`fill`,e=>_(e.datum,n.color,e.stackIndex)).merge(p);d(m,r).attr(`d`,e=>this._getBarPath(e)).style(`fill`,e=>_(e.datum,n.color,e.stackIndex)).style(`cursor`,e=>o(e.datum,n.cursor,e.stackIndex)),d(p.exit(),r).style(`opacity`,0).remove().on(`interrupt`,function(){this.remove()})}_getBarWidth(){let{config:e,datamodel:{data:t}}=this;if(r(t))return 0;if(e.barWidth)return a([e.barWidth,e.barMaxWidth]);let n=this.dataScale.bandwidth,i=this.dataScale.domain?this.dataScale.domain():[],o=1+(n?i.length:i[1]-i[0])/e.dataStep||!n&&t.filter((t,n)=>{let r=g(t,e.x,n);return r>=i[0]&&r<=i[1]}).length||t.length;!n&&o>=2&&(o+=1);let s=(o<2?1:1-e.barPadding)*(this.isVertical()?this._width:this._height)/o;return a([s,e.barMaxWidth])}_getVisibleData(){let{config:e,datamodel:{data:t}}=this,n=this._getBarWidth(),r=t.length<2?0:n/2,i=this.dataScale,a=Math.abs(i.invert(r)-i.invert(0));return t?.filter((t,n)=>{let r=g(t,e.x,n),o=i.domain(),s=+o[0],c=+o[1];return r>=s-a&&r<=c+a})}_getBarPath(e,t=!1){let{config:r}=this,a=this.getAccessors(),o=this._getBarWidth(),s=e.stacked[1]<0,c=e.isEnding,l=g(e.datum,a[e.stackIndex],e.index),u=t?0:Math.abs(this.valueScale(e.stacked[0])-this.valueScale(e.stacked[1])),d=!t&&r.barMinHeight1Px&&u<1&&isFinite(l)&&l!==r.barMinHeightZeroValue?1:u,f=t?this.valueScale(0):this.valueScale(s?e.stacked[0]:e.stacked[1])-(u<1&&r.barMinHeight1Px?1:0),p=-o/2,m=o,h=r.roundedCorners?i(r.roundedCorners)?+r.roundedCorners:m/2:0,_=n(h,0,Math.min(u,m)/2),v=this.yScale.range()[0]>this.yScale.range()[1];return Ee({x:this.isVertical()?p:f-d,y:this.isVertical()?f+(v?0:-d):p,w:this.isVertical()?m:d,h:this.isVertical()?d:m,tl:c&&(this.isVertical()?!s&&v||s&&!v:s),tr:c&&(this.isVertical()?!s&&v||s&&!v:!s),br:c&&(this.isVertical()?s&&v||!s&&!v:!s),bl:c&&(this.isVertical()?s&&v||!s&&!v:s),r:_})}_mapEventDatum(e){return{datum:Object.assign(Object.assign({},e),e.datum),index:e.index}}getValueScaleExtent(e){let{datamodel:t}=this,n=this.getAccessors(),r=e?this._getVisibleData():t.data;return h(r,...n)}getDataScaleExtent(){let{config:e,datamodel:t}=this;return s(t.data,e.x)}getYDataExtent(e){return this.isVertical()?this.getValueScaleExtent(e):this.getDataScaleExtent()}getXDataExtent(){return this.isVertical()?this.getDataScaleExtent():this.getValueScaleExtent(!1)}};$.selectors=Oe;var Ae={"data-vis-component":``};$.selectors;var je=j({__name:`index`,props:{color:{type:[Function,String,Array,null]},barWidth:{},barMaxWidth:{},dataStep:{},barPadding:{},roundedCorners:{type:[Number,Boolean]},cursor:{type:[Function,String,null]},barMinHeight1Px:{type:Boolean},barMinHeightZeroValue:{},orientation:{},x:{type:[Function,Number,null]},y:{type:[Function,Number,null,Array]},id:{type:Function},xScale:{type:[Object,Function]},yScale:{type:[Object,Function]},excludeFromDomainCalculation:{type:Boolean},duration:{},events:{},attributes:{},data:{}},setup(e,{expose:t}){let n=se(f),r=e,i=D(()=>n.data.value??r.data),a=b(r),o=F();return ie(()=>{te(()=>{o.value=new $(a.value),o.value?.setData(i.value),n.update(o.value)})}),re(()=>{o.value?.destroy(),n.destroy()}),z(a,(e,t)=>{C(e,t)||(o.value?.setConfig(a.value),o.value?.render())}),z(i,()=>{o.value?.setData(i.value)}),t({component:o}),(e,t)=>(P(),O(`div`,Ae))}}),Me={class:`relative`},Ne=[`aria-label`],Pe=[`value`],Fe=Object.assign(j({__name:`Select`,props:ne({options:{},class:{},ariaLabel:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=ae(e,`modelValue`);return(e,r)=>(P(),O(`div`,Me,[oe(H(`select`,{"onUpdate:modelValue":r[0]||=e=>n.value=e,"data-slot":`select`,"aria-label":t.ariaLabel,class:N(U(W)(`border-input dark:bg-input/30 flex h-9 w-full appearance-none items-center rounded-md border bg-transparent py-2 pr-8 pl-3 text-sm shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50`,t.class))},[(P(!0),O(V,null,I(t.options,e=>(P(),O(`option`,{key:e.value,value:e.value},B(e.label),9,Pe))),128))],10,Ne),[[ce,n.value]]),A(U(Te),{class:`pointer-events-none absolute top-1/2 right-3 size-4 -translate-y-1/2 opacity-50`})]))}}),{__name:`UiSelect`}),Ie=Object.assign(j({__name:`TimeSeriesChart`,props:{rows:{},groups:{},metric:{},class:{},height:{default:280}},setup(e){let t=e,n=D(()=>t.groups.length>0?t.groups:[`total`]),r=e=>t.metric===`cost`?e.costUsd:t.metric===`tokens`?e.tokens:e.sessions,i=D(()=>{let e=new Map;for(let i of t.rows){let a=e.get(i.bucket);a||(a={x:new Date(i.bucket).getTime(),label:i.bucket,values:n.value.map(()=>0),total:0},e.set(i.bucket,a));let o=t.groups.length>0?n.value.indexOf(i.group??`unknown`):0;if(o>=0){let e=r(i);a.values[o]=(a.values[o]??0)+e,a.total+=e}}return[...e.values()].sort((e,t)=>e.x-t.x)}),a=e=>e.x,o=D(()=>n.value.map((e,t)=>e=>e.values[t]??0)),s=(e,t)=>`var(--chart-${t%8+1})`,c=e=>t.metric===`cost`?K(e):t.metric===`tokens`?q(e):String(e),l=e=>G(e);function u(e){let t=n.value.map((t,n)=>({key:t,value:e.values[n]??0,i:n})).filter(e=>e.value>0).sort((e,t)=>t.value-e.value).map(e=>`
35
- <div class="flex items-center gap-2">
36
- <span class="size-2 rounded-[2px]" style="background: var(--chart-${e.i%8+1})"></span>
37
- <span class="flex-1 truncate">${e.key}</span>
38
- <span class="tabular font-medium">${c(e.value)}</span>
39
- </div>`).join(``);return`
40
- <div class="bg-popover text-popover-foreground min-w-44 space-y-1.5 rounded-md border p-2.5 text-xs shadow-md">
41
- <div class="font-medium">${G(e.x)}</div>
42
- ${t||`<div class="text-muted-foreground">no activity</div>`}
43
- <div class="flex items-center gap-2 border-t pt-1.5">
44
- <span class="flex-1">Total</span>
45
- <span class="tabular font-medium">${c(e.total)}</span>
46
- </div>
47
- </div>`}return(e,n)=>{let r=J,d=fe;return P(),M(d,null,{fallback:R(()=>[A(r,{style:k({height:`${t.height}px`}),class:`w-full`},null,8,[`style`])]),default:R(()=>[A(U(w),{data:U(i),height:t.height,margin:{top:8,right:8,bottom:24,left:48},class:N(U(W)(`chart-surface w-full`,t.class))},{default:R(()=>[A(U(je),{x:a,y:U(o),color:s,"rounded-corners":3,"bar-padding":.2},null,8,[`y`]),A(U(m),{type:`x`,"tick-format":l,"num-ticks":6,"grid-line":!1,"domain-line":!1,color:`var(--muted-foreground)`}),A(U(m),{type:`y`,"tick-format":c,"num-ticks":4,"domain-line":!1,color:`var(--muted-foreground)`}),A(U(S),{template:u,color:`var(--foreground)`}),A(U(y))]),_:1},8,[`data`,`height`,`class`])]),_:1})}}}),{__name:`ChartsTimeSeriesChart`}),Le=[`onClick`],Re={class:`font-mono`},ze=Object.assign(j({__name:`ChartLegend`,props:{items:{},class:{},hidden:{}},emits:[`toggle`],setup(e,{emit:t}){let n=e,r=t;return(e,t)=>(P(),O(`div`,{class:N(U(W)(`flex flex-wrap items-center gap-x-4 gap-y-1.5`,n.class))},[(P(!0),O(V,null,I(n.items,(e,t)=>(P(),O(`button`,{key:e,type:`button`,class:N([`text-muted-foreground hover:text-foreground focus-visible:ring-ring/50 flex items-center gap-1.5 rounded text-xs transition-colors focus-visible:ring-[3px] focus-visible:outline-none`,n.hidden?.includes(e)&&`opacity-40`]),onClick:t=>r(`toggle`,e)},[H(`span`,{class:`size-2.5 rounded-[3px]`,style:k({background:`var(--chart-${t%8+1})`})},null,4),H(`span`,Re,B(e),1)],10,Le))),128))],2))}}),{__name:`ChartsChartLegend`}),Be={class:`flex gap-1`},Ve={class:`text-muted-foreground flex shrink-0 flex-col justify-around pr-1 text-[10px]`},He={class:`min-w-0 flex-1`},Ue={class:`flex flex-col gap-[3px]`},We=[`title`],Ge={class:`text-muted-foreground mt-1.5 flex text-[10px]`},Ke={class:`text-muted-foreground mt-3 flex items-center justify-end gap-1.5 text-[10px]`},qe=Object.assign(j({__name:`Heatmap`,props:{cells:{},max:{},metric:{},class:{}},setup(e){let t=e,n=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],r=e=>t.metric===`cost`?e.costUsd:t.metric===`tokens`?e.tokens:e.events,i=D(()=>t.metric===`cost`?t.max.costUsd:t.metric===`tokens`?t.max.tokens:t.max.events);function a(e){if(e<=0||i.value<=0)return 0;let t=Math.sqrt(e/i.value);return Math.min(4,Math.floor(t*4)+1)}let o=[`bg-muted`,`bg-chart-1/25`,`bg-chart-1/50`,`bg-chart-1/75`,`bg-chart-1`],s=D(()=>{let e=new Map(t.cells.map(e=>[`${e.weekday}:${e.hour}`,e]));return n.map((t,n)=>({day:t,weekday:n,hours:Array.from({length:24},(t,i)=>{let o=e.get(`${n}:${i}`)??{weekday:n,hour:i,costUsd:0,tokens:0,events:0};return{...o,level:a(r(o))}})}))}),c=e=>{let r=`${n[e.weekday]} ${String(e.hour).padStart(2,`0`)}:00`;return t.metric===`cost`?`${r} — ${K(e.costUsd)}`:t.metric===`tokens`?`${r} — ${q(e.tokens)} tokens`:`${r} — ${e.events} events`};return(e,n)=>(P(),O(`div`,{class:N(U(W)(`w-full`,t.class))},[H(`div`,Be,[H(`div`,Ve,[(P(!0),O(V,null,I(U(s),e=>(P(),O(`span`,{key:e.day,class:`h-3 leading-3`},B(e.day),1))),128))]),H(`div`,He,[H(`div`,Ue,[(P(!0),O(V,null,I(U(s),e=>(P(),O(`div`,{key:e.day,class:`flex gap-[3px]`},[(P(!0),O(V,null,I(e.hours,e=>(P(),O(`div`,{key:e.hour,class:N([`group relative h-3 flex-1 rounded-[2px]`,o[e.level]]),title:c(e)},null,10,We))),128))]))),128))]),H(`div`,Ge,[(P(),O(V,null,I([0,3,6,9,12,15,18,21],e=>H(`span`,{key:e,class:`flex-1 tabular`},B(String(e).padStart(2,`0`)),1)),64))])])]),H(`div`,Ke,[n[0]||=H(`span`,null,`less`,-1),(P(),O(V,null,I(o,(e,t)=>H(`span`,{key:t,class:N([`size-3 rounded-[2px]`,e])},null,2)),64)),n[1]||=H(`span`,null,`more`,-1)])],2))}}),{__name:`ChartsHeatmap`}),Je={class:`space-y-6`},Ye={class:`flex items-center gap-2`},Xe=j({__name:`timeline`,setup(e){de({title:`Timeline — nomnomtokens`});let t=ge(),n=ue(),r=le(),i=D(()=>{let e=n.query.granularity;return typeof e==`string`&&[`hour`,`day`,`week`,`month`].includes(e)?e:t.range.value===`24h`?`hour`:t.range.value===`90d`?`week`:`day`}),a=F(`unitLabel`),{data:o,pending:s}=me(i,a),{data:c}=he(),l=F([]),u=D(()=>(o.value?.rows??[]).filter(e=>!l.value.includes(e.group??`unknown`))),d=D(()=>(o.value?.groups??[]).filter(e=>!l.value.includes(e)));function f(e){l.value=l.value.includes(e)?l.value.filter(t=>t!==e):[...l.value,e]}let p=[{value:`cost`,label:`Cost`},{value:`tokens`,label:`Volume`},{value:`sessions`,label:`Sessions`}],m=[{value:`hour`,label:`Hourly`},{value:`day`,label:`Daily`},{value:`week`,label:`Weekly`},{value:`month`,label:`Monthly`}],h=[{value:`unitLabel`,label:`By model`},{value:`provider`,label:`By provider`},{value:``,label:`No split`}];function g(e){r.push({query:{...n.query,granularity:e}})}return(e,n)=>{let r=Fe,_=ve,v=Se,y=ye,b=_e,x=we,S=xe,C=J,w=Ie,T=ze,E=be,D=Ce,k=qe;return P(),O(`div`,Je,[n[5]||=H(`div`,null,[H(`h1`,{class:`text-2xl font-semibold tracking-tight`},`Timeline`),H(`p`,{class:`text-muted-foreground mt-1 text-sm`},`When the tokens go, and to which model.`)],-1),A(_,null,{actions:R(()=>[H(`div`,Ye,[A(r,{"model-value":U(i),options:m,"aria-label":`Bucket size`,class:`w-32`,"onUpdate:modelValue":g},null,8,[`model-value`]),A(r,{"model-value":U(a)??``,options:h,"aria-label":`Split by`,class:`w-36`,"onUpdate:modelValue":n[0]||=e=>a.value=e||void 0},null,8,[`model-value`])])]),_:1}),A(D,null,{default:R(()=>[A(S,{class:`border-b pb-4`},{default:R(()=>[A(v,null,{default:R(()=>[...n[2]||=[L(`Spend over time`,-1)]]),_:1}),A(y,null,{default:R(()=>[L(`Stacked by `+B(U(a)===`provider`?`provider`:U(a)?`model`:`total`)+`.`,1)]),_:1}),A(x,null,{default:R(()=>[A(b,{"model-value":U(t).metric.value,options:p,"aria-label":`Metric`,"onUpdate:modelValue":n[1]||=e=>U(t).setMetric(e)},null,8,[`model-value`])]),_:1})]),_:1}),A(E,{class:`pt-4`},{default:R(()=>[U(s)&&!U(o)?(P(),M(C,{key:0,class:`h-70 w-full`})):(P(),O(V,{key:1},[A(w,{rows:U(u),groups:U(d),metric:U(t).metric.value},null,8,[`rows`,`groups`,`metric`]),(U(o)?.groups.length??0)>1?(P(),M(T,{key:0,items:U(o).groups,hidden:U(l),class:`mt-4`,onToggle:f},null,8,[`items`,`hidden`])):ee(``,!0)],64))]),_:1})]),_:1}),A(D,null,{default:R(()=>[A(S,{class:`border-b pb-4`},{default:R(()=>[A(v,null,{default:R(()=>[...n[3]||=[L(`When you work`,-1)]]),_:1}),A(y,null,{default:R(()=>[...n[4]||=[L(` Hour of day by weekday, across the selected range. `,-1)]]),_:1})]),_:1}),A(E,{class:`pt-5`},{default:R(()=>[U(c)?(P(),M(k,{key:0,cells:U(c).cells,max:U(c).max,metric:U(t).metric.value},null,8,[`cells`,`max`,`metric`])):(P(),M(C,{key:1,class:`h-32 w-full`}))]),_:1})]),_:1})])}}});export{Xe as default};
@@ -1 +0,0 @@
1
- import{C as e,D as t,E as n,M as r,P as i,T as a,Wt as o,Z as s,et as c,j as l,lt as u,qt as d,v as f,w as p,wt as m}from"./BgvEQa6E.js";import{n as h}from"./DCnkQFS0.js";import{t as g}from"./BPhzhJvP.js";import{a as _,u as v}from"./DJbGqyvB.js";import{t as y}from"./BlvSknce.js";import{t as b}from"./RlymLGHS.js";import{a as x,l as S,o as C,s as w,t as T,u as E}from"./075nz0Lp.js";import{t as D}from"./oT-x2NdZ.js";import{a as O,i as k,n as A,o as j,r as M,t as N}from"./TmkSb4nj.js";var P=g(`arrow-down`,[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]),F=g(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),I=g(`minus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}]]),L={class:`space-y-6`},R={key:0,class:`text-muted-foreground ml-1 font-mono text-xs`},z={class:`flex items-center justify-end gap-2`},B={class:`text-muted-foreground w-10 text-right`},V={key:1,class:`text-muted-foreground`},H={key:0,class:`text-muted-foreground text-xs`},U=i({__name:`scopes`,setup(i){h({title:`Projects — nomnomtokens`});let{data:g,pending:U}=_(),W=v(),G=e(()=>(g.value?.rows??[]).reduce((e,t)=>e+t.costUsd,0)),K=e=>G.value>0?e/G.value*100:0;function q(e){let t=e.label?.trim()||e.scopeHash;return(g.value?.rows??[]).filter(e=>(e.label?.trim()||e.scopeHash)===t).length<=1?t:`${t} · ${e.scopeHash.slice(0,6)}`}return(e,i)=>{let h=y,_=j,v=O,G=k,J=E,Y=M,X=b,Z=D,Q=A,$=N,ee=S;return s(),t(`div`,L,[i[7]||=p(`div`,null,[p(`h1`,{class:`text-2xl font-semibold tracking-tight`},`Projects`),p(`p`,{class:`text-muted-foreground mt-1 text-sm`},` What the agent cost per project. Click a row to focus every screen on it (including this table). Clear the chip above to see all again. `)],-1),r(h),i[8]||=p(`p`,{class:`text-muted-foreground text-xs leading-relaxed`},[l(` Each row is a distinct folder on disk, identified by a hash of its full path (we never store the path itself). The name is only the last path segment, so several rows can share a label like `),p(`span`,{class:`font-mono`},`rowkit`),l(` or `),p(`span`,{class:`font-mono`},`app`),l(` when you have clones, worktrees, or similarly named directories. The short suffix after · disambiguates them — these are not sessions. Filtering applies to that one folder, not every row with the same name. `)],-1),r(ee,{class:`py-0`},{default:u(()=>[r($,{"container-class":`rounded-xl`},{default:u(()=>[r(G,null,{default:u(()=>[r(v,null,{default:u(()=>[r(_,{class:`pl-4`},{default:u(()=>[...i[0]||=[l(`Project`,-1)]]),_:1}),r(_,{numeric:``},{default:u(()=>[...i[1]||=[l(`Cost`,-1)]]),_:1}),r(_,{numeric:``},{default:u(()=>[...i[2]||=[l(`Share`,-1)]]),_:1}),r(_,{numeric:``},{default:u(()=>[...i[3]||=[l(`Trend`,-1)]]),_:1}),r(_,{numeric:``},{default:u(()=>[...i[4]||=[l(`Tokens`,-1)]]),_:1}),r(_,{numeric:``},{default:u(()=>[...i[5]||=[l(`Cache`,-1)]]),_:1}),r(_,{numeric:``,class:`pr-4`},{default:u(()=>[...i[6]||=[l(`Sessions`,-1)]]),_:1})]),_:1})]),_:1}),r(Q,null,{default:u(()=>[m(U)&&!m(g)?(s(),a(v,{key:0},{default:u(()=>[r(Y,{colspan:`7`,class:`p-4`},{default:u(()=>[r(J,{class:`h-24 w-full`})]),_:1})]),_:1})):(m(g)?.rows.length??0)===0?(s(),a(v,{key:1},{default:u(()=>[r(Y,{colspan:`7`},{default:u(()=>[r(X,{title:`No projects in this range`,description:`Widen the range, or run a scan to pick up more history.`,command:`npx nomnomtokens scan`})]),_:1})]),_:1})):n(``,!0),(s(!0),t(f,null,c(m(g)?.rows,i=>(s(),a(v,{key:i.scopeHash,clickable:``,selected:m(W).scopes.value.includes(i.scopeHash),onClick:e=>m(W).toggleScope(i.scopeHash)},{default:u(()=>[r(Y,{class:`pl-4 font-medium`},{default:u(()=>[l(d(q(i))+` `,1),i.label?n(``,!0):(s(),t(`span`,R,`unlabelled`))]),_:2},1024),r(Y,{numeric:``},{default:u(()=>[l(d((`formatUsd`in e?e.formatUsd:m(w))(i.costUsd)),1)]),_:2},1024),r(Y,{numeric:``,class:`w-32`},{default:u(()=>[p(`div`,z,[r(Z,{value:K(i.costUsd),class:`h-1.5 w-16`},null,8,[`value`]),p(`span`,B,d((`formatPct`in e?e.formatPct:m(x))(K(i.costUsd))),1)])]),_:2},1024),r(Y,{numeric:``},{default:u(()=>[i.trendPct===null?(s(),t(`span`,V,`—`)):(s(),t(`span`,{key:0,class:o([`inline-flex items-center gap-1`,i.trendPct>5?`text-destructive`:i.trendPct<-5?`text-success`:`text-muted-foreground`])},[i.trendPct>5?(s(),a(m(F),{key:0,class:`size-3`})):i.trendPct<-5?(s(),a(m(P),{key:1,class:`size-3`})):(s(),a(m(I),{key:2,class:`size-3`})),l(` `+d((`formatPct`in e?e.formatPct:m(x))(Math.abs(i.trendPct))),1)],2))]),_:2},1024),r(Y,{numeric:``},{default:u(()=>[l(d((`formatCompact`in e?e.formatCompact:m(T))(i.tokens)),1)]),_:2},1024),r(Y,{numeric:``},{default:u(()=>[l(d((`formatRatio`in e?e.formatRatio:m(C))(i.cacheHitRate)),1)]),_:2},1024),r(Y,{numeric:``,class:`pr-4`},{default:u(()=>[l(d(i.sessions),1)]),_:2},1024)]),_:2},1032,[`selected`,`onClick`]))),128))]),_:1})]),_:1})]),_:1}),m(g)&&!m(g).hasTrend?(s(),t(`p`,H,` Trend needs a preceding period of equal length — pick a bounded range to see it. `)):n(``,!0)])}}});export{U as default};
@@ -1,96 +0,0 @@
1
- import{B as e,C as t,D as n,I as r,L as i,M as a,N as o,O as s,P as c,R as l,S as u,T as d,_ as f,a as p,b as m,c as h,f as g,g as _,h as v,i as y,k as b,l as x,m as S,n as ee,o as te,p as ne,r as re,s as ie,t as ae,u as oe,v as se,w as C,x as ce,z as w}from"./B1O-ibEy.js";import{C as T,D as E,E as D,Kt as le,M as O,P as k,T as ue,U as de,Wt as fe,X as pe,Y as me,Z as A,_t as he,et as ge,j,lt as M,ot as N,qt as P,v as _e,w as F,wt as I,z as ve}from"./BgvEQa6E.js";import{n as ye}from"./DCnkQFS0.js";import{i as be,n as xe}from"./Bv0odo9W.js";import{n as Se}from"./DJbGqyvB.js";import{n as Ce,t as we}from"./RlymLGHS.js";import{i as Te,n as Ee,r as De,t as Oe}from"./M0pG6UQn.js";import{a as ke,c as Ae,l as je,n as Me,r as Ne,u as Pe}from"./075nz0Lp.js";import{t as Fe}from"./Ctg1e1JV.js";import{t as Ie}from"./_S09PGd-.js";function L(e){return function(){return e}}var Le=Math.cos,R=Math.sin,z=Math.sqrt,B=Math.PI;B/2;var V=2*B,Re=Math.PI,ze=2*Re,H=1e-6,Be=ze-H;function Ve(e){this._+=e[0];for(let t=1,n=e.length;t<n;++t)this._+=arguments[t]+e[t]}function He(e){let t=Math.floor(e);if(!(t>=0))throw Error(`invalid digits: ${e}`);if(t>15)return Ve;let n=10**t;return function(e){this._+=e[0];for(let t=1,r=e.length;t<r;++t)this._+=Math.round(arguments[t]*n)/n+e[t]}}var Ue=class{constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._=``,this._append=e==null?Ve:He(e)}moveTo(e,t){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,t){this._append`L${this._x1=+e},${this._y1=+t}`}quadraticCurveTo(e,t,n,r){this._append`Q${+e},${+t},${this._x1=+n},${this._y1=+r}`}bezierCurveTo(e,t,n,r,i,a){this._append`C${+e},${+t},${+n},${+r},${this._x1=+i},${this._y1=+a}`}arcTo(e,t,n,r,i){if(e=+e,t=+t,n=+n,r=+r,i=+i,i<0)throw Error(`negative radius: ${i}`);let a=this._x1,o=this._y1,s=n-e,c=r-t,l=a-e,u=o-t,d=l*l+u*u;if(this._x1===null)this._append`M${this._x1=e},${this._y1=t}`;else if(d>H)if(!(Math.abs(u*s-c*l)>H)||!i)this._append`L${this._x1=e},${this._y1=t}`;else{let f=n-a,p=r-o,m=s*s+c*c,h=f*f+p*p,g=Math.sqrt(m),_=Math.sqrt(d),v=i*Math.tan((Re-Math.acos((m+d-h)/(2*g*_)))/2),y=v/_,b=v/g;Math.abs(y-1)>H&&this._append`L${e+y*l},${t+y*u}`,this._append`A${i},${i},0,0,${+(u*f>l*p)},${this._x1=e+b*s},${this._y1=t+b*c}`}}arc(e,t,n,r,i,a){if(e=+e,t=+t,n=+n,a=!!a,n<0)throw Error(`negative radius: ${n}`);let o=n*Math.cos(r),s=n*Math.sin(r),c=e+o,l=t+s,u=1^a,d=a?r-i:i-r;this._x1===null?this._append`M${c},${l}`:(Math.abs(this._x1-c)>H||Math.abs(this._y1-l)>H)&&this._append`L${c},${l}`,n&&(d<0&&(d=d%ze+ze),d>Be?this._append`A${n},${n},0,1,${u},${e-o},${t-s}A${n},${n},0,1,${u},${this._x1=c},${this._y1=l}`:d>H&&this._append`A${n},${n},0,${+(d>=Re)},${u},${this._x1=e+n*Math.cos(i)},${this._y1=t+n*Math.sin(i)}`)}rect(e,t,n,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${n=+n}v${+r}h${-n}Z`}toString(){return this._}};Ue.prototype;function We(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(n==null)t=null;else{let e=Math.floor(n);if(!(e>=0))throw RangeError(`invalid digits: ${n}`);t=e}return e},()=>new Ue(t)}Array.prototype.slice;function Ge(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function Ke(e){this._context=e}Ke.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};function qe(e){return new Ke(e)}function Je(e){return e[0]}function Ye(e){return e[1]}function Xe(e,t){var n=L(!0),r=null,i=qe,a=null,o=We(s);e=typeof e==`function`?e:e===void 0?Je:L(e),t=typeof t==`function`?t:t===void 0?Ye:L(t);function s(s){var c,l=(s=Ge(s)).length,u,d=!1,f;for(r??(a=i(f=o())),c=0;c<=l;++c)!(c<l&&n(u=s[c],c,s))===d&&((d=!d)?a.lineStart():a.lineEnd()),d&&a.point(+e(u,c,s),+t(u,c,s));if(f)return a=null,f+``||null}return s.x=function(t){return arguments.length?(e=typeof t==`function`?t:L(+t),s):e},s.y=function(e){return arguments.length?(t=typeof e==`function`?e:L(+e),s):t},s.defined=function(e){return arguments.length?(n=typeof e==`function`?e:L(!!e),s):n},s.curve=function(e){return arguments.length?(i=e,r!=null&&(a=i(r)),s):i},s.context=function(e){return arguments.length?(e==null?r=a=null:a=i(r=e),s):r},s}var Ze={draw(e,t){let n=z(t/B);e.moveTo(n,0),e.arc(0,0,n,0,V)}},Qe={draw(e,t){let n=z(t/5)/2;e.moveTo(-3*n,-n),e.lineTo(-n,-n),e.lineTo(-n,-3*n),e.lineTo(n,-3*n),e.lineTo(n,-n),e.lineTo(3*n,-n),e.lineTo(3*n,n),e.lineTo(n,n),e.lineTo(n,3*n),e.lineTo(-n,3*n),e.lineTo(-n,n),e.lineTo(-3*n,n),e.closePath()}},$e=z(1/3),et=$e*2,tt={draw(e,t){let n=z(t/et),r=n*$e;e.moveTo(0,-n),e.lineTo(r,0),e.lineTo(0,n),e.lineTo(-r,0),e.closePath()}},nt={draw(e,t){let n=z(t),r=-n/2;e.rect(r,r,n,n)}},rt=.8908130915292852,it=R(B/10)/R(7*B/10),at=R(V/10)*it,ot=-Le(V/10)*it,st={draw(e,t){let n=z(t*rt),r=at*n,i=ot*n;e.moveTo(0,-n),e.lineTo(r,i);for(let t=1;t<5;++t){let a=V*t/5,o=Le(a),s=R(a);e.lineTo(s*n,-o*n),e.lineTo(o*r-s*i,s*r+o*i)}e.closePath()}},ct=z(3),lt={draw(e,t){let n=-z(t/(ct*3));e.moveTo(0,n*2),e.lineTo(-ct*n,-n),e.lineTo(ct*n,-n),e.closePath()}},U=-.5,W=z(3)/2,ut=1/z(12),dt=(ut/2+1)*3,ft={draw(e,t){let n=z(t/dt),r=n/2,i=n*ut,a=r,o=n*ut+n,s=-a,c=o;e.moveTo(r,i),e.lineTo(a,o),e.lineTo(s,c),e.lineTo(U*r-W*i,W*r+U*i),e.lineTo(U*a-W*o,W*a+U*o),e.lineTo(U*s-W*c,W*s+U*c),e.lineTo(U*r+W*i,U*i-W*r),e.lineTo(U*a+W*o,U*o-W*a),e.lineTo(U*s+W*c,U*c-W*s),e.closePath()}};function pt(e,t){let n=null,r=We(i);e=typeof e==`function`?e:L(e||Ze),t=typeof t==`function`?t:L(t===void 0?64:+t);function i(){let i;if(n||=i=r(),e.apply(this,arguments).draw(n,+t.apply(this,arguments)),i)return n=null,i+``||null}return i.type=function(t){return arguments.length?(e=typeof t==`function`?t:L(t),i):e},i.size=function(e){return arguments.length?(t=typeof e==`function`?e:L(+e),i):t},i.context=function(e){return arguments.length?(n=e??null,i):n},i}function G(){}function K(e,t,n){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+n)/6)}function q(e){this._context=e}q.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:K(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:K(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function mt(e){return new q(e)}function ht(e){this._context=e}ht.prototype={areaStart:G,areaEnd:G,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:K(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function gt(e){return new ht(e)}function _t(e){this._context=e}_t.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+e)/6,r=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:K(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function vt(e){return new _t(e)}function yt(e,t){this._basis=new q(e),this._beta=t}yt.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var e=this._x,t=this._y,n=e.length-1;if(n>0)for(var r=e[0],i=t[0],a=e[n]-r,o=t[n]-i,s=-1,c;++s<=n;)c=s/n,this._basis.point(this._beta*e[s]+(1-this._beta)*(r+c*a),this._beta*t[s]+(1-this._beta)*(i+c*o));this._x=this._y=null,this._basis.lineEnd()},point:function(e,t){this._x.push(+e),this._y.push(+t)}};var bt=(function e(t){function n(e){return t===1?new q(e):new yt(e,t)}return n.beta=function(t){return e(+t)},n})(.85);function J(e,t,n){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-n),e._x2,e._y2)}function xt(e,t){this._context=e,this._k=(1-t)/6}xt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:J(this,this._x1,this._y1)}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:J(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var St=(function e(t){function n(e){return new xt(e,t)}return n.tension=function(t){return e(+t)},n})(0);function Ct(e,t){this._context=e,this._k=(1-t)/6}Ct.prototype={areaStart:G,areaEnd:G,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:J(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var wt=(function e(t){function n(e){return new Ct(e,t)}return n.tension=function(t){return e(+t)},n})(0);function Tt(e,t){this._context=e,this._k=(1-t)/6}Tt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:J(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Et=(function e(t){function n(e){return new Tt(e,t)}return n.tension=function(t){return e(+t)},n})(0);function Dt(e,t,n){var r=e._x1,i=e._y1,a=e._x2,o=e._y2;if(e._l01_a>1e-12){var s=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,c=3*e._l01_a*(e._l01_a+e._l12_a);r=(r*s-e._x0*e._l12_2a+e._x2*e._l01_2a)/c,i=(i*s-e._y0*e._l12_2a+e._y2*e._l01_2a)/c}if(e._l23_a>1e-12){var l=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,u=3*e._l23_a*(e._l23_a+e._l12_a);a=(a*l+e._x1*e._l23_2a-t*e._l12_2a)/u,o=(o*l+e._y1*e._l23_2a-n*e._l12_2a)/u}e._context.bezierCurveTo(r,i,a,o,e._x2,e._y2)}function Ot(e,t){this._context=e,this._alpha=t}Ot.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var n=this._x2-e,r=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=(n*n+r*r)**+this._alpha)}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:Dt(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var kt=(function e(t){function n(e){return t?new Ot(e,t):new xt(e,0)}return n.alpha=function(t){return e(+t)},n})(.5);function At(e,t){this._context=e,this._alpha=t}At.prototype={areaStart:G,areaEnd:G,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(e,t){if(e=+e,t=+t,this._point){var n=this._x2-e,r=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=(n*n+r*r)**+this._alpha)}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Dt(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var jt=(function e(t){function n(e){return t?new At(e,t):new Ct(e,0)}return n.alpha=function(t){return e(+t)},n})(.5);function Mt(e,t){this._context=e,this._alpha=t}Mt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var n=this._x2-e,r=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=(n*n+r*r)**+this._alpha)}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Dt(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Nt=(function e(t){function n(e){return t?new Mt(e,t):new Tt(e,0)}return n.alpha=function(t){return e(+t)},n})(.5);function Pt(e){this._context=e}Pt.prototype={areaStart:G,areaEnd:G,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function Ft(e){return new Pt(e)}function It(e){return e<0?-1:1}function Lt(e,t,n){var r=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(r||i<0&&-0),o=(n-e._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(It(a)+It(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function Rt(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function zt(e,t,n){var r=e._x0,i=e._y0,a=e._x1,o=e._y1,s=(a-r)/3;e._context.bezierCurveTo(r+s,i+s*t,a-s,o-s*n,a,o)}function Y(e){this._context=e}Y.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:zt(this,this._t0,Rt(this,this._t0))}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var n=NaN;if(e=+e,t=+t,e!==this._x1||t!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,zt(this,Rt(this,n=Lt(this,e,t)),n);break;default:zt(this,this._t0,n=Lt(this,e,t))}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=n}}};function Bt(e){this._context=new Vt(e)}(Bt.prototype=Object.create(Y.prototype)).point=function(e,t){Y.prototype.point.call(this,t,e)};function Vt(e){this._context=e}Vt.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,n,r,i,a){this._context.bezierCurveTo(t,e,r,n,a,i)}};function Ht(e){return new Y(e)}function Ut(e){return new Bt(e)}function Wt(e){this._context=e}Wt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,n=e.length;if(n)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),n===2)this._context.lineTo(e[1],t[1]);else for(var r=Gt(e),i=Gt(t),a=0,o=1;o<n;++a,++o)this._context.bezierCurveTo(r[0][a],i[0][a],r[1][a],i[1][a],e[o],t[o]);(this._line||this._line!==0&&n===1)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(e,t){this._x.push(+e),this._y.push(+t)}};function Gt(e){var t,n=e.length-1,r,i=Array(n),a=Array(n),o=Array(n);for(i[0]=0,a[0]=2,o[0]=e[0]+2*e[1],t=1;t<n-1;++t)i[t]=1,a[t]=4,o[t]=4*e[t]+2*e[t+1];for(i[n-1]=2,a[n-1]=7,o[n-1]=8*e[n-1]+e[n],t=1;t<n;++t)r=i[t]/a[t-1],a[t]-=r,o[t]-=r*o[t-1];for(i[n-1]=o[n-1]/a[n-1],t=n-2;t>=0;--t)i[t]=(o[t]-i[t+1])/a[t];for(a[n-1]=(e[n]+i[n-1])/2,t=0;t<n-1;++t)a[t]=2*e[t+1]-i[t+1];return[i,a]}function Kt(e){return new Wt(e)}function qt(e,t){this._context=e,this._t=t}qt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var n=this._x*(1-this._t)+e*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,t)}}this._x=e,this._y=t}};function Jt(e){return new qt(e,.5)}function Yt(e){return new qt(e,0)}function Xt(e){return new qt(e,1)}function Zt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Qt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Zt(Object(n),!0).forEach(function(t){en(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zt(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function $t(e){"@babel/helpers - typeof";return $t=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},$t(e)}function en(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function tn(){return tn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},tn.apply(this,arguments)}function nn(e,t){if(e){if(typeof e==`string`)return rn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return rn(e,t)}}function rn(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function an(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(!n){if(Array.isArray(e)||(n=nn(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
2
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a=!0,o=!1,s;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){o=!0,s=e},f:function(){try{!a&&n.return!=null&&n.return()}finally{if(o)throw s}}}}function on(e,t){var n=[],r=[];function i(e,t){if(e.length===1)n.push(e[0]),r.push(e[0]);else{for(var a=Array(e.length-1),o=0;o<a.length;o++)o===0&&n.push(e[0]),o===a.length-1&&r.push(e[o+1]),a[o]=[(1-t)*e[o][0]+t*e[o+1][0],(1-t)*e[o][1]+t*e[o+1][1]];i(a,t)}}return e.length&&i(e,t),{left:n,right:r.reverse()}}function sn(e){var t={};return e.length===4&&(t.x2=e[2][0],t.y2=e[2][1]),e.length>=3&&(t.x1=e[1][0],t.y1=e[1][1]),t.x=e[e.length-1][0],t.y=e[e.length-1][1],t.type=e.length===4?`C`:e.length===3?`Q`:`L`,t}function cn(e,t){t||=2;for(var n=[],r=e,i=1/t,a=0;a<t-1;a++){var o=i/(1-i*a),s=on(r,o);n.push(s.left),r=s.right}return n.push(r),n}function ln(e,t,n){var r=[[e.x,e.y]];return t.x1!=null&&r.push([t.x1,t.y1]),t.x2!=null&&r.push([t.x2,t.y2]),r.push([t.x,t.y]),cn(r,n).map(sn)}var un=/[MLCSTQAHVZmlcstqahv]|-?[\d.e+-]+/g,X={M:[`x`,`y`],L:[`x`,`y`],H:[`x`],V:[`y`],C:[`x1`,`y1`,`x2`,`y2`,`x`,`y`],S:[`x2`,`y2`,`x`,`y`],Q:[`x1`,`y1`,`x`,`y`],T:[`x`,`y`],A:[`rx`,`ry`,`xAxisRotation`,`largeArcFlag`,`sweepFlag`,`x`,`y`],Z:[]};Object.keys(X).forEach(function(e){X[e.toLowerCase()]=X[e]});function dn(e,t){for(var n=Array(e),r=0;r<e;r++)n[r]=t;return n}function fn(e){return`${e.type}${X[e.type].map(function(t){return e[t]}).join(`,`)}`}function pn(e,t){var n={x1:`x`,y1:`y`,x2:`x`,y2:`y`},r=[`xAxisRotation`,`largeArcFlag`,`sweepFlag`];if(e.type!==t.type&&t.type.toUpperCase()!==`M`){var i={};Object.keys(t).forEach(function(a){var o=t[a],s=e[a];s===void 0&&(r.includes(a)?s=o:(s===void 0&&n[a]&&(s=e[n[a]]),s===void 0&&(s=0))),i[a]=s}),i.type=t.type,e=i}return e}function mn(e,t,n){var r=[];if(t.type===`L`||t.type===`Q`||t.type===`C`)r=r.concat(ln(e,t,n));else{var i=tn({},e);i.type===`M`&&(i.type=`L`),r=r.concat(dn(n-1).map(function(){return i})),r.push(t)}return r}function hn(e,t,n){var r=e.length-1,i=t.length-1,a=r/i,o=dn(i).reduce(function(t,r,i){var o=Math.floor(a*i);if(n&&o<e.length-1&&n(e[o],e[o+1])){var s=a*i%1<.5;t[o]&&(s?o>0?--o:o<e.length-1&&(o+=1):o<e.length-1?o+=1:o>0&&--o)}return t[o]=(t[o]||0)+1,t},[]).reduce(function(t,n,r){if(r===e.length-1){var i=dn(n,tn({},e[e.length-1]));return i[0].type===`M`&&i.forEach(function(e){e.type=`L`}),t.concat(i)}return t.concat(mn(e[r],e[r+1],n))},[]);return o.unshift(e[0]),o}function gn(e){for(var t=(e||``).match(un)||[],n=[],r,i,a=0;a<t.length;++a)if(r=X[t[a]],r){i={type:t[a]};for(var o=0;o<r.length;++o)i[r[o]]=+t[a+o+1];a+=r.length,n.push(i)}return n}function _n(e,t,n){var r=e==null?[]:e.slice(),i=t==null?[]:t.slice(),a=$t(n)===`object`?n:{excludeSegment:n,snapEndsToInput:!0},o=a.excludeSegment,s=a.snapEndsToInput;if(!r.length&&!i.length)return function(){return[]};var c=(r.length===0||r[r.length-1].type===`Z`)&&(i.length===0||i[i.length-1].type===`Z`);r.length>0&&r[r.length-1].type===`Z`&&r.pop(),i.length>0&&i[i.length-1].type===`Z`&&i.pop(),r.length?i.length||i.push(r[0]):r.push(i[0]),Math.abs(i.length-r.length)!==0&&(i.length>r.length?r=hn(r,i,o):i.length<r.length&&(i=hn(i,r,o))),r=r.map(function(e,t){return pn(e,i[t])});var l=r.map(function(e){return Qt({},e)});return c&&(l.push({type:`Z`}),r.push({type:`Z`})),function(e){if(e===1&&s)return t??[];if(e===0)return r;for(var n=0;n<l.length;++n){var a=r[n],o=i[n],c=l[n],u=an(X[c.type]),d;try{for(u.s();!(d=u.n()).done;){var f=d.value;c[f]=(1-e)*a[f]+e*o[f],(f===`largeArcFlag`||f===`sweepFlag`)&&(c[f]=Math.round(c[f]))}}catch(e){u.e(e)}finally{u.f()}}return l}}function vn(e,t,n){var r=gn(e),i=gn(t),a=$t(n)===`object`?n:{excludeSegment:n,snapEndsToInput:!0},o=a.excludeSegment,s=a.snapEndsToInput;if(!r.length&&!i.length)return function(){return``};var c=_n(r,i,{excludeSegment:o,snapEndsToInput:s});return function(e){if(e===1&&s)return t??``;var n=c(e),r=``,i=an(n),a;try{for(i.s();!(a=i.n()).done;){var o=a.value;r+=fn(o)}}catch(e){i.e(e)}finally{i.f()}return r}}var Z;(function(e){e.Basis=`basis`,e.BasisClosed=`basisClosed`,e.BasisOpen=`basisOpen`,e.Bundle=`bundle`,e.Cardinal=`cardinal`,e.CardinalClosed=`cardinalClosed`,e.CardinalOpen=`cardinalOpen`,e.CatmullRom=`catmullRom`,e.CatmullRomClosed=`catmullRomClosed`,e.CatmullRomOpen=`catmullRomOpen`,e.Linear=`linear`,e.LinearClosed=`linearClosed`,e.MonotoneX=`monotoneX`,e.MonotoneY=`monotoneY`,e.Natural=`natural`,e.Step=`step`,e.StepAfter=`stepAfter`,e.StepBefore=`stepBefore`})(Z||={});var yn={[Z.Basis]:mt,[Z.BasisClosed]:gt,[Z.BasisOpen]:vt,[Z.Bundle]:bt,[Z.Cardinal]:St,[Z.CardinalClosed]:wt,[Z.CardinalOpen]:Et,[Z.CatmullRom]:kt,[Z.CatmullRomClosed]:jt,[Z.CatmullRomOpen]:Nt,[Z.Linear]:qe,[Z.LinearClosed]:Ft,[Z.MonotoneX]:Ht,[Z.MonotoneY]:Ut,[Z.Natural]:Kt,[Z.Step]:Jt,[Z.StepAfter]:Xt,[Z.StepBefore]:Yt},bn=Object.assign(Object.assign({},S),{curveType:Z.MonotoneX,lineWidth:2,lineDashArray:void 0,fallbackValue:void 0,highlightOnHover:!1,cursor:null,interpolateMissingData:!1}),xn=e({dim:()=>En,globalStyles:()=>Sn,interpolatedPath:()=>Dn,line:()=>Q,linePath:()=>wn,lineSelectionHelper:()=>Tn,root:()=>Cn}),Sn=d`
3
- :root {
4
- --vis-line-cursor: default;
5
- --vis-line-stroke-dasharray: none;
6
- --vis-line-stroke-dashoffset: 0;
7
-
8
- --vis-line-gapfill-stroke-dasharray: 2 3;
9
- --vis-line-gapfill-stroke-opacity: 0.8;
10
- --vis-line-gapfill-stroke-dashoffset: 0;
11
- }
12
- `,Cn=C`
13
- label: line-component;
14
- `,Q=C`
15
- label: line;
16
- transition: opacity 200ms;
17
- cursor: var(--vis-line-cursor);
18
- `,wn=C`
19
- label: linePath;
20
- fill: none;
21
- stroke-dasharray: var(--vis-line-stroke-dasharray);
22
- stroke-dashoffset: var(--vis-line-stroke-dashoffset);
23
- `,Tn=C`
24
- label: lineSelectionHelper;
25
- fill: none;
26
- stroke: rgba(0, 0, 0, 0);
27
- stroke-width: 8px;
28
- `,En=C`
29
- opacity: 0.2;
30
- `,Dn=C`
31
- label: interpolated-path;
32
- fill: none;
33
- stroke-dasharray: var(--vis-line-gapfill-stroke-dasharray);
34
- stroke-dashoffset: var(--vis-line-gapfill-stroke-dashoffset);
35
- stroke-opacity: var(--vis-line-gapfill-stroke-opacity);
36
- `,On=class e extends ne{constructor(t){super(),this._defaultConfig=bn,this.config=this._defaultConfig,this.curve=yn[Z.MonotoneX],this.events={[e.selectors.line]:{mouseover:this._highlight.bind(this),mouseleave:this._resetHighlight.bind(this)}},t&&this.setConfig(t)}get bleed(){let{config:{lineWidth:e}}=this,t=this.yScale.domain(),n=(this.yScale.range()[0]>this.yScale.range()[1]?v.North:v.South)===v.South,r=e>3,i=e>=10;return{top:!i&&(!n&&t[1]===0||n&&t[0]===0)?0:e/2,bottom:!i&&(!n&&t[0]===0||n&&t[1]===0)?0:e/2,left:r?e/2:0,right:r?e/2:0}}_render(e){super._render(e);let{config:t,datamodel:{data:n}}=this,i=r(e)?e:t.duration;this.curve=yn[t.curveType],this.lineGen=Xe().x(e=>e.x).y(e=>e.y).defined(e=>e.defined).curve(this.curve);let s=c(t.y)?t.y:[t.y],l=n.map((e,n)=>this.xScale(b(e,t.x,n))),u=s.map(e=>{let i=n.map((n,i)=>{let a=b(n,e,i),o=(r(a)||a===null)&&isFinite(a)?a:t.fallbackValue,s=t.interpolateMissingData?(r(a)||a===null)&&isFinite(a):isFinite(o);return{x:l[i],y:this.yScale(o??0),defined:s,value:o}}),a=i.reduce((e,t)=>t.defined||e,!1),o=!1;return{values:i,defined:a,gaps:i.reduce((e,n,r)=>{!n.defined&&isFinite(t.fallbackValue)&&e.push(Object.assign(Object.assign({},n),{defined:!0})),!n.defined&&!o&&(o=!0);let a=r>0&&!i[r-1].defined||r<i.length-1&&!i[r+1].defined;return n.defined&&a&&(o||e.push(Object.assign(Object.assign({},n),{defined:!1})),e.push(n),o=!1),e},[]),visible:a&&i.some(e=>e.value!==null)}}),d=this.g.selectAll(`.${Q}`).data(u),p=d.enter().append(`g`).attr(`class`,Q);p.append(`path`).attr(`class`,wn).attr(`stroke`,(e,r)=>x(n,t.color,r)).attr(`stroke-opacity`,0).attr(`stroke-width`,t.lineWidth),p.append(`path`).attr(`class`,Tn).attr(`d`,this._emptyPath()),p.append(`path`).attr(`class`,Dn).attr(`d`,this._emptyPath()).style(`opacity`,0);let m=p.merge(d);m.style(`cursor`,(e,r)=>a(n,t.cursor,r)),m.each((e,r,a)=>{let s=w(a[r]),c=s.select(`.${wn}`),l=s.select(`.${Tn}`),u=s.select(`.${Dn}`),d=e.visible,p=o(n,t.lineDashArray,r),m=f(c,i).attr(`stroke`,x(n,t.color,r)).attr(`stroke-width`,t.lineWidth).attr(`stroke-opacity`,+!!d).style(`stroke-dasharray`,p?.join(` `)??null),h=e.values.some(e=>!e.defined),g=this.lineGen(e.values);if(i&&!h){let e=c.attr(`d`)||this._emptyPath(),t=g||this._emptyPath();m.attrTween(`d`,()=>vn(e,t))}else e.visible&&m.attr(`d`,g);l.attr(`d`,g).attr(`visibility`,d?null:`hidden`),h&&t.interpolateMissingData?f(u,i).attr(`d`,this.lineGen(e.gaps)).attr(`stroke`,x(n,t.color,r)).attr(`stroke-width`,t.lineWidth-1).style(`opacity`,1):u.transition().duration(i).style(`opacity`,0)}),f(d.exit(),i).style(`opacity`,0).remove()}_emptyPath(){let e=this.xScale.range(),t=this.yScale.range();return`M${e[0]},${t[0]} L${e[1]},${t[0]}`}_highlight(e){let{config:t}=this;t.highlightOnHover&&this.g.selectAll(`.${Q}`).classed(En,t=>t!==e)}_resetHighlight(){let{config:e}=this;e.highlightOnHover&&this.g.selectAll(`.${Q}`).classed(En,!1)}};On.selectors=xn;var $;(function(e){e.Circle=`circle`,e.Cross=`cross`,e.Diamond=`diamond`,e.Square=`square`,e.Star=`star`,e.Triangle=`triangle`,e.Wye=`wye`})($||={});var kn={[$.Circle]:Ze,[$.Cross]:Qe,[$.Diamond]:tt,[$.Square]:nt,[$.Star]:st,[$.Triangle]:lt,[$.Wye]:ft},An=Object.assign(Object.assign({},S),{color:e=>e.color,size:10,sizeScale:_.scaleSqrt(),sizeRange:void 0,shape:$.Circle,label:void 0,labelColor:void 0,labelPosition:g.Bottom,labelHideOverlapping:!0,cursor:null,labelTextBrightnessRatio:.65,strokeColor:void 0,strokeWidth:void 0});function jn(e){return e!==g.Top&&e!==g.Bottom&&e!==g.Left&&e!==g.Right}function Mn(e,t){return t?.7*e/t**.5:0}function Nn(e,t,n=5){switch(e){case g.Top:return[0,-t/2-n];case g.Bottom:return[0,t/2+n];case g.Left:return[-t/2-n,0];case g.Right:return[t/2+n,0];default:return[0,0]}}function Pn(e,t,n,r,i){let a=n(e._point.xValue),o=r(e._point.yValue),s=e._point.sizePx,c=e._point.label??``,l=c.length,u=Mn(s,l),d=h(c,jn(t)?u:i,.6),f=i,p=Nn(t,s),m=t===g.Left?-d:t===g.Right?0:-d/2,_=t===g.Top?-f:t===g.Bottom?0:-f/2;return{x:a+p[0]+m,y:o+p[1]+_,width:d,height:f}}function Fn(e,n,r,i){e.each((e,t,n)=>{let r=n[t];r._labelVisible=!0}),e.each((e,a,s)=>{let c=s[a],l=o(e,n.labelPosition,e._point.pointIndex);if(!c._labelVisible||jn(l))return;let u=w(c).select(`text`),d=Pn(e,l,r,i,Number.parseFloat(window.getComputedStyle(u.node())?.fontSize));for(let e=0;e<s.length;e+=1){if(a===e)continue;let l=s[e],u=w(l),f=u.select(`text`),p=u.datum(),m=[r(p._point.xValue),i(p._point.yValue)],h=p._point.sizePx/2,g={x:m[0]-h,y:m[1]-h,width:2*h,height:2*h},_=t(d,g,2),v=l._labelVisible;if(!_&&v){let e=Number.parseFloat(window.getComputedStyle(f.node())?.fontSize),a=Pn(p,o(p,n.labelPosition,p._point.pointIndex),r,i,e);_=t(d,a,.25)}if(_)if(c._forceShowLabel)l._labelVisible=!1;else{c._labelVisible=!1;break}}}),e.each((e,t,n)=>{let r=n[t];w(r).select(`text`).attr(`opacity`,+!!r._labelVisible)})}function In(e,t,n){e.attr(`transform`,e=>`translate(${e._point.xValue},${e._point.yValue})`),e.append(`path`).style(`fill`,e=>e._point.color),e.append(`text`).style(`pointer-events`,`none`),e.attr(`transform`,e=>`translate(${t(e._point.xValue)},${n(e._point.yValue)}) scale(0)`)}function Ln(e,t,n,r,i){let a=pt();e.each((e,n,r)=>{let o=w(r[n]),s=o.select(`text`),c=o.select(`path`),l=e._point.sizePx,d=e._point.color,p=e._point.strokeColor??null,h=e._point.strokeWidthPx??null;c.attr(`d`,()=>e._point.shape?a.size(Math.PI*l*l/4).type(kn[e._point.shape])():null),f(c,i).style(`fill`,d).style(`stroke`,p).style(`stroke-width`,`${h}px`);let _=e._point.labelPosition,v=_!==g.Top&&_!==g.Bottom&&_!==g.Left&&_!==g.Right,y=e._point.label??``,b=y.length,x=Mn(l,b),S=e._point.labelColor;if(!S&&v){let e=d||`var(--vis-scatter-fill-color)`,n=se(u(e)?m(e,o.node()):e)?.hex();S=oe(n)>t.labelTextBrightnessRatio?`var(--vis-scatter-point-label-text-color-dark)`:`var(--vis-scatter-point-label-text-color-light)`}let ee=Nn(_,l);s.html(y).attr(`x`,ee[0]).attr(`y`,ee[1]).style(`font-size`,v?x:null).style(`text-anchor`,()=>{switch(_){case g.Right:return null;case g.Left:return`end`;default:return`middle`}}).style(`dominant-baseline`,()=>{switch(_){case g.Top:return null;case g.Bottom:return`hanging`;default:return`central`}}),f(s,i).style(`fill`,S),c.style(`cursor`,e._point.cursor)}),f(e,i).attr(`transform`,e=>`translate(${n(e._point.xValue)},${r(e._point.yValue)}) scale(1)`)}function Rn(e,t,n,r){f(e,r).attr(`transform`,e=>`translate(${t(e._point.xValue)},${n(e._point.yValue)}) scale(0)`).remove()}var zn=e({globalStyles:()=>Bn,point:()=>Wn,pointGroup:()=>Hn,pointGroupExit:()=>Un,root:()=>Vn}),Bn=d`
37
- :root {
38
- --vis-scatter-cursor: default;
39
- --vis-scatter-fill-color: var(--vis-color-main);
40
- --vis-scatter-stroke-color: 'none';
41
- --vis-scatter-stroke-width: 1px;
42
- --vis-scatter-fill-opacity: 1;
43
- --vis-scatter-stroke-opacity: 1;
44
- --vis-scatter-hover-stroke-width: 2px;
45
-
46
- --vis-scatter-point-label-text-color-dark: #5b5f6d;
47
- --vis-scatter-point-label-text-color-light: #fff;
48
- --vis-scatter-point-label-text-font-weight: 500;
49
- --vis-scatter-point-label-text-font-size: 12px;
50
- // Undefined by default to allow proper fallback to var(--vis-font-family)
51
- /* --vis-scatter-point-label-text-font-family: */
52
- }
53
- `,Vn=C`
54
- label: scatter-component;
55
- `,Hn=C`
56
- label: point-group;
57
- `,Un=C`
58
- label: point-group-exit;
59
- `,Wn=C`
60
- label: point;
61
-
62
- > path {
63
- cursor: var(--vis-scatter-cursor);
64
- fill: var(--vis-scatter-fill-color);
65
- fill-opacity: var(--vis-scatter-fill-opacity);
66
- stroke-opacity: var(--vis-scatter-stroke-opacity);
67
- stroke-width: var(--vis-scatter-stroke-width);
68
- stroke: var(--vis-scatter-stroke-color);
69
-
70
- &:hover {
71
- stroke-width: var(--vis-scatter-hover-stroke-width);
72
- }
73
- }
74
-
75
- > text {
76
- font-weight: var(--vis-scatter-point-label-text-font-weight);
77
- font-size: var(--vis-scatter-point-label-text-font-size);
78
- font-family: var(--vis-scatter-point-label-text-font-family, var(--vis-font-family));
79
- fill: var(--vis-scatter-point-label-text-color-dark);
80
- user-select: none;
81
- }
82
- `,Gn=class e extends ne{constructor(t){super(),this._defaultConfig=An,this.config=this._defaultConfig,this.events={[e.selectors.point]:{mouseenter:this._onPointMouseOver.bind(this),mouseleave:this._onPointMouseOut.bind(this)}},this._pointData=[],t&&this.setConfig(t)}setConfig(e){super.setConfig(e),this._updateSizeScale()}setData(e){super.setData(e),this._updateSizeScale()}get bleed(){this._pointData=this._getOnScreenData();let e=n(this._pointData),t=i(this.yScale.range()),r=l(this.yScale.range()),a=this.xScale.range()[0],o=this.xScale.range()[1],s=ce(`var(--vis-scatter-point-label-text-font-size)`,this.element),c=e.reduce((e,t)=>{let n=this.xScale(t._point.xValue),r=this.yScale(t._point.yValue),i=t._point.sizePx/2;if(e.minX=Math.min(e.minX,n-i),e.maxX=Math.max(e.maxX,n+i),e.minY=Math.min(e.minY,r-i),e.maxY=Math.max(e.maxY,r+i),t._point.label){let n=Pn(t,t._point.labelPosition,this.xScale,this.yScale,s);e.minX=Math.min(e.minX,n.x),e.maxX=Math.max(e.maxX,n.x+n.width),e.minY=Math.min(e.minY,n.y),e.maxY=Math.max(e.maxY,n.y+n.height)}return e},{minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0}),u=1.2;return{top:c.minY<t?u*(t-c.minY):0,bottom:c.maxY>r?u*(c.maxY-r):0,left:c.minX<a?u*(a-c.minX):0,right:c.maxX>o?u*(c.maxX-o):0}}_render(e){let{config:t}=this,n=r(e)?e:t.duration,i=this.g.selectAll(`.${Hn}`).data(this._pointData),o=i.enter().append(`g`).attr(`class`,Hn).merge(i);f(o,n).style(`opacity`,1);let s=i.exit().attr(`class`,Un);f(s,n).style(`opacity`,0).remove();let c=o.selectAll(`.${Wn}`).data(e=>e,e=>`${a(e,t.id,e._point.pointIndex)??e._point.pointIndex}`),l=c.enter().append(`g`).attr(`class`,Wn);In(l,this.xScale,this.yScale),this._points=l.merge(c),Ln(this._points,t,this.xScale,this.yScale,n),Rn(c.exit(),this.xScale,this.yScale,n),this._resolveLabelOverlap()}_resolveLabelOverlap(){if(this.config.label){if(!this.config.labelHideOverlapping){this._points.selectAll(`text`).attr(`opacity`,null);return}cancelAnimationFrame(this._collideLabelsAnimFrameId),this._collideLabelsAnimFrameId=requestAnimationFrame(()=>{Fn(this._points.filter(e=>!!e._point.label),this.config,this.xScale,this.yScale)})}}_updateSizeScale(){let{config:e,datamodel:t}=this;this._sizeScale=e.sizeScale.copy(),this._sizeScale.domain(s(t.data,e.size)),this._sizeScale.range(e.sizeRange??[0,0])}_getOnScreenData(){let{config:e,datamodel:{data:t}}=this,r=this.xScale.domain().map(e=>+e),i=this.yScale.domain().map(e=>+e),s=c(e.y)?e.y:[e.y],u=l(n(s.map((n,r)=>t?.map(t=>b(t,e.size,r))))),d=e.sizeRange?this._sizeScale(u):u,f=this.xScale.invert(d)-this.xScale.invert(0),p=Math.abs(this.yScale.invert(d)-this.yScale.invert(0));return s.map((n,s)=>t?.reduce((t,c,l)=>{let u=b(c,e.x,l),d=b(c,n,s);if(u==null||d==null)return t;let m=b(c,e.size,l),h=e.sizeRange?this._sizeScale(m):m,g=this.xScale.invert(h)-this.xScale.invert(0),_=Math.abs(this.yScale.invert(h)-this.yScale.invert(0));return u-g/2>=r[0]-f/2&&u+g/2<=r[1]+f/2&&d-_/2>=i[0]-p/2&&d+_/2<=i[1]+p/2&&t.push(Object.assign(Object.assign({},c),{_point:{xValue:u,yValue:d,sizePx:h,color:x(c,e.color,s),strokeColor:x(c,e.strokeColor,s,!0),strokeWidthPx:b(c,e.strokeWidth,s),shape:a(c,e.shape,s),label:a(c,e.label,s),labelColor:x(c,e.labelColor,s,!0),labelPosition:o(c,e.labelPosition,l),cursor:a(c,e.cursor,s),groupIndex:s,pointIndex:l}})),t},[])??[])}_mapEventDatum(e){return{datum:e,index:e._point.pointIndex}}_onPointMouseOver(e,t){let n=w(t.target),r=n.node();r&&(r._forceShowLabel=!0),n.raise(),this._resolveLabelOverlap()}_onPointMouseOut(e,t){let n=w(t.target).node();n&&delete n._forceShowLabel,this._resolveLabelOverlap()}};Gn.selectors=zn;var Kn={"data-vis-component":``};On.selectors;var qn=k({__name:`index`,props:{color:{type:[Function,String,Array,null]},curveType:{},lineWidth:{},lineDashArray:{type:[Function,Array,null]},fallbackValue:{},highlightOnHover:{type:Boolean},cursor:{type:[Function,String,null]},interpolateMissingData:{type:Boolean},x:{type:[Function,Number,null]},y:{type:[Function,Number,null,Array]},id:{type:Function},xScale:{type:[Object,Function]},yScale:{type:[Object,Function]},excludeFromDomainCalculation:{type:Boolean},duration:{},events:{},attributes:{},data:{}},setup(e,{expose:t}){let n=ve(p),r=e,i=T(()=>n.data.value??r.data),a=te(r),o=he();return me(()=>{de(()=>{o.value=new On(a.value),o.value?.setData(i.value),n.update(o.value)})}),pe(()=>{o.value?.destroy(),n.destroy()}),N(a,(e,t)=>{ie(e,t)||(o.value?.setConfig(a.value),o.value?.render())}),N(i,()=>{o.value?.setData(i.value)}),t({component:o}),(e,t)=>(A(),E(`div`,Kn))}}),Jn={"data-vis-component":``};Gn.selectors;var Yn=k({__name:`index`,props:{color:{type:[Function,String,Array,null]},size:{type:[Function,Number,null]},sizeScale:{type:[Object,Function]},sizeRange:{},shape:{type:[Function,String]},label:{type:[Function,String,null]},labelColor:{type:[Function,String,Array,null]},labelHideOverlapping:{type:Boolean},cursor:{type:[Function,String,null]},labelTextBrightnessRatio:{},labelPosition:{type:[Function,String,null]},strokeColor:{type:[Function,String,Array,null]},strokeWidth:{type:[Function,Number,null]},x:{type:[Function,Number,null]},y:{type:[Function,Number,null,Array]},id:{type:Function},xScale:{type:[Object,Function]},yScale:{type:[Object,Function]},excludeFromDomainCalculation:{type:Boolean},duration:{},events:{},attributes:{},data:{}},setup(e,{expose:t}){let n=ve(p),r=e,i=T(()=>n.data.value??r.data),a=te(r),o=he();return me(()=>{de(()=>{o.value=new Gn(a.value),o.value?.setData(i.value),n.update(o.value)})}),pe(()=>{o.value?.destroy(),n.destroy()}),N(a,(e,t)=>{ie(e,t)||(o.value?.setConfig(a.value),o.value?.render())}),N(i,()=>{o.value?.setData(i.value)}),t({component:o}),(e,t)=>(A(),E(`div`,Jn))}}),Xn={class:`text-muted-foreground flex flex-wrap items-center gap-x-4 gap-y-1.5 text-xs`},Zn={key:0,class:`flex items-center gap-1.5`},Qn={key:1,class:`flex items-center gap-1.5`},$n=Object.assign(k({__name:`LimitChart`,props:{snapshots:{},hits:{},forecast:{},class:{},height:{default:220}},setup(e){let t=e,n=T(()=>{let e=t.snapshots.filter(e=>Number.isFinite(e.ts)&&Number.isFinite(e.usedPct)).map(e=>({x:e.ts,measured:e.usedPct,projected:void 0})),n=e[e.length-1],r=t.forecast?.exhaustsAt;return n&&r!=null&&Number.isFinite(r)&&(t.forecast?.burnRatePctPerHour??0)>0&&(n.projected=n.measured,e.push({x:r,measured:void 0,projected:100})),e}),r=T(()=>n.value.some(e=>e.projected!==void 0)),i=T(()=>t.hits.filter(e=>Number.isFinite(e)).map(e=>({x:e,y:100}))),a=e=>e.x,o=[e=>e.measured,e=>e.projected],s=(e,t)=>t===0?`var(--chart-1)`:`var(--destructive)`;function c(e){let t=[];return e.measured!==void 0&&t.push(`
83
- <div class="flex items-center gap-2">
84
- <span class="size-2 rounded-[2px]" style="background: var(--chart-1)"></span>
85
- <span class="flex-1">Measured</span>
86
- <span class="tabular font-medium">${e.measured.toFixed(1)}%</span>
87
- </div>`),e.projected!==void 0&&t.push(`
88
- <div class="flex items-center gap-2">
89
- <span class="size-2 rounded-[2px]" style="background: var(--destructive)"></span>
90
- <span class="flex-1">Projected</span>
91
- <span class="tabular font-medium">${e.projected.toFixed(1)}%</span>
92
- </div>`),`
93
- <div class="bg-popover text-popover-foreground min-w-40 space-y-1.5 rounded-md border p-2.5 text-xs shadow-md">
94
- <div class="font-medium">${Ne(e.x)}</div>
95
- ${t.join(``)||`<div class="text-muted-foreground">no data</div>`}
96
- </div>`}function l(e){return Number.isFinite(e)?Me(e):`—`}return(e,u)=>{let d=Pe,f=xe;return A(),E(`div`,{class:fe(I(be)(`space-y-3`,t.class))},[O(f,null,{fallback:M(()=>[O(d,{style:le({height:`${t.height}px`}),class:`w-full`},null,8,[`style`])]),default:M(()=>[O(I(ae),{data:I(n),height:t.height,"y-domain":[0,100],margin:{top:8,right:8,bottom:24,left:36},class:`chart-surface limit-chart w-full`},{default:M(()=>[O(I(qn),{x:a,y:o,color:s,"line-width":2,"curve-type":`monotoneX`}),O(I(Yn),{x:e=>e.x,y:e=>e.y,data:I(i),color:`var(--destructive)`,size:7},null,8,[`x`,`y`,`data`]),O(I(y),{type:`x`,"tick-format":l,"num-ticks":5,"grid-line":!1,"domain-line":!1}),O(I(y),{type:`y`,"tick-format":e=>`${e}%`,"num-ticks":3,"domain-line":!1},null,8,[`tick-format`]),O(I(re),{template:c,color:`var(--foreground)`}),O(I(ee))]),_:1},8,[`data`,`height`])]),_:1}),F(`div`,Xn,[u[2]||=F(`span`,{class:`flex items-center gap-1.5`},[F(`span`,{class:`size-2.5 rounded-[3px]`,style:{background:`var(--chart-1)`}}),j(` Measured — actual window fill `)],-1),I(r)?(A(),E(`span`,Zn,[...u[0]||=[F(`span`,{class:`bg-destructive size-2.5 rounded-[3px]`},null,-1),j(` Projected — if burn rate stays the same `,-1)]])):D(``,!0),I(i).length>0?(A(),E(`span`,Qn,[...u[1]||=[F(`span`,{class:`bg-destructive size-2.5 rounded-full`},null,-1),j(` Hit 100% `,-1)]])):D(``,!0)])],2)}}}),{__name:`ChartsLimitChart`}),er={class:`space-y-6`},tr={key:1,class:`space-y-6`},nr={key:0,class:`grid gap-4 border-t pt-4 sm:grid-cols-3`},rr={class:`tabular mt-0.5 text-lg font-medium`},ir={class:`mt-0.5 text-lg font-medium`},ar={class:`mt-0.5 text-lg font-medium`},or={key:1,class:`text-muted-foreground text-xs`},sr=k({__name:`limits`,setup(e){ye({title:`Limits — nomnomtokens`});let{data:t,pending:n}=Se();return(e,r)=>{let i=we,a=Ie,o=Oe,s=Te,c=Ce,l=Fe,u=De,d=$n,f=Ee,p=je;return A(),E(`div`,er,[r[3]||=F(`div`,null,[F(`h1`,{class:`text-2xl font-semibold tracking-tight`},`Limits`),F(`p`,{class:`text-muted-foreground mt-1 text-sm`},` How full the current window is. Orange is measured; red is the burn-rate projection to 100% if usage stays this fast. `)],-1),!I(n)&&(I(t)?.windows.length??0)===0?(A(),ue(i,{key:0,title:`No limit history yet`,description:"Claude Code limits come from the status line hook (`nnt init`). Codex limits are read from session rollouts on scan.",command:`npx nomnomtokens init`})):(A(),E(`div`,tr,[(A(!0),E(_e,null,ge(I(t)?.windows,n=>(A(),ue(p,{key:`${n.provider}-${n.window}`},{default:M(()=>[O(u,{class:`border-b pb-4`},{default:M(()=>[O(o,{class:`flex items-center gap-2`},{default:M(()=>[j(P(n.window)+` window `,1),O(a,{variant:`outline`,class:`font-mono`},{default:M(()=>[j(P(n.provider),1)]),_:2},1024)]),_:2},1024),n.forecast?(A(),ue(s,{key:0},{default:M(()=>[j(P((`formatPct`in e?e.formatPct:I(ke))(n.forecast.usedPct,1))+` used · burning `+P(n.forecast.burnRatePctPerHour.toFixed(1))+`%/h `,1),n.hits.length>0?(A(),E(_e,{key:0},[j(` · hit the cap `+P(n.hits.length)+`× `,1)],64)):D(``,!0)]),_:2},1024)):D(``,!0),O(l,null,{default:M(()=>[O(c,{mood:n.mood,size:40},null,8,[`mood`])]),_:2},1024)]),_:2},1024),O(f,{class:`space-y-4 pt-5`},{default:M(()=>[O(d,{snapshots:n.snapshots,hits:n.hits,forecast:n.forecast},null,8,[`snapshots`,`hits`,`forecast`]),n.forecast?(A(),E(`div`,nr,[F(`div`,null,[r[0]||=F(`div`,{class:`text-muted-foreground text-xs`},`Used`,-1),F(`div`,rr,P((`formatPct`in e?e.formatPct:I(ke))(n.forecast.usedPct,1)),1)]),F(`div`,null,[r[1]||=F(`div`,{class:`text-muted-foreground text-xs`},`Projected to hit the cap`,-1),F(`div`,ir,P((`formatWhen`in e?e.formatWhen:I(Ae))(n.forecast.exhaustsAt,I(t).now)),1)]),F(`div`,null,[r[2]||=F(`div`,{class:`text-muted-foreground text-xs`},`Window resets`,-1),F(`div`,ar,P((`formatWhen`in e?e.formatWhen:I(Ae))(n.forecast.resetsAt,I(t).now)),1)])])):D(``,!0),n.forecast&&n.forecast.samples<3?(A(),E(`p`,or,` Only `+P(n.forecast.samples)+` samples in this window — the projection will sharpen as the status line fires more often. `,1)):D(``,!0)]),_:2},1024)]),_:2},1024))),128))]))])}}});export{sr as default};
@@ -1 +0,0 @@
1
- import{Ct as e,F as t,K as n,Qt as r,R as i,W as a,Xt as o,Zt as s,_t as c,dt as l,h as u,i as d,pt as ee,q as te,st as f,z as p}from"./BgvEQa6E.js";var m=r({docsBase:o,reporters:s}),h=new Set([`link`,`style`,`script`,`noscript`]),g=new Set([`title`,`titleTemplate`,`script`,`style`,`noscript`]),_=new Set([`base`,`meta`,`link`,`style`,`script`,`noscript`]),v=new Set([`title`,`base`,`htmlAttrs`,`bodyAttrs`,`meta`,`link`,`style`,`script`,`noscript`]),y=new Set([`base`,`title`,`titleTemplate`,`bodyAttrs`,`htmlAttrs`,`templateParams`]),b=new Set([`key`,`tagPosition`,`tagPriority`,`tagDuplicateStrategy`,`innerHTML`,`textContent`,`processTemplateParams`]),x=new Set([`templateParams`,`htmlAttrs`,`bodyAttrs`]),S=new Set([`theme-color`,`google-site-verification`,`author`,`og:locale:alternate`,`og:image`,`og:video`,`og:audio`,`article:author`,`article:tag`,`book:author`,`book:tag`,`twitter:image`]),ne={critical:-8,high:-1,low:2},C=e=>typeof e==`number`?Number.isFinite(e):e;function w(e){return e===`__proto__`||e===`constructor`||e===`prototype`}function T(e){let t=new u;for(let n in e||{})t.hook(n,e[n]);return t}function E(e,t,n){if(e.hooks?._hooks?.[t]?.length)return e.hooks?.callHook(t,n)}var D=/^(?:viewport|description|keywords|robots)$/,O=[`name`,`property`,`http-equiv`];function k(e){let t=e.indexOf(`:`);if(t===-1)return!1;let n=e.slice(t+1);return S.has(n)||n.startsWith(`og:image:`)||n.startsWith(`og:video:`)||n.startsWith(`og:audio:`)||n.startsWith(`twitter:image:`)}function A(e){let{props:t,tag:n,key:r}=e;if(y.has(n))return n;if(n===`link`){if(t.rel===`canonical`)return`canonical`;if(t.rel===`alternate`&&t.hreflang)return`alternate:${t.hreflang}`}if(t.charset)return`charset`;if(n===`meta`)for(let e of O){let n=t[e];if(n!==void 0)return`meta:${n}${(typeof n!=`string`||!n.includes(`:`))&&!D.test(n)&&r?`:key:${r}`:``}`}return r?`${n}:key:${r}`:t.id?`${n}:id:${t.id}`:n===`link`&&t.rel&&t.href?`link:${t.rel}:${t.href}`:g.has(n)&&(e.textContent||e.innerHTML)?`${n}:content:${e.textContent||e.innerHTML}`:void 0}function j(e){let t=e._h||e._d||e.textContent||e.innerHTML;if(t)return t;let n=Object.keys(e.props).sort(),r=`${e.tag}:`,i=``;for(let t of n)r+=`${i}${t}:${String(e.props[t])}`,i=`,`;return r}function M(e,t,n){if(n===`_resolver`)return e;typeof e==`function`&&(!n||n!==`titleTemplate`&&!n.startsWith(`on`))&&(e=e());let r=t?t(n,e):e;if(Array.isArray(r)){let e;for(let n=0;n<r.length;n++){let i=M(r[n],t);e?e[n]=i:i!==r[n]&&(e=r.slice(0,n),e[n]=i)}return e||r}if(r?.constructor===Object){let e;for(let n in r){let i=w(n),a=i?void 0:M(r[n],t,n);if(!e&&(i||a!==r[n])){e={};for(let t in r){if(t===n)break;e[t]=r[t]}}e&&!i&&(e[n]=a)}return e||r}return r}var N=/[\s"'<>/=\x00-\x1F\x7F]/;function P(e,t){let n=e===`style`,r=n?new Map:new Set,i=e=>{if(e)if(n){let t=e.indexOf(`:`);t>0&&r.set(e.slice(0,t).trim(),e.slice(t+1).trim())}else e.split(` `).forEach(e=>e&&r.add(e))};if(typeof t==`string`)(n?t.split(`;`):[t]).forEach(i);else if(Array.isArray(t))t.forEach(i);else if(t&&typeof t==`object`)for(let e in t){let a=t[e];a&&a!==`false`&&(n?r.set(e.trim(),String(a)):i(e))}return r}function F(e,t){if(e.props=e.props||{},!t)return e;if(e.tag===`templateParams`)return e.props=t,e;let n=_.has(e.tag)||e.tag===`htmlAttrs`||e.tag===`bodyAttrs`;for(let r in t){if(w(r))continue;let i=r.startsWith(`data-`),a=n&&!b.has(r),o=a&&!i?r.toLowerCase():r;if(a&&(!o||N.test(o)))continue;let s=t[r];if(s===null)e.props[o]=null;else if(r===`class`||r===`style`)e.props[r]=P(r,s);else if(b.has(r))if((r===`textContent`||r===`innerHTML`)&&typeof s==`object`){let n=t.type||`application/json`;(n.endsWith(`json`)||n===`speculationrules`||n===`importmap`)&&(e.props.type=t.type=n,e[r]=JSON.stringify(s))}else e[r]=s;else if(s!==void 0){let t=String(s),n=e.tag===`meta`&&o===`content`;e.props[o]=t===`true`||t===``?i||n?t:!0:!s&&i&&t===`false`?`false`:s}}return e}function I(e,t){let n;return t.length&&(n=(e,n)=>{for(let r=0;r<t.length;r++)n=t[r](e,n);return n},e=n(void 0,e)),M(e,n)}function L(e,t){let n=F({tag:e,props:{}},typeof t==`object`&&typeof t!=`function`?t:{[e===`script`||e===`noscript`||e===`style`?`innerHTML`:`textContent`]:t});if(n.key&&h.has(n.tag)&&(n.props[`data-hid`]=n._h=n.key),n.tag===`script`&&typeof n.innerHTML==`object`&&(n.innerHTML=JSON.stringify(n.innerHTML),n.props.type=n.props.type||`application/json`),Array.isArray(n.props.content)){let e=[];for(let t of n.props.content)e.push({...n,props:{...n.props,content:t}});return e}return n}function R(e,t){if(Array.isArray(t))for(let n of t)e.push(n);else e.push(t)}function z(e,t){if(!e)return[];typeof e==`function`&&(e=e()),e=I(e,t);let n=[];for(let t in e){let r=e[t];if(r!==void 0)if(Array.isArray(r))for(let e of r)R(n,L(t,e));else R(n,L(t,r))}return n}var B=/</g,re=/<\/script/g,V=(e,t)=>e._w===t._w?e._p-t._p:e._w-t._w,H=()=>100;function U(e){for(let t in e)return!1;return!0}var W=/^tags:|:render/;function G(e,t){let n=(t[`entries:resolve`]?.length||0)+(t[`entries:normalize`]?.length||0);if(e._h!==n){e._h=n;for(let t of e.entries.values())delete t._tags}}function K(e){for(let t=0;t<e.length;t++){let n=e[t],r={...n.props};r.class instanceof Set&&(r.class=new Set(r.class)),r.style instanceof Map&&(r.style=new Map(r.style)),e[t]={...n,props:r}}}function q(e,t){let n=e.tags,r=0;for(let t of e.tagMap.values())if(Array.isArray(t))for(let e of t)n[r++]=e;else n[r++]=t;n.length=r,t&&n.sort(V)}function J(e){let t=!1;for(let n of e.tags.sort(V)){let r=n._d||j(n);if(!r)continue;let i=e.tagMap.get(r);if(!i){e.tagMap.set(r,n);continue}if((n.tagDuplicateStrategy||(x.has(n.tag)?`merge`:null)||(n.key&&n.key===i.key?`merge`:null))===`merge`){let t={...i.props};for(let e in n.props)t[e]=e===`style`?new Map([...i.props.style||new Map,...n.props[e]]):e===`class`?new Set([...i.props.class||[],...n.props[e]]):n.props[e];e.tagMap.set(r,{...n,props:t})}else n._p>>10==i._p>>10&&n.tag===`meta`&&k(r)?(e.tagMap.set(r,Object.assign([...Array.isArray(i)?i:[i],n],n)),t=!0):(n._w===i._w?n._p>i._p:n._w<i._w)&&e.tagMap.set(r,n)}return t}function Y(e,t){let n=e.tagMap.get(`title`),r=e.tagMap.get(`titleTemplate`);if(t._title=n?.textContent,!r)return;let i=r.textContent;if(t._titleTemplate=i,!i)return;let a=typeof i==`function`?i(n?.textContent):i;typeof a==`string`&&!t.plugins.has(`template-params`)&&(a=a.replace(`%s`,n?.textContent||``)),n?a===null?e.tagMap.delete(`title`):e.tagMap.set(`title`,{...n,textContent:a}):e.tagMap.set(`titleTemplate`,{...r,tag:`title`,textContent:a})}function X(e){let t=0;for(let n of e){let{innerHTML:r,tag:i,props:a}=n;if(!(!v.has(i)||U(a)&&!C(r)&&!C(n.textContent))&&!(i===`meta`&&!C(a.content)&&!a[`http-equiv`]&&!a.charset)){if(i===`script`&&(r||n.textContent)){let e=String(a.type),t=e.endsWith(`json`)||e===`importmap`||e===`speculationrules`,i=e=>t?(typeof e==`string`?e:JSON.stringify(e)).replace(B,`\\u003C`):typeof e==`string`?e.replace(re,`<\\/script`):e;n={...n},r&&(n.innerHTML=i(r)),n.textContent&&(n.textContent=i(n.textContent)),n._d=A(n)}e[t++]=n}}return e.length=t,e}function ie(e,t){let n=t?.tagWeight??e.resolvedOptions._tagWeight??H,r={tagMap:new Map,tags:[]},i=e.hooks?._hooks||{};G(e,i);for(let t of e.entries.values())t._pending!==void 0&&(t.input=t._pending,delete t._pending,delete t._tags,delete t._precomputedTags);let a;(i[`entries:resolve`]?.length||i[`entries:normalize`]?.length)&&(a=[...e.entries.values()],i[`entries:resolve`]?.length&&E(e,`entries:resolve`,{entries:a,...r})),G(e,i);for(let t of a||e.entries.values()){let a=t._tags;if(!a)if(t._precomputedTags&&n===e.resolvedOptions._tagWeight&&!i[`entries:normalize`]?.length&&!i[`entries:resolve`]?.length&&(!t.options||U(t.options)))a=t._precomputedTags;else{if(a=z(t.input,e.resolvedOptions.propResolvers||[]),t.options&&!U(t.options))for(let e of a)Object.assign(e,t.options);if(i[`entries:normalize`]?.length){let n={tags:a,entry:t};E(e,`entries:normalize`,n),a=n.tags}for(let e=0;e<a.length;e++){let r=a[e];r._w=n(r),r._p=(t._i<<10)+e,r._d=A(r),r._d||(r._h=j(r))}t._tags=a}r.tags.push(...a)}for(let e in i)if(i[e]?.length&&W.test(e)){K(r.tags);break}let o=J(r);return Y(r,e),q(r,o),E(e,`tags:beforeResolve`,r),E(e,`tags:resolve`,r),E(e,`tags:afterResolve`,r),X(r.tags)}var Z=`usehead`;function ae(){if(i()){let e=p(Z);if(e)return e}throw Error(`useHead() was called without provide context, ensure you call it through the setup() function.`)}function oe(e){return{install(t){t.config.globalProperties.$unhead=e,t.config.globalProperties.$head=e,t.provide(Z,e)}}.install}var se=Object.assign((t,n)=>ee(n)?e(n):n,{_static:!0});function ce(e,t={}){let n=t.head||ae();return n.ssr?n.push(e||{},t):le(n,e,t)}function le(e,r,i={}){let o=l();if(o&&!o.active)return{patch(){},dispose(){},_i:-1};let s=c(!1);if(i.onRendered&&o){let e=i.onRendered;i={...i,onRendered:t=>o.run(()=>e(t))}}let u;return f(()=>{let t=s.value?{}:M(r,se);u?u.patch(t):u=e.push(t,i)}),t()&&(n(()=>{u.dispose()}),te(()=>{s.value=!0}),a(()=>{s.value=!1})),u}function Q(e){let t=e||d();return t.ssrContext?.head||t.runWithContext(()=>{if(i()){let e=p(`usehead`);if(!e)throw m.NUXT_E6001();return e}})}function $(e,t={}){return ce(e,{head:t.head||Q(t.nuxt),...t})}export{j as a,ie as c,_ as d,ne as f,A as i,E as l,$ as n,k as o,oe as r,F as s,Q as t,T as u};
@@ -1 +0,0 @@
1
- import{C as e}from"./BgvEQa6E.js";import{at as t,it as n}from"./BgaLDD2o.js";import{t as r}from"./Bv0odo9W.js";function i(){let r=n(),i=t(),a=e(()=>{let e=r.query.range;return typeof e==`string`&&[`24h`,`7d`,`30d`,`90d`,`all`].includes(e)?e:`7d`}),o=e(()=>{let e=r.query.scope;return typeof e==`string`&&e?e.split(`,`).filter(Boolean):[]}),s=e(()=>{let e=r.query.provider;return typeof e==`string`&&e?e.split(`,`).filter(Boolean):[]}),c=e(()=>{let e=r.query.metric;return e===`tokens`||e===`sessions`?e:`cost`});function l(e){let t={...r.query,...e};for(let[e,n]of Object.entries(t))(n===void 0||n===``)&&delete t[e];i.push({query:t})}return{range:a,scopes:o,providers:s,metric:c,hasScopeFilter:e(()=>o.value.length>0),setRange:e=>l({range:e===`7d`?void 0:e}),setMetric:e=>l({metric:e===`cost`?void 0:e}),clearScopes:()=>l({scope:void 0}),toggleScope(e){l({scope:(o.value.includes(e)?o.value.filter(t=>t!==e):[...o.value,e]).join(`,`)||void 0})},toggleProvider(e){l({provider:(s.value.includes(e)?s.value.filter(t=>t!==e):[...s.value,e]).join(`,`)||void 0})},apiQuery:e(()=>({range:a.value,scope:o.value.join(`,`)||void 0,provider:s.value.join(`,`)||void 0}))}}function a(t,n,a){let o=i();return r(n,{key:`${t}`,query:e(()=>({...o.apiQuery.value,...a?.()})),keepalive:!0},`$B9AxYvUJ0-`)}var o=()=>a(`summary`,`/api/stats/summary`),s=(e,t)=>a(`series`,`/api/stats/series`,()=>({granularity:e.value,groupBy:t?.value})),c=()=>a(`heatmap`,`/api/stats/heatmap`),l=()=>a(`scopes`,`/api/stats/scopes`),u=()=>a(`providers`,`/api/stats/providers`),d=()=>a(`sessions`,`/api/stats/sessions`),f=()=>r(`/api/stats/limits`,{key:`limits`},`$sGY8kRoJWO`);function p(){return r(`/api/meta`,{key:`meta`},`$PttuxlL37K`)}function m(){let{data:t}=p();return{scopes:e(()=>t.value?.scopes??[])}}export{l as a,d as c,u as i,o as l,f as n,m as o,p as r,s,c as t,i as u};
@@ -1 +0,0 @@
1
- import{C as e,K as t,L as n,P as r,Y as i,_t as a,a as o,d as s,i as c,nt as l,wt as u,yt as d}from"./BgvEQa6E.js";import{at as f,dt as p,ft as m,ht as h,lt as g,n as _,nt as v,r as y,rt as b,st as x,t as S,tt as C,vt as w}from"./BgaLDD2o.js";import{n as T}from"./tqUqm2f-.js";var E=(...e)=>e.find(e=>e!==void 0);function D(e){let t=e.replace(/[\u0000-\u001F\s]+/g,``);for(;t.toLowerCase().startsWith(`view-source:`);)t=t.slice(12);let n=t.indexOf(`:`);return n>0&&g(t.slice(0,n+1))?null:e}function O(s){let h=s.componentName||`NuxtLink`;function g(e){return typeof e==`string`&&e.startsWith(`#`)}function w(e,t,n){let r=n??s.trailingSlash;if(!e||r!==`append`&&r!==`remove`)return e;if(typeof e==`string`)return A(e,r);let i=`path`in e&&e.path!==void 0?e.path:t(e).path;return{...e,name:void 0,path:A(i,r)}}function O(t){let n=f(),r=o(),i=e(()=>!!u(t.target)&&u(t.target)!==`_self`),a=e(()=>{let e=u(t.to)||u(t.href)||``;return typeof e==`string`&&x(e,{acceptRelative:!0})}),c=l(`RouterLink`),d=c&&typeof c!=`string`?c.useLink:void 0,m=e(()=>{if(u(t.external))return!0;let e=u(t.to)||u(t.href)||``;return typeof e==`object`?!1:e===``||a.value}),h=e(()=>{let e=u(t.to)||u(t.href)||``;return m.value?e:w(e,n.resolve,u(t.trailingSlash))}),_=m.value?void 0:d?.({...t,to:h,viewTransition:u(t.viewTransition)}),y=e(()=>{let e=u(t.trailingSlash)??s.trailingSlash;if(!h.value||a.value||g(h.value)){let e=h.value;return typeof e==`string`?D(e):e}if(m.value){let t=typeof h.value==`object`&&`path`in h.value?b(h.value):h.value,r=typeof t==`object`?n.resolve(t).href:t,i=typeof r==`string`?D(r):r;return i===null?null:A(i,e)}return typeof h.value==`object`?n.resolve(h.value)?.href??null:A(p(r.app.baseURL,h.value),e)});return{to:h,hasTarget:i,isAbsoluteUrl:a,isExternal:m,href:y,isActive:_?.isActive??e(()=>h.value===n.currentRoute.value.path),isExactActive:_?.isExactActive??e(()=>h.value===n.currentRoute.value.path),route:_?.route??e(()=>n.resolve(h.value)),async navigate(e){y.value!==null&&await v(y.value,{replace:u(t.replace),external:m.value||i.value})}}}return r({name:h,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},prefetchOn:{type:[String,Object],default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1},trailingSlash:{type:String,default:void 0,required:!1}},useLink:O,setup(e,{slots:r}){let o=f(),{to:u,href:p,navigate:h,isExternal:v,hasTarget:x,isAbsoluteUrl:w}=O(e),D=d(!1),k=a(null),A=t=>{k.value=e.custom?t?.$el?.nextElementSibling:t?.$el};function M(t){return!!(!D.value&&(typeof e.prefetchOn==`string`?e.prefetchOn===t:e.prefetchOn?.[t]??s.prefetchOn?.[t])&&(e.prefetch??s.prefetch)!==!1&&e.noPrefetch!==!0&&e.target!==`_blank`&&!N())}async function P(e=c()){if(D.value||p.value===null)return;D.value=!0;let t=typeof u.value==`string`?u.value:v.value?b(u.value):o.resolve(u.value).fullPath,n=v.value?new URL(t,window.location.href).href:t;await Promise.all([e.hooks.callHook(`link:prefetch`,n)?.catch(()=>{}),!v.value&&!x.value&&T(u.value,o).catch(()=>{})])}if(!e.custom&&M(`visibility`)){let e=c(),n,r=null;i(()=>{let t=j();S(()=>{n=y(()=>{k?.value?.tagName&&(r=t.observe(k.value,async()=>{r?.(),r=null,await P(e)}))})})}),t(()=>{n&&_(n),r?.(),r=null})}return()=>{let t=e.target||null,i=E(e.noRel?``:e.rel,s.externalRelAttribute,w.value||x.value?`noopener noreferrer`:``)||null,a=e=>({href:p.value,navigate:h,get route(){if(!p.value)return;let e=new URL(p.value,window.location.href);return{path:e.pathname,fullPath:e.pathname,get query(){return m(e.search)},hash:e.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:p.value}},rel:i,target:t,isExternal:v.value||x.value,isActive:!1,isExactActive:!1,...e,prefetch:P,prefetched:D.value,shouldPrefetch:M});if(!v.value&&!x.value&&!g(u.value)){let t={ref:A,to:u.value,activeClass:e.activeClass||s.activeClass,exactActiveClass:e.exactActiveClass||s.exactActiveClass,replace:e.replace,ariaCurrentValue:e.ariaCurrentValue,custom:e.custom};return e.custom||(M(`interaction`)&&(t.onPointerenter=P.bind(null,void 0),t.onFocus=P.bind(null,void 0)),D.value&&(t.class=e.prefetchedClass||s.prefetchedClass),t.rel=e.rel||void 0),n(l(`RouterLink`),t,e.custom&&r.default?{default:e=>r.default(a(e))}:r.default)}return e.custom?r.default?r.default(a()):null:n(`a`,{ref:k,href:p.value||null,rel:i,target:t,onClick:async t=>{if(!(v.value||x.value)){t.preventDefault();try{let t=C(p.value??``);return await(e.replace?o.replace(t):o.push(t))}finally{if(g(u.value)){let e=u.value.slice(1),t=e;try{t=decodeURIComponent(e)}catch{}document.getElementById(t)?.focus()}}}}},r.default?.())}}})}var k=O(s);function A(e,t){if(t!==`append`&&t!==`remove`)return e;let n=t===`append`?h:w;return x(e)&&!e.startsWith(`http`)?e:n(e,!0)}function j(){let e=c();if(e._observer)return e._observer;let t=null,n=new Map;return e._observer={observe:(e,r)=>(t||=new IntersectionObserver(e=>{for(let t of e){let e=n.get(t.target);(t.isIntersecting||t.intersectionRatio>0)&&e&&e()}}),n.set(e,r),t.observe(e),()=>{n.delete(e),t?.unobserve(e),n.size===0&&(t?.disconnect(),t=null)})}}var M=/2g/;function N(){let e=navigator.connection;return!!(e&&(e.saveData||M.test(e.effectiveType)))}export{k as t};
@@ -1 +0,0 @@
1
- import{D as e,P as t,Wt as n,Z as r,tt as i,wt as a}from"./BgvEQa6E.js";import{i as o}from"./Bv0odo9W.js";var s=Object.assign(t({__name:`CardDescription`,props:{class:{}},setup(t){let s=t;return(t,c)=>(r(),e(`div`,{"data-slot":`card-description`,class:n(a(o)(`text-muted-foreground text-sm`,s.class))},[i(t.$slots,`default`)],2))}}),{__name:`UiCardDescription`}),c=Object.assign(t({__name:`CardHeader`,props:{class:{}},setup(t){let s=t;return(t,c)=>(r(),e(`div`,{"data-slot":`card-header`,class:n(a(o)(`grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6`,s.class))},[i(t.$slots,`default`)],2))}}),{__name:`UiCardHeader`}),l=Object.assign(t({__name:`CardContent`,props:{class:{}},setup(t){let s=t;return(t,c)=>(r(),e(`div`,{"data-slot":`card-content`,class:n(a(o)(`px-6`,s.class))},[i(t.$slots,`default`)],2))}}),{__name:`UiCardContent`}),u=Object.assign(t({__name:`CardTitle`,props:{class:{}},setup(t){let s=t;return(t,c)=>(r(),e(`div`,{"data-slot":`card-title`,class:n(a(o)(`leading-none font-semibold`,s.class))},[i(t.$slots,`default`)],2))}}),{__name:`UiCardTitle`});export{s as i,l as n,c as r,u as t};
@@ -1 +0,0 @@
1
- import{C as e,D as t,E as n,Kt as r,M as i,P as a,Wt as o,Z as s,_t as c,qt as l,tt as u,w as d,wt as f}from"./BgvEQa6E.js";import{i as p}from"./Bv0odo9W.js";var m=[`aria-label`,`title`],h={class:`font-mono tracking-tight`},g=Object.assign(a({__name:`Mascot`,props:{mood:{default:`content`},size:{default:48},class:{}},setup(n){let i=n,a={hungry:{eyes:`ᐧ ᐧ`,mouth:`ᵕ`,tint:`text-muted-foreground`,title:`The model has not been fed yet`},content:{eyes:`• •`,mouth:`⌣`,tint:`text-foreground`,title:`Nibbling away`},full:{eyes:`◕ ◕`,mouth:`⌣`,tint:`text-foreground`,title:`Getting full`},stuffed:{eyes:`× ×`,mouth:`○`,tint:`text-chart-1`,title:`Stuffed — the cap is close`},overstuffed:{eyes:`⊗ ⊗`,mouth:`︵`,tint:`text-destructive`,title:`Overstuffed — cap reached`}},c=e(()=>a[i.mood]??a.content);return(e,n)=>(s(),t(`div`,{class:o(f(p)(`flex select-none flex-col items-center justify-center leading-none`,f(c).tint,i.class)),style:r({fontSize:`${i.size/3}px`}),role:`img`,"aria-label":f(c).title,title:f(c).title},[d(`span`,h,l(f(c).eyes),1),d(`span`,{class:`font-mono`,style:r({fontSize:`${i.size/2.6}px`})},l(f(c).mouth),5)],14,m))}}),{__name:`Mascot`}),_={class:`flex flex-col items-center justify-center gap-3 px-6 py-16 text-center`},v={class:`mt-2 text-lg font-medium`},y={key:0,class:`text-muted-foreground max-w-md text-sm text-balance`},b=Object.assign(a({__name:`EmptyState`,props:{title:{},description:{},command:{}},setup(e){let r=e,a=c(!1);async function o(){r.command&&(await navigator.clipboard.writeText(r.command),a.value=!0,setTimeout(()=>{a.value=!1},1500))}return(e,c)=>{let p=g;return s(),t(`div`,_,[i(p,{mood:`hungry`,size:64}),d(`h2`,v,l(r.title),1),r.description?(s(),t(`p`,y,l(r.description),1)):n(``,!0),r.command?(s(),t(`button`,{key:1,type:`button`,class:`bg-muted hover:bg-accent mt-1 rounded-md px-3 py-1.5 font-mono text-xs transition-colors`,onClick:o},l(f(a)?`copied`:r.command),1)):n(``,!0),u(e.$slots,`default`)])}}}),{__name:`EmptyState`});export{g as n,b as t};
@@ -1 +0,0 @@
1
- import{D as e,P as t,Wt as n,Z as r,tt as i,w as a,wt as o}from"./BgvEQa6E.js";import{i as s}from"./Bv0odo9W.js";var c=Object.assign(t({__name:`TableHead`,props:{class:{},numeric:{type:Boolean}},setup(t){let a=t;return(t,c)=>(r(),e(`th`,{"data-slot":`table-head`,class:n(o(s)(`text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap`,a.numeric&&`text-right`,a.class))},[i(t.$slots,`default`)],2))}}),{__name:`UiTableHead`}),l=[`data-state`],u=Object.assign(t({__name:`TableRow`,props:{class:{},selected:{type:Boolean},clickable:{type:Boolean}},setup(t){let a=t;return(t,c)=>(r(),e(`tr`,{"data-slot":`table-row`,"data-state":a.selected?`selected`:void 0,class:n(o(s)(`hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors`,a.clickable&&`cursor-pointer`,a.class))},[i(t.$slots,`default`)],10,l))}}),{__name:`UiTableRow`}),d=Object.assign(t({__name:`TableHeader`,props:{class:{}},setup(t){let a=t;return(t,c)=>(r(),e(`thead`,{"data-slot":`table-header`,class:n(o(s)(`[&_tr]:border-b`,a.class))},[i(t.$slots,`default`)],2))}}),{__name:`UiTableHeader`}),f=Object.assign(t({__name:`TableCell`,props:{class:{},numeric:{type:Boolean}},setup(t){let a=t;return(t,c)=>(r(),e(`td`,{"data-slot":`table-cell`,class:n(o(s)(`p-2 align-middle whitespace-nowrap`,a.numeric&&`text-right tabular`,a.class))},[i(t.$slots,`default`)],2))}}),{__name:`UiTableCell`}),p=Object.assign(t({__name:`TableBody`,props:{class:{}},setup(t){let a=t;return(t,c)=>(r(),e(`tbody`,{"data-slot":`table-body`,class:n(o(s)(`[&_tr:last-child]:border-0`,a.class))},[i(t.$slots,`default`)],2))}}),{__name:`UiTableBody`}),m=Object.assign(t({__name:`Table`,props:{class:{},containerClass:{}},setup(t){let c=t;return(t,l)=>(r(),e(`div`,{"data-slot":`table-container`,class:n(o(s)(`relative w-full overflow-x-auto`,c.containerClass))},[a(`table`,{"data-slot":`table`,class:n(o(s)(`w-full caption-bottom text-sm`,c.class))},[i(t.$slots,`default`)],2)],2))}}),{__name:`UiTable`});export{u as a,d as i,p as n,c as o,f as r,m as t};
@@ -1 +0,0 @@
1
- import{D as e,P as t,Wt as n,Z as r,tt as i,wt as a}from"./BgvEQa6E.js";import{i as o,r as s}from"./Bv0odo9W.js";var c=s(`inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] transition-[color,box-shadow] overflow-hidden`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90`,secondary:`border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90`,destructive:`border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 dark:bg-destructive/60`,success:`border-transparent bg-success/15 text-success`,outline:`text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground`}},defaultVariants:{variant:`default`}}),l=Object.assign(t({__name:`Badge`,props:{variant:{},class:{}},setup(t){let s=t;return(t,l)=>(r(),e(`span`,{"data-slot":`badge`,class:n(a(o)(a(c)({variant:s.variant}),s.class))},[i(t.$slots,`default`)],2))}}),{__name:`UiBadge`});export{l as t};
@@ -1 +0,0 @@
1
- {"id":"63ad5f37-5b40-456d-8f53-69ff57b4903c","timestamp":1786122255629,"prerendered":[]}
@@ -1 +0,0 @@
1
- import{D as e,E as t,M as n,P as r,Wt as i,Z as a,_t as o,j as s,lt as c,qt as l,tt as u,wt as d}from"./BgvEQa6E.js";import{wt as f}from"./BgaLDD2o.js";import{i as p}from"./Bv0odo9W.js";var m=Object.assign(r({__name:`Tooltip`,props:{content:{},side:{default:`top`},class:{}},setup(r){let m=r,h=o(!1);return(r,o)=>(a(),e(`span`,{class:`relative inline-flex`,onMouseenter:o[0]||=e=>h.value=!0,onMouseleave:o[1]||=e=>h.value=!1,onFocusin:o[2]||=e=>h.value=!0,onFocusout:o[3]||=e=>h.value=!1},[u(r.$slots,`default`),n(f,{"enter-active-class":`transition-opacity duration-100`,"enter-from-class":`opacity-0`,"leave-active-class":`transition-opacity duration-75`,"leave-to-class":`opacity-0`},{default:c(()=>[d(h)&&(m.content||r.$slots.content)?(a(),e(`span`,{key:0,role:`tooltip`,class:i(d(p)(`bg-primary text-primary-foreground pointer-events-none absolute left-1/2 z-50 w-max max-w-xs -translate-x-1/2 rounded-md px-3 py-1.5 text-xs text-balance shadow-md`,m.side===`top`?`bottom-full mb-1.5`:`top-full mt-1.5`,m.class))},[u(r.$slots,`content`,{},()=>[s(l(m.content),1)])],2)):t(``,!0)]),_:3})],32))}}),{__name:`UiTooltip`});export{m as t};
@@ -1,2 +0,0 @@
1
- /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--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-tracking: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-outline-style:solid;--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;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:host,:root{--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-lg:32rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:1.33333;--text-sm:.875rem;--text-sm--line-height:1.42857;--text-base:1rem;--text-base--line-height:1.5;--text-lg:1.125rem;--text-lg--line-height:1.55556;--text-2xl:1.5rem;--text-2xl--line-height:1.33333;--text-3xl:1.875rem;--text-3xl--line-height:1.2;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--leading-relaxed:1.625;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:ui-monospace,"SF Mono","JetBrains Mono",Menlo,monospace}}@layer base{*,::backdrop,:after,:before{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}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans",Arial,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;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{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:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,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-day-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-second-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}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}::selection{background-color:var(--selection);color:var(--selection-foreground)}body{background-color:var(--background);color:var(--foreground);font-synthesis-weight:none;text-rendering:optimizelegibility}.tabular{font-variant-numeric:tabular-nums}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.top-0{top:0}.top-1\/2{top:50%}.top-full{top:100%}.right-3{right:calc(var(--spacing)*3)}.bottom-full{bottom:100%}.left-1\/2{left:50%}.z-30{z-index:30}.z-50{z-index:50}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:0}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:var(--spacing)}.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)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.-ml-2{margin-left:calc(var(--spacing)*-2)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing)*1.5)}.ml-auto{margin-left:auto}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.table-cell{display:table-cell}.table-row{display:table-row}.size-1\.5{width:calc(var(--spacing)*1.5);height:calc(var(--spacing)*1.5)}.size-2{width:calc(var(--spacing)*2);height:calc(var(--spacing)*2)}.size-2\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-14{height:calc(var(--spacing)*14)}.h-24{height:calc(var(--spacing)*24)}.h-32{height:calc(var(--spacing)*32)}.h-40{height:calc(var(--spacing)*40)}.h-70{height:calc(var(--spacing)*70)}.h-96{height:calc(var(--spacing)*96)}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-full{height:100%}.max-h-\[60vh\]{max-height:60vh}.max-h-none{max-height:none}.min-h-screen{min-height:100vh}.w-10{width:calc(var(--spacing)*10)}.w-16{width:calc(var(--spacing)*16)}.w-24{width:calc(var(--spacing)*24)}.w-32{width:calc(var(--spacing)*32)}.w-36{width:calc(var(--spacing)*36)}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.max-w-7xl{max-width:var(--container-7xl)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0}.min-w-5{min-width:calc(var(--spacing)*5)}.min-w-40{min-width:calc(var(--spacing)*40)}.min-w-44{min-width:calc(var(--spacing)*44)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-y-1\/2{translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:-50%}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.appearance-none{appearance:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-\[3px\]{gap:3px}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing)*1.5*var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing)*1.5*(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing)*2*var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing)*2*(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing)*3*var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing)*3*(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing)*4*var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing)*4*(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing)*5*var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing)*5*(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing)*6*var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing)*6*(1 - var(--tw-space-y-reverse)))}.gap-x-4{-moz-column-gap:calc(var(--spacing)*4);column-gap:calc(var(--spacing)*4)}.gap-y-1\.5{row-gap:calc(var(--spacing)*1.5)}.gap-y-2{row-gap:calc(var(--spacing)*2)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap}.overflow-hidden,.truncate{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[3px\]{border-radius:3px}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-input{border-color:var(--input)}.border-muted-foreground\/40{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.border-muted-foreground\/40{border-color:color-mix(in oklab,var(--muted-foreground) 40%,transparent)}}.border-transparent{border-color:#0000}.bg-accent{background-color:var(--accent)}.bg-background,.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/80{background-color:color-mix(in oklab,var(--background) 80%,transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-chart-1,.bg-chart-1\/25{background-color:var(--chart-1)}@supports (color:color-mix(in lab,red,red)){.bg-chart-1\/25{background-color:color-mix(in oklab,var(--chart-1) 25%,transparent)}}.bg-chart-1\/50{background-color:var(--chart-1)}@supports (color:color-mix(in lab,red,red)){.bg-chart-1\/50{background-color:color-mix(in oklab,var(--chart-1) 50%,transparent)}}.bg-chart-1\/75{background-color:var(--chart-1)}@supports (color:color-mix(in lab,red,red)){.bg-chart-1\/75{background-color:color-mix(in oklab,var(--chart-1) 75%,transparent)}}.bg-chart-2{background-color:var(--chart-2)}.bg-destructive{background-color:var(--destructive)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground{background-color:var(--muted-foreground)}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary) 20%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-success,.bg-success\/15{background-color:var(--success)}@supports (color:color-mix(in lab,red,red)){.bg-success\/15{background-color:color-mix(in oklab,var(--success) 15%,transparent)}}.bg-transparent{background-color:#0000}.p-0{padding:0}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-\[3px\]{padding:3px}.px-1{padding-inline:var(--spacing)}.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-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0{padding-block:0}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-5{padding-block:calc(var(--spacing)*5)}.py-6{padding-block:calc(var(--spacing)*6)}.py-16{padding-block:calc(var(--spacing)*16)}.pt-1\.5{padding-top:calc(var(--spacing)*1.5)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-5{padding-top:calc(var(--spacing)*5)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-\[12vh\]{padding-top:12vh}.pr-1{padding-right:var(--spacing)}.pr-4{padding-right:calc(var(--spacing)*4)}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-1{padding-bottom:var(--spacing)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-8{padding-bottom:calc(var(--spacing)*8)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-4{padding-left:calc(var(--spacing)*4)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SF Mono,JetBrains Mono,Menlo,monospace}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--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-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}.leading-3{--tw-leading:calc(var(--spacing)*3);line-height:calc(var(--spacing)*3)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.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)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-balance{text-wrap:balance}.whitespace-nowrap{white-space:nowrap}.text-accent-foreground{color:var(--accent-foreground)}.text-card-foreground{color:var(--card-foreground)}.text-chart-1{color:var(--chart-1)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-success{color:var(--success)}.text-white{color:var(--color-white)}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-lg,.shadow-md{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow-sm,.shadow-xs{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.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,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.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-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-100{--tw-duration:.1s;transition-duration:.1s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.backdrop\:bg-black\/60::backdrop{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.backdrop\:bg-black\/60::backdrop{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.backdrop\:backdrop-blur-sm::backdrop{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}@media (hover:hover){.hover\:bg-accent:hover,.hover\:bg-accent\/50:hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/50:hover{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring) 50%,transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--foreground)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px 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)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}@media (width>=40rem){.sm\:inline{display:inline}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:text-\[15px\]{font-size:15px}}@media (width>=48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (width>=64rem){.lg\:col-span-3{grid-column:span 3/span 3}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 60%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}@media (hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}@media (hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary) 90%,transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}.chart-surface{contain:layout paint}}:root{--radius:.625rem;--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(20.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--destructive-foreground:oklch(97% .01 17);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(70.8% 0 0);--surface:oklch(98% 0 0);--surface-foreground:var(--foreground);--selection:oklch(14.5% 0 0);--selection-foreground:oklch(100% 0 0);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--chart-6:oklch(62.7% .265 303.9);--chart-7:oklch(64.5% .246 16.439);--chart-8:oklch(69.6% .17 162.48);--success:oklch(59.6% .145 163.225);--success-foreground:oklch(98.5% 0 0)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92.2% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(37.1% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--destructive-foreground:oklch(58% .22 27);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.6% 0 0);--surface:oklch(20% 0 0);--surface-foreground:oklch(70.8% 0 0);--selection:oklch(92.2% 0 0);--selection-foreground:oklch(20.5% 0 0);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--chart-6:oklch(64.6% .222 41.116);--chart-7:oklch(60% .118 184.704);--chart-8:oklch(72.3% .15 60.63);--success:oklch(69.6% .17 162.48);--success-foreground:oklch(20.5% 0 0)}@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-tracking{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-outline-style{syntax:"*";inherits:false;initial-value:solid}@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}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}
@@ -1 +0,0 @@
1
- import{C as e,D as t,E as n,M as r,P as i,T as a,Z as o,et as s,j as c,lt as l,ot as u,qt as d,v as f,w as p,wt as m}from"./BgvEQa6E.js";import{n as h}from"./DCnkQFS0.js";import{n as ee,t as g}from"./BPhzhJvP.js";import{l as _,r as v}from"./DJbGqyvB.js";import{t as y}from"./BioUjjBz.js";import{n as b,t as x}from"./RlymLGHS.js";import{n as S,t as C}from"./CiWIPYVi.js";import{i as w,n as T,r as E,t as te}from"./M0pG6UQn.js";import{a as ne,c as D,l as re,n as O,o as k,s as A,t as j}from"./075nz0Lp.js";import{t as M}from"./Ctg1e1JV.js";import{t as N}from"./oT-x2NdZ.js";var P=g(`trending-up`,[[`path`,{d:`M16 7h6v6`,key:`box55l`}],[`path`,{d:`m22 7-8.5 8.5-5-5L2 17`,key:`1t1m79`}]]),F={class:`space-y-6`},I={class:`flex items-start justify-between gap-6`},L={class:`text-muted-foreground mt-1 text-sm`},R={class:`grid gap-4 sm:grid-cols-2 lg:grid-cols-4`},z={key:0,class:`text-muted-foreground text-xs`},B={class:`flex items-baseline justify-between gap-4 text-sm`},V={class:`font-medium`},H={class:`tabular text-muted-foreground`},U={class:`text-muted-foreground flex items-center gap-1.5 text-xs`},W={class:`text-foreground font-medium`},G=i({__name:`index`,setup(i){h({title:`Overview — nomnomtokens`});let{data:g,pending:G,refresh:K}=_(),{data:q}=v(),{frame:J}=y(),Y=e(()=>J.value?.today??{costUsd:g.value?.totals.today.costUsd??0,tokens:g.value?.totals.today.tokens??0,sessions:g.value?.totals.today.sessions??0,events:g.value?.totals.today.events??0});u(()=>J.value?.events,(e,t)=>{t!==void 0&&e!==t&&K()});let ie=e(()=>g.value?.sparkline.map(e=>e.costUsd)??[]),X=e(()=>(g.value?.limits??[]).reduce((e,t)=>e===null||t.usedPct>e.usedPct?t:e,null)),ae=e(()=>Z(X.value?.usedPct??0));function Z(e){return e<5?`hungry`:e<50?`content`:e<80?`full`:e<100?`stuffed`:`overstuffed`}let oe=e(()=>(q.value?.bounds.events??0)===0);return(e,i)=>{let u=x,h=b,_=S,v=C,y=te,K=w,J=ee,X=M,Z=E,se=N,Q=T,$=re;return o(),t(`div`,F,[m(oe)&&!m(G)?(o(),a(u,{key:0,title:`The model hasn't been fed yet`,description:`No spend recorded on this machine. Run a scan to read your Claude Code history, then this page fills in.`,command:`npx nomnomtokens scan`})):(o(),t(f,{key:1},[p(`div`,I,[p(`div`,null,[i[0]||=p(`h1`,{class:`text-2xl font-semibold tracking-tight`},`Eaten today`,-1),p(`p`,L,d(m(q)?.bounds.first?`History from ${(`formatDate`in e?e.formatDate:m(O))(m(q).bounds.first)}`:`Local history`),1)]),r(h,{mood:m(ae),size:56},null,8,[`mood`])]),p(`div`,R,[r(v,{label:`Today`,value:(`formatUsd`in e?e.formatUsd:m(A))(m(Y).costUsd),detail:`${(`formatCompact`in e?e.formatCompact:m(j))(m(Y).tokens)} tokens · ${m(Y).sessions} sessions`,loading:m(G)&&!m(g)},{default:l(()=>[r(_,{values:m(ie),class:`mt-3 h-7 w-full`},null,8,[`values`])]),_:1},8,[`value`,`detail`,`loading`]),r(v,{label:`This week`,value:(`formatUsd`in e?e.formatUsd:m(A))(m(g)?.totals.week.costUsd),detail:`${(`formatCompact`in e?e.formatCompact:m(j))(m(g)?.totals.week.tokens??0)} tokens`,loading:m(G)&&!m(g)},null,8,[`value`,`detail`,`loading`]),r(v,{label:`This month`,value:(`formatUsd`in e?e.formatUsd:m(A))(m(g)?.totals.month.costUsd),detail:`${m(g)?.totals.month.sessions??0} sessions`,loading:m(G)&&!m(g)},null,8,[`value`,`detail`,`loading`]),r(v,{label:`Cache hit rate`,hint:`Cache reads as a share of all fresh input. Reads cost a tenth of fresh input, so this is the cheapest number to move.`,value:(`formatRatio`in e?e.formatRatio:m(k))(m(g)?.efficiency.cacheHitRate),detail:m(g)?.efficiency.costPerKLines?`${(`formatUsd`in e?e.formatUsd:m(A))(m(g).efficiency.costPerKLines)} per 1k lines`:void 0,loading:m(G)&&!m(g)},null,8,[`value`,`detail`,`loading`])]),m(g)?.totals.range.unpricedEvents?(o(),t(`div`,z,d(m(g).totals.range.unpricedEvents)+` events in this range use a model with no known price and are excluded from cost. Token counts still include them. `,1)):n(``,!0),(m(g)?.limits.length??0)>0?(o(),a($,{key:1},{default:l(()=>[r(Z,null,{default:l(()=>[r(y,null,{default:l(()=>[...i[1]||=[c(`Limits`,-1)]]),_:1}),r(K,null,{default:l(()=>[...i[2]||=[c(`Projected from the burn rate within the current window.`,-1)]]),_:1}),r(X,null,{default:l(()=>[r(J,{to:`/limits`,variant:`ghost`,size:`sm`},{default:l(()=>[...i[3]||=[c(`History`,-1)]]),_:1})]),_:1})]),_:1}),r(Q,{class:`space-y-5`},{default:l(()=>[(o(!0),t(f,null,s(m(g).limits,n=>(o(),t(`div`,{key:`${n.provider}-${n.window}`,class:`space-y-2`},[p(`div`,B,[p(`span`,V,d(n.window)+` window`,1),p(`span`,H,d((`formatPct`in e?e.formatPct:m(ne))(n.usedPct,1)),1)]),r(se,{value:n.usedPct,"indicator-class":n.usedPct>=80?`bg-destructive`:`bg-primary`},null,8,[`value`,`indicator-class`]),p(`p`,U,[r(m(P),{class:`size-3`}),n.willExhaustBeforeReset?(o(),t(f,{key:0},[c(` At `+d(n.burnRatePctPerHour.toFixed(1))+`%/h you hit the cap `,1),p(`strong`,W,d((`formatWhen`in e?e.formatWhen:m(D))(n.exhaustsAt,m(g).now)),1),c(` — before it resets `+d((`formatWhen`in e?e.formatWhen:m(D))(n.resetsAt,m(g).now))+`. `,1)],64)):n.resetsAt?(o(),t(f,{key:1},[c(` Resets `+d((`formatWhen`in e?e.formatWhen:m(D))(n.resetsAt,m(g).now))+`. Not on track to hit the cap first. `,1)],64)):(o(),t(f,{key:2},[c(` Not enough history to project yet (`+d(n.samples)+` samples). `,1)],64))])]))),128))]),_:1})]),_:1})):(o(),a($,{key:2},{default:l(()=>[r(Z,null,{default:l(()=>[r(y,null,{default:l(()=>[...i[4]||=[c(`Limits`,-1)]]),_:1}),r(K,null,{default:l(()=>[...i[5]||=[c(` Subscription limits are only visible to the status line hook — they are not in the transcript. `,-1)]]),_:1})]),_:1}),r(Q,null,{default:l(()=>[...i[6]||=[p(`code`,{class:`bg-muted rounded-md px-2 py-1 font-mono text-xs`},`npx nomnomtokens init`,-1)]]),_:1})]),_:1}))],64))])}}});export{G as default};