usage-board 3.0.0 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/dist/index.mjs +1 -1
  2. package/dist/public/_nuxt/{y3weNNd-.js → B6C9KBQ4.js} +2 -2
  3. package/dist/public/_nuxt/Bv6agYS5.js +119 -0
  4. package/dist/public/_nuxt/BvRyOET7.js +1 -0
  5. package/dist/public/_nuxt/CMWftE4h.js +1 -0
  6. package/dist/public/_nuxt/{Be3rizqy.js → COIbUy5w.js} +1 -1
  7. package/dist/public/_nuxt/CXLmM1yO.js +25 -0
  8. package/dist/public/_nuxt/DFqWEFN4.js +1 -0
  9. package/dist/public/_nuxt/DUoLvn3A.js +6 -0
  10. package/dist/public/_nuxt/D_W11Quh.js +21 -0
  11. package/dist/public/_nuxt/DgKrPjze.js +4 -0
  12. package/dist/public/_nuxt/DkxY2YMp.js +1 -0
  13. package/dist/public/_nuxt/{7Dy4NLP8.js → DtbPvE6R.js} +24 -24
  14. package/dist/public/_nuxt/HiqUua3-.js +1 -0
  15. package/dist/public/_nuxt/builds/latest.json +1 -1
  16. package/dist/public/_nuxt/builds/meta/6f98f1cb-266c-475e-a249-dad346a55f24.json +1 -0
  17. package/dist/public/_nuxt/entry.vHfFzkyD.css +1 -0
  18. package/dist/public/_nuxt/error-404.CFBEg71j.css +1 -0
  19. package/dist/public/_nuxt/error-500.BqCnH31G.css +1 -0
  20. package/dist/public/_nuxt/uHQwCIHg.js +1 -0
  21. package/dist/server/chunks/_/error-500.mjs +2 -20
  22. package/dist/server/chunks/build/client.precomputed.mjs +1 -1
  23. package/dist/server/chunks/nitro/nitro.mjs +2303 -3614
  24. package/dist/server/chunks/routes/api/analysis/agent/session.json.mjs +21 -0
  25. package/dist/server/chunks/routes/api/analysis/agent/token.json.mjs +24 -0
  26. package/dist/server/chunks/routes/api/analysis/cache.json.mjs +24 -0
  27. package/dist/server/chunks/routes/api/analysis/hot-project.json.mjs +24 -0
  28. package/dist/server/chunks/routes/api/analysis/model.json.mjs +24 -0
  29. package/dist/server/chunks/routes/api/analysis/overview-cards.json.mjs +24 -0
  30. package/dist/server/chunks/routes/api/analysis/session.json.mjs +21 -0
  31. package/dist/server/chunks/routes/api/analysis/token/daily.json.mjs +21 -0
  32. package/dist/server/chunks/routes/api/analysis/token.json.mjs +24 -0
  33. package/dist/server/chunks/routes/api/payload.json.mjs +9 -10
  34. package/dist/server/chunks/routes/api/projects/_project/modules.get.mjs +9 -10
  35. package/dist/server/chunks/routes/api/projects/catalog.get.mjs +9 -10
  36. package/dist/server/chunks/routes/renderer.mjs +17 -39183
  37. package/dist/server/chunks/routes/ws.mjs +9 -10
  38. package/dist/server/index.mjs +9 -10
  39. package/dist/server/node_modules/@babel/parser/lib/index.js +14582 -0
  40. package/dist/server/node_modules/@babel/parser/package.json +50 -0
  41. package/dist/server/node_modules/@iconify/utils/lib/colors/index.js +292 -0
  42. package/dist/server/node_modules/@iconify/utils/lib/colors/keywords.js +702 -0
  43. package/dist/server/node_modules/@iconify/utils/lib/css/common.js +76 -0
  44. package/dist/server/node_modules/@iconify/utils/lib/css/format.js +40 -0
  45. package/dist/server/node_modules/@iconify/utils/lib/css/icon.js +52 -0
  46. package/dist/server/node_modules/@iconify/utils/lib/css/icons.js +133 -0
  47. package/dist/server/node_modules/@iconify/utils/lib/customisations/bool.js +20 -0
  48. package/dist/server/node_modules/@iconify/utils/lib/customisations/defaults.js +15 -0
  49. package/dist/server/node_modules/@iconify/utils/lib/customisations/flip.js +18 -0
  50. package/dist/server/node_modules/@iconify/utils/lib/customisations/merge.js +18 -0
  51. package/dist/server/node_modules/@iconify/utils/lib/customisations/rotate.js +31 -0
  52. package/dist/server/node_modules/@iconify/utils/lib/emoji/cleanup.js +80 -0
  53. package/dist/server/node_modules/@iconify/utils/lib/emoji/convert.js +102 -0
  54. package/dist/server/node_modules/@iconify/utils/lib/emoji/data.js +29 -0
  55. package/dist/server/node_modules/@iconify/utils/lib/emoji/format.js +60 -0
  56. package/dist/server/node_modules/@iconify/utils/lib/emoji/parse.js +50 -0
  57. package/dist/server/node_modules/@iconify/utils/lib/emoji/regex/base.js +204 -0
  58. package/dist/server/node_modules/@iconify/utils/lib/emoji/regex/create.js +35 -0
  59. package/dist/server/node_modules/@iconify/utils/lib/emoji/regex/numbers.js +134 -0
  60. package/dist/server/node_modules/@iconify/utils/lib/emoji/regex/similar.js +167 -0
  61. package/dist/server/node_modules/@iconify/utils/lib/emoji/regex/tree.js +81 -0
  62. package/dist/server/node_modules/@iconify/utils/lib/emoji/replace/find.js +94 -0
  63. package/dist/server/node_modules/@iconify/utils/lib/emoji/replace/replace.js +28 -0
  64. package/dist/server/node_modules/@iconify/utils/lib/emoji/test/components.js +78 -0
  65. package/dist/server/node_modules/@iconify/utils/lib/emoji/test/missing.js +68 -0
  66. package/dist/server/node_modules/@iconify/utils/lib/emoji/test/name.js +47 -0
  67. package/dist/server/node_modules/@iconify/utils/lib/emoji/test/parse.js +105 -0
  68. package/dist/server/node_modules/@iconify/utils/lib/emoji/test/similar.js +38 -0
  69. package/dist/server/node_modules/@iconify/utils/lib/emoji/test/tree.js +94 -0
  70. package/dist/server/node_modules/@iconify/utils/lib/emoji/test/variations.js +64 -0
  71. package/dist/server/node_modules/@iconify/utils/lib/icon/defaults.js +26 -0
  72. package/dist/server/node_modules/@iconify/utils/lib/icon/merge.js +18 -0
  73. package/dist/server/node_modules/@iconify/utils/lib/icon/name.js +58 -0
  74. package/dist/server/node_modules/@iconify/utils/lib/icon/square.js +34 -0
  75. package/dist/server/node_modules/@iconify/utils/lib/icon/transformations.js +13 -0
  76. package/dist/server/node_modules/@iconify/utils/lib/icon-set/convert-info.js +126 -0
  77. package/dist/server/node_modules/@iconify/utils/lib/icon-set/expand.js +21 -0
  78. package/dist/server/node_modules/@iconify/utils/lib/icon-set/get-icon.js +27 -0
  79. package/dist/server/node_modules/@iconify/utils/lib/icon-set/get-icons.js +38 -0
  80. package/dist/server/node_modules/@iconify/utils/lib/icon-set/minify.js +93 -0
  81. package/dist/server/node_modules/@iconify/utils/lib/icon-set/parse.js +48 -0
  82. package/dist/server/node_modules/@iconify/utils/lib/icon-set/tree.js +24 -0
  83. package/dist/server/node_modules/@iconify/utils/lib/icon-set/validate-basic.js +44 -0
  84. package/dist/server/node_modules/@iconify/utils/lib/icon-set/validate.js +125 -0
  85. package/dist/server/node_modules/@iconify/utils/lib/index.js +53 -0
  86. package/dist/server/node_modules/@iconify/utils/lib/loader/custom.js +32 -0
  87. package/dist/server/node_modules/@iconify/utils/lib/loader/loader.js +28 -0
  88. package/dist/server/node_modules/@iconify/utils/lib/loader/modern.js +42 -0
  89. package/dist/server/node_modules/@iconify/utils/lib/loader/utils.js +63 -0
  90. package/dist/server/node_modules/@iconify/utils/lib/misc/objects.js +27 -0
  91. package/dist/server/node_modules/@iconify/utils/lib/misc/strings.js +27 -0
  92. package/dist/server/node_modules/@iconify/utils/lib/misc/title.js +10 -0
  93. package/dist/server/node_modules/@iconify/utils/lib/svg/build.js +115 -0
  94. package/dist/server/node_modules/@iconify/utils/lib/svg/defs.js +32 -0
  95. package/dist/server/node_modules/@iconify/utils/lib/svg/encode-svg-for-css.js +15 -0
  96. package/dist/server/node_modules/@iconify/utils/lib/svg/html.js +10 -0
  97. package/dist/server/node_modules/@iconify/utils/lib/svg/id.js +42 -0
  98. package/dist/server/node_modules/@iconify/utils/lib/svg/inner-html.js +23 -0
  99. package/dist/server/node_modules/@iconify/utils/lib/svg/parse.js +69 -0
  100. package/dist/server/node_modules/@iconify/utils/lib/svg/pretty.js +55 -0
  101. package/dist/server/node_modules/@iconify/utils/lib/svg/size.js +28 -0
  102. package/dist/server/node_modules/@iconify/utils/lib/svg/trim.js +8 -0
  103. package/dist/server/node_modules/@iconify/utils/lib/svg/url.js +23 -0
  104. package/dist/server/node_modules/@iconify/utils/lib/svg/viewbox.js +9 -0
  105. package/dist/server/node_modules/@iconify/utils/package.json +118 -0
  106. package/dist/server/node_modules/@lonewolfyx/utils/dist/index.mjs +63 -0
  107. package/dist/server/node_modules/@lonewolfyx/utils/package.json +64 -0
  108. package/dist/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6763 -0
  109. package/dist/server/node_modules/@vue/compiler-core/package.json +58 -0
  110. package/dist/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +689 -0
  111. package/dist/server/node_modules/@vue/compiler-dom/package.json +57 -0
  112. package/dist/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1413 -0
  113. package/dist/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  114. package/dist/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1877 -0
  115. package/dist/server/node_modules/@vue/reactivity/package.json +55 -0
  116. package/dist/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6856 -0
  117. package/dist/server/node_modules/@vue/runtime-core/package.json +52 -0
  118. package/dist/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1796 -0
  119. package/dist/server/node_modules/@vue/runtime-dom/package.json +60 -0
  120. package/dist/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +883 -0
  121. package/dist/server/node_modules/@vue/server-renderer/package.json +55 -0
  122. package/dist/server/{chunks/_/shared.cjs.prod.mjs → node_modules/@vue/shared/dist/shared.cjs.prod.js} +76 -81
  123. package/dist/server/node_modules/@vue/shared/package.json +47 -0
  124. package/dist/server/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  125. package/dist/server/node_modules/better-sqlite3/lib/database.js +90 -0
  126. package/dist/server/node_modules/better-sqlite3/lib/index.js +3 -0
  127. package/dist/server/node_modules/better-sqlite3/lib/methods/aggregate.js +43 -0
  128. package/dist/server/node_modules/better-sqlite3/lib/methods/backup.js +67 -0
  129. package/dist/server/node_modules/better-sqlite3/lib/methods/function.js +31 -0
  130. package/dist/server/node_modules/better-sqlite3/lib/methods/inspect.js +7 -0
  131. package/dist/server/node_modules/better-sqlite3/lib/methods/pragma.js +12 -0
  132. package/dist/server/node_modules/better-sqlite3/lib/methods/serialize.js +16 -0
  133. package/dist/server/node_modules/better-sqlite3/lib/methods/table.js +189 -0
  134. package/dist/server/node_modules/better-sqlite3/lib/methods/transaction.js +78 -0
  135. package/dist/server/node_modules/better-sqlite3/lib/methods/wrappers.js +54 -0
  136. package/dist/server/node_modules/better-sqlite3/lib/sqlite-error.js +20 -0
  137. package/dist/server/node_modules/better-sqlite3/lib/util.js +12 -0
  138. package/dist/server/node_modules/better-sqlite3/package.json +59 -0
  139. package/dist/server/node_modules/bindings/bindings.js +221 -0
  140. package/dist/server/node_modules/bindings/package.json +28 -0
  141. package/dist/server/node_modules/chokidar/handler.js +632 -0
  142. package/dist/server/node_modules/chokidar/index.js +822 -0
  143. package/dist/server/node_modules/chokidar/package.json +63 -0
  144. package/dist/server/{chunks/_ → node_modules/consola/dist/chunks}/prompt.mjs +2 -1
  145. package/dist/server/node_modules/consola/dist/core.mjs +512 -0
  146. package/dist/server/node_modules/consola/dist/index.mjs +651 -0
  147. package/dist/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
  148. package/dist/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
  149. package/dist/server/node_modules/consola/package.json +136 -0
  150. package/dist/server/node_modules/devalue/index.js +4 -0
  151. package/dist/server/node_modules/devalue/package.json +40 -0
  152. package/dist/server/node_modules/devalue/src/base64.js +60 -0
  153. package/dist/server/node_modules/devalue/src/constants.js +7 -0
  154. package/dist/server/node_modules/devalue/src/parse.js +268 -0
  155. package/dist/server/node_modules/devalue/src/stringify.js +335 -0
  156. package/dist/server/node_modules/devalue/src/uneval.js +552 -0
  157. package/dist/server/node_modules/devalue/src/utils.js +144 -0
  158. package/dist/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  159. package/dist/server/node_modules/entities/dist/commonjs/decode.js +568 -0
  160. package/dist/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  161. package/dist/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  162. package/dist/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  163. package/dist/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  164. package/dist/server/node_modules/entities/dist/commonjs/package.json +3 -0
  165. package/dist/server/node_modules/entities/package.json +120 -0
  166. package/dist/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  167. package/dist/server/node_modules/estree-walker/package.json +37 -0
  168. package/dist/server/node_modules/file-uri-to-path/index.js +66 -0
  169. package/dist/server/node_modules/file-uri-to-path/package.json +32 -0
  170. package/dist/server/node_modules/glob/dist/esm/index.min.js +4 -0
  171. package/dist/server/node_modules/glob/dist/esm/package.json +3 -0
  172. package/dist/server/node_modules/glob/package.json +98 -0
  173. package/dist/server/node_modules/hookable/dist/index.mjs +257 -0
  174. package/dist/server/node_modules/hookable/package.json +53 -0
  175. package/dist/server/node_modules/md5-typescript/dist/bundles/bundle.umd.js +208 -0
  176. package/dist/server/node_modules/md5-typescript/package.json +31 -0
  177. package/dist/server/node_modules/path-type/index.js +42 -0
  178. package/dist/server/node_modules/path-type/package.json +51 -0
  179. package/dist/server/node_modules/readdirp/index.js +272 -0
  180. package/dist/server/node_modules/readdirp/package.json +66 -0
  181. package/dist/server/node_modules/source-map-js/lib/array-set.js +121 -0
  182. package/dist/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  183. package/dist/server/node_modules/source-map-js/lib/base64.js +67 -0
  184. package/dist/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  185. package/dist/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  186. package/dist/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
  187. package/dist/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  188. package/dist/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  189. package/dist/server/node_modules/source-map-js/lib/source-node.js +413 -0
  190. package/dist/server/node_modules/source-map-js/lib/util.js +594 -0
  191. package/dist/server/node_modules/source-map-js/package.json +71 -0
  192. package/dist/server/node_modules/source-map-js/source-map.js +8 -0
  193. package/dist/server/node_modules/ufo/dist/index.mjs +645 -0
  194. package/dist/server/node_modules/ufo/package.json +48 -0
  195. package/dist/server/node_modules/unhead/dist/parser.mjs +508 -0
  196. package/dist/server/node_modules/unhead/dist/plugins.mjs +101 -0
  197. package/dist/server/node_modules/unhead/dist/server.mjs +180 -0
  198. package/dist/server/node_modules/unhead/dist/shared/unhead.B5FWS6X0.mjs +207 -0
  199. package/dist/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +43 -0
  200. package/dist/server/node_modules/unhead/dist/shared/unhead.CbpEuj3y.mjs +71 -0
  201. package/dist/server/node_modules/unhead/dist/shared/unhead.Ct24BOby.mjs +182 -0
  202. package/dist/server/node_modules/unhead/dist/shared/unhead.D4vSFytZ.mjs +236 -0
  203. package/dist/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
  204. package/dist/server/node_modules/unhead/dist/shared/unhead.TxTMM7cM.mjs +166 -0
  205. package/dist/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
  206. package/dist/server/node_modules/unhead/dist/utils.mjs +5 -0
  207. package/dist/server/node_modules/unhead/package.json +105 -0
  208. package/dist/server/node_modules/vue/dist/vue.cjs.js +80 -0
  209. package/dist/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  210. package/dist/server/node_modules/vue/index.js +7 -0
  211. package/dist/server/node_modules/vue/index.mjs +1 -0
  212. package/dist/server/node_modules/vue/package.json +112 -0
  213. package/dist/server/node_modules/vue/server-renderer/index.mjs +1 -0
  214. package/dist/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +301 -0
  215. package/dist/server/node_modules/vue-bundle-renderer/package.json +55 -0
  216. package/dist/server/package.json +37 -0
  217. package/package.json +3 -1
  218. package/dist/public/_nuxt/B-VlGWDb.js +0 -21
  219. package/dist/public/_nuxt/C0azgqnZ.js +0 -1
  220. package/dist/public/_nuxt/CMNdiQCa.js +0 -1
  221. package/dist/public/_nuxt/CPuXQJE_.js +0 -1
  222. package/dist/public/_nuxt/DenksPSi.js +0 -119
  223. package/dist/public/_nuxt/Dkya5WaL.js +0 -9
  224. package/dist/public/_nuxt/HN9OZyaQ.js +0 -25
  225. package/dist/public/_nuxt/JtK-nXxy.js +0 -1
  226. package/dist/public/_nuxt/builds/meta/37e8bb21-a086-45bf-93dc-47eeeada7299.json +0 -1
  227. package/dist/public/_nuxt/entry.r-q4oQC0.css +0 -1
  228. package/dist/public/_nuxt/error-404.B0EXnOcv.css +0 -1
  229. package/dist/public/_nuxt/error-500.CnSNZoEG.css +0 -1
@@ -0,0 +1,25 @@
1
+ import{K as se,_ as ve,S as be,C as ke,f as ce,z as xe,A as _e,j as we,g as $,k as de,m as H}from"./DtbPvE6R.js";import{y as re,Z as Te,o as g,A as K,w as Q,a as s,b as Y,C as u,G as O,c as k,P as L,t as p,H as I,I as E,Y as Me,g as l,a3 as oe,V as ae,ag as Ce,h as me}from"./DgKrPjze.js";import{_ as $e}from"./DUoLvn3A.js";const De={key:0,class:"pointer-events-none absolute inset-0 z-10"},Se={class:"mt-4 flex flex-wrap items-center justify-center gap-3 text-xs text-muted-foreground"},Ue={class:"font-medium text-foreground tabular-nums"},je=288,Pe=re({name:"StatisticalAnalysisModelUsagePanel",__name:"ModelUsagePanel",props:{monthlyItems:{},year:{}},setup(o){const n=o,h=["#2563eb","#f97316","#0891b2","#8b5cf6","#059669","#f43f5e"],m={bottom:32,left:56,right:12,top:8},_=[0,void 0],D=Me("chartRoot"),{width:B}=Te(D),S=oe(null),f=oe(null),U=l(()=>n.year??he(n.monthlyItems)??new Date().getFullYear()),v=l(()=>Array.from({length:12},(e,i)=>{const c=`${i+1}`.padStart(2,"0");return`${U.value}-${c}`})),z=l(()=>[0,Math.max(v.value.length-1,0)]),y=l(()=>v.value.map((e,i)=>i)),F=l(()=>n.monthlyItems.filter(e=>e.month.startsWith(`${U.value}-`))),Z=l(()=>Array.from(new Set(F.value.map(e=>e.model)))),N=l(()=>v.value.map((e,i)=>{const c=Object.fromEntries(Z.value.map(d=>[d,F.value.find(b=>b.month===e&&b.model===d)?.tokenTotal??0]));return{month:e,monthIndex:i,tokensByModel:c,totalTokens:Object.values(c).reduce((d,b)=>d+b,0)}})),C=l(()=>Z.value.map((e,i)=>{const c=te(i),d=N.value.reduce((b,X)=>b+(X.tokensByModel[e]??0),0);return{color:c,model:e,totalLabel:$(d),totalTokens:d}}).sort((e,i)=>i.totalTokens-e.totalTokens)),G=l(()=>C.value.map(e=>i=>i.tokensByModel[e.model]??0)),J=l(()=>Object.fromEntries(C.value.map(e=>[e.model,{color:e.color,label:e.model}]))),ee=l(()=>C.value.map(e=>`
2
+ <linearGradient id="${ie(e.model)}" x1="0" y1="0" x2="0" y2="1">
3
+ <stop offset="0%" stop-color="${e.color}" stop-opacity="0.45" />
4
+ <stop offset="100%" stop-color="${e.color}" stop-opacity="0.08" />
5
+ </linearGradient>
6
+ `).join("")),V=l(()=>N.value.length>0&&C.value.length>0),A=l(()=>m.left),j=l(()=>m.top),P=l(()=>Math.max(B.value-m.left-m.right,0)),R=l(()=>Math.max(je-m.top-m.bottom,0)),q=l(()=>j.value+R.value),t=l(()=>Math.max(...N.value.map(e=>e.totalTokens),0)),r=l(()=>{if(S.value===null||f.value===null)return null;const e=N.value[S.value];if(!e||P.value<=0||R.value<=0)return null;const i=v.value.length<=1?0:S.value/(v.value.length-1),c=A.value+i*P.value,d=de(f.value,j.value,q.value),X=(R.value<=0?0:1-(d-j.value)/R.value)*t.value;return{x:c,xLabel:pe(e.month),y:d,yLabel:$(X)}});function x(e){return e.monthIndex}function a(e,i){const c=C.value[i];return c?`url(#${ie(c.model)})`:te(0)}function W(e,i){return C.value[i]?.color??te(0)}function T(e,i){return C.value[i]?.color??te(0)}function M(e){const i=C.value.map(c=>({...c,tokenTotal:e.tokensByModel[c.model]??0})).sort((c,d)=>d.tokenTotal-c.tokenTotal);return`
7
+ <div class="grid min-w-48 gap-2 rounded-md border bg-background px-3 py-2 text-xs shadow-lg">
8
+ <div class="font-medium text-foreground">${ne(e.month)} ${e.month.slice(0,4)}</div>
9
+ <div class="grid gap-1 text-muted-foreground">
10
+ ${i.map(c=>`
11
+ <div class="flex items-center justify-between gap-4">
12
+ <span class="flex items-center gap-2">
13
+ <span class="size-2 rounded-sm" style="background-color: ${c.color}"></span>
14
+ ${we(c.model)}
15
+ </span>
16
+ <span class="font-mono font-medium text-foreground">${$(c.tokenTotal)}</span>
17
+ </div>
18
+ `).join("")}
19
+ </div>
20
+ <div class="flex justify-between gap-4 border-t pt-2 text-muted-foreground">
21
+ <span>Total</span>
22
+ <span class="font-mono font-semibold text-foreground">${$(e.totalTokens)}</span>
23
+ </div>
24
+ </div>
25
+ `}function ge(e){if(e instanceof Date)return"";const i=v.value[e];return i?ne(i):""}function fe(e){return e instanceof Date?"":$(e)}function ne(e){const[i,c]=e.split("-"),d=new Date(Number(i),Number(c)-1,1);return new Intl.DateTimeFormat("en-US",{month:"short"}).format(d)}function pe(e){return`${ne(e)} ${e.slice(0,4)}`}function ye(e){const i=D.value?.getBoundingClientRect();if(!i)return;const c=e.clientX-i.left,d=e.clientY-i.top,b=A.value+P.value;if(c<A.value||c>b||d<j.value||d>q.value||P.value<=0||!V.value||v.value.length===0){ue();return}const X=de((c-A.value)/Math.max(P.value,1),0,1);S.value=v.value.length<=1?0:Math.round(X*(v.value.length-1)),f.value=d}function ue(){S.value=null,f.value=null}function he(e){const c=[...e].sort((d,b)=>b.month.localeCompare(d.month))[0]?.month?.split("-")[0];return c?Number(c):null}function ie(e){return`model-usage-${e.replace(/[^a-z0-9]+/gi,"-").toLowerCase()}`}function te(e){return h[e%h.length]??"#2563eb"}return(e,i)=>{const c=ve,d=se;return g(),K(d,{description:"Monthly token trends by model",icon:"solar:cpu-line-duotone",title:"Model Usage"},{default:Q(()=>[s("div",{ref_key:"chartRoot",ref:D,class:"relative",onPointerleave:ue,onPointermove:ye},[Y(c,{class:"h-72 w-full",config:u(J)},{default:Q(()=>[Y(u(be),{"auto-margin":!1,data:u(N),height:288,margin:m,"svg-defs":u(ee),"x-domain":u(z),"y-domain":_},{default:Q(()=>[Y(u(ke),{color:a,line:!0,"line-color":W,"line-width":2.5,opacity:.82,x,y:u(G)},null,8,["y"]),Y(u(ce),{"grid-line":!1,"tick-format":ge,"tick-values":u(y),type:"x"},null,8,["tick-values"]),Y(u(ce),{"num-ticks":4,"tick-format":fe,type:"y"}),u(V)?(g(),K(u(xe),{key:0})):O("",!0),u(V)?(g(),K(u(_e),{key:1,color:T,template:M,x,"y-stacked":u(G)},null,8,["y-stacked"])):O("",!0)]),_:1},8,["data","svg-defs","x-domain"])]),_:1},8,["config"]),u(r)?(g(),k("div",De,[s("div",{class:"absolute border-l border-dashed border-border/80",style:L({height:`${u(R)}px`,left:`${u(r).x}px`,top:`${u(j)}px`})},null,4),s("div",{class:"absolute border-t border-dashed border-border/80",style:L({left:`${u(A)}px`,top:`${u(r).y}px`,width:`${u(P)}px`})},null,4),s("div",{class:"absolute rounded-sm bg-foreground px-2 py-1 text-[11px] font-medium text-background shadow-sm",style:L({left:`${u(r).x}px`,top:`${u(q)+6}px`,transform:"translateX(-50%)"})},p(u(r).xLabel),5),s("div",{class:"absolute rounded-sm bg-foreground px-2 py-1 text-[11px] font-medium text-background shadow-sm",style:L({left:`${Math.max(u(A)-8,0)}px`,top:`${u(r).y}px`,transform:"translate(-100%, -50%)"})},p(u(r).yLabel),5)])):O("",!0)],544),s("div",Se,[(g(!0),k(I,null,E(u(C),b=>(g(),k("div",{key:b.model,class:"flex items-center gap-2"},[s("span",{class:"size-2.5 rounded-sm",style:L({backgroundColor:b.color})},null,4),s("span",null,p(b.model),1),s("span",Ue,p(b.totalLabel),1)]))),128))])]),_:1})}}}),yt=Object.assign(Pe,{__name:"StatisticalAnalysisModelUsagePanel"}),Re={class:"space-y-3"},Ae={class:"flex flex-col flex-1"},Le={class:"truncate text-sm font-medium tracking-tight"},Be={class:"mt-1 truncate text-xs text-muted-foreground"},Ne={class:"text-right"},Ie={class:"text-xs font-medium tracking-tight tabular-nums"},Ee={class:"mt-1 flex items-center justify-end gap-1"},ze=re({name:"StatisticalAnalysisProjectUsagePanel",__name:"ProjectUsagePanel",props:{items:{}},setup(o){const n=o,h=[{trend:"+12.4%",trendTone:"up"},{trend:"-8.2%",trendTone:"down"},{trend:"+22.1%",trendTone:"up"},{trend:"+15.8%",trendTone:"up"},{trend:"-3.4%",trendTone:"down"},{trend:"+9.6%",trendTone:"up"},{trend:"-5.1%",trendTone:"down"},{trend:"+4.7%",trendTone:"up"}],m=l(()=>n.items.slice(0,6).map((f,U)=>{const v=h[U]??{trend:"+0.0%",trendTone:"up"};return{...f,shortName:S(f.label),trend:v.trend,trendTone:v.trendTone}}));function _(f){return f==="down"?"lucide:trending-down":"lucide:trending-up"}function D(f){return f==="down"?"size-3 text-red-500":"size-3 text-emerald-600 dark:text-emerald-400"}function B(f){return f==="down"?"text-sm font-medium text-red-500 tabular-nums":"text-sm font-medium text-emerald-600 dark:text-emerald-400 tabular-nums"}function S(f){return f.split(/[-_\s]+/).filter(Boolean).slice(0,2).map(U=>U[0]?.toUpperCase()??"").join("")}return(f,U)=>{const v=$e,z=se;return g(),K(z,{description:"Best performers by spend",icon:"lucide:folder-git-2",title:"Top Projects"},{default:Q(()=>[s("div",Re,[(g(!0),k(I,null,E(u(m),y=>(g(),k("div",{key:y.repository,class:"flex justify-between items-center gap-3 rounded-md transition-colors"},[s("div",Ae,[s("p",Le,p(y.label),1),s("p",Be,p(y.detail),1)]),s("div",Ne,[s("p",Ie,p(y.value),1),s("div",Ee,[Y(v,{class:ae(D(y.trendTone)),mode:"svg",name:_(y.trendTone)},null,8,["class","name"]),s("span",{class:ae(B(y.trendTone))},p(y.trend),3)])])]))),128))])]),_:1})}}}),ht=Object.assign(ze,{__name:"StatisticalAnalysisProjectUsagePanel"}),He={class:"mb-4 grid grid-cols-1 gap-3 sm:grid-cols-3"},Ye={class:"text-xs text-muted-foreground"},Oe={class:"mt-1 text-lg font-semibold tabular-nums"},Fe={class:"border-b pb-4"},Ge=["aria-label","tabindex"],Ve={class:"sr-only"},qe={key:0,class:"pointer-events-none absolute bottom-full left-1/2 z-30 mb-2 hidden min-w-40 -translate-x-1/2 gap-1 rounded-md border bg-popover px-2.5 py-1.5 text-xs text-popover-foreground shadow-md group-hover:grid group-focus-visible:grid",role:"tooltip"},We={class:"font-medium"},Xe={key:0,class:"flex items-center justify-between gap-4 text-muted-foreground"},Ke={class:"font-mono font-medium text-foreground"},Qe={class:"flex items-center justify-between gap-4 text-muted-foreground"},Ze={class:"font-mono font-medium text-foreground"},Je={key:1,class:"flex items-center justify-between gap-4 text-muted-foreground"},et={class:"font-mono font-medium text-foreground"},tt={class:"mt-4 flex items-center justify-between gap-4"},ot={class:"text-xs text-muted-foreground"},at={class:"flex items-center gap-1 text-xs text-muted-foreground"},nt={class:"mt-4 grid grid-cols-1 gap-3 sm:grid-cols-3"},st={class:"text-xs text-muted-foreground"},rt={class:"mt-1 flex items-center justify-between gap-2"},lt={class:"text-sm font-semibold"},ut={class:"text-xs text-muted-foreground"},it=re({name:"UsageHeatmapPanel",__name:"UsageHeatmapPanel",props:{heatMetric:{default:"tokens"},items:{},title:{}},setup(o){const n=o,h=["bg-zinc-100 dark:bg-zinc-800/80","bg-emerald-50 dark:bg-emerald-950/70","bg-emerald-100 dark:bg-emerald-900/70","bg-teal-100 dark:bg-teal-900/75","bg-teal-200 dark:bg-teal-800/80","bg-cyan-200 dark:bg-cyan-800/85","bg-cyan-300 dark:bg-cyan-700/90","bg-sky-300 dark:bg-sky-600/90","bg-sky-400 dark:bg-sky-500/95","bg-blue-500 dark:bg-blue-400"],m=[...h],_=[{key:"sun",label:"S",row:"1"},{key:"mon",label:"M",row:"2"},{key:"tue",label:"T",row:"3"},{key:"wed",label:"W",row:"4"},{key:"thu",label:"T",row:"5"},{key:"fri",label:"F",row:"6"},{key:"sat",label:"S",row:"7"}],D=l(()=>j(new Date)),B=l(()=>{const t=j(D.value);return t.setDate(t.getDate()-364),t}),S=l(()=>`${R(B.value)} - ${R(D.value)}`),f=l(()=>n.heatMetric==="cost"?"spend":"tokens"),U=l(()=>`${S.value} ${f.value} heatmap. Darker cells mean higher daily ${f.value}.`),v=l(()=>`Colored by daily ${f.value}`),z=l(()=>{const t=new Map(n.items.map(r=>[P(A(r.date)),r]));return Array.from({length:365},(r,x)=>{const a=j(B.value);return a.setDate(a.getDate()+x),{date:a,usage:t.get(P(a))}})}),y=l(()=>{const t=Math.max(...z.value.map(r=>n.heatMetric==="cost"?r.usage?.costUSD??0:r.usage?.totalTokens??0));return z.value.map(r=>{const x=r.usage?.costUSD??0,a=r.usage?.totalTokens??0,W=n.heatMetric==="cost"?x:a;return{colorClass:h[q(W,t)],costLabel:H(x),costUSD:x,date:R(r.date),hasUsage:!!r.usage,tokenLabel:$(a),totalTokens:a}})}),F=l(()=>{const t=B.value.getDay(),r=(7-(t+y.value.length)%7)%7,x=Array.from({length:t},(T,M)=>({column:String(Math.floor(M/7)+2),colorClass:"bg-transparent",costLabel:"",date:"",isBlank:!0,key:`blank-${M}`,row:String(M%7+1),title:"No date",tokenLabel:""})),a=y.value.map((T,M)=>({...T,column:String(Math.floor((t+M)/7)+2),isBlank:!1,key:T.date,row:String((t+M)%7+1),title:n.heatMetric==="cost"?`${T.date}: ${H(T.costUSD)} / ${$(T.totalTokens)} tokens`:`${T.date}: ${$(T.totalTokens)} tokens / ${H(T.costUSD)}`})),W=Array.from({length:r},(T,M)=>({column:String(Math.floor((t+y.value.length+M)/7)+2),colorClass:"bg-transparent",costLabel:"",date:"",isBlank:!0,key:`trailing-blank-${M}`,row:String((t+y.value.length+M)%7+1),title:"No date",tokenLabel:""}));return[...x,...a,...W]}),Z=l(()=>Math.ceil(F.value.length/7)),N=l(()=>({gridTemplateColumns:`max-content repeat(${Z.value}, minmax(0, 1fr))`,gridTemplateRows:"repeat(7, minmax(0, 1fr))"})),C=l(()=>y.value.filter(t=>t.hasUsage).slice(-3)),G=l(()=>y.value.filter(t=>t.hasUsage).length),J=l(()=>H(y.value.reduce((t,r)=>t+r.costUSD,0))),ee=l(()=>$(y.value.reduce((t,r)=>t+r.totalTokens,0))),V=l(()=>n.heatMetric==="cost"?[{key:"year-cost",label:"Year Spend",value:J.value},{key:"year-tokens",label:"Year Tokens",value:ee.value},{key:"active-days",label:"Active Days",value:String(G.value)}]:[{key:"year-tokens",label:"Year Tokens",value:ee.value},{key:"year-cost",label:"Year Spend",value:J.value},{key:"active-days",label:"Active Days",value:String(G.value)}]);function A(t){return new Date(t)}function j(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())}function P(t){const r=t.getFullYear(),x=`${t.getMonth()+1}`.padStart(2,"0"),a=`${t.getDate()}`.padStart(2,"0");return`${r}-${x}-${a}`}function R(t){return new Intl.DateTimeFormat("en-US",{day:"2-digit",month:"short",year:"numeric"}).format(t)}function q(t,r){return t<=0||r<=0?0:Math.min(9,Math.max(1,Math.ceil(t/r*9)))}return(t,r)=>{const x=se;return g(),K(x,{description:U.value,icon:"lucide:calendar-days",title:n.title},{default:Q(()=>[s("div",He,[(g(!0),k(I,null,E(V.value,a=>(g(),k("div",{key:a.key,class:"rounded-md border px-3 py-2"},[s("p",Ye,p(a.label),1),s("p",Oe,p(a.value),1)]))),128))]),s("div",Fe,[s("div",{class:"grid w-full gap-1",style:L(N.value)},[(g(),k(I,null,E(_,a=>s("span",{key:a.key,class:"flex items-center justify-end pr-1 text-[10px] text-muted-foreground",style:L({gridColumn:"1",gridRow:a.row})},p(a.label),5)),64)),(g(!0),k(I,null,E(F.value,a=>(g(),k("div",{key:a.key,class:ae(["group relative aspect-square w-full max-w-3 justify-self-center rounded-sm border border-black/5 outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring/50 dark:border-white/10",[a.colorClass,{"border-transparent opacity-0":a.isBlank}]]),"aria-label":a.title,style:L({gridColumn:a.column,gridRow:a.row}),tabindex:a.isBlank?-1:0},[s("span",Ve,p(a.title),1),a.isBlank?O("",!0):(g(),k("div",qe,[s("span",We,p(a.date),1),n.heatMetric==="tokens"?(g(),k("span",Xe,[r[0]||(r[0]=s("span",null,"Tokens",-1)),s("span",Ke,p(a.tokenLabel),1)])):O("",!0),s("span",Qe,[r[1]||(r[1]=s("span",null,"Cost",-1)),s("span",Ze,p(a.costLabel),1)]),n.heatMetric==="cost"?(g(),k("span",Je,[r[2]||(r[2]=s("span",null,"Tokens",-1)),s("span",et,p(a.tokenLabel),1)])):O("",!0),r[3]||(r[3]=s("span",{class:"absolute top-full left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rotate-45 border-r border-b border-border bg-popover"},null,-1))]))],14,Ge))),128))],4),s("div",tt,[s("p",ot,p(v.value),1),s("div",at,[r[4]||(r[4]=s("span",null,"Less",-1)),(g(),k(I,null,E(m,a=>s("span",{key:a,class:ae(["size-3 rounded-[2px] border border-black/5 dark:border-white/10",a])},null,2)),64)),r[5]||(r[5]=s("span",null,"More",-1))])])]),s("div",nt,[(g(!0),k(I,null,E(C.value,a=>(g(),k("div",{key:a.date,class:"rounded-md border px-3 py-2"},[s("p",st,p(a.date),1),s("div",rt,[s("span",lt,p(n.heatMetric==="cost"?("formatCurrency"in t?t.formatCurrency:u(H))(a.costUSD):("formatCompactNumber"in t?t.formatCompactNumber:u($))(a.totalTokens)),1),s("span",ut,p(n.heatMetric==="cost"?("formatCompactNumber"in t?t.formatCompactNumber:u($))(a.totalTokens):("formatCurrency"in t?t.formatCurrency:u(H))(a.costUSD)),1)])]))),128))])]),_:1},8,["description","title"])}}}),vt=Object.assign(it,{__name:"UsageHeatmapPanel"});function le(){return{dailyRows:[],dailyTokenUsage:[],monthlyModelUsage:[],monthlyRows:[],overviewCards:[],projectUsage:[],sessionRows:[],sessionUsage:[],todayTopModel:null,todayTopProject:null,todayTotalCost:0,todayTotalTokens:0,weeklyRows:[]}}function bt(){return{hotProjects:[],modelUsage:[],overviewCards:[]}}function kt(){return{dailyTokenUsage:[],efficiencyMetrics:[]}}function xt(){return{sessionAnalysis:{items:[],totalSessions:0}}}function _t(){const o=le();return{dailyRows:o.dailyRows,dailyTokenUsage:o.dailyTokenUsage,monthlyModelUsage:o.monthlyModelUsage,overviewCards:o.overviewCards}}function wt(){const o=le();return{monthlyRows:o.monthlyRows,projectUsage:o.projectUsage,sessionRows:o.sessionRows,weeklyRows:o.weeklyRows}}function Tt(){return{sessionUsage:le().sessionUsage}}const ct=["day","week","month","session"],dt={agentSession:"/api/analysis/agent/session.json",agentToken:"/api/analysis/agent/token.json",cache:"/api/analysis/cache.json",dailyTokenUsage:"/api/analysis/token/daily.json",hotProject:"/api/analysis/hot-project.json",model:"/api/analysis/model.json",overviewCards:"/api/analysis/overview-cards.json",session:"/api/analysis/session.json",token:"/api/analysis/token.json"};async function Mt(){const[o,n,h]=await Promise.all([w("overviewCards"),w("model"),w("hotProject")]);return{hotProjects:h,modelUsage:n,overviewCards:o}}async function Ct(){const[o,n]=await Promise.all([w("cache"),w("dailyTokenUsage")]);return{dailyTokenUsage:n,efficiencyMetrics:o.items}}function $t(){return w("session")}async function Dt(o){const[n,h,m,_]=await Promise.all([w("overviewCards",{agent:o}),w("model",{agent:o}),w("token",{agent:o}),w("agentToken",{agent:o,type:"day"})]);return{dailyRows:_,dailyTokenUsage:m,monthlyModelUsage:h,overviewCards:n}}async function St(o){const[n,h]=await Promise.all([w("hotProject",{agent:o}),Promise.all(ct.filter(_=>_!=="day").map(async _=>[_,await w("agentToken",{agent:o,type:_})]))]),m=Object.fromEntries(h);return{monthlyRows:m.month,projectUsage:n,sessionRows:m.session,weeklyRows:m.week}}function Ut(o){return w("agentSession",{agent:o}).then(n=>({sessionUsage:n}))}function w(o,n={}){return $fetch(dt[o],{query:mt(n)})}function mt(o){const n={};return o.agent&&(n.agent=Ce(o.agent)),o.type&&(n.type=o.type),Object.keys(n).length>0?n:void 0}function jt(o){const n=oe(!1);me(o.coreStatus,async m=>{if(m!=="success"){n.value=!1,o.clearDeferred();return}n.value||(n.value=!0,await o.executeDeferred())},{immediate:!0});async function h(){n.value=!1,await o.refreshCore(),o.coreStatus.value==="success"&&(n.value=!0,await o.refreshDeferred())}return{refresh:h}}function Pt(o,n){const h=oe(!1);me(o,D=>{D==="success"&&(h.value=!0)},{immediate:!0});const m=l(()=>!h.value&&o.value!=="error");return{errorText:l(()=>o.value!=="error"?"":n.value instanceof Error?n.value.message:typeof n.value=="string"?n.value:"Failed to load dashboard data."),showSkeleton:m}}export{yt as _,ht as a,vt as b,_t as c,St as d,wt as e,Dt as f,Ut as g,Tt as h,Pt as i,Mt as j,bt as k,Ct as l,kt as m,$t as n,xt as o,jt as u};
@@ -0,0 +1 @@
1
+ import{y as B,aE as A,aF as q,N,aG as E,aH as j,S as I,aI as U,W as P,aJ as _,aK as H,aL as D,a3 as F,r as V,aM as T,aN as M,C as o,aO as W,g as b,aP as z,aQ as O,aR as G,aS as Q,aT as $,aD as J}from"./DgKrPjze.js";const K=(...t)=>t.find(c=>c!==void 0);function X(t){const c=t.componentName||"NuxtLink";function v(e){return typeof e=="string"&&e.startsWith("#")}function C(e,l,d){const a=d??t.trailingSlash;if(!e||a!=="append"&&a!=="remove")return e;if(typeof e=="string")return k(e,a);const i="path"in e&&e.path!==void 0?e.path:l(e).path;return{...e,name:void 0,path:k(i,a)}}function w(e){const l=A(),d=J(),a=b(()=>!!o(e.target)&&o(e.target)!=="_self"),i=b(()=>{const u=o(e.to)||o(e.href)||"";return typeof u=="string"&&O(u,{acceptRelative:!0})}),m=_("RouterLink"),g=m&&typeof m!="string"?m.useLink:void 0,f=b(()=>{if(o(e.external))return!0;const u=o(e.to)||o(e.href)||"";return typeof u=="object"?!1:u===""||i.value}),r=b(()=>{const u=o(e.to)||o(e.href)||"";return f.value?u:C(u,l.resolve,o(e.trailingSlash))}),y=f.value?void 0:g?.({...e,to:r,viewTransition:o(e.viewTransition)}),p=b(()=>{const u=o(e.trailingSlash)??t.trailingSlash;if(!r.value||i.value||v(r.value))return r.value;if(f.value){const x=typeof r.value=="object"&&"path"in r.value?T(r.value):r.value,R=typeof x=="object"?l.resolve(x).href:x;return k(R,u)}return typeof r.value=="object"?l.resolve(r.value)?.href??null:k(G(d.app.baseURL,r.value),u)});return{to:r,hasTarget:a,isAbsoluteUrl:i,isExternal:f,href:p,isActive:y?.isActive??b(()=>r.value===l.currentRoute.value.path),isExactActive:y?.isExactActive??b(()=>r.value===l.currentRoute.value.path),route:y?.route??b(()=>l.resolve(r.value)),async navigate(u){await W(p.value,{replace:o(e.replace),external:f.value||a.value})}}}return B({name:c,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:w,setup(e,{slots:l}){const d=A(),{to:a,href:i,navigate:m,isExternal:g,hasTarget:f,isAbsoluteUrl:r}=w(e),y=F(!1),p=V(null),u=s=>{p.value=e.custom?s?.$el?.nextElementSibling:s?.$el};function x(s){return!y.value&&(typeof e.prefetchOn=="string"?e.prefetchOn===s:e.prefetchOn?.[s]??t.prefetchOn?.[s])&&(e.prefetch??t.prefetch)!==!1&&e.noPrefetch!==!0&&e.target!=="_blank"&&!ee()}async function R(s=q()){if(y.value)return;y.value=!0;const h=typeof a.value=="string"?a.value:g.value?T(a.value):d.resolve(a.value).fullPath,n=g.value?new URL(h,window.location.href).href:h;await Promise.all([s.hooks.callHook("link:prefetch",n)?.catch(()=>{}),!g.value&&!f.value&&M(a.value,d).catch(()=>{})])}if(x("visibility")){const s=q();let h,n=null;N(()=>{const S=Y();E(()=>{h=j(()=>{p?.value?.tagName&&(n=S.observe(p.value,async()=>{n?.(),n=null,await R(s)}))})})}),I(()=>{h&&U(h),n?.(),n=null})}return()=>{if(!g.value&&!f.value&&!v(a.value)){const n={ref:u,to:a.value,activeClass:e.activeClass||t.activeClass,exactActiveClass:e.exactActiveClass||t.exactActiveClass,replace:e.replace,ariaCurrentValue:e.ariaCurrentValue,custom:e.custom};return e.custom||(x("interaction")&&(n.onPointerenter=R.bind(null,void 0),n.onFocus=R.bind(null,void 0)),y.value&&(n.class=e.prefetchedClass||t.prefetchedClass),n.rel=e.rel||void 0),P(_("RouterLink"),n,l.default)}const s=e.target||null,h=K(e.noRel?"":e.rel,t.externalRelAttribute,r.value||f.value?"noopener noreferrer":"")||null;return e.custom?l.default?l.default({href:i.value,navigate:m,prefetch:R,get route(){if(!i.value)return;const n=new URL(i.value,window.location.href);return{path:n.pathname,fullPath:n.pathname,get query(){return H(n.search)},hash:n.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:i.value}},rel:h,target:s,isExternal:g.value||f.value,isActive:!1,isExactActive:!1}):null:P("a",{ref:p,href:i.value||null,rel:h,target:s,onClick:async n=>{if(!(g.value||f.value)){n.preventDefault();try{const S=D(i.value);return await(e.replace?d.replace(S):d.push(S))}finally{if(v(a.value)){const S=a.value.slice(1);let L=S;try{L=decodeURIComponent(S)}catch{}document.getElementById(L)?.focus()}}}}},l.default?.())}}})}const ne=X(z);function k(t,c){const v=c==="append"?Q:$;return O(t)&&!t.startsWith("http")?t:v(t,!0)}function Y(){const t=q();if(t._observer)return t._observer;let c=null;const v=new Map,C=(e,l)=>(c||=new IntersectionObserver(d=>{for(const a of d){const i=v.get(a.target);(a.isIntersecting||a.intersectionRatio>0)&&i&&i()}}),v.set(e,l),c.observe(e),()=>{v.delete(e),c?.unobserve(e),v.size===0&&(c?.disconnect(),c=null)});return t._observer={observe:C}}const Z=/2g/;function ee(){const t=navigator.connection;return!!(t&&(t.saveData||Z.test(t.effectiveType)))}export{ne as _};
@@ -0,0 +1,6 @@
1
+ import{aA as E,g as C,aW as z,aX as K,y as M,aF as N,h as F,W as R,aY as L,aZ as ee,a_ as te,s as ae,ab as ne,a6 as se,aj as re,ar as oe,r as ie,a3 as B,n as ce,aa as le,C as W,a7 as ue,p as fe,a$ as q,b0 as de}from"./DgKrPjze.js";const he=Object.freeze({left:0,top:0,width:16,height:16}),V=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),T=Object.freeze({...he,...V});Object.freeze({...T,body:"",hidden:!1});function me(e){const[t,a,s,n]=e;if(s!==n){const i=Math.max(s,n);return[t-(i-s)/2,a-(i-n)/2,i,i]}return e}const ge=/(-?[0-9.]*[0-9]+[0-9.]*)/g,ye=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function I(e,t,a){if(t===1)return e;if(a=a||100,typeof e=="number")return Math.ceil(e*t*a)/a;if(typeof e!="string")return e;const s=e.split(ge);if(s===null||!s.length)return e;const n=[];let i=s.shift(),r=ye.test(i);for(;;){if(r){const c=parseFloat(i);isNaN(c)?n.push(i):n.push(Math.ceil(c*t*a)/a)}else n.push(i);if(i=s.shift(),i===void 0)return n.join("");r=!r}}const be=Object.freeze({width:null,height:null}),ve=Object.freeze({...be,...V});function _e(e,t="defs"){let a="";const s=e.indexOf("<"+t);for(;s>=0;){const n=e.indexOf(">",s),i=e.indexOf("</"+t);if(n===-1||i===-1)break;const r=e.indexOf(">",i);if(r===-1)break;a+=e.slice(n+1,i).trim(),e=e.slice(0,s).trim()+e.slice(r+1)}return{defs:a,content:e}}function pe(e,t){return e?"<defs>"+e+"</defs>"+t:t}function De(e,t,a){const s=_e(e);return pe(s.defs,t+s.content+a)}const we=e=>e==="unset"||e==="undefined"||e==="none";function Se(e,t){const a={...T,...e},s={...ve,...t},n={left:a.left,top:a.top,width:a.width,height:a.height};let i=a.body;[a,s].forEach(D=>{const g=[],m=D.hFlip,u=D.vFlip;let h=D.rotate;m?u?h+=2:(g.push("translate("+(n.width+n.left).toString()+" "+(0-n.top).toString()+")"),g.push("scale(-1 1)"),n.top=n.left=0):u&&(g.push("translate("+(0-n.left).toString()+" "+(n.height+n.top).toString()+")"),g.push("scale(1 -1)"),n.top=n.left=0);let b;switch(h<0&&(h-=Math.floor(h/4)*4),h=h%4,h){case 1:b=n.height/2+n.top,g.unshift("rotate(90 "+b.toString()+" "+b.toString()+")");break;case 2:g.unshift("rotate(180 "+(n.width/2+n.left).toString()+" "+(n.height/2+n.top).toString()+")");break;case 3:b=n.width/2+n.left,g.unshift("rotate(-90 "+b.toString()+" "+b.toString()+")");break}h%2===1&&(n.left!==n.top&&(b=n.left,n.left=n.top,n.top=b),n.width!==n.height&&(b=n.width,n.width=n.height,n.height=b)),g.length&&(i=De(i,'<g transform="'+g.join(" ")+'">',"</g>"))});const r=s.width,c=s.height,l=n.width,d=n.height;let o,f;r===null?(f=c===null?"1em":c==="auto"?d:c,o=I(f,l/d)):(o=r==="auto"?l:r,f=c===null?I(o,d/l):c==="auto"?d:c);const _={},w=(D,g)=>{we(g)||(_[D]=g.toString())};w("width",o),w("height",f);const y=[n.left,n.top,l,d];return _.viewBox=y.join(" "),{attributes:_,viewBox:y,body:i}}function Ce(e){return e.replace(/"/g,"'").replace(/%/g,"%25").replace(/#/g,"%23").replace(/</g,"%3C").replace(/>/g,"%3E").replace(/\s+/g," ")}function xe(e){return"data:image/svg+xml,"+Ce(e)}function Oe(e){return'url("'+xe(e)+'")'}function Pe(e,t){let a=e.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(const s in t)a+=" "+s+'="'+t[s]+'"';return'<svg xmlns="http://www.w3.org/2000/svg"'+a+">"+e+"</svg>"}function Ee(e){const t={display:"inline-block",width:"1em",height:"1em"},a=e.varName;switch(e.pseudoSelector&&(t.content="''"),e.mode){case"background":a&&(t["background-image"]="var(--"+a+")"),t["background-repeat"]="no-repeat",t["background-size"]="100% 100%";break;case"mask":t["background-color"]="currentColor",a&&(t["mask-image"]=t["-webkit-mask-image"]="var(--"+a+")"),t["mask-repeat"]=t["-webkit-mask-repeat"]="no-repeat",t["mask-size"]=t["-webkit-mask-size"]="100% 100%";break}return t}function Ne(e,t){const a={},s=t.varName,n=Se(e);let i=n.viewBox;i[2]!==i[3]&&(t.forceSquare?i=me(i):a.width=I("1em",i[2]/i[3]));const r=Oe(Pe(n.body.replace(/currentColor/g,t.color||"black"),{viewBox:`${i[0]} ${i[1]} ${i[2]} ${i[3]}`,width:`${i[2]}`,height:`${i[3]}`}));if(s)a["--"+s]=r;else switch(t.mode){case"background":a["background-image"]=r;break;case"mask":a["mask-image"]=a["-webkit-mask-image"]=r;break}return a}const k={selectorStart:{compressed:"{",compact:" {",expanded:" {"},selectorEnd:{compressed:"}",compact:`; }
2
+ `,expanded:`;
3
+ }
4
+ `},rule:{compressed:"{key}:",compact:" {key}: ",expanded:`
5
+ {key}: `}};function ke(e,t="expanded"){const a=[];for(let s=0;s<e.length;s++){const{selector:n,rules:i}=e[s];let r=(n instanceof Array?n.join(t==="compressed"?",":", "):n)+k.selectorStart[t],c=!0;for(const l in i)c||(r+=";"),r+=k.rule[t].replace("{key}",l)+i[l],c=!1;r+=k.selectorEnd[t],a.push(r)}return a.join(t==="compressed"?"":`
6
+ `)}function ze(e,t={}){const a=t.customise?t.customise(e.body):e.body,s=t.mode||(t.color||!a.includes("currentColor")?"background":"mask");let n=t.varName;n===void 0&&s==="mask"&&(n="svg");const i={...t,mode:s,varName:n};s==="background"&&delete i.varName;const r={...t.rules,...Ee(i),...Ne({...T,...e,body:a},i)};return ke([{selector:t.iconSelector||".icon",rules:r}],i.format)}async function Fe(e,t){if(!e)return null;const a=z(e);return a||(await K(e).catch(()=>(console.warn(`[Icon] failed to load icon \`${e}\``),null)),z(e))}function U(e){const t=E().icon,a=(t.collections||[]).sort((s,n)=>n.length-s.length);return C(()=>{const s=e(),n=s.startsWith(t.cssSelectorPrefix)?s.slice(t.cssSelectorPrefix.length):s,i=t.aliases?.[n]||n;if(!i.includes(":")){const r=a.find(c=>i.startsWith(c+"-"));return r?r+":"+i.slice(r.length+1):i}return i})}function H(e,t){if(e!==!1)return e===!0||e===null?t:e}let x;function Ie(e){return e.replace(/([^\w-])/g,"\\$1")}function Me(){if(x)return x;x=new Set;const e=a=>{if(a=a.replace(/^:where\((.*)\)$/,"$1").trim(),a.startsWith("."))return a},t=a=>{if(a?.length)for(const s of a){s?.cssRules&&t(s.cssRules);const n=s?.selectorText;if(typeof n=="string"){const i=e(n);i&&x.add(i)}}};if(typeof document<"u")for(const a of document.styleSheets)try{const s=a.cssRules||a.rules;t(s)}catch{}return x}const Re=M({name:"NuxtIconCss",props:{name:{type:String,required:!0},customize:{type:[Function,Boolean,null],default:null,required:!1}},setup(e){const t=N(),a=E().icon,s=C(()=>e.name?a.cssSelectorPrefix+e.name:"");function n(c){if(!c)return;const l=z(c);if(l)return l;const d=t.payload?.data?.[c];if(d)return L(c,d),d}const i=C(()=>"."+Ie(s.value));function r(c,l=!0){let d=i.value;a.cssWherePseudo&&(d=`:where(${d})`);const o=ze(c,{iconSelector:d,format:"compressed",customise:H(e.customize,a.customize)});return a.cssLayer&&l?`@layer ${a.cssLayer} { ${o} }`:o}{const c=Me();async function l(d){if(c.has(i.value)||typeof document>"u")return;const o=document.createElement("style");o.textContent=r(d);const f=document.head.querySelector('style, link[rel="stylesheet"]');f?document.head.insertBefore(o,f):document.head.appendChild(o),c.add(i.value)}F(()=>e.name,()=>{if(c.has(i.value))return;const d=n(e.name);d?l(d):Fe(e.name).then(o=>{o&&l(o)}).catch(()=>null)},{immediate:!0})}return()=>R("span",{class:["iconify",s.value]})}}),Te={trailing:!0};function je(e,t=25,a={}){if(a={...Te,...a},!Number.isFinite(t))throw new TypeError("Expected `wait` to be a finite number");let s,n,i=[],r,c;const l=(f,_)=>(r=$e(e,f,_),r.finally(()=>{if(r=null,a.trailing&&c&&!n){const w=l(f,c);return c=null,w}}),r),d=function(...f){return a.trailing&&(c=f),r||new Promise(_=>{const w=!n&&a.leading;clearTimeout(n),n=setTimeout(()=>{n=null;const y=a.leading?s:l(this,f);c=null;for(const D of i)D(y);i=[]},t),w?(s=l(this,f),_(s)):i.push(_)})},o=f=>{f&&(clearTimeout(f),n=null)};return d.isPending=()=>!!n,d.cancel=()=>{o(n),i=[],c=null},d.flush=()=>{if(o(n),!c||r)return;const f=c;return c=null,l(this,f)},d}async function $e(e,t,a){return await e.apply(t,a)}const Be=Symbol.for("nuxt:client-only");function qe(e){return Object.defineProperty(function(){throw new Error(`[nuxt] \`${e.name}\` is a compiler macro and cannot be called at runtime.`)},"__nuxt_factory",{enumerable:!1,get:()=>e.factory})}const G=qe({name:"createUseAsyncData",factory(e={}){function t(...a){const s=typeof a[a.length-1]=="string"?a.pop():void 0;Ae(a[0],a[1])&&a.unshift(s);let[n,i,r={}]=a,c=!1;const l=C(()=>fe(n));if(typeof l.value!="string")throw new TypeError("[nuxt] [useAsyncData] key must be a string.");if(typeof i!="function")throw new TypeError("[nuxt] [useAsyncData] handler must be a function.");const d=typeof e=="function",o=N(),f=d?e(r):e;if(!d)for(const u in f)f[u]!==void 0&&r[u]===void 0&&(r[u]=f[u]);if(r.server??=!0,r.default??=We,r.getCachedData??=Y,r.lazy??=!1,r.immediate??=!0,r.deep??=ee.deep,r.dedupe??="cancel",d)for(const u in f)f[u]!==void 0&&(r[u]=f[u]);o._asyncData[l.value];function _(){const u={cause:"initial",dedupe:r.dedupe};return o._asyncData[l.value]?._init||(u.cachedData=r.getCachedData(l.value,o,{cause:"initial"}),o._asyncData[l.value]=A(o,l.value,i,r,u.cachedData)),()=>o._asyncData[l.value].execute(u)}const w=_(),y=o._asyncData[l.value];y._deps++;const D=r.server!==!1&&o.payload.serverRendered;{let u=function(v){const p=o._asyncData[v];p?._deps&&(p._deps--,p._deps===0&&p?._off())};const h=re();if(h&&D&&r.immediate&&!h.sp&&(h.sp=[]),h&&!h._nuxtOnBeforeMountCbs){h._nuxtOnBeforeMountCbs=[];const v=h._nuxtOnBeforeMountCbs;te(()=>{v.forEach(p=>{p()}),v.splice(0,v.length)}),ae(()=>v.splice(0,v.length))}const b=h&&(h._nuxtClientOnly||ne(Be,!1));D&&o.isHydrating&&(y.error.value||y.data.value!==void 0)?y.status.value=y.error.value?"error":"success":h&&(!b&&o.payload.serverRendered&&o.isHydrating||r.lazy)&&r.immediate?h._nuxtOnBeforeMountCbs.push(w):r.immediate&&y.status.value!=="success"&&w();const S=oe(),Z=F(l,(v,p)=>{if((v||p)&&v!==p){c=!0;const j=o._asyncData[p]?.data.value!==void 0,Q=o._asyncDataPromises[p]!==void 0,$={cause:"initial",dedupe:r.dedupe};if(!o._asyncData[v]?._init){let O;p&&j?O=o._asyncData[p].data.value:(O=r.getCachedData(v,o,{cause:"initial"}),$.cachedData=O),o._asyncData[v]=A(o,v,i,r,O)}o._asyncData[v]._deps++,p&&u(p),(r.immediate||j||Q)&&o._asyncData[v].execute($),q(()=>{c=!1})}},{flush:"sync"}),J=r.watch?F(r.watch,()=>{c||(o._asyncData[l.value]?._execute.isPending()&&q(()=>{o._asyncData[l.value]?._execute.flush()}),o._asyncData[l.value]?._execute({cause:"watch",dedupe:r.dedupe}))}):()=>{};S&&se(()=>{Z(),J(),u(l.value)})}const g={data:P(()=>o._asyncData[l.value]?.data),pending:P(()=>o._asyncData[l.value]?.pending),status:P(()=>o._asyncData[l.value]?.status),error:P(()=>o._asyncData[l.value]?.error),refresh:(...u)=>o._asyncData[l.value]?._init?o._asyncData[l.value].execute(...u):_()(),execute:(...u)=>g.refresh(...u),clear:()=>{const u=o._asyncData[l.value];if(u?._abortController)try{u._abortController.abort(new DOMException("AsyncData aborted by user.","AbortError"))}finally{u._abortController=void 0}X(o,l.value)}},m=Promise.resolve(o._asyncDataPromises[l.value]).then(()=>g);return Object.assign(m,g),Object.defineProperties(m,{then:{enumerable:!0,value:m.then.bind(m)},catch:{enumerable:!0,value:m.catch.bind(m)},finally:{enumerable:!0,value:m.finally.bind(m)}}),m}return t}}),Xe=G.__nuxt_factory();G.__nuxt_factory({lazy:!0,_functionName:"useLazyAsyncData"});function P(e){return C({get(){return e()?.value},set(t){const a=e();a&&(a.value=t)}})}function Ae(e,t){return!(typeof e=="string"||typeof e=="object"&&e!==null||typeof e=="function"&&typeof t=="function")}function X(e,t){t in e.payload.data&&(e.payload.data[t]=void 0),t in e.payload._errors&&(e.payload._errors[t]=void 0),e._asyncData[t]&&(e._asyncData[t].data.value=W(e._asyncData[t]._default()),e._asyncData[t].error.value=void 0,e._asyncData[t].status.value="idle"),t in e._asyncDataPromises&&(e._asyncDataPromises[t]=void 0)}function Le(e,t){const a={};for(const s of t)a[s]=e[s];return a}function A(e,t,a,s,n){e.payload._errors[t]??=void 0;const i=s.getCachedData!==Y,r=a,c=s.deep?ie:B,l=n!==void 0,d=e.hook("app:data:refresh",async f=>{(!f||f.includes(t))&&await o.execute({cause:"refresh:hook"})}),o={data:c(l?n:s.default()),pending:C(()=>o.status.value==="pending"),error:ue(e.payload._errors,t),status:B("idle"),execute:(...f)=>{const[_,w=void 0]=f,y=_&&w===void 0&&typeof _=="object"?_:{};if(e._asyncDataPromises[t]&&(y.dedupe??s.dedupe)==="defer")return e._asyncDataPromises[t];{const m="cachedData"in y?y.cachedData:s.getCachedData(t,e,{cause:y.cause??"refresh:manual"});if(m!==void 0)return e.payload.data[t]=o.data.value=m,o.error.value=void 0,o.status.value="success",Promise.resolve(m)}o._abortController&&o._abortController.abort(new DOMException("AsyncData request cancelled by deduplication","AbortError")),o._abortController=new AbortController,o.status.value="pending";const D=new AbortController,g=new Promise((m,u)=>{try{const h=y.timeout??s.timeout,b=Ve([o._abortController?.signal,y?.signal],D.signal,h);if(b.aborted){const S=b.reason;u(S instanceof Error?S:new DOMException(String(S??"Aborted"),"AbortError"));return}return b.addEventListener("abort",()=>{const S=b.reason;u(S instanceof Error?S:new DOMException(String(S??"Aborted"),"AbortError"))},{once:!0,signal:D.signal}),Promise.resolve(r(e,{signal:b})).then(m,u)}catch(h){u(h)}}).then(async m=>{let u=m;s.transform&&(u=await s.transform(m)),s.pick&&(u=Le(u,s.pick)),e.payload.data[t]=u,o.data.value=u,o.error.value=void 0,o.status.value="success"}).catch(m=>{if(e._asyncDataPromises[t]&&e._asyncDataPromises[t]!==g||o._abortController?.signal.aborted)return e._asyncDataPromises[t];if(typeof DOMException<"u"&&m instanceof DOMException&&m.name==="AbortError")return o.status.value="idle",e._asyncDataPromises[t];o.error.value=le(m),o.data.value=W(s.default()),o.status.value="error"}).finally(()=>{D.abort(),delete e._asyncDataPromises[t]});return e._asyncDataPromises[t]=g,e._asyncDataPromises[t]},_execute:je((...f)=>o.execute(...f),0,{leading:!0}),_default:s.default,_deps:0,_init:!0,_hash:void 0,_off:()=>{d(),e._asyncData[t]?._init&&(e._asyncData[t]._init=!1),i||ce(()=>{e._asyncData[t]?._init||(X(e,t),o.execute=()=>Promise.resolve())})}};return o}const We=()=>{},Y=(e,t,a)=>{if(t.isHydrating)return t.payload.data[e];if(a.cause!=="refresh:manual"&&a.cause!=="refresh:hook")return t.static.data[e]};function Ve(e,t,a){const s=e.filter(r=>!!r);if(typeof a=="number"&&a>=0){const r=AbortSignal.timeout?.(a);r&&s.push(r)}if(AbortSignal.any)return AbortSignal.any(s);const n=new AbortController;for(const r of s)if(r.aborted){const c=r.reason??new DOMException("Aborted","AbortError");try{n.abort(c)}catch{n.abort()}return n.signal}const i=()=>{const c=s.find(l=>l.aborted)?.reason??new DOMException("Aborted","AbortError");try{n.abort(c)}catch{n.abort()}};for(const r of s)r.addEventListener?.("abort",i,{once:!0,signal:t});return n.signal}const Ue=M({name:"NuxtIconSvg",props:{name:{type:String,required:!0},customize:{type:[Function,Boolean,null],default:null,required:!1}},setup(e,{slots:t}){const a=N(),s=E().icon,n=U(()=>e.name),i="i-"+n.value;if(n.value){const r=a.payload.data[i];r&&L(n.value,r)}return()=>R(de,{icon:n.value,ssr:!0,customise:H(e.customize,s.customize)},t)}}),He=M({name:"NuxtIcon",props:{name:{type:String,required:!0},mode:{type:String,required:!1,default:null},size:{type:[Number,String],required:!1,default:null},customize:{type:[Function,Boolean,null],default:null,required:!1}},setup(e,{slots:t}){const a=N(),s=E().icon,n=U(()=>e.name),i=C(()=>a.vueApp?.component(n.value)||((e.mode||s.mode)==="svg"?Ue:Re)),r=C(()=>{const c=e.size||s.size;return c?{fontSize:Number.isNaN(+c)?c:c+"px"}:null});return()=>R(i.value,{...s.attrs,name:n.value,class:s.class,style:r.value,customize:e.customize},t)}}),Ye=Object.freeze(Object.defineProperty({__proto__:null,default:He},Symbol.toStringTag,{value:"Module"}));export{He as _,qe as d,Ye as i,Xe as u};
@@ -0,0 +1,21 @@
1
+ import{i as vt,P as co,V as po,u as Ue,a as fo,D as mo,b as lt,c as vo,d as $t,h as go,T as yo,e as ho,S as _o,C as bo,f as gt,z as wo,A as So,_ as xo,g as he,j as yt,k as ht,l as J,m as pe,n as ko,o as _t,p as To,q as Co,r as Rt,s as Ot,t as Po,v as Lt,w as jt,x as Ut,y as Ft,B as Nt,E as Vt,F as zt,G as bt,H as Io,I as Eo,J as Do,K as Bo,L as qo}from"./DtbPvE6R.js";import{e as Mo,f as Ao,g as P,r as L,h as me,i as rt,j as $o,k as wt,l as Ro,n as Me,m as Ae,p as Oo,q as it,s as Ht,v as Lo,x as jo,y as j,z as _e,o as v,A as k,w as u,B as V,C as n,D as ut,E as dt,F as St,c as F,G as ee,H as ne,I as ie,J as Q,K as Xe,a as H,b as m,L as Ve,M as Uo,N as Ie,O as Fo,P as je,Q as ct,R as pt,T as No,d as B,S as Vo,t as O,U as We,V as ze,W as nt,X as zo,Y as Ho,Z as Wo,$ as Ko,a0 as Go,a1 as Yo,a2 as Ye,a3 as Pe,a4 as Xo,a5 as Jo,a6 as Zo}from"./DgKrPjze.js";import{i as Wt,g as ue,u as Fe,a as Qo,_ as Kt,b as en,c as tn,d as on,e as nn,f as an}from"./DkxY2YMp.js";import{i as sn,_ as Gt}from"./B6C9KBQ4.js";import{P as de,c as fe,_ as ln}from"./BvRyOET7.js";import{_ as rn}from"./DUoLvn3A.js";function xt(e,t=Number.NEGATIVE_INFINITY,o=Number.POSITIVE_INFINITY){return Math.min(o,Math.max(t,e))}const un=Ao(()=>{const e=L(new Map),t=L(),o=P(()=>{for(const s of e.value.values())if(s)return!0;return!1}),a=Wt({scrollBody:L(!0)});let l=null;const c=()=>{document.body.style.paddingRight="",document.body.style.marginRight="",document.body.style.pointerEvents="",document.documentElement.style.removeProperty("--scrollbar-width"),document.body.style.overflow=t.value??"",wt&&l?.(),t.value=void 0};return me(o,(s,r)=>{if(!rt)return;if(!s){r&&c();return}t.value===void 0&&(t.value=document.body.style.overflow);const d=window.innerWidth-document.documentElement.clientWidth,g={padding:d,margin:0},i=a.scrollBody?.value?typeof a.scrollBody.value=="object"?$o({padding:a.scrollBody.value.padding===!0?d:a.scrollBody.value.padding,margin:a.scrollBody.value.margin===!0?d:a.scrollBody.value.margin},g):g:{padding:0,margin:0};d>0&&(document.body.style.paddingRight=typeof i.padding=="number"?`${i.padding}px`:String(i.padding),document.body.style.marginRight=typeof i.margin=="number"?`${i.margin}px`:String(i.margin),document.documentElement.style.setProperty("--scrollbar-width",`${d}px`),document.body.style.overflow="hidden"),wt&&(l=Ro(document,"touchmove",p=>cn(p),{passive:!1})),Me(()=>{o.value&&(document.body.style.pointerEvents="none",document.body.style.overflow="hidden")})},{immediate:!0,flush:"sync"}),e});function dn(e){const t=Math.random().toString(36).substring(2,7),o=un();o.value.set(t,e??!1);const a=P({get:()=>o.value.get(t)??!1,set:l=>o.value.set(t,l)});return Mo(()=>{o.value.delete(t)}),a}function Yt(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth<e.scrollWidth||t.overflowY==="auto"&&e.clientHeight<e.scrollHeight)return!0;{const o=e.parentNode;return!(o instanceof Element)||o.tagName==="BODY"?!1:Yt(o)}}function cn(e){const t=e||window.event,o=t.target;return o instanceof Element&&Yt(o)?!1:t.touches.length>1?!0:(t.preventDefault&&t.cancelable&&t.preventDefault(),!1)}let Qe=0;function pn(){Ae(e=>{if(!rt)return;const t=document.querySelectorAll("[data-reka-focus-guard]");document.body.insertAdjacentElement("afterbegin",t[0]??kt()),document.body.insertAdjacentElement("beforeend",t[1]??kt()),Qe++,e(()=>{Qe===1&&document.querySelectorAll("[data-reka-focus-guard]").forEach(o=>o.remove()),Qe--})})}function kt(){const e=document.createElement("span");return e.setAttribute("data-reka-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}function fn(e){return P(()=>Oo(e)?!!it(e)?.closest("form"):!0)}var mn=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Le=new WeakMap,Ke=new WeakMap,Ge={},et=0,Xt=function(e){return e&&(e.host||Xt(e.parentNode))},vn=function(e,t){return t.map(function(o){if(e.contains(o))return o;var a=Xt(o);return a&&e.contains(a)?a:(console.error("aria-hidden",o,"in not contained inside",e,". Doing nothing"),null)}).filter(function(o){return!!o})},gn=function(e,t,o,a){var l=vn(t,Array.isArray(e)?e:[e]);Ge[o]||(Ge[o]=new WeakMap);var c=Ge[o],s=[],r=new Set,d=new Set(l),g=function(p){!p||r.has(p)||(r.add(p),g(p.parentNode))};l.forEach(g);var i=function(p){!p||d.has(p)||Array.prototype.forEach.call(p.children,function(y){if(r.has(y))i(y);else try{var w=y.getAttribute(a),x=w!==null&&w!=="false",S=(Le.get(y)||0)+1,T=(c.get(y)||0)+1;Le.set(y,S),c.set(y,T),s.push(y),S===1&&x&&Ke.set(y,!0),T===1&&y.setAttribute(o,"true"),x||y.setAttribute(a,"true")}catch(U){console.error("aria-hidden: cannot operate on ",y,U)}})};return i(t),r.clear(),et++,function(){s.forEach(function(p){var y=Le.get(p)-1,w=c.get(p)-1;Le.set(p,y),c.set(p,w),y||(Ke.has(p)||p.removeAttribute(a),Ke.delete(p)),w||p.removeAttribute(o)}),et--,et||(Le=new WeakMap,Le=new WeakMap,Ke=new WeakMap,Ge={})}},yn=function(e,t,o){o===void 0&&(o="data-aria-hidden");var a=Array.from(Array.isArray(e)?e:[e]),l=mn(e);return l?(a.push.apply(a,Array.from(l.querySelectorAll("[aria-live], script"))),gn(a,l,o,"aria-hidden")):function(){return null}};function hn(e){let t;me(()=>it(e),o=>{let a=!1;try{a=!!o?.closest("[popover]:not(:popover-open)")}catch{}o&&!a?t=yn(o):t&&t()}),Ht(()=>{t&&t()})}function Jt(e){const t=Lo("",1e3);return{search:t,handleTypeaheadSearch:(l,c)=>{t.value=t.value+l;{const s=ue(),r=c.map(y=>({...y,textValue:y.value?.textValue??y.ref.textContent?.trim()??""})),d=r.find(y=>y.ref===s),g=r.map(y=>y.textValue),i=bn(g,t.value,d?.textValue),p=r.find(y=>y.textValue===i);return p&&p.ref.focus(),p?.ref}},resetTypeahead:()=>{t.value=""}}}function _n(e,t){return e.map((o,a)=>e[(t+a)%e.length])}function bn(e,t,o){const l=t.length>1&&Array.from(t).every(g=>g===t[0])?t[0]:t,c=o?e.indexOf(o):-1;let s=_n(e,Math.max(c,0));l.length===1&&(s=s.filter(g=>g!==o));const d=s.find(g=>g.toLowerCase().startsWith(l.toLowerCase()));return d!==o?d:void 0}const wn=jo(()=>L([]));function Sn(){const e=wn();return{add(t){const o=e.value[0];t!==o&&o?.pause(),e.value=Tt(e.value,t),e.value.unshift(t)},remove(t){e.value=Tt(e.value,t),e.value[0]?.resume()}}}function Tt(e,t){const o=[...e],a=o.indexOf(t);return a!==-1&&o.splice(a,1),o}const tt="focusScope.autoFocusOnMount",ot="focusScope.autoFocusOnUnmount",Ct={bubbles:!1,cancelable:!0};function xn(e,{select:t=!1}={}){const o=ue();for(const a of e)if(Ce(a,{select:t}),ue()!==o)return!0}function kn(e){const t=Zt(e),o=Pt(t,e),a=Pt(t.reverse(),e);return[o,a]}function Zt(e){const t=[],o=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:a=>{const l=a.tagName==="INPUT"&&a.type==="hidden";return a.disabled||a.hidden||l?NodeFilter.FILTER_SKIP:a.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;o.nextNode();)t.push(o.currentNode);return t}function Pt(e,t){for(const o of e)if(!Tn(o,{upTo:t}))return o}function Tn(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function Cn(e){return e instanceof HTMLInputElement&&"select"in e}function Ce(e,{select:t=!1}={}){if(e&&e.focus){const o=ue();e.focus({preventScroll:!0}),e!==o&&Cn(e)&&t&&e.select()}}var Pn=j({__name:"FocusScope",props:{loop:{type:Boolean,required:!1,default:!1},trapped:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["mountAutoFocus","unmountAutoFocus"],setup(e,{emit:t}){const o=e,a=t,{currentRef:l,currentElement:c}=_e(),s=L(null),r=Sn(),d=ut({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}});Ae(i=>{if(!rt)return;const p=c.value;if(!o.trapped)return;function y(T){if(d.paused||!p)return;const U=T.target;p.contains(U)?s.value=U:Ce(s.value,{select:!0})}function w(T){if(d.paused||!p)return;const U=T.relatedTarget;U!==null&&(p.contains(U)||Ce(s.value,{select:!0}))}function x(T){const U=s.value;if(U===null||!T.some(_=>_.removedNodes.length>0))return;p.contains(U)||Ce(p)}document.addEventListener("focusin",y),document.addEventListener("focusout",w);const S=new MutationObserver(x);p&&S.observe(p,{childList:!0,subtree:!0}),i(()=>{document.removeEventListener("focusin",y),document.removeEventListener("focusout",w),S.disconnect()})}),Ae(async i=>{const p=c.value;if(await Me(),!p)return;r.add(d);const y=ue();if(!p.contains(y)){const x=new CustomEvent(tt,Ct);p.addEventListener(tt,S=>a("mountAutoFocus",S)),p.dispatchEvent(x),x.defaultPrevented||(xn(Zt(p),{select:!0}),ue()===y&&Ce(p))}i(()=>{p.removeEventListener(tt,T=>a("mountAutoFocus",T));const x=new CustomEvent(ot,Ct),S=T=>{a("unmountAutoFocus",T)};p.addEventListener(ot,S),p.dispatchEvent(x),setTimeout(()=>{x.defaultPrevented||Ce(y??document.body,{select:!0}),p.removeEventListener(ot,S),r.remove(d)},0)})});function g(i){if(!o.loop&&!o.trapped||d.paused)return;const p=i.key==="Tab"&&!i.altKey&&!i.ctrlKey&&!i.metaKey,y=ue();if(p&&y){const w=i.currentTarget,[x,S]=kn(w);x&&S?!i.shiftKey&&y===S?(i.preventDefault(),o.loop&&Ce(x,{select:!0})):i.shiftKey&&y===x&&(i.preventDefault(),o.loop&&Ce(S,{select:!0})):y===w&&i.preventDefault()}}return(i,p)=>(v(),k(n(de),{ref_key:"currentRef",ref:l,tabindex:"-1","as-child":i.asChild,as:i.as,onKeydown:g},{default:u(()=>[V(i.$slots,"default")]),_:3},8,["as-child","as"]))}}),In=Pn;function It(e){const t=ue();for(const o of e)if(o===t||(o.focus(),ue()!==t))return}function En(e){const t=Wt({nonce:L()});return P(()=>e?.value||t.nonce?.value)}const Dn=[" ","Enter","ArrowUp","ArrowDown"],Bn=[" ","Enter"],re=10;function He(e,t,o){return e===void 0?!1:Array.isArray(e)?e.some(a=>at(a,t,o)):at(e,t,o)}function at(e,t,o){return e===void 0||t===void 0?!1:typeof e=="string"?e===t:typeof o=="function"?o(e,t):typeof o=="string"?e?.[o]===t?.[o]:sn(e,t)}function qn(e){return e==null||e===""||Array.isArray(e)&&e.length===0}const Mn={key:0,value:""},[Ee,Qt]=Xe("SelectRoot");var An=j({inheritAttrs:!1,__name:"SelectRoot",props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},by:{type:[String,Function],required:!1},dir:{type:String,required:!1},multiple:{type:Boolean,required:!1},autocomplete:{type:String,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","update:open"],setup(e,{emit:t}){const o=e,a=t,{required:l,disabled:c,multiple:s,dir:r}=dt(o),d=St(o,"modelValue",a,{defaultValue:o.defaultValue??(s.value?[]:void 0),passive:o.modelValue===void 0,deep:!0}),g=St(o,"open",a,{defaultValue:o.defaultOpen,passive:o.open===void 0}),i=L(),p=L(),y=L({x:0,y:0}),w=P(()=>s.value&&Array.isArray(d.value)?d.value?.length===0:vt(d.value));Fe({isProvider:!0});const x=Qo(r),S=fn(i),T=L(new Set),U=P(()=>Array.from(T.value).map(_=>_.value).join(";"));function W(_){if(s.value){const q=Array.isArray(d.value)?[...d.value]:[],C=q.findIndex(M=>at(M,_,o.by));C===-1?q.push(_):q.splice(C,1),d.value=[...q]}else d.value=_}function A(_){return Array.from(T.value).find(q=>He(_,q.value,o.by))}return Qt({triggerElement:i,onTriggerChange:_=>{i.value=_},valueElement:p,onValueElementChange:_=>{p.value=_},contentId:"",modelValue:d,onValueChange:W,by:o.by,open:g,multiple:s,required:l,onOpenChange:_=>{g.value=_},dir:x,triggerPointerDownPosRef:y,disabled:c,isEmptyModelValue:w,optionsSet:T,onOptionAdd:_=>{const q=A(_.value);q&&T.value.delete(q),T.value.add(_)},onOptionRemove:_=>{const q=A(_.value);q&&T.value.delete(q)}}),(_,q)=>(v(),k(n(co),null,{default:u(()=>[V(_.$slots,"default",{modelValue:n(d),open:n(g)}),n(S)&&_.name?(v(),k(On,{key:U.value,"aria-hidden":"true",tabindex:"-1",multiple:n(s),required:n(l),name:_.name,autocomplete:_.autocomplete,disabled:n(c),value:n(d)},{default:u(()=>[n(vt)(n(d))?(v(),F("option",Mn)):ee("v-if",!0),(v(!0),F(ne,null,ie(Array.from(T.value),C=>(v(),F("option",Q({key:C.value??""},{ref_for:!0},C),null,16))),128))]),_:1},8,["multiple","required","name","autocomplete","disabled","value"])):ee("v-if",!0)]),_:3}))}}),$n=An,Rn=j({__name:"BubbleSelect",props:{autocomplete:{type:String,required:!1},autofocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},form:{type:String,required:!1},multiple:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},size:{type:Number,required:!1},value:{type:null,required:!1}},setup(e){const t=e,o=L(),a=Ee();me(()=>t.value,(c,s)=>{const r=window.HTMLSelectElement.prototype,g=Object.getOwnPropertyDescriptor(r,"value").set;if(c!==s&&g&&o.value){const i=new Event("change",{bubbles:!0});g.call(o.value,c),o.value.dispatchEvent(i)}});function l(c){a.onValueChange(c.target.value)}return(c,s)=>(v(),k(n(po),{"as-child":""},{default:u(()=>[H("select",Q({ref_key:"selectElement",ref:o},t,{onInput:l}),[V(c.$slots,"default")],16)]),_:3}))}}),On=Rn,Ln=j({__name:"SelectPopperPosition",props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:"start"},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1,default:re},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const o=Ue(e);return(a,l)=>(v(),k(n(fo),Q(n(o),{style:{boxSizing:"border-box","--reka-select-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-select-content-available-width":"var(--reka-popper-available-width)","--reka-select-content-available-height":"var(--reka-popper-available-height)","--reka-select-trigger-width":"var(--reka-popper-anchor-width)","--reka-select-trigger-height":"var(--reka-popper-anchor-height)"}}),{default:u(()=>[V(a.$slots,"default")]),_:3},16))}}),jn=Ln;const Un={onViewportChange:()=>{},itemTextRefCallback:()=>{},itemRefCallback:()=>{}},[$e,eo]=Xe("SelectContent");var Fn=j({__name:"SelectContentImpl",props:{position:{type:String,required:!1,default:"item-aligned"},bodyLock:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:"start"},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:!0}},emits:["closeAutoFocus","escapeKeyDown","pointerDownOutside"],setup(e,{emit:t}){const o=e,a=t,l=Ee();pn(),dn(o.bodyLock);const{CollectionSlot:c,getItems:s}=Fe(),r=L();hn(r);const{search:d,handleTypeaheadSearch:g}=Jt(),i=L(),p=L(),y=L(),w=L(!1),x=L(!1),S=L(!1);function T(){p.value&&r.value&&It([p.value,r.value])}me(w,()=>{T()});const{onOpenChange:U,triggerPointerDownPosRef:W}=l;Ae(C=>{if(!r.value)return;let M={x:0,y:0};const R=$=>{M={x:Math.abs(Math.round($.pageX)-(W.value?.x??0)),y:Math.abs(Math.round($.pageY)-(W.value?.y??0))}},N=$=>{$.pointerType!=="touch"&&(M.x<=10&&M.y<=10?$.preventDefault():r.value?.contains($.target)||U(!1),document.removeEventListener("pointermove",R),W.value=null)};W.value!==null&&(document.addEventListener("pointermove",R),document.addEventListener("pointerup",N,{capture:!0,once:!0})),C(()=>{document.removeEventListener("pointermove",R),document.removeEventListener("pointerup",N,{capture:!0})})});function A(C){const M=C.ctrlKey||C.altKey||C.metaKey;if(C.key==="Tab"&&C.preventDefault(),!M&&C.key.length===1&&g(C.key,s()),["ArrowUp","ArrowDown","Home","End"].includes(C.key)){let N=[...s().map($=>$.ref)];if(["ArrowUp","End"].includes(C.key)&&(N=N.slice().reverse()),["ArrowUp","ArrowDown"].includes(C.key)){const $=C.target,ae=N.indexOf($);N=N.slice(ae+1)}setTimeout(()=>It(N)),C.preventDefault()}}const _=P(()=>o.position==="popper"?o:{}),q=Ue(_.value);return eo({content:r,viewport:i,onViewportChange:C=>{i.value=C},itemRefCallback:(C,M,R)=>{const N=!x.value&&!R,$=He(l.modelValue.value,M,l.by);if(l.multiple.value){if(S.value)return;($||N)&&(p.value=C,$&&(S.value=!0))}else($||N)&&(p.value=C);N&&(x.value=!0)},selectedItem:p,selectedItemText:y,onItemLeave:()=>{r.value?.focus()},itemTextRefCallback:(C,M,R)=>{const N=!x.value&&!R;(He(l.modelValue.value,M,l.by)||N)&&(y.value=C)},focusSelectedItem:T,position:o.position,isPositioned:w,searchRef:d}),(C,M)=>(v(),k(n(c),null,{default:u(()=>[m(n(In),{"as-child":"",onMountAutoFocus:M[6]||(M[6]=Ve(()=>{},["prevent"])),onUnmountAutoFocus:M[7]||(M[7]=R=>{a("closeAutoFocus",R),!R.defaultPrevented&&(n(l).triggerElement.value?.focus({preventScroll:!0}),R.preventDefault())})},{default:u(()=>[m(n(mo),{"as-child":"","disable-outside-pointer-events":C.disableOutsidePointerEvents,onFocusOutside:M[2]||(M[2]=Ve(()=>{},["prevent"])),onDismiss:M[3]||(M[3]=R=>n(l).onOpenChange(!1)),onEscapeKeyDown:M[4]||(M[4]=R=>a("escapeKeyDown",R)),onPointerDownOutside:M[5]||(M[5]=R=>a("pointerDownOutside",R))},{default:u(()=>[(v(),k(Uo(C.position==="popper"?jn:Hn),Q({...C.$attrs,...n(q)},{id:n(l).contentId,ref:R=>{if(!R)return;const N=n(it)(R);N?.hasAttribute("data-reka-popper-content-wrapper")?r.value=N.firstElementChild:r.value=N},role:"listbox","data-state":n(l).open.value?"open":"closed",dir:n(l).dir.value,style:{display:"flex",flexDirection:"column",outline:"none"},onContextmenu:M[0]||(M[0]=Ve(()=>{},["prevent"])),onPlaced:M[1]||(M[1]=R=>w.value=!0),onKeydown:A}),{default:u(()=>[V(C.$slots,"default")]),_:3},16,["id","data-state","dir","onKeydown"]))]),_:3},8,["disable-outside-pointer-events"])]),_:3})]),_:3}))}}),Nn=Fn;const[ft,Vn]=Xe("SelectItemAlignedPosition");var zn=j({inheritAttrs:!1,__name:"SelectItemAlignedPosition",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["placed"],setup(e,{emit:t}){const o=e,a=t,{getItems:l}=Fe(),c=Ee(),s=$e(),r=L(!1),d=L(!0),g=L(),{forwardRef:i,currentElement:p}=_e(),{viewport:y,selectedItem:w,selectedItemText:x,focusSelectedItem:S}=s;function T(){if(c.triggerElement.value&&c.valueElement.value&&g.value&&p.value&&y?.value&&w?.value&&x?.value){const A=c.triggerElement.value.getBoundingClientRect(),_=p.value.getBoundingClientRect(),q=c.valueElement.value.getBoundingClientRect(),C=x.value.getBoundingClientRect();if(c.dir.value!=="rtl"){const I=C.left-_.left,D=q.left-I,h=A.left-D,z=A.width+h,te=Math.max(z,_.width),Y=window.innerWidth-re,oe=xt(D,re,Math.max(re,Y-te));g.value.style.minWidth=`${z}px`,g.value.style.left=`${oe}px`}else{const I=_.right-C.right,D=window.innerWidth-q.right-I,h=window.innerWidth-A.right-D,z=A.width+h,te=Math.max(z,_.width),Y=window.innerWidth-re,oe=xt(D,re,Math.max(re,Y-te));g.value.style.minWidth=`${z}px`,g.value.style.right=`${oe}px`}const M=l().map(I=>I.ref),R=window.innerHeight-re*2,N=y.value.scrollHeight,$=window.getComputedStyle(p.value),ae=Number.parseInt($.borderTopWidth,10),ve=Number.parseInt($.paddingTop,10),be=Number.parseInt($.borderBottomWidth,10),ge=Number.parseInt($.paddingBottom,10),G=ae+ve+N+ge+be,De=Math.min(w.value.offsetHeight*5,G),we=window.getComputedStyle(y.value),Be=Number.parseInt(we.paddingTop,10),ce=Number.parseInt(we.paddingBottom,10),Z=A.top+A.height/2-re,Se=R-Z,se=w.value.offsetHeight/2,xe=w.value.offsetTop+se,le=ae+ve+xe,ye=G-le;if(le<=Z){const I=w.value===M.at(-1);g.value.style.bottom="0px";const D=p.value.clientHeight-y.value.offsetTop-y.value.offsetHeight,h=Math.max(Se,se+(I?ce:0)+D+be),z=le+h;g.value.style.height=`${z}px`}else{const I=w.value===M[0];g.value.style.top="0px";const h=Math.max(Z,ae+y.value.offsetTop+(I?Be:0)+se)+ye;g.value.style.height=`${h}px`,y.value.scrollTop=le-Z+y.value.offsetTop}g.value.style.margin=`${re}px 0`,g.value.style.minHeight=`${De}px`,g.value.style.maxHeight=`${R}px`,a("placed"),requestAnimationFrame(()=>r.value=!0)}}const U=L("");Ie(async()=>{await Me(),T(),p.value&&(U.value=window.getComputedStyle(p.value).zIndex)});function W(A){A&&d.value===!0&&(T(),S?.(),d.value=!1)}return Fo(c.triggerElement,()=>{T()}),Vn({contentWrapper:g,shouldExpandOnScrollRef:r,onScrollButtonChange:W}),(A,_)=>(v(),F("div",{ref_key:"contentWrapperElement",ref:g,style:je({display:"flex",flexDirection:"column",position:"fixed",zIndex:U.value})},[m(n(de),Q({ref:n(i),style:{boxSizing:"border-box",maxHeight:"100%"}},{...A.$attrs,...o}),{default:u(()=>[V(A.$slots,"default")]),_:3},16)],4))}}),Hn=zn,Wn=j({inheritAttrs:!1,__name:"SelectProvider",props:{context:{type:Object,required:!0}},setup(e){return Qt(e.context),eo(Un),(o,a)=>V(o.$slots,"default")}}),Kn=Wn;const Gn={key:1};var Yn=j({inheritAttrs:!1,__name:"SelectContent",props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["closeAutoFocus","escapeKeyDown","pointerDownOutside"],setup(e,{emit:t}){const o=e,l=lt(o,t),c=Ee(),s=L();Ie(()=>{s.value=new DocumentFragment});const r=L(),d=P(()=>o.forceMount||c.open.value),g=L(d.value);return me(d,()=>{setTimeout(()=>g.value=d.value)}),(i,p)=>d.value||g.value||r.value?.present?(v(),k(n(vo),{key:0,ref_key:"presenceRef",ref:r,present:d.value},{default:u(()=>[m(Nn,ct(pt({...n(l),...i.$attrs})),{default:u(()=>[V(i.$slots,"default")]),_:3},16)]),_:3},8,["present"])):s.value?(v(),F("div",Gn,[(v(),k(No,{to:s.value},[m(Kn,{context:n(c)},{default:u(()=>[V(i.$slots,"default")]),_:3},8,["context"])],8,["to"]))])):ee("v-if",!0)}}),Xn=Yn,Jn=j({__name:"SelectIcon",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(e){return(t,o)=>(v(),k(n(de),{"aria-hidden":"true",as:t.as,"as-child":t.asChild},{default:u(()=>[V(t.$slots,"default",{},()=>[o[0]||(o[0]=B("▼"))])]),_:3},8,["as","as-child"]))}}),Zn=Jn;const[to,Qn]=Xe("SelectItem");var ea=j({__name:"SelectItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select"],setup(e,{emit:t}){const o=e,a=t,{disabled:l}=dt(o),c=Ee(),s=$e(),{forwardRef:r,currentElement:d}=_e(),{CollectionItem:g}=Fe(),i=P(()=>He(c.modelValue?.value,o.value,c.by)),p=L(!1),y=L(o.textValue??""),w=$t(void 0,"reka-select-item-text"),x="select.select";async function S(_){if(_.defaultPrevented)return;const q={originalEvent:_,value:o.value};go(x,T,q)}async function T(_){await Me(),a("select",_),!_.defaultPrevented&&(l.value||(c.onValueChange(o.value),c.multiple.value||c.onOpenChange(!1)))}async function U(_){await Me(),!_.defaultPrevented&&(l.value?s.onItemLeave?.():_.currentTarget?.focus({preventScroll:!0}))}async function W(_){await Me(),!_.defaultPrevented&&_.currentTarget===ue()&&s.onItemLeave?.()}async function A(_){await Me(),!(_.defaultPrevented||s.searchRef?.value!==""&&_.key===" ")&&(Bn.includes(_.key)&&S(_),_.key===" "&&_.preventDefault())}if(o.value==="")throw new Error("A <SelectItem /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return Ie(()=>{d.value&&s.itemRefCallback(d.value,o.value,o.disabled)}),Qn({value:o.value,disabled:l,textId:w,isSelected:i,onItemTextChange:_=>{y.value=((y.value||_?.textContent)??"").trim()}}),(_,q)=>(v(),k(n(g),{value:{textValue:y.value}},{default:u(()=>[m(n(de),{ref:n(r),role:"option","aria-labelledby":n(w),"data-highlighted":p.value?"":void 0,"aria-selected":i.value,"data-state":i.value?"checked":"unchecked","aria-disabled":n(l)||void 0,"data-disabled":n(l)?"":void 0,tabindex:n(l)?void 0:-1,as:_.as,"as-child":_.asChild,onFocus:q[0]||(q[0]=C=>p.value=!0),onBlur:q[1]||(q[1]=C=>p.value=!1),onPointerup:S,onPointerdown:q[2]||(q[2]=C=>{C.currentTarget.focus({preventScroll:!0})}),onTouchend:q[3]||(q[3]=Ve(()=>{},["prevent","stop"])),onPointermove:U,onPointerleave:W,onKeydown:A},{default:u(()=>[V(_.$slots,"default")]),_:3},8,["aria-labelledby","data-highlighted","aria-selected","data-state","aria-disabled","data-disabled","tabindex","as","as-child"])]),_:3},8,["value"]))}}),ta=ea,oa=j({__name:"SelectItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(e){const t=e,o=to();return(a,l)=>n(o).isSelected.value?(v(),k(n(de),Q({key:0,"aria-hidden":"true"},t),{default:u(()=>[V(a.$slots,"default")]),_:3},16)):ee("v-if",!0)}}),na=oa,aa=j({inheritAttrs:!1,__name:"SelectItemText",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(e){const t=e,o=Ee(),a=$e(),l=to(),{forwardRef:c,currentElement:s}=_e(),r=P(()=>({value:l.value,disabled:l.disabled.value,textContent:s.value?.textContent??l.value?.toString()??""}));return Ie(()=>{s.value&&(l.onItemTextChange(s.value),a.itemTextRefCallback(s.value,l.value,l.disabled.value),o.onOptionAdd(r.value))}),Ht(()=>{o.onOptionRemove(r.value)}),(d,g)=>(v(),k(n(de),Q({id:n(l).textId,ref:n(c)},{...t,...d.$attrs}),{default:u(()=>[V(d.$slots,"default")]),_:3},16,["id"]))}}),sa=aa,la=j({__name:"SelectPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){const t=e;return(o,a)=>(v(),k(n(yo),ct(pt(t)),{default:u(()=>[V(o.$slots,"default")]),_:3},16))}}),ra=la,ia=j({__name:"SelectScrollButtonImpl",emits:["autoScroll"],setup(e,{emit:t}){const o=t,{getItems:a}=Fe(),l=$e(),c=L(null);function s(){c.value!==null&&(window.clearInterval(c.value),c.value=null)}Ae(()=>{a().map(i=>i.ref).find(i=>i===ue())?.scrollIntoView({block:"nearest"})});function r(){c.value===null&&(c.value=window.setInterval(()=>{o("autoScroll")},50))}function d(){l.onItemLeave?.(),c.value===null&&(c.value=window.setInterval(()=>{o("autoScroll")},50))}return Vo(()=>s()),(g,i)=>(v(),k(n(de),Q({"aria-hidden":"true",style:{flexShrink:0}},g.$parent?.$props,{onPointerdown:r,onPointermove:d,onPointerleave:i[0]||(i[0]=()=>{s()})}),{default:u(()=>[V(g.$slots,"default")]),_:3},16))}}),oo=ia,ua=j({__name:"SelectScrollDownButton",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const t=$e(),o=t.position==="item-aligned"?ft():void 0,{forwardRef:a,currentElement:l}=_e(),c=L(!1);return Ae(s=>{if(t.viewport?.value&&t.isPositioned?.value){let d=function(){const g=r.scrollHeight-r.clientHeight;c.value=Math.ceil(r.scrollTop)<g};const r=t.viewport.value;d(),r.addEventListener("scroll",d),s(()=>r.removeEventListener("scroll",d))}}),me(l,()=>{l.value&&o?.onScrollButtonChange(l.value)}),(s,r)=>c.value?(v(),k(oo,{key:0,ref:n(a),onAutoScroll:r[0]||(r[0]=()=>{const{viewport:d,selectedItem:g}=n(t);d?.value&&g?.value&&(d.value.scrollTop=d.value.scrollTop+g.value.offsetHeight)})},{default:u(()=>[V(s.$slots,"default")]),_:3},512)):ee("v-if",!0)}}),da=ua,ca=j({__name:"SelectScrollUpButton",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const t=$e(),o=t.position==="item-aligned"?ft():void 0,{forwardRef:a,currentElement:l}=_e(),c=L(!1);return Ae(s=>{if(t.viewport?.value&&t.isPositioned?.value){let d=function(){c.value=r.scrollTop>0};const r=t.viewport.value;d(),r.addEventListener("scroll",d),s(()=>r.removeEventListener("scroll",d))}}),me(l,()=>{l.value&&o?.onScrollButtonChange(l.value)}),(s,r)=>c.value?(v(),k(oo,{key:0,ref:n(a),onAutoScroll:r[0]||(r[0]=()=>{const{viewport:d,selectedItem:g}=n(t);d?.value&&g?.value&&(d.value.scrollTop=d.value.scrollTop-g.value.offsetHeight)})},{default:u(()=>[V(s.$slots,"default")]),_:3},512)):ee("v-if",!0)}}),pa=ca,fa=j({__name:"SelectTrigger",props:{disabled:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,o=Ee(),{forwardRef:a,currentElement:l}=_e(),c=P(()=>o.disabled?.value||t.disabled);o.contentId||=$t(void 0,"reka-select-content"),Ie(()=>{o.onTriggerChange(l.value)});const{getItems:s}=Fe(),{search:r,handleTypeaheadSearch:d,resetTypeahead:g}=Jt();function i(){c.value||(o.onOpenChange(!0),g())}function p(y){i(),o.triggerPointerDownPosRef.value={x:Math.round(y.pageX),y:Math.round(y.pageY)}}return(y,w)=>(v(),k(n(ho),{"as-child":"",reference:y.reference},{default:u(()=>[m(n(de),{ref:n(a),role:"combobox",type:y.as==="button"?"button":void 0,"aria-controls":n(o).contentId,"aria-expanded":n(o).open.value||!1,"aria-required":n(o).required?.value,"aria-autocomplete":"none",disabled:c.value,dir:n(o)?.dir.value,"data-state":n(o)?.open.value?"open":"closed","data-disabled":c.value?"":void 0,"data-placeholder":n(qn)(n(o).modelValue?.value)?"":void 0,"as-child":y.asChild,as:y.as,onClick:w[0]||(w[0]=x=>{x?.currentTarget?.focus()}),onPointerdown:w[1]||(w[1]=x=>{if(x.pointerType==="touch")return x.preventDefault();const S=x.target;S.hasPointerCapture(x.pointerId)&&S.releasePointerCapture(x.pointerId),x.button===0&&x.ctrlKey===!1&&(p(x),x.preventDefault())}),onPointerup:w[2]||(w[2]=Ve(x=>{x.pointerType==="touch"&&p(x)},["prevent"])),onKeydown:w[3]||(w[3]=x=>{const S=n(r)!=="";!(x.ctrlKey||x.altKey||x.metaKey)&&x.key.length===1&&S&&x.key===" "||(n(d)(x.key,n(s)()),n(Dn).includes(x.key)&&(i(),x.preventDefault()))})},{default:u(()=>[V(y.$slots,"default")]),_:3},8,["type","aria-controls","aria-expanded","aria-required","disabled","dir","data-state","data-disabled","data-placeholder","as-child","as"])]),_:3},8,["reference"]))}}),ma=fa,va=j({__name:"SelectValue",props:{placeholder:{type:String,required:!1,default:""},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(e){const t=e,{forwardRef:o,currentElement:a}=_e(),l=Ee();Ie(()=>{l.valueElement=a});const c=P(()=>{let r=[];const d=Array.from(l.optionsSet.value),g=i=>d.find(p=>He(i,p.value,l.by));return Array.isArray(l.modelValue.value)?r=l.modelValue.value.map(i=>g(i)?.textContent??""):r=[g(l.modelValue.value)?.textContent??""],r.filter(Boolean)}),s=P(()=>c.value.length?c.value.join(", "):t.placeholder);return(r,d)=>(v(),k(n(de),{ref:n(o),as:r.as,"as-child":r.asChild,style:{pointerEvents:"none"},"data-placeholder":c.value.length?void 0:t.placeholder},{default:u(()=>[V(r.$slots,"default",{selectedLabel:c.value,modelValue:n(l).modelValue.value},()=>[B(O(s.value),1)])]),_:3},8,["as","as-child","data-placeholder"]))}}),ga=va,ya=j({__name:"SelectViewport",props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const t=e,{nonce:o}=dt(t),a=En(o),l=$e(),c=l.position==="item-aligned"?ft():void 0,{forwardRef:s,currentElement:r}=_e();Ie(()=>{l?.onViewportChange(r.value)});const d=L(0);function g(i){const p=i.currentTarget,{shouldExpandOnScrollRef:y,contentWrapper:w}=c??{};if(y?.value&&w?.value){const x=Math.abs(d.value-p.scrollTop);if(x>0){const S=window.innerHeight-re*2,T=Number.parseFloat(w.value.style.minHeight),U=Number.parseFloat(w.value.style.height),W=Math.max(T,U);if(W<S){const A=W+x,_=Math.min(S,A),q=A-_;w.value.style.height=`${_}px`,w.value.style.bottom==="0px"&&(p.scrollTop=q>0?q:0,w.value.style.justifyContent="flex-end")}}}d.value=p.scrollTop}return(i,p)=>(v(),F(ne,null,[m(n(de),Q({ref:n(s),"data-reka-select-viewport":"",role:"presentation"},{...i.$attrs,...t},{style:{position:"relative",flex:1,overflow:"hidden auto"},onScroll:g}),{default:u(()=>[V(i.$slots,"default")]),_:3},16),m(n(de),{as:"style",nonce:n(a)},{default:u(()=>p[0]||(p[0]=[B(" /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-select-viewport] { scrollbar-width:none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } [data-reka-select-viewport]::-webkit-scrollbar { display: none; } ")])),_:1,__:[0]},8,["nonce"])],64))}}),ha=ya;const _a=j({__name:"Select",props:{open:{type:Boolean},defaultOpen:{type:Boolean},defaultValue:{},modelValue:{},by:{type:[String,Function]},dir:{},multiple:{type:Boolean},autocomplete:{},disabled:{type:Boolean},name:{},required:{type:Boolean}},emits:["update:modelValue","update:open"],setup(e,{emit:t}){const l=lt(e,t);return(c,s)=>(v(),k(n($n),Q({"data-slot":"select"},n(l)),{default:u(r=>[V(c.$slots,"default",ct(pt(r)))]),_:3},16))}}),ba=j({inheritAttrs:!1,__name:"SelectContent",props:{forceMount:{type:Boolean},position:{default:"popper"},bodyLock:{type:Boolean},side:{},sideOffset:{},sideFlip:{type:Boolean},align:{},alignOffset:{},alignFlip:{type:Boolean},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},hideShiftedArrow:{type:Boolean},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},disableUpdateOnLayoutShift:{type:Boolean},prioritizePosition:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},disableOutsidePointerEvents:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]}},emits:["closeAutoFocus","escapeKeyDown","pointerDownOutside"],setup(e,{emit:t}){const o=e,a=t,l=We(o,"class"),c=lt(l,a);return(s,r)=>(v(),k(n(ra),null,{default:u(()=>[m(n(Xn),Q({"data-slot":"select-content"},{...s.$attrs,...n(c)},{class:n(fe)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--reka-select-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border shadow-md",e.position==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",o.class)}),{default:u(()=>[m(n(Ba)),m(n(ha),{class:ze(n(fe)("p-1",e.position==="popper"&&"h-[var(--reka-select-trigger-height)] w-full min-w-[var(--reka-select-trigger-width)] scroll-my-1"))},{default:u(()=>[V(s.$slots,"default")]),_:3},8,["class"]),m(n(Da))]),_:3},16,["class"])]),_:3}))}});const Et=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),wa=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,o,a)=>a?a.toUpperCase():o.toLowerCase()),Sa=e=>{const t=wa(e);return t.charAt(0).toUpperCase()+t.slice(1)},xa=(...e)=>e.filter((t,o,a)=>!!t&&t.trim()!==""&&a.indexOf(t)===o).join(" ").trim(),Dt=e=>e==="";var Ne={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};const ka=({name:e,iconNode:t,absoluteStrokeWidth:o,"absolute-stroke-width":a,strokeWidth:l,"stroke-width":c,size:s=Ne.width,color:r=Ne.stroke,...d},{slots:g})=>nt("svg",{...Ne,...d,width:s,height:s,stroke:r,"stroke-width":Dt(o)||Dt(a)||o===!0||a===!0?Number(l||c||Ne["stroke-width"])*24/Number(s):l||c||Ne["stroke-width"],class:xa("lucide",d.class,...e?[`lucide-${Et(Sa(e))}-icon`,`lucide-${Et(e)}`]:["lucide-icon"])},[...t.map(i=>nt(...i)),...g.default?[g.default()]:[]]);const Je=(e,t)=>(o,{slots:a,attrs:l})=>nt(ka,{...l,...o,iconNode:t,name:e},a);const Ta=Je("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);const no=Je("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);const Ca=Je("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);const Pa=Je("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]),Ia={class:"absolute right-2 flex size-3.5 items-center justify-center"},Ea=j({__name:"SelectItem",props:{value:{},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){const t=e,o=We(t,"class"),a=Ue(o);return(l,c)=>(v(),k(n(ta),Q({"data-slot":"select-item"},n(a),{class:n(fe)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t.class)}),{default:u(()=>[H("span",Ia,[m(n(na),null,{default:u(()=>[V(l.$slots,"indicator-icon",{},()=>[m(n(Ta),{class:"size-4"})])]),_:3})]),m(n(sa),null,{default:u(()=>[V(l.$slots,"default")]),_:3})]),_:3},16,["class"]))}}),Da=j({__name:"SelectScrollDownButton",props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){const t=e,o=We(t,"class"),a=Ue(o);return(l,c)=>(v(),k(n(da),Q({"data-slot":"select-scroll-down-button"},n(a),{class:n(fe)("flex cursor-default items-center justify-center py-1",t.class)}),{default:u(()=>[V(l.$slots,"default",{},()=>[m(n(no),{class:"size-4"})])]),_:3},16,["class"]))}}),Ba=j({__name:"SelectScrollUpButton",props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){const t=e,o=We(t,"class"),a=Ue(o);return(l,c)=>(v(),k(n(pa),Q({"data-slot":"select-scroll-up-button"},n(a),{class:n(fe)("flex cursor-default items-center justify-center py-1",t.class)}),{default:u(()=>[V(l.$slots,"default",{},()=>[m(n(Ca),{class:"size-4"})])]),_:3},16,["class"]))}}),qa=j({__name:"SelectTrigger",props:{disabled:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]},size:{default:"default"}},setup(e){const t=e,o=We(t,"class","size"),a=Ue(o);return(l,c)=>(v(),k(n(ma),Q({"data-slot":"select-trigger","data-size":e.size},n(a),{class:n(fe)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t.class)}),{default:u(()=>[V(l.$slots,"default"),m(n(Zn),{"as-child":""},{default:u(()=>[m(n(no),{class:"size-4 opacity-50"})]),_:1})]),_:3},16,["data-size","class"]))}}),Ma=j({__name:"SelectValue",props:{placeholder:{},asChild:{type:Boolean},as:{}},setup(e){const t=e;return(o,a)=>(v(),k(n(ga),Q({"data-slot":"select-value"},t),{default:u(()=>[V(o.$slots,"default")]),_:3},16))}}),Aa=j({__name:"Spinner",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){const t=e;return(o,a)=>(v(),k(n(Pa),{role:"status","aria-label":"Loading",class:ze(n(fe)("size-4 animate-spin",t.class))},null,8,["class"]))}}),$a={class:"space-y-4"},Ra={key:0,class:"pointer-events-none absolute inset-0 z-10"},Oa={class:"flex flex-wrap items-center justify-center gap-3 text-xs text-muted-foreground"},La={class:"max-w-40 truncate",translate:"no"},ja={class:"font-medium text-foreground tabular-nums"},Ua=.24,Fa="#94a3b8",Na=288,Va=j({__name:"ProjectLineChart",props:{series:{},tooltipLabels:{},tickIndexes:{},xLabels:{}},setup(e){const t=e,o={bottom:32,left:56,right:28,top:8},a={left:8,right:18},l=[0,void 0],c=zo({selector:"html",attribute:"class",storageKey:"app-color-mode"}),s=new Intl.DateTimeFormat("en-US",{day:"numeric",month:"short"}),r=new Intl.DateTimeFormat("en-US",{month:"short"}),d=Ho("chartRoot"),{width:g}=Wo(d),i=ut({datumIndex:null,pointerY:null}),p=P(()=>t.xLabels.map((b,I)=>({index:I,label:t.tooltipLabels?.[I]??b,values:Object.fromEntries(t.series.map(D=>[D.label,D.points[I]??0]))}))),y=P(()=>t.xLabels.map((b,I)=>Se(b,I,t.xLabels.length))),w=P(()=>t.series.map(b=>({...b,color:xe(b.color),total:b.points.reduce((I,D)=>I+D,0)})).sort((b,I)=>I.total-b.total)),x=P(()=>w.value.map(b=>I=>I.values[b.label]??0)),S=P(()=>Object.fromEntries(w.value.map(b=>[b.label,{color:b.color,label:b.label}]))),T=P(()=>w.value.map(b=>`
2
+ <linearGradient id="${se(b.label)}" x1="0" y1="0" x2="0" y2="1">
3
+ <stop offset="0%" stop-color="${b.color}" stop-opacity="0.42" />
4
+ <stop offset="100%" stop-color="${b.color}" stop-opacity="0.07" />
5
+ </linearGradient>
6
+ `).join("")),U=P(()=>p.value.length>0&&w.value.length>0),W=P(()=>[0,Math.max(t.xLabels.length-1,0)]),A=P(()=>o.left),_=P(()=>o.top),q=P(()=>Math.max(g.value-o.left-o.right,0)),C=P(()=>Math.max(Na-o.top-o.bottom,0)),M=P(()=>_.value+C.value),R=P(()=>Math.max(q.value-a.left-a.right,0)),N=P(()=>Math.max(...p.value.map(b=>Object.values(b.values).reduce((I,D)=>I+D,0)),0)),$=P(()=>{if(i.datumIndex===null||i.pointerY===null)return null;const b=p.value[i.datumIndex];if(!b||q.value<=0||C.value<=0)return null;const I=t.xLabels.length<=1?0:i.datumIndex/(t.xLabels.length-1),D=A.value+a.left+I*R.value,h=ht(i.pointerY,_.value,M.value),te=(C.value<=0?0:1-(h-_.value)/C.value)*N.value;return{x:D,xLabel:b.label,y:h,yLabel:he(te)}}),ae=P(()=>{if(t.tickIndexes&&t.tickIndexes.length>0)return t.tickIndexes;const b=t.xLabels.length,I=b>12?5:1;return t.xLabels.map((D,h)=>h).filter(D=>D===0||D===b-1||D%I===0)});function ve(b){return b?.index??0}function be(b,I){const D=w.value[I];return D?`url(#${se(D.label)})`:"#2563eb"}function ge(b,I){return w.value[I]?.color??"#2563eb"}function G(b,I){return w.value[I]?.color??"#2563eb"}function De(b){return b instanceof Date?"":y.value[b]??""}function we(b){return b instanceof Date?"":he(b)}function Be(b){if(!b)return"";const I=w.value.map(D=>({...D,value:b.values[D.label]??0})).sort((D,h)=>h.value-D.value);return`
7
+ <div class="grid min-w-48 gap-2 rounded-md border bg-background px-3 py-2 text-xs shadow-lg">
8
+ <div class="font-medium text-foreground">${yt(b.label)}</div>
9
+ <div class="grid gap-1 text-muted-foreground">
10
+ ${I.map(D=>`
11
+ <div class="flex items-center justify-between gap-4">
12
+ <span class="flex min-w-0 items-center gap-2">
13
+ <span class="size-2 shrink-0 rounded-sm" style="background-color: ${D.color}"></span>
14
+ <span class="truncate">${yt(D.label)}</span>
15
+ </span>
16
+ <span class="font-mono font-medium text-foreground">${he(D.value)}</span>
17
+ </div>
18
+ `).join("")}
19
+ </div>
20
+ </div>
21
+ `}function ce(b){const I=d.value?.getBoundingClientRect();if(!I)return;const D=b.clientX-I.left,h=b.clientY-I.top,z=A.value+q.value,te=A.value+a.left,Y=z-a.right;if(D<A.value||D>z||h<_.value||h>M.value||R.value<=0||t.xLabels.length===0){Z();return}const oe=ht((D-te)/Math.max(Y-te,1),0,1),Re=t.xLabels.length<=1?0:Math.round(oe*(t.xLabels.length-1));i.datumIndex=Re,i.pointerY=h}function Z(){i.datumIndex=null,i.pointerY=null}function Se(b,I,D){const h=new Date(b);if(Number.isNaN(h.getTime()))return b;const z=I===0||I===D-1;return D>=90&&!z&&h.getDate()===1?r.format(h):s.format(h)}function se(b){return`project-line-${b.replace(/[^a-z0-9]+/gi,"-").toLowerCase()}`}function xe(b){if(c.value!=="dark")return b;const I=le(b);return I!==null&&I<Ua?Fa:b}function le(b){const I=b.trim().replace(/^#/,""),D=I.length===3?I.split("").map(f=>`${f}${f}`).join(""):I;if(!/^[\da-f]{6}$/i.test(D))return null;const h=Number.parseInt(D.slice(0,2),16)/255,z=Number.parseInt(D.slice(2,4),16)/255,te=Number.parseInt(D.slice(4,6),16)/255,Y=ye(h),oe=ye(z),Re=ye(te);return .2126*Y+.7152*oe+.0722*Re}function ye(b){return b<=.03928?b/12.92:((b+.055)/1.055)**2.4}return(b,I)=>{const D=xo;return v(),F("div",$a,[H("div",{ref_key:"chartRoot",ref:d,class:"relative",onPointerleave:Z,onPointermove:ce},[m(D,{class:"h-72 w-full",config:n(S)},{default:u(()=>[m(n(_o),{"auto-margin":!1,data:n(p),height:288,margin:o,padding:a,"svg-defs":n(T),"x-domain":n(W),"y-domain":l},{default:u(()=>[m(n(bo),{color:be,"curve-type":"monotoneX",line:!0,"line-color":ge,"line-width":2,opacity:.82,x:ve,y:n(x)},null,8,["y"]),m(n(gt),{"grid-line":!1,"tick-format":De,"tick-padding":10,"tick-text-hide-overlapping":!0,"tick-text-width":56,"tick-values":n(ae),type:"x"},null,8,["tick-values"]),m(n(gt),{"num-ticks":4,"tick-format":we,type:"y"}),n(U)?(v(),k(n(wo),{key:0})):ee("",!0),n(U)?(v(),k(n(So),{key:1,color:G,template:Be,x:ve,"y-stacked":n(x)},null,8,["y-stacked"])):ee("",!0)]),_:1},8,["data","svg-defs","x-domain"])]),_:1},8,["config"]),n($)?(v(),F("div",Ra,[H("div",{class:"absolute border-l border-dashed border-border/80",style:je({height:`${n(C)}px`,left:`${n($).x}px`,top:`${n(_)}px`})},null,4),H("div",{class:"absolute border-t border-dashed border-border/80",style:je({left:`${n(A)}px`,top:`${n($).y}px`,width:`${n(q)}px`})},null,4),H("div",{class:"absolute rounded-sm bg-foreground px-2 py-1 text-[11px] font-medium text-background shadow-sm",style:je({left:`${n($).x}px`,top:`${n(M)+6}px`,transform:"translateX(-50%)"})},O(n($).xLabel),5),H("div",{class:"absolute rounded-sm bg-foreground px-2 py-1 text-[11px] font-medium text-background shadow-sm",style:je({left:`${Math.max(n(A)-8,0)}px`,top:`${n($).y}px`,transform:"translate(-100%, -50%)"})},O(n($).yLabel),5)])):ee("",!0)],544),H("div",Oa,[(v(!0),F(ne,null,ie(n(w),h=>(v(),F("div",{key:h.label,class:"flex items-center gap-2"},[H("span",{class:"size-2.5 rounded-sm",style:je({backgroundColor:h.color})},null,4),H("span",La,O(h.label),1),H("span",ja,O(n(he)(h.total)),1)]))),128))])])}}}),za=Object.assign(Va,{__name:"DashboardProjectLineChart"}),Bt=["#2563eb","#f97316","#0891b2","#7c3aed","#16a34a","#dc2626","#64748b"],ao=Go,mt=Ko.map(e=>({...ao[e],value:e})),Ha=Yo.reduce((e,t)=>(e[t]={...ao[t],value:t},e),{}),Wa=mt.reduce((e,t)=>(e[t.value]=t,e),{}),Ka=[{label:"All",value:"all"},...mt];function qt(e){return Wa[e]??Ha[e]}function st(e){const t=new Date;return Array.from({length:e},(o,a)=>{const l=new Date(t);return l.setHours(0,0,0,0),l.setDate(t.getDate()-(e-1-a)),Rt(Ot(l))})}function Ga(e){return e.map((t,o)=>({date:new Date(t),index:o})).filter(({date:t,index:o})=>o===0||o===e.length-1?!0:Number.isFinite(t.getTime())&&t.getUTCDate()===1).map(({index:t})=>t)}function Ya(e){const t=lo(e);return[{detail:`${J(t.totalTokens)} total tokens in this project`,icon:"solar:cpu-line-duotone",name:"Total Tokens",trend:"project total",trendTone:"neutral",value:he(t.totalTokens)},...ro(t,{sessionDetail:`${J(t.sessions)} sessions across all tools`,sessionIcon:"lucide:messages-square",sessionTrend:"all tools",totalSpendIcon:"lucide:wallet"})]}function Xa(e,t){const o=lo(e),a=io(e),[l="",c=""]=st(2).slice().reverse(),s=t.find(w=>w.date===l),r=t.find(w=>w.date===c),d=a.get(l)??0,g=a.get(c)??0,i=_t(s?.totalTokens??0,r?.totalTokens??0,he),p=_t(s?.costUSD??0,r?.costUSD??0,pe),y=To(d,g);return[{detail:`${J(s?.totalTokens??0)} tokens used today`,icon:"solar:cpu-line-duotone",name:"Today Tokens",trend:i.trend,trendTone:i.trendTone,value:he(s?.totalTokens??0)},{detail:`${pe(s?.costUSD??0)} spent today`,icon:"lucide:wallet",name:"Today Spend",trend:p.trend,trendTone:p.trendTone,value:pe(s?.costUSD??0)},{detail:`${J(d)} sessions recorded today`,icon:"lucide:messages-square",name:"Today Sessions",trend:y.label,trendTone:y.tone,value:String(d)},...ro(o,{sessionDetail:`${J(o.sessions)} total sessions for this platform`,sessionIcon:"lucide:list-checks",sessionTrend:"project total",totalSpendIcon:"lucide:receipt-text"})]}function Mt(e,t){const o=new Set(t),a=e.filter(r=>o.has(r.date)),l=new Map(a.map(r=>[r.date,r.models])),s=ko(a.flatMap(r=>Object.keys(r.models))).map(r=>({model:r,totalTokens:a.reduce((d,g)=>d+(g.models[r]?.totalTokens??0),0)})).sort((r,d)=>d.totalTokens-r.totalTokens||r.model.localeCompare(d.model)).map(r=>r.model).map((r,d)=>({color:Bt[d%Bt.length],label:r,points:t.map(g=>l.get(g)?.[r]?.totalTokens??0)}));return{labels:t,series:s}}function Ja(e,t){const o=io(t);return e.map(a=>({cacheTokens:J(a.cachedInputTokens),cost:pe(a.costUSD),inputTokens:J(a.inputTokens),label:a.date,models:Object.keys(a.models).sort((l,c)=>l.localeCompare(c)).join(", ")||"-",outputTokens:J(a.outputTokens),reasoningTokens:J(a.reasoningOutputTokens),sessions:String(o.get(a.date)??0),tokens:J(a.totalTokens)}))}function so(e,t){return{cacheTokens:J(e.cachedInputTokens),cost:pe(e.costUSD),duration:e.duration||"-",id:`${t}:${e.sessionId}`,inputTokens:J(e.inputTokens),model:e.models?.join(", ")||e.model||"unknown",outputTokens:J(e.outputTokens),platform:t,reasoningTokens:J(e.reasoningOutputTokens),sessionId:e.sessionId,startedAt:uo(e.startedAt,Po),threadName:e.threadName,tokens:J(e.tokenTotal)}}function Za(e,t){return e.map(o=>so(o,t))}function lo(e){return e.reduce((t,o)=>({cachedInputTokens:t.cachedInputTokens+o.cachedInputTokens,costUSD:t.costUSD+o.costUSD,inputTokens:t.inputTokens+o.inputTokens,outputTokens:t.outputTokens+o.outputTokens,reasoningOutputTokens:t.reasoningOutputTokens+o.reasoningOutputTokens,sessions:t.sessions+1,totalTokens:t.totalTokens+o.tokenTotal}),{cachedInputTokens:0,costUSD:0,inputTokens:0,outputTokens:0,reasoningOutputTokens:0,sessions:0,totalTokens:0})}function ro(e,t){return[{detail:`${pe(e.costUSD)} total project spend`,icon:t.totalSpendIcon,name:"Total Spend",trend:"all time",trendTone:"neutral",value:pe(e.costUSD)},{detail:t.sessionDetail,icon:t.sessionIcon,name:"Sessions",trend:t.sessionTrend,trendTone:"neutral",value:String(e.sessions)},{detail:`${J(e.cachedInputTokens)} of ${J(e.inputTokens)} input tokens were served from cache`,icon:"lucide:database-zap",name:"Cache Hit Rate",trend:`${he(e.cachedInputTokens)} cached`,trendTone:"neutral",value:Co(e.inputTokens>0?e.cachedInputTokens/e.inputTokens:0)},{detail:`${pe(e.costUSD)} across ${J(e.sessions)} sessions`,icon:"lucide:circle-dollar-sign",name:"Avg Session Cost",trend:"per session",trendTone:"neutral",value:pe(e.sessions>0?e.costUSD/e.sessions:0)}]}function Qa(e){return e.reduce((t,o)=>({costUSD:t.costUSD+o.costUSD,sessions:t.sessions+1,totalTokens:t.totalTokens+o.tokenTotal}),{costUSD:0,sessions:0,totalTokens:0})}function io(e){return e.reduce((t,o)=>{const a=uo(o.startedAt,l=>Rt(Ot(l)),"");return a&&t.set(a,(t.get(a)??0)+1),t},new Map)}function uo(e,t,o="-"){if(!e)return o;const a=new Date(e);return Number.isFinite(a.getTime())?t(a):o}const es={class:"flex items-center gap-2"},ts=j({__name:"ProjectSessionTable",props:{items:{},pageSize:{default:10}},setup(e){const t=e,o=Pe(1),a=P(()=>Math.max(1,Math.ceil(t.items.length/t.pageSize))),l=P(()=>{const s=(Math.min(o.value,a.value)-1)*t.pageSize;return t.items.slice(s,s+t.pageSize)});return me(()=>t.items,()=>{o.value=1}),(c,s)=>{const r=Ut,d=jt,g=Lt,i=Nt,p=Gt,y=Kt,w=Ft,x=Vt,S=zt;return v(),F("div",null,[m(x,null,{default:u(()=>[m(g,null,{default:u(()=>[m(d,null,{default:u(()=>[m(r,null,{default:u(()=>[...s[1]||(s[1]=[B("Session ID",-1)])]),_:1}),m(r,null,{default:u(()=>[...s[2]||(s[2]=[B("Tool",-1)])]),_:1}),m(r,null,{default:u(()=>[...s[3]||(s[3]=[B("Model",-1)])]),_:1}),m(r,null,{default:u(()=>[...s[4]||(s[4]=[B("Started",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[5]||(s[5]=[B(" Duration ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[6]||(s[6]=[B(" Input ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[7]||(s[7]=[B(" Output ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[8]||(s[8]=[B(" Reasoning ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[9]||(s[9]=[B(" Cache Read ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[10]||(s[10]=[B(" Tokens ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[11]||(s[11]=[B(" Cost ",-1)])]),_:1})]),_:1})]),_:1}),m(w,null,{default:u(()=>[(v(!0),F(ne,null,ie(n(l),T=>(v(),k(d,{key:T.id},{default:u(()=>[m(i,{class:"max-w-72 truncate font-medium font-mono text-xs",title:T.threadName?`${T.sessionId} (${T.threadName})`:T.sessionId,translate:"no"},{default:u(()=>[B(O(T.sessionId),1)]),_:2},1032,["title"]),m(i,null,{default:u(()=>[H("div",es,[m(p,{name:n(qt)(T.platform).aiIcon},null,8,["name"]),H("span",null,O(n(qt)(T.platform).label),1)])]),_:2},1024),m(i,{class:"max-w-56 truncate",translate:"no"},{default:u(()=>[B(O(T.model),1)]),_:2},1024),m(i,{class:"whitespace-nowrap"},{default:u(()=>[B(O(T.startedAt),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.duration),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.inputTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.outputTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.reasoningTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.cacheTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.tokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.cost),1)]),_:2},1024)]),_:2},1024))),128)),e.items.length===0?(v(),k(y,{key:0,colspan:11},{default:u(()=>[...s[12]||(s[12]=[B(" No sessions found. ",-1)])]),_:1})):ee("",!0)]),_:1})]),_:1}),e.items.length>e.pageSize?(v(),k(S,{key:0,page:n(o),"onUpdate:page":s[0]||(s[0]=T=>Ye(o)?o.value=T:null),"page-count":n(a),"page-size":e.pageSize,total:e.items.length},null,8,["page","page-count","page-size","total"])):ee("",!0)])}}}),os=Object.assign(ts,{__name:"DashboardProjectSessionTable"}),ns=j({__name:"ProjectTokenUsageTable",props:{items:{},pageSize:{default:10}},setup(e){const t=e,o=Pe(1),a=P(()=>Math.max(1,Math.ceil(t.items.length/t.pageSize))),l=P(()=>{const s=(Math.min(o.value,a.value)-1)*t.pageSize;return t.items.slice(s,s+t.pageSize)});return me(()=>t.items,()=>{o.value=1}),(c,s)=>{const r=Ut,d=jt,g=Lt,i=Nt,p=Kt,y=Ft,w=Vt,x=zt;return v(),F("div",null,[m(w,null,{default:u(()=>[m(g,null,{default:u(()=>[m(d,null,{default:u(()=>[m(r,null,{default:u(()=>[...s[1]||(s[1]=[B("Period",-1)])]),_:1}),m(r,null,{default:u(()=>[...s[2]||(s[2]=[B("Models",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[3]||(s[3]=[B(" Sessions ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[4]||(s[4]=[B(" Input ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[5]||(s[5]=[B(" Output ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[6]||(s[6]=[B(" Reasoning ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[7]||(s[7]=[B(" Cache Read ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[8]||(s[8]=[B(" Total Tokens ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[9]||(s[9]=[B(" Cost ",-1)])]),_:1})]),_:1})]),_:1}),m(y,null,{default:u(()=>[(v(!0),F(ne,null,ie(n(l),S=>(v(),k(d,{key:S.label},{default:u(()=>[m(i,{class:"max-w-72 truncate font-medium"},{default:u(()=>[B(O(S.label),1)]),_:2},1024),m(i,{class:"max-w-56 truncate",translate:"no"},{default:u(()=>[B(O(S.models),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.sessions),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.inputTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.outputTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.reasoningTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.cacheTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.tokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.cost),1)]),_:2},1024)]),_:2},1024))),128)),e.items.length===0?(v(),k(p,{key:0,colspan:9},{default:u(()=>[...s[10]||(s[10]=[B(" No token usage found. ",-1)])]),_:1})):ee("",!0)]),_:1})]),_:1}),e.items.length>e.pageSize?(v(),k(x,{key:0,page:n(o),"onUpdate:page":s[0]||(s[0]=S=>Ye(o)?o.value=S:null),"page-count":n(a),"page-size":e.pageSize,total:e.items.length},null,8,["page","page-count","page-size","total"])):ee("",!0)])}}}),as=Object.assign(ns,{__name:"DashboardProjectTokenUsageTable"}),Te=["daily_trend","model_usage","session_list","token_usage"],ss=30,ls=365,rs=180,is=600,us=45e3,At=Ka,qe=mt,ds={dailyRows:[],dailyTokenUsage:[]},cs={dailyTokenUsage:[],monthlyModelUsage:[]},ps={dailyRows:[],monthlyRows:[],sessionRows:[],weeklyRows:[]},fs={sessionRows:[],sessionUsage:[],sessions:[]},ms={daily_trend:ds,model_usage:cs,session_list:fs,token_usage:ps};function vs(){const e=Pe(""),t=Pe("all"),o=Pe(!1),a=Pe([]),l=Pe(""),c=Object.fromEntries(Te.map(f=>[f,Pe(null)])),s=ut(Object.fromEntries(Te.map(f=>[f,!1])));let r=0,d=0;const g=new Map,i=P(()=>`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`),{open:p,send:y,status:w}=Xo(i,{immediate:!1,autoReconnect:{delay:1e3,retries:3},onConnected(){Z()},onDisconnected(){b(new Error("WebSocket connection closed."))},onError(){l.value="WebSocket connection error."},onMessage(f,E){xe(E.data)}}),x=P(()=>a.value.map(f=>({id:f.label,name:f.label,type:f.type}))),S=P(()=>Te.some(f=>s[f])),T=P(()=>o.value||S.value||x.value.length===0),U=P(()=>te("session_list")),W=P(()=>qe.flatMap(f=>Y("session_list",f.value).sessions).sort((f,E)=>Date.parse(E.startedAt)-Date.parse(f.startedAt))),A=P(()=>bt(qe.flatMap(f=>Y("daily_trend",f.value).dailyTokenUsage))),_=P(()=>bt(qe.flatMap(f=>Y("model_usage",f.value).dailyTokenUsage))),q=P(()=>Object.fromEntries(At.map(f=>{const E=Qa(f.value==="all"?W.value:Y("session_list",f.value).sessions);return[f.value,{cost:pe(E.costUSD),label:f.label,sessions:String(E.sessions),tokens:he(E.totalTokens)}]}))),C=P(()=>q.value[t.value]),M=P(()=>[{label:"Tokens",value:C.value.tokens},{label:"Spend",value:C.value.cost},{label:"Sessions",value:C.value.sessions}]),R=P(()=>st(ss)),N=P(()=>st(ls)),$=P(()=>Ga(N.value)),ae=P(()=>Ya(W.value)),ve=P(()=>Ja(A.value,W.value)),be=P(()=>qe.flatMap(f=>Y("session_list",f.value).sessions.map(E=>({platform:f.value,session:E}))).sort((f,E)=>Date.parse(E.session.startedAt)-Date.parse(f.session.startedAt)).map(({platform:f,session:E})=>so(E,f))),ge=P(()=>R.value),G=P(()=>ge.value),De=P(()=>qe.map(f=>({color:f.color,label:f.label,points:Re(f.value,ge.value)}))),we=P(()=>Mt(_.value,R.value)),Be=P(()=>Object.fromEntries(qe.map(f=>{const E=N.value,X=Y("daily_trend",f.value),K=Y("model_usage",f.value),ke=Y("token_usage",f.value),Ze=Y("session_list",f.value),Oe=Mt(K.dailyTokenUsage,E);return[f.value,{modelLabels:Oe.labels,modelSeries:Oe.series,modelTickIndexes:$.value,dayRows:ke.dailyRows,monthRows:ke.monthlyRows,overviewCards:Xa(Ze.sessions,X.dailyTokenUsage),sessionRows:ke.sessionRows,sessionTableRows:Za(Ze.sessions,f.value),trendLabels:E,trendSeries:[{color:f.color,label:f.label,points:Re(f.value,E)}],trendTickIndexes:$.value,trendTooltipLabels:E,weekRows:ke.weeklyRows}]})));Ie(()=>{p()}),Zo(()=>{b(new Error("Project dashboard disposed."))}),me(e,f=>{ce(),f||h()}),Jo(e,f=>{f&&Se(f)},{debounce:rs,maxWait:is});function ce(){r+=1,h(),l.value=""}async function Z(){o.value=!0,l.value="";try{const f=await se({type:"project"}),E=f.find(X=>X.label===e.value);a.value=f,e.value=E?.label??f[0]?.label??""}catch(f){l.value=f instanceof Error?f.message:"Failed to load project catalog."}finally{o.value=!1}}async function Se(f){const E=x.value.find(K=>K.id===f);if(!E){h();return}const X=r+1;r=X,h();for(const K of Te)s[K]=!0;try{const K=await se({modules:[...Te],project:E.id,type:"project_data"});if(X!==r||K.label!==E.id)return;z(K)}catch(K){if(X!==r)return;l.value=K instanceof Error?K.message:"Failed to load project module."}finally{if(X===r)for(const K of Te)s[K]=!1}}function se(f){if(w.value!=="OPEN")return Promise.reject(new Error("WebSocket is not connected."));const E=ye();return new Promise((X,K)=>{const ke=window.setTimeout(()=>{g.delete(E),K(new Error("WebSocket request timed out."))},us);g.set(E,{reject:Oe=>{window.clearTimeout(ke),K(Oe)},requestId:E,resolve:Oe=>{window.clearTimeout(ke),X(Oe)}}),y(JSON.stringify({...f,requestId:E}))||(window.clearTimeout(ke),g.delete(E),K(new Error("Failed to send WebSocket request.")))})}function xe(f){if(typeof f!="string")return;const E=le(f);if(!E)return;if(I(E)){b(new Error(E.message));return}if(!D(E))return;const X=g.get(E.requestId);X&&(g.delete(E.requestId),X.resolve(E.data))}function le(f){try{return JSON.parse(f)}catch{return null}}function ye(){return d+=1,`${Date.now()}-${d}`}function b(f){for(const E of g.values())E.reject(f);g.clear()}function I(f){if(!f||typeof f!="object")return!1;const E=f;return E.type==="error"&&typeof E.message=="string"}function D(f){if(!f||typeof f!="object")return!1;const E=f;return typeof E.requestId=="string"&&"data"in E}function h(){for(const f of Te)oe(f).value=null,s[f]=!1}function z(f){for(const E of Te){const X=f.modules[E];X&&(oe(E).value=X)}}function te(f){return oe(f).value!==null}function Y(f,E){return oe(f).value?.[E]??ms[f]}function oe(f){return c[f]}function Re(f,E){const X=new Map(Y("daily_trend",f).dailyTokenUsage.map(K=>[K.date,K.totalTokens]));return E.map(K=>X.get(K)??0)}return{activeScopeItems:M,activeTab:t,allDailyUsageRows:ve,allModelChart:we,allOverviewCards:ae,allSessionRows:be,dailySeries:De,dailyTooltipLabels:G,dailyTrendLabels:ge,isModuleLoaded:te,isProjectModuleLoading:S,isProjectSelectDisabled:T,isScopeReady:U,platformTabs:qe,platformViews:Be,projects:x,selectedProjectId:e,tabSummaries:q,tabs:At,websocketError:l}}const gs={class:"relative flex flex-col border-b z-10 pb-5 mb-5"},ys={class:"container mx-auto flex flex-col gap-3"},hs={class:"relative flex justify-between items-stretch"},_s={key:0,class:"flex items-center gap-2 text-xs text-muted-foreground"},bs={class:"flex justify-between items-center"},ws={class:"min-w-0 flex-1"},Ss={class:"flex flex-col items-start gap-1.5"},xs={class:"w-full flex justify-between items-center"},ks={class:"truncate text-sm font-medium"},Ts={key:1,class:"block truncate text-xs text-muted-foreground tabular-nums"},Cs={class:"grid grid-cols-3 gap-4"},Ps={key:1,class:"truncate text-sm font-semibold tabular-nums"},Is={class:"truncate text-xs font-medium uppercase tracking-wide text-muted-foreground"},Es={key:0,class:"text-xs text-destructive"},Ds={key:1,class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-5 md:col-span-12"},Bs={class:"md:col-span-12"},qs={key:0,class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-4 xl:grid-cols-7"},Ms={key:1,class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-4 xl:grid-cols-7"},Us=j({__name:"project",setup(e){const{activeScopeItems:t,activeTab:o,allDailyUsageRows:a,allModelChart:l,allOverviewCards:c,allSessionRows:s,dailySeries:r,dailyTooltipLabels:d,dailyTrendLabels:g,isModuleLoaded:i,isProjectModuleLoading:p,isProjectSelectDisabled:y,isScopeReady:w,platformTabs:x,platformViews:S,projects:T,selectedProjectId:U,tabSummaries:W,tabs:A,websocketError:_}=vs();return(q,C)=>{const M=Ma,R=qa,N=Ea,$=ba,ae=_a,ve=Aa,be=rn,ge=Gt,G=ln,De=on,we=tn,Be=Do,ce=za,Z=Bo,Se=os,se=as,xe=Eo,le=nn,ye=qo,b=an,I=Io,D=en;return v(),k(D,{modelValue:n(o),"onUpdate:modelValue":C[1]||(C[1]=h=>Ye(o)?o.value=h:null)},{default:u(()=>[H("div",gs,[H("div",ys,[H("div",hs,[H("div",{class:ze(n(fe)("flex items-center gap-4","before:content-[' '] before:absolute","before:w-1 before:h-full","before:rounded-full","before:bg-amber-500"))},[m(ae,{modelValue:n(U),"onUpdate:modelValue":C[0]||(C[0]=h=>Ye(U)?U.value=h:null),disabled:n(y)},{default:u(()=>[m(R,{"aria-label":"Select Project",class:ze(n(fe)("bg-transparent dark:bg-transparent! border-0 px-0 py-0 font-semibold","tracking-tight shadow-none focus-visible:ring-0","ml-4"))},{default:u(()=>[m(M,{placeholder:"Choose project"})]),_:1},8,["class"]),m($,null,{default:u(()=>[(v(!0),F(ne,null,ie(n(T),h=>(v(),k(N,{key:h.id,value:h.id},{default:u(()=>[B(O(h.name),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue","disabled"]),n(p)?(v(),F("div",_s,[m(ve,{class:"size-3.5"}),C[2]||(C[2]=H("span",null,"Switching project...",-1))])):ee("",!0)],2)]),H("div",bs,[m(we,{"aria-label":"Project platform scope",class:"flex h-auto justify-start bg-transparent gap-5"},{default:u(()=>[(v(!0),F(ne,null,ie(n(A),h=>(v(),k(De,{key:h.value,"aria-label":h.label,value:h.value,class:ze(["flex justify-start gap-3 shadow-none",n(fe)("data-[state=active]:border","data-[state=active]:border-dashed","data-[state=active]:border-amber-500","data-[state=active]:bg-transparent")])},{default:u(()=>[h.value==="all"?(v(),k(be,{key:0,"aria-hidden":"true",class:"size-4 text-muted-foreground",mode:"svg",name:"lucide:layout-dashboard"})):(v(),k(ge,{key:1,class:"flex items-center [&_svg]:size-5!",name:h.aiIcon},null,8,["name"])),H("div",ws,[H("div",Ss,[H("div",xs,[H("span",ks,O(h.label),1)]),n(w)?(v(),F("span",Ts,O(n(W)[h.value].tokens)+" tokens ",1)):(v(),k(G,{key:0,class:"h-3 w-20"}))])])]),_:2},1032,["aria-label","value","class"]))),128))]),_:1}),H("div",Cs,[(v(!0),F(ne,null,ie(n(t),h=>(v(),F("div",{key:h.label,class:"flex flex-col items-start gap-3 rounded-md border border-dotted px-3 py-2"},[n(w)?(v(),F("p",Ps,O(h.value),1)):(v(),k(G,{key:0,class:"h-5 w-16"})),H("p",Is,O(h.label),1)]))),128))])]),n(_)?(v(),F("p",Es,O(n(_)),1)):ee("",!0)])]),m(I,null,{default:u(()=>[m(le,{class:"m-0",value:"all"},{default:u(()=>[m(xe,null,{default:u(()=>[n(i)("session_list")?(v(),k(Be,{key:0,cards:n(c),class:"md:col-span-12 lg:grid-cols-5"},null,8,["cards"])):(v(),F("div",Ds,[(v(),F(ne,null,ie(5,h=>m(G,{key:h,class:"h-28 rounded-md"})),64))])),m(Z,{class:"md:col-span-12",description:"Recent usage by provider",icon:"lucide:activity",title:"Daily Token Trend"},{default:u(()=>[n(i)("model_usage")?(v(),k(ce,{key:0,series:n(r),"tooltip-labels":n(d),"x-labels":n(g)},null,8,["series","tooltip-labels","x-labels"])):(v(),k(G,{key:1,class:"h-80 w-full rounded-md"}))]),_:1}),m(Z,{class:"md:col-span-12",description:"Usage by model",icon:"solar:cpu-line-duotone",title:"Model Usage"},{default:u(()=>[n(i)("model_usage")?(v(),k(ce,{key:0,series:n(l).series,"tooltip-labels":n(l).labels,"x-labels":n(l).labels},null,8,["series","tooltip-labels","x-labels"])):(v(),k(G,{key:1,class:"h-80 w-full rounded-md"}))]),_:1}),m(Z,{class:"md:col-span-12",description:"Sessions in this project",icon:"lucide:messages-square",title:"Session Statistics"},{default:u(()=>[n(i)("session_list")?(v(),k(Se,{key:0,items:n(s)},null,8,["items"])):(v(),k(G,{key:1,class:"h-72 w-full rounded-md"}))]),_:1}),m(Z,{class:"md:col-span-12",description:"Daily model activity by token type, cache reads, total usage, and cost",icon:"lucide:calendar-days",title:"Daily Token Usage"},{default:u(()=>[n(i)("daily_trend")?(v(),k(se,{key:0,items:n(a)},null,8,["items"])):(v(),k(G,{key:1,class:"h-72 w-full rounded-md"}))]),_:1})]),_:1})]),_:1}),(v(!0),F(ne,null,ie(n(x),h=>(v(),k(le,{key:h.value,value:h.value,class:"m-0"},{default:u(()=>[m(xe,null,{default:u(()=>[H("div",Bs,[n(i)("daily_trend")&&n(i)("session_list")?(v(),F("div",qs,[(v(!0),F(ne,null,ie(n(S)[h.value].overviewCards,z=>(v(),k(ye,{key:z.name,detail:z.detail,icon:z.icon,name:z.name,trend:z.trend,"trend-tone":z.trendTone,value:z.value},null,8,["detail","icon","name","trend","trend-tone","value"]))),128))])):(v(),F("div",Ms,[(v(),F(ne,null,ie(7,z=>m(G,{key:z,class:"h-28 rounded-md"})),64))]))]),m(Z,{description:`${h.label} token usage within the current project`,class:"md:col-span-12",icon:"lucide:chart-area",title:"Token Trend"},{default:u(()=>[n(i)("daily_trend")?(v(),k(ce,{key:0,series:n(S)[h.value].trendSeries,"tick-indexes":n(S)[h.value].trendTickIndexes,"tooltip-labels":n(S)[h.value].trendTooltipLabels,"x-labels":n(S)[h.value].trendLabels},null,8,["series","tick-indexes","tooltip-labels","x-labels"])):(v(),k(G,{key:1,class:"h-80 w-full rounded-md"}))]),_:2},1032,["description"]),m(Z,{description:`${h.label} model trend within the current project`,class:"md:col-span-12",icon:"solar:cpu-line-duotone",title:"Model Usage Trend"},{default:u(()=>[n(i)("daily_trend")?(v(),k(ce,{key:0,series:n(S)[h.value].modelSeries,"tick-indexes":n(S)[h.value].modelTickIndexes,"tooltip-labels":n(S)[h.value].modelLabels,"x-labels":n(S)[h.value].modelLabels},null,8,["series","tick-indexes","tooltip-labels","x-labels"])):(v(),k(G,{key:1,class:"h-80 w-full rounded-md"}))]),_:2},1032,["description"]),n(i)("token_usage")&&n(i)("session_list")?(v(),k(b,{key:0,class:"md:col-span-12","daily-items":n(S)[h.value].dayRows,"monthly-items":n(S)[h.value].monthRows,"product-name":h.label,"session-items":n(S)[h.value].sessionRows,"weekly-items":n(S)[h.value].weekRows},null,8,["daily-items","monthly-items","product-name","session-items","weekly-items"])):(v(),k(G,{key:1,class:"h-72 rounded-md md:col-span-12"})),m(Z,{description:`${h.label} sessions in the current project`,class:"md:col-span-12",icon:"lucide:list-tree",title:"Session List"},{default:u(()=>[n(i)("session_list")?(v(),k(Se,{key:0,items:n(S)[h.value].sessionTableRows},null,8,["items"])):(v(),k(G,{key:1,class:"h-72 w-full rounded-md"}))]),_:2},1032,["description"])]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"])}}});export{Us as default};