usage-board 2.1.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/index.mjs +10 -4
  2. package/dist/public/_nuxt/{chy2QJx0.js → 7Dy4NLP8.js} +32 -32
  3. package/dist/public/_nuxt/B-VlGWDb.js +21 -0
  4. package/dist/public/_nuxt/{BeEwECnn.js → Be3rizqy.js} +1 -1
  5. package/dist/public/_nuxt/{15CW3D68.js → C0azgqnZ.js} +1 -1
  6. package/dist/public/_nuxt/{B6G-s9D-.js → CMNdiQCa.js} +1 -1
  7. package/dist/public/_nuxt/CPuXQJE_.js +1 -0
  8. package/dist/public/_nuxt/DenksPSi.js +119 -0
  9. package/dist/public/_nuxt/Dkya5WaL.js +9 -0
  10. package/dist/public/_nuxt/HN9OZyaQ.js +25 -0
  11. package/dist/public/_nuxt/{Bu4SpN_a.js → JtK-nXxy.js} +1 -1
  12. package/dist/public/_nuxt/builds/latest.json +1 -1
  13. package/dist/public/_nuxt/builds/meta/37e8bb21-a086-45bf-93dc-47eeeada7299.json +1 -0
  14. package/dist/public/_nuxt/{BeygfM9p.js → y3weNNd-.js} +2 -2
  15. package/dist/server/chunks/_/error-500.mjs +8 -4
  16. package/dist/server/chunks/_/shared.cjs.prod.mjs +1 -1
  17. package/dist/server/chunks/build/client.precomputed.mjs +1 -1
  18. package/dist/server/chunks/nitro/nitro.mjs +8218 -2844
  19. package/dist/server/chunks/routes/api/payload.json.mjs +11 -626
  20. package/dist/server/chunks/routes/api/projects/_project/modules.get.mjs +36 -0
  21. package/dist/server/chunks/routes/api/projects/catalog.get.mjs +26 -0
  22. package/dist/server/chunks/routes/renderer.mjs +9 -5
  23. package/dist/server/chunks/routes/ws.mjs +29 -971
  24. package/dist/server/index.mjs +9 -5
  25. package/package.json +7 -6
  26. package/dist/public/_nuxt/C6ydMk2z.js +0 -25
  27. package/dist/public/_nuxt/Dn8cXZx3.js +0 -9
  28. package/dist/public/_nuxt/DysUC14A.js +0 -119
  29. package/dist/public/_nuxt/KLhV325n.js +0 -1
  30. package/dist/public/_nuxt/builds/meta/ac4b25d6-d6eb-44bb-8c5b-b1d6f651c196.json +0 -1
  31. package/dist/public/_nuxt/pmnAmEjb.js +0 -21
  32. package/dist/server/chunks/_/index.min.mjs +0 -348
@@ -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 yt,j as he,k as ht,l as ko,m as _t,n as To,o as J,p as pe,q as Rt,r as Ot,s as Co,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"./7Dy4NLP8.js";import{f as Mo,g as Ao,h as P,r as L,i as me,j as rt,k as $o,l as wt,m as Ro,n as Me,p as Ae,q as Oo,s as it,v as Ht,x as Lo,y as jo,z as j,A as _e,o as v,B as k,w as u,C as V,D as n,P as de,E as ut,F as Uo,G as dt,H as St,c as F,I as ee,J as ne,K as ie,L as Q,M as Xe,a as H,b as m,N as Ve,O as Fo,Q as Ie,R as No,S as je,T as ct,U as pt,V as Vo,d as B,W as zo,t as O,X as We,Y as ze,Z as fe,$ as nt,a0 as Ho,a1 as Wo,a2 as Ko,a3 as Go,a4 as Yo,a5 as Xo,a6 as Ye,a7 as Pe,a8 as Jo,a9 as Zo,aa as Qo,ab as en}from"./Dkya5WaL.js";import{i as Wt,g as ue,u as Fe,a as tn,_ as Kt,b as on,c as nn,d as an,e as sn,f as ln}from"./JtK-nXxy.js";import{_ as Gt,a as rn}from"./y3weNNd-.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]:Uo(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=tn(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(Fo(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 No(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(Vo,{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 zo(()=>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=Ho({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=Wo("chartRoot"),{width:g}=Ko(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=yt(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">${ht(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">${ht(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=yt((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=Yo,mt=Go.map(e=>({...ao[e],value:e})),Ha=Xo.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=zt,p=Gt,y=Kt,w=Ft,x=Nt,S=Vt;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=zt,p=Kt,y=Ft,w=Nt,x=Vt;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}=Jo(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()}),Qo(()=>{b(new Error("Project dashboard disposed."))}),me(e,f=>{ce(),f||h()}),Zo(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"},Ls=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=en,ge=Gt,G=rn,De=nn,we=on,Be=Do,ce=za,Z=Bo,Se=os,se=as,xe=Eo,le=an,ye=qo,b=sn,I=Io,D=ln;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{Ls as default};
@@ -1 +1 @@
1
- import{_ as o,u as s,o as a,c as i,a as t,t as r}from"./Dn8cXZx3.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},l={class:"max-w-520px text-center"},c=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return s({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(a(),i("div",u,[t("div",l,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,c),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},b=o(f,[["__scopeId","data-v-784a2264"]]);export{b as default};
1
+ import{_ as o,u as s,o as a,c as i,a as t,t as r}from"./Dkya5WaL.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},l={class:"max-w-520px text-center"},c=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return s({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(a(),i("div",u,[t("div",l,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,c),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},b=o(f,[["__scopeId","data-v-784a2264"]]);export{b as default};
@@ -1 +1 @@
1
- import{z as f,o as s,B as _,w as m,C as k,L as z,D as u,P as j,h,T as O,U as F,aD as P,aE as q,b as l,e as S,a8 as w,c as g,t as $,aC as B,a0 as M,a as c,X as V,Z as C,aa as A,aF as G,aG as R,J as N,K as D,Y as E,aH as H,aI as K,d as y,_ as U}from"./Dn8cXZx3.js";import{a as J,_ as X}from"./BeygfM9p.js";var Y=f({__name:"BaseSeparator",props:{orientation:{type:String,required:!1,default:"horizontal"},decorative:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(r){const t=r,o=["horizontal","vertical"];function e(i){return o.includes(i)}const a=h(()=>e(t.orientation)?t.orientation:"horizontal"),n=h(()=>a.value==="vertical"?t.orientation:void 0),p=h(()=>t.decorative?{role:"none"}:{"aria-orientation":n.value,role:"separator"});return(i,x)=>(s(),_(u(j),z({as:i.as,"as-child":i.asChild,"data-orientation":a.value},p.value),{default:m(()=>[k(i.$slots,"default")]),_:3},16,["as","as-child","data-orientation"]))}}),Z=Y,Q=f({__name:"Separator",props:{orientation:{type:String,required:!1,default:"horizontal"},decorative:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(r){const t=r;return(o,e)=>(s(),_(Z,O(F(t)),{default:m(()=>[k(o.$slots,"default")]),_:3},16))}}),W=Q;const ee={key:1,class:"text-muted-foreground w-8 text-xs tabular-nums"},te=f({__name:"GitHubLink",setup(r){const t=P(),{data:o,pending:e}=q(`https://ungh.cc/repos/${t.github.repo}`,"$5jzG0y0vUx"),a=h(()=>{const n=o.value?.repo?.stars;return n?n>=1e3?`${(n/1e3).toFixed(1)}k`:n.toLocaleString():"∞"});return(n,p)=>{const i=w,x=J,v=S,b=B;return s(),_(b,{"as-child":"",class:"h-8 shadow-none",size:"sm",variant:"ghost"},{default:m(()=>[l(v,{to:u(t).github.link,rel:"noreferrer",target:"_blank"},{default:m(()=>[l(i,{name:"mdi:github"}),u(e)?(s(),_(x,{key:0,class:"h-4 w-8"})):(s(),g("span",ee,$(u(a)),1))]),_:1},8,["to"])]),_:1})}}}),oe=Object.assign(te,{__name:"GitHubLink"}),ne=f({__name:"ModeSwitcher",setup(r){const t=M({selector:"html",attribute:"class",storageKey:"app-color-mode",onChanged(o,e){const a=document,n=window.matchMedia("(prefers-reduced-motion: reduce)").matches;if(!a.startViewTransition||n){e(o);return}a.startViewTransition(()=>{e(o)})}});return(o,e)=>{const a=w,n=B;return s(),_(n,{variant:"ghost",size:"icon",class:"group/toggle extend-touch-target size-8",title:"Toggle theme",onClick:e[0]||(e[0]=p=>t.value=u(t)==="light"?"dark":"light")},{default:m(()=>[u(t)==="dark"?(s(),_(a,{key:0,name:"lucide:moon",mode:"svg"})):(s(),_(a,{key:1,name:"lucide:sun",mode:"svg"})),e[1]||(e[1]=c("span",{class:"sr-only"},"Toggle theme",-1))]),_:1})}}}),ae=Object.assign(ne,{__name:"ModeSwitcher"}),se=f({__name:"Separator",props:{orientation:{default:"horizontal"},decorative:{type:Boolean,default:!0},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(r){const t=r,o=V(t,"class");return(e,a)=>(s(),_(u(W),z({"data-slot":"separator"},u(o),{class:u(C)("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",t.class)}),null,16,["class"]))}}),re={class:"flex flex-col border-b z-10 mb-5"},ie={class:"container mx-auto flex items-center justify-between gap-3"},ce={class:"flex flex-col h-14"},le={class:"flex items-center gap-4 h-full"},_e={class:"flex items-center"},ue={class:"container mx-auto flex items-center justify-between pt-3 pb-1"},pe={class:"capitalize text-xs font-medium font-mono"},de=f({name:"SiteNavbar",__name:"SiteNavbar",setup(r){const t=[{icon:"solar:home-bold-duotone",iconType:"icon",label:"home",link:"/"},...H,{icon:"ri:apps-ai-line",iconType:"icon",label:"Project",link:"/project"}],o=A(),e=h(()=>o.path);function a(n){const p=e.value===n.link,i=n.iconFillClass??(n.iconType==="ai"?"[&_svg]:fill-foreground/50":"");return C("relative flex flex-col items-center gap-1.5",p?["after:content-[''] after:absolute after:w-full after:h-px after:bg-amber-500","after:-bottom-1 after:rounded-2xl"]:["text-foreground/50",i])}return(n,p)=>{const i=R,x=oe,v=ae,b=se,T=w,I=X,L=S;return s(),g("header",re,[c("div",ie,[c("div",ce,[c("div",le,[p[0]||(p[0]=c("img",{alt:"",class:"size-8",src:G},null,-1)),l(i,{class:"w-48 fill-foreground"})])]),c("div",_e,[l(x),l(v)])]),l(b),c("div",ue,[(s(),g(N,null,D(t,d=>l(L,{key:d.label,class:E(a(d)),to:d.link},{default:m(()=>[d.iconType==="icon"?(s(),_(T,{key:0,name:d.icon,class:"size-5",mode:"svg"},null,8,["name"])):(s(),_(I,{key:1,name:d.icon},null,8,["name"])),c("span",pe,$(d.label),1)]),_:2},1032,["class","to"])),64))])])}}}),me=Object.assign(de,{__name:"SiteNavbar"}),fe={class:"mt-8 border-t"},he={class:"container mx-auto flex flex-col items-center justify-between gap-2 py-4 text-center text-xs text-muted-foreground sm:flex-row sm:text-left"},ge=f({name:"SiteFooter",__name:"SiteFooter",setup(r){const{public:{appVersion:t}}=K();return(o,e)=>{const a=S;return s(),g("footer",fe,[c("div",he,[c("p",null,[e[1]||(e[1]=y(" Copyright © 2026 ",-1)),l(a,{class:"font-medium text-foreground underline-offset-4 transition-colors hover:text-amber-600 hover:underline",rel:"noreferrer",target:"_blank",to:"https://github.com/lonewolfyx"},{default:m(()=>[...e[0]||(e[0]=[y(" lonewolfyx ",-1)])]),_:1}),e[2]||(e[2]=y(". ",-1))]),c("p",null," Built with Nuxt, extended from ccusage, and released under the MIT License. Version "+$(u(t))+". ",1)])])}}}),xe=Object.assign(ge,{__name:"SiteFooter"}),ve={};function be(r,t){const o=me,e=xe;return s(),g(N,null,[l(o),k(r.$slots,"default"),l(e)],64)}const Se=U(ve,[["render",be]]);export{Se as default};
1
+ import{z as f,o as s,B as _,w as m,C as k,L as z,D as u,P as j,h,T as O,U as F,aG as P,aH as q,b as l,e as S,ab as w,c as g,t as $,aF as B,a0 as M,a as c,X as V,Z as C,ac as A,aI as G,aJ as R,J as N,K as H,Y as K,aK as D,aL as E,d as y,_ as J}from"./Dkya5WaL.js";import{a as U,_ as X}from"./y3weNNd-.js";var Y=f({__name:"BaseSeparator",props:{orientation:{type:String,required:!1,default:"horizontal"},decorative:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(r){const t=r,o=["horizontal","vertical"];function e(i){return o.includes(i)}const a=h(()=>e(t.orientation)?t.orientation:"horizontal"),n=h(()=>a.value==="vertical"?t.orientation:void 0),p=h(()=>t.decorative?{role:"none"}:{"aria-orientation":n.value,role:"separator"});return(i,x)=>(s(),_(u(j),z({as:i.as,"as-child":i.asChild,"data-orientation":a.value},p.value),{default:m(()=>[k(i.$slots,"default")]),_:3},16,["as","as-child","data-orientation"]))}}),Z=Y,Q=f({__name:"Separator",props:{orientation:{type:String,required:!1,default:"horizontal"},decorative:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(r){const t=r;return(o,e)=>(s(),_(Z,O(F(t)),{default:m(()=>[k(o.$slots,"default")]),_:3},16))}}),W=Q;const ee={key:1,class:"text-muted-foreground w-8 text-xs tabular-nums"},te=f({__name:"GitHubLink",setup(r){const t=P(),{data:o,pending:e}=q(`https://ungh.cc/repos/${t.github.repo}`,"$5jzG0y0vUx"),a=h(()=>{const n=o.value?.repo?.stars;return n?n>=1e3?`${(n/1e3).toFixed(1)}k`:n.toLocaleString():"∞"});return(n,p)=>{const i=w,x=U,v=S,b=B;return s(),_(b,{"as-child":"",class:"h-8 shadow-none",size:"sm",variant:"ghost"},{default:m(()=>[l(v,{to:u(t).github.link,rel:"noreferrer",target:"_blank"},{default:m(()=>[l(i,{name:"mdi:github"}),u(e)?(s(),_(x,{key:0,class:"h-4 w-8"})):(s(),g("span",ee,$(u(a)),1))]),_:1},8,["to"])]),_:1})}}}),oe=Object.assign(te,{__name:"GitHubLink"}),ne=f({__name:"ModeSwitcher",setup(r){const t=M({selector:"html",attribute:"class",storageKey:"app-color-mode",onChanged(o,e){const a=document,n=window.matchMedia("(prefers-reduced-motion: reduce)").matches;if(!a.startViewTransition||n){e(o);return}a.startViewTransition(()=>{e(o)})}});return(o,e)=>{const a=w,n=B;return s(),_(n,{variant:"ghost",size:"icon",class:"group/toggle extend-touch-target size-8",title:"Toggle theme",onClick:e[0]||(e[0]=p=>t.value=u(t)==="light"?"dark":"light")},{default:m(()=>[u(t)==="dark"?(s(),_(a,{key:0,name:"lucide:moon",mode:"svg"})):(s(),_(a,{key:1,name:"lucide:sun",mode:"svg"})),e[1]||(e[1]=c("span",{class:"sr-only"},"Toggle theme",-1))]),_:1})}}}),ae=Object.assign(ne,{__name:"ModeSwitcher"}),se=f({__name:"Separator",props:{orientation:{default:"horizontal"},decorative:{type:Boolean,default:!0},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(r){const t=r,o=V(t,"class");return(e,a)=>(s(),_(u(W),z({"data-slot":"separator"},u(o),{class:u(C)("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",t.class)}),null,16,["class"]))}}),re={class:"flex flex-col border-b z-10 mb-5"},ie={class:"container mx-auto flex items-center justify-between gap-3"},ce={class:"flex flex-col h-14"},le={class:"flex items-center gap-4 h-full"},_e={class:"flex items-center"},ue={class:"container mx-auto flex items-center justify-between pt-3 pb-1"},pe={class:"capitalize text-xs font-medium font-mono"},de=f({name:"SiteNavbar",__name:"SiteNavbar",setup(r){const t=[{icon:"solar:home-bold-duotone",iconType:"icon",label:"home",link:"/"},...D,{icon:"ri:apps-ai-line",iconType:"icon",label:"Project",link:"/project"}],o=A(),e=h(()=>o.path);function a(n){const p=e.value===n.link,i=n.iconFillClass??(n.iconType==="ai"?"[&_svg]:fill-foreground/50":"");return C("relative flex flex-col items-center gap-1.5",p?["after:content-[''] after:absolute after:w-full after:h-px after:bg-amber-500","after:-bottom-1 after:rounded-2xl"]:["text-foreground/50",i])}return(n,p)=>{const i=R,x=oe,v=ae,b=se,L=w,T=X,I=S;return s(),g("header",re,[c("div",ie,[c("div",ce,[c("div",le,[p[0]||(p[0]=c("img",{alt:"",class:"size-8",src:G},null,-1)),l(i,{class:"w-48 fill-foreground"})])]),c("div",_e,[l(x),l(v)])]),l(b),c("div",ue,[(s(),g(N,null,H(t,d=>l(I,{key:d.label,class:K(a(d)),to:d.link},{default:m(()=>[d.iconType==="icon"?(s(),_(L,{key:0,name:d.icon,class:"size-5",mode:"svg"},null,8,["name"])):(s(),_(T,{key:1,name:d.icon},null,8,["name"])),c("span",pe,$(d.label),1)]),_:2},1032,["class","to"])),64))])])}}}),me=Object.assign(de,{__name:"SiteNavbar"}),fe={class:"mt-8 border-t"},he={class:"container mx-auto flex flex-col items-center justify-between gap-2 py-4 text-center text-xs text-muted-foreground sm:flex-row sm:text-left"},ge=f({name:"SiteFooter",__name:"SiteFooter",setup(r){const{public:{appVersion:t}}=E();return(o,e)=>{const a=S;return s(),g("footer",fe,[c("div",he,[c("p",null,[e[1]||(e[1]=y(" Copyright © 2026 ",-1)),l(a,{class:"font-medium text-foreground underline-offset-4 transition-colors hover:text-amber-600 hover:underline",rel:"noreferrer",target:"_blank",to:"https://github.com/lonewolfyx"},{default:m(()=>[...e[0]||(e[0]=[y(" lonewolfyx ",-1)])]),_:1}),e[2]||(e[2]=y(". ",-1))]),c("p",null," Built with Nuxt, extended from ccusage, and released under the MIT License. Version "+$(u(t))+". ",1)])])}}}),xe=Object.assign(ge,{__name:"SiteFooter"}),ve={};function be(r,t){const o=me,e=xe;return s(),g(N,null,[l(o),k(r.$slots,"default"),l(e)],64)}const Se=J(ve,[["render",be]]);export{Se as default};
@@ -1 +1 @@
1
- import{_ as s,u as a,o as i,c as u,a as t,t as n,b as c,w as l,d,e as f}from"./Dn8cXZx3.js";const p={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},m={class:"max-w-520px text-center"},h=["textContent"],b=["textContent"],x=["textContent"],g={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:404},statusText:{type:String,default:"Page not found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(e){const r=e;return a({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,w)=>{const o=f;return i(),u("div",p,[t("div",m,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:n(e.status)},null,8,h),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:n(e.statusText)},null,8,b),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:n(e.description)},null,8,x),t("div",g,[c(o,{to:"/",class:"font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"},{default:l(()=>[d(n(e.backHome),1)]),_:1})])])])}}},v=s(y,[["__scopeId","data-v-0abdad73"]]);export{v as default};
1
+ import{_ as s,u as a,o as i,c as u,a as t,t as n,b as c,w as l,d,e as f}from"./Dkya5WaL.js";const p={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},m={class:"max-w-520px text-center"},h=["textContent"],b=["textContent"],x=["textContent"],g={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:404},statusText:{type:String,default:"Page not found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(e){const r=e;return a({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,w)=>{const o=f;return i(),u("div",p,[t("div",m,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:n(e.status)},null,8,h),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:n(e.statusText)},null,8,b),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:n(e.description)},null,8,x),t("div",g,[c(o,{to:"/",class:"font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"},{default:l(()=>[d(n(e.backHome),1)]),_:1})])])])}}},v=s(y,[["__scopeId","data-v-0abdad73"]]);export{v as default};
@@ -0,0 +1 @@
1
+ import{K as $,j,p as P,v as A,w as z,x as B,y as I,B as M,E,F as H,o as U,H as K,J as O,I as F}from"./7Dy4NLP8.js";import{_ as V,a as J,b as G,u as L}from"./HN9OZyaQ.js";import{_ as q,e as Q}from"./JtK-nXxy.js";import{z as k,o as f,B as b,w as s,a as p,t as r,D as o,b as e,d as n,c as W,K as X,J as Y,I as Z,a6 as tt,a7 as et,h,ac as st,ad as at,ae as ot}from"./Dkya5WaL.js";const nt={class:"mb-4 grid grid-cols-1 gap-3 sm:grid-cols-3"},lt={class:"rounded-md border px-3 py-2"},mt={class:"mt-1 text-lg font-semibold tabular-nums"},rt={class:"rounded-md border px-3 py-2"},ut={class:"mt-1 text-lg font-semibold tabular-nums"},dt={class:"rounded-md border px-3 py-2"},it={class:"mt-1 text-lg font-semibold tabular-nums"},ct=k({name:"UsageAnalyticsSessionUsageTable",__name:"SessionUsageTable",props:{items:{},pageSize:{default:10},productName:{default:"Product"}},setup(a){const d=a,c=et(1),_=h(()=>Math.max(1,Math.ceil(d.items.length/d.pageSize))),y=h(()=>{const t=(Math.min(c.value,_.value)-1)*d.pageSize;return d.items.slice(t,t+d.pageSize)}),g=h(()=>d.items.reduce((l,t)=>l+t.costUSD,0)),w=h(()=>d.items.reduce((l,t)=>l+t.tokenTotal,0));function x(l){return new Intl.DateTimeFormat("en-US",{day:"2-digit",hour:"2-digit",minute:"2-digit",month:"short"}).format(new Date(l))}return(l,t)=>{const m=B,T=z,D=A,i=H,C=q,S=I,v=M,N=E,R=$;return f(),b(R,{description:`Each row maps one ${a.productName} session to its session-level token consumption.`,icon:"lucide:file-json-2",title:`${a.productName} Session Statistics`},{default:s(()=>[p("div",nt,[p("div",lt,[t[1]||(t[1]=p("p",{class:"text-xs text-muted-foreground"}," Sessions ",-1)),p("p",mt,r(a.items.length),1)]),p("div",rt,[t[2]||(t[2]=p("p",{class:"text-xs text-muted-foreground"}," Tokens ",-1)),p("p",ut,r(("formatCompactNumber"in l?l.formatCompactNumber:o(j))(o(w))),1)]),p("div",dt,[t[3]||(t[3]=p("p",{class:"text-xs text-muted-foreground"}," Spend ",-1)),p("p",it,r(("formatCurrency"in l?l.formatCurrency:o(P))(o(g))),1)])]),e(v,null,{default:s(()=>[e(D,null,{default:s(()=>[e(T,null,{default:s(()=>[e(m,null,{default:s(()=>[...t[4]||(t[4]=[n("Session ID",-1)])]),_:1}),e(m,null,{default:s(()=>[...t[5]||(t[5]=[n("Project",-1)])]),_:1}),e(m,null,{default:s(()=>[...t[6]||(t[6]=[n("Thread",-1)])]),_:1}),e(m,null,{default:s(()=>[...t[7]||(t[7]=[n("Model",-1)])]),_:1}),e(m,null,{default:s(()=>[...t[8]||(t[8]=[n("Started",-1)])]),_:1}),e(m,{class:"text-right"},{default:s(()=>[...t[9]||(t[9]=[n(" Duration ",-1)])]),_:1}),e(m,{class:"text-right"},{default:s(()=>[...t[10]||(t[10]=[n(" Input ",-1)])]),_:1}),e(m,{class:"text-right"},{default:s(()=>[...t[11]||(t[11]=[n(" Output ",-1)])]),_:1}),e(m,{class:"text-right"},{default:s(()=>[...t[12]||(t[12]=[n(" Total Tokens ",-1)])]),_:1}),e(m,{class:"text-right"},{default:s(()=>[...t[13]||(t[13]=[n(" Cost ",-1)])]),_:1})]),_:1})]),_:1}),e(S,null,{default:s(()=>[(f(!0),W(Y,null,X(o(y),u=>(f(),b(T,{key:u.sessionId},{default:s(()=>[e(i,{class:"max-w-80 truncate font-mono text-xs"},{default:s(()=>[n(r(u.sessionId),1)]),_:2},1024),e(i,{class:"font-medium"},{default:s(()=>[n(r(u.project),1)]),_:2},1024),e(i,{class:"max-w-64 truncate"},{default:s(()=>[n(r(u.threadName),1)]),_:2},1024),e(i,null,{default:s(()=>[n(r(u.model),1)]),_:2},1024),e(i,{class:"whitespace-nowrap"},{default:s(()=>[n(r(x(u.startedAt)),1)]),_:2},1024),e(i,{class:"text-right tabular-nums"},{default:s(()=>[n(r(u.duration),1)]),_:2},1024),e(i,{class:"text-right tabular-nums"},{default:s(()=>[n(r(o(U)(u.inputTokens)),1)]),_:2},1024),e(i,{class:"text-right tabular-nums"},{default:s(()=>[n(r(o(U)(u.outputTokens)),1)]),_:2},1024),e(i,{class:"text-right tabular-nums"},{default:s(()=>[n(r(o(U)(u.tokenTotal)),1)]),_:2},1024),e(i,{class:"text-right tabular-nums"},{default:s(()=>[n(r(("formatCurrency"in l?l.formatCurrency:o(P))(u.costUSD)),1)]),_:2},1024)]),_:2},1024))),128)),a.items.length===0?(f(),b(C,{key:0,colspan:10},{default:s(()=>[n(" No "+r(a.productName)+" sessions found. ",1)]),_:1})):Z("",!0)]),_:1})]),_:1}),e(N,{page:o(c),"onUpdate:page":t[0]||(t[0]=u=>tt(c)?c.value=u:null),"page-count":o(_),"page-size":a.pageSize,total:a.items.length},null,8,["page","page-count","page-size","total"])]),_:1},8,["description","title"])}}}),pt=Object.assign(ct,{__name:"UsageAnalyticsSessionUsageTable"}),_t=k({name:"DashboardTokenConsumptionDashboard",__name:"TokenConsumptionDashboard",props:{dailyRows:{},dailyTokenUsage:{},monthlyModelUsage:{},monthlyRows:{},overviewCards:{},productName:{},projectUsage:{},sessionRows:{},sessionUsage:{},weeklyRows:{}},setup(a){return(d,c)=>{const _=O,y=V,g=J,w=G,x=Q,l=pt,t=F,m=K;return f(),b(m,null,{default:s(()=>[e(_,{cards:a.overviewCards},null,8,["cards"]),e(t,null,{default:s(()=>[e(y,{"monthly-items":a.monthlyModelUsage,class:"md:col-span-8"},null,8,["monthly-items"]),e(g,{items:a.projectUsage,class:"md:col-span-4"},null,8,["items"]),e(w,{items:a.dailyTokenUsage,class:"md:col-span-12",title:`${a.productName} Token Heatmap`},null,8,["items","title"]),e(x,{"daily-items":a.dailyRows,"monthly-items":a.monthlyRows,"product-name":a.productName,"session-items":a.sessionRows,"weekly-items":a.weeklyRows,class:"md:col-span-12"},null,8,["daily-items","monthly-items","product-name","session-items","weekly-items"]),e(l,{items:a.sessionUsage,"product-name":a.productName,class:"md:col-span-12"},null,8,["items","product-name"])]),_:1})]),_:1})}}}),gt=Object.assign(_t,{__name:"DashboardTokenConsumptionDashboard"}),ft=k({name:"DashboardProductPage",__name:"ProductPage",props:{productKey:{},productName:{}},setup(a){const d=a,{dailyRows:c,dailyTokenUsage:_,monthlyModelUsage:y,monthlyRows:g,overviewCards:w,projectUsage:x,sessionRows:l,sessionUsage:t,weeklyRows:m}=L(d.productKey);return(T,D)=>{const i=gt;return f(),b(i,{"daily-rows":o(c),"daily-token-usage":o(_),"monthly-model-usage":o(y),"monthly-rows":o(g),"overview-cards":o(w),"product-name":a.productName,"project-usage":o(x),"session-rows":o(l),"session-usage":o(t),"weekly-rows":o(m)},null,8,["daily-rows","daily-token-usage","monthly-model-usage","monthly-rows","overview-cards","product-name","project-usage","session-rows","session-usage","weekly-rows"])}}}),yt=Object.assign(ft,{__name:"DashboardProductPage"}),kt=k({__name:"[product]",setup(a){const d=st(),c=at(d.params.product);if(!c)throw ot({status:404,message:"Page not found"});return(_,y)=>{const g=yt;return f(),b(g,{"product-key":o(c).payloadKey,"product-name":o(c).name},null,8,["product-key","product-name"])}}});export{kt as default};
@@ -0,0 +1,119 @@
1
+ import{M as ve,N as be,O as At,Q as q,R as _e,U as Nt,W as ot,X as I,Y as W,Z as Ft,$ as z,a0 as _t,a1 as ht,a2 as $t,a3 as It,a4 as j,a5 as ye,a6 as Yt,a7 as xe,a8 as ke,a9 as Se,aa as Jt,ab as X,ac as Qt,ad as Ae,ae as $e,af as it,ag as Tt,ah as Te,ai as Mt,aj as Ce,ak as Xt,al as xt,am as De,an as we,ao as Re,ap as te,aq as Me,ar as Le,as as Ee,at as Pe,au as Ue,av as Pt,aw as Ut,ax as Oe,ay as je,az as ee,K as Ot,S as Ve,f as Kt,z as ae,_ as ne,p as lt,j as J,k as se,s as rt,r as Ge,aA as We,m as qt,aB as Be,aC as ze,G as He,aD as Zt,v as Ne,w as Fe,x as Ie,y as Ye,B as Xe,E as Ke,F as qe,o as Z,J as Ze,I as Je,H as Qe}from"./7Dy4NLP8.js";import{E as ta,_ as ea,a as aa,b as na}from"./HN9OZyaQ.js";import{z as tt,G as sa,p as oa,i as ft,v as jt,o as G,c as Y,C as ia,E as la,r as Vt,ak as Ct,ai as Dt,af as oe,Q as ie,n as le,h as T,B as pt,w,a as M,t as O,b as S,D,K as kt,J as St,S as Gt,Y as ra,al as ca,a5 as wt,d as V,a6 as ua,I as da,a7 as ga}from"./Dkya5WaL.js";const ha=Object.assign(Object.assign({},ve),{tooltip:void 0,annotations:void 0});class pa extends be{constructor(e,t,s){var l;super(e),this._defaultConfig=ha,this.config=this._defaultConfig,t&&(this.updateContainer(t,!0),this.component=t.component),s&&this.setData(s,!0),!((l=this.component)===null||l===void 0)&&l.datamodel.data&&this.render()}setData(e,t){var s;const{config:l}=this;this.component&&this.component.setData(e),t||this.render(),(s=l.tooltip)===null||s===void 0||s.hide()}updateContainer(e,t){super.updateContainer(e),this._removeAllChildren(),this.component=e.component,e.sizing&&(this.component.sizing=e.sizing),this.element.appendChild(this.component.element);const s=e.tooltip;s&&(s.hasContainer()||s.setContainer(this._container),s.setComponents([this.component]));const l=e.annotations;l&&this.element.appendChild(l.element),this.element.appendChild(this._svgDefs.node()),this.element.appendChild(this._svgDefsExternal.node()),t||this.render()}updateComponent(e,t){this.component.setConfig(e),t||this.render()}update(e,t,s){e&&this.updateContainer(e,!0),t&&this.updateComponent(t,!0),s&&this.setData(s,!0),this.render()}getFitWidthScale(){const{config:e,component:t}=this,s=t;if(!s.getWidth)return 1;const l=s.getWidth()+e.margin.left+e.margin.right;return this.width/l}_preRender(){var e,t;super._preRender(),this.component.setSize(this.width,this.height,this.containerWidth,this.containerHeight),this.component.setContainerMargin(this.config.margin),(e=this.config.annotations)===null||e===void 0||e.setSize(this.width,this.height,this.containerWidth,this.containerHeight),(t=this.config.annotations)===null||t===void 0||t.setContainerMargin(this.config.margin)}_render(e){var t,s;const{config:l,component:r}=this;super._render(e),r.g.attr("transform",`translate(${l.margin.left},${l.margin.top})`),r.render(e),(t=l.annotations)===null||t===void 0||t.render(e),l.tooltip&&l.tooltip.update(),(s=l.onRenderComplete)===null||s===void 0||s.call(l,this.svg.node(),l.margin,this.containerWidth,this.containerHeight,this.width,this.height)}render(e=this.config.duration){const{config:t,component:s}=this;if(t.sizing===At.Extend||t.sizing===At.FitWidth){const l=t.sizing===At.FitWidth,r=s,n=r.getWidth()+t.margin.left+t.margin.right,a=r.getHeight()+t.margin.top+t.margin.bottom,d=l?this.getFitWidthScale():1,i=this.svg.attr("width"),o=this.svg.attr("height"),f=n*d,m=a*d,g=i||o;q(this.svg,g?e:0).attr("width",f).attr("height",m).attr("viewBox",`0 0 ${n} ${l?m:a}`).attr("preserveAspectRatio","xMinYMin")}else this.svg.attr("width",this.config.width||this.containerWidth).attr("height",this.config.height||this.containerHeight);this._resizeObserver||this._setUpResizeObserver(),cancelAnimationFrame(this._renderAnimationFrameId),this._renderAnimationFrameId=requestAnimationFrame(()=>{this._preRender(),this._render(e)})}_onResize(){var e;const{config:t}=this;super._onResize(),(e=t.tooltip)===null||e===void 0||e.hide()}destroy(){var e,t;const{component:s,config:l}=this;super.destroy(),s?.destroy(),(e=l.tooltip)===null||e===void 0||e.destroy(),(t=l.annotations)===null||t===void 0||t.destroy()}}function fa(h){return h.innerRadius}function ma(h){return h.outerRadius}function va(h){return h.startAngle}function ba(h){return h.endAngle}function _a(h){return h&&h.padAngle}function ya(h,e,t,s,l,r,n,a){var d=t-h,i=s-e,o=n-l,f=a-r,m=f*d-o*i;if(!(m*m<z))return m=(o*(e-r)-f*(h-l))/m,[h+m*d,e+m*i]}function bt(h,e,t,s,l,r,n){var a=h-t,d=e-s,i=(n?r:-r)/ht(a*a+d*d),o=i*d,f=-i*a,m=h+o,g=e+f,p=t+o,b=s+f,c=(m+p)/2,x=(g+b)/2,$=p-m,E=b-g,_=$*$+E*E,u=l-r,v=m*b-p*g,R=(E<0?-1:1)*ht(ye(0,u*u*_-v*v)),P=(v*E-$*R)/_,U=(-v*$-E*R)/_,A=(v*E+$*R)/_,L=(-v*$+E*R)/_,B=P-c,y=U-x,C=A-c,F=L-x;return B*B+y*y>C*C+F*F&&(P=A,U=L),{cx:P,cy:U,x01:-o,y01:-f,x11:P*(l/u-1),y11:U*(l/u-1)}}function xa(){var h=fa,e=ma,t=W(0),s=null,l=va,r=ba,n=_a,a=null,d=_e(i);function i(){var o,f,m=+h.apply(this,arguments),g=+e.apply(this,arguments),p=l.apply(this,arguments)-Ft,b=r.apply(this,arguments)-Ft,c=It(b-p),x=b>p;if(a||(a=o=d()),g<m&&(f=g,g=m,m=f),!(g>z))a.moveTo(0,0);else if(c>_t-z)a.moveTo(g*ot(p),g*I(p)),a.arc(0,0,g,p,b,!x),m>z&&(a.moveTo(m*ot(b),m*I(b)),a.arc(0,0,m,b,p,x));else{var $=p,E=b,_=p,u=b,v=c,R=c,P=n.apply(this,arguments)/2,U=P>z&&(s?+s.apply(this,arguments):ht(m*m+g*g)),A=$t(It(g-m)/2,+t.apply(this,arguments)),L=A,B=A,y,C;if(U>z){var F=Yt(U/m*I(P)),et=Yt(U/g*I(P));(v-=F*2)>z?(F*=x?1:-1,_+=F,u-=F):(v=0,_=u=(p+b)/2),(R-=et*2)>z?(et*=x?1:-1,$+=et,E-=et):(R=0,$=E=(p+b)/2)}var K=g*ot($),at=g*I($),ct=m*ot(u),Q=m*I(u);if(A>z){var ut=g*ot(E),nt=g*I(E),dt=m*ot(_),mt=m*I(_),N;if(c<Nt)if(N=ya(K,at,dt,mt,ut,nt,ct,Q)){var gt=K-N[0],k=at-N[1],H=ut-N[0],st=nt-N[1],zt=1/I(xe((gt*H+k*st)/(ht(gt*gt+k*k)*ht(H*H+st*st)))/2),Ht=ht(N[0]*N[0]+N[1]*N[1]);L=$t(A,(m-Ht)/(zt-1)),B=$t(A,(g-Ht)/(zt+1))}else L=B=0}R>z?B>z?(y=bt(dt,mt,K,at,g,B,x),C=bt(ut,nt,ct,Q,g,B,x),a.moveTo(y.cx+y.x01,y.cy+y.y01),B<A?a.arc(y.cx,y.cy,B,j(y.y01,y.x01),j(C.y01,C.x01),!x):(a.arc(y.cx,y.cy,B,j(y.y01,y.x01),j(y.y11,y.x11),!x),a.arc(0,0,g,j(y.cy+y.y11,y.cx+y.x11),j(C.cy+C.y11,C.cx+C.x11),!x),a.arc(C.cx,C.cy,B,j(C.y11,C.x11),j(C.y01,C.x01),!x))):(a.moveTo(K,at),a.arc(0,0,g,$,E,!x)):a.moveTo(K,at),!(m>z)||!(v>z)?a.lineTo(ct,Q):L>z?(y=bt(ct,Q,ut,nt,m,-L,x),C=bt(K,at,dt,mt,m,-L,x),a.lineTo(y.cx+y.x01,y.cy+y.y01),L<A?a.arc(y.cx,y.cy,L,j(y.y01,y.x01),j(C.y01,C.x01),!x):(a.arc(y.cx,y.cy,L,j(y.y01,y.x01),j(y.y11,y.x11),!x),a.arc(0,0,m,j(y.cy+y.y11,y.cx+y.x11),j(C.cy+C.y11,C.cx+C.x11),x),a.arc(C.cx,C.cy,L,j(C.y11,C.x11),j(C.y01,C.x01),!x))):a.arc(0,0,m,u,_,x)}if(a.closePath(),o)return a=null,o+""||null}return i.centroid=function(){var o=(+h.apply(this,arguments)+ +e.apply(this,arguments))/2,f=(+l.apply(this,arguments)+ +r.apply(this,arguments))/2-Nt/2;return[ot(f)*o,I(f)*o]},i.innerRadius=function(o){return arguments.length?(h=typeof o=="function"?o:W(+o),i):h},i.outerRadius=function(o){return arguments.length?(e=typeof o=="function"?o:W(+o),i):e},i.cornerRadius=function(o){return arguments.length?(t=typeof o=="function"?o:W(+o),i):t},i.padRadius=function(o){return arguments.length?(s=o==null?null:typeof o=="function"?o:W(+o),i):s},i.startAngle=function(o){return arguments.length?(l=typeof o=="function"?o:W(+o),i):l},i.endAngle=function(o){return arguments.length?(r=typeof o=="function"?o:W(+o),i):r},i.padAngle=function(o){return arguments.length?(n=typeof o=="function"?o:W(+o),i):n},i.context=function(o){return arguments.length?(a=o??null,i):a},i}function ka(h,e){return e<h?-1:e>h?1:e>=h?0:NaN}function Sa(h){return h}function Aa(){var h=Sa,e=ka,t=null,s=W(0),l=W(_t),r=W(0);function n(a){var d,i=(a=ke(a)).length,o,f,m=0,g=new Array(i),p=new Array(i),b=+s.apply(this,arguments),c=Math.min(_t,Math.max(-_t,l.apply(this,arguments)-b)),x,$=Math.min(Math.abs(c)/i,r.apply(this,arguments)),E=$*(c<0?-1:1),_;for(d=0;d<i;++d)(_=p[g[d]=d]=+h(a[d],d,a))>0&&(m+=_);for(e!=null?g.sort(function(u,v){return e(p[u],p[v])}):t!=null&&g.sort(function(u,v){return t(a[u],a[v])}),d=0,f=m?(c-i*E)/m:0;d<i;++d,b=x)o=g[d],_=p[o],x=b+(_>0?_*f:0)+E,p[o]={data:a[o],index:d,value:_,startAngle:b,endAngle:x,padAngle:$};return p}return n.value=function(a){return arguments.length?(h=typeof a=="function"?a:W(+a),n):h},n.sortValues=function(a){return arguments.length?(e=a,t=null,n):e},n.sort=function(a){return arguments.length?(t=a,e=null,n):t},n.startAngle=function(a){return arguments.length?(s=typeof a=="function"?a:W(+a),n):s},n.endAngle=function(a){return arguments.length?(l=typeof a=="function"?a:W(+a),n):l},n.padAngle=function(a){return arguments.length?(r=typeof a=="function"?a:W(+a),n):r},n}function $a({x:h,y:e,w:t,h:s,tl:l=!1,tr:r=!1,bl:n=!1,br:a=!1,r:d=0}){let i;i=`M${h+d},${e}h${t-2*d}`;let o=r?d:0,f=r?0:d;return i+=`a${o},${o} 0 0 1 ${o},${o}`,i+=`h${f}v${f}`,i+=`v${s-2*d}`,o=a?d:0,f=a?0:d,i+=`a${o},${o} 0 0 1 ${-o},${o}`,i+=`v${f}h${-f}`,i+=`h${2*d-t}`,o=n?d:0,f=n?0:d,i+=`a${o},${o} 0 0 1 ${-o},${-o}`,i+=`h${-f}v${-f}`,i+=`v${2*d-s}`,o=l?d:0,f=l?0:d,i+=`a${o},${o} 0 0 1 ${o},${-o}`,i+=`v${-f}h${f}`,i+="z",i}const Ta=Object.assign(Object.assign({},Se),{color:void 0,barMaxWidth:void 0,barWidth:void 0,dataStep:void 0,barPadding:0,roundedCorners:2,cursor:null,barMinHeight1Px:!1,barMinHeightZeroValue:null,orientation:Jt.Vertical}),re=X`
2
+ label: stacked-bar-component;
3
+ `,Ca=Qt`
4
+ :root {
5
+ --vis-stacked-bar-cursor: default;
6
+ --vis-stacked-bar-fill-color: var(--vis-color-main);
7
+ --vis-stacked-bar-stroke-color: none;
8
+ --vis-stacked-bar-stroke-width: 0px;
9
+ --vis-stacked-bar-hover-stroke-width: none;
10
+ --vis-stacked-bar-hover-stroke-color: none;
11
+
12
+ /* Dark Theme */
13
+ --vis-dark-stacked-bar-stroke-color: none;
14
+ }
15
+
16
+ body.theme-dark ${`.${re}`} {
17
+ --vis-stacked-bar-stroke-color: var(--vis-dark-stacked-bar-stroke-color);
18
+ }
19
+ `,yt=X`
20
+ label: bar;
21
+ fill: var(--vis-stacked-bar-fill-color);
22
+ stroke: var(--vis-stacked-bar-stroke-color);
23
+ stroke-width: var(--vis-stacked-bar-stroke-width);
24
+ cursor: var(--vis-stacked-bar-cursor);
25
+
26
+ &:hover {
27
+ stroke-width: var(--vis-stacked-bar-hover-stroke-width);
28
+ stroke: var(--vis-stacked-bar-hover-stroke-color);
29
+ }
30
+ `,Lt=X`
31
+ label: barGroup;
32
+ `,ce=X`
33
+ label: barGroupExit;
34
+ `,Da=Object.freeze(Object.defineProperty({__proto__:null,bar:yt,barGroup:Lt,barGroupExit:ce,globalStyles:Ca,root:re},Symbol.toStringTag,{value:"Module"}));class Wt extends Ae{constructor(e){super(),this._defaultConfig=Ta,this.config=this._defaultConfig,this.getAccessors=()=>$e(this.config.y)?this.config.y:[this.config.y],this.stacked=!0,this.events={},this._barData=[],e&&this.setConfig(e)}get bleed(){if(this._barData=this._getVisibleData(),this._barData.length===0)return{top:0,bottom:0,left:0,right:0};const e=!this.isVertical()&&this.dataScale.range()[0]>this.dataScale.range()[1],t=this.dataScale.domain(),s=this._getBarWidth()/2,l=this._barData.map((g,p)=>it(g,this.config.x,p)),r=Tt(l),n=Te(l),a=this.dataScale(r),d=this.dataScale(n),i=this.dataScale.invert(a+(e?s:-s)),o=this.dataScale.invert(d+(e?-s:s)),f=i<=t[0]?this.dataScale(t[0])-this.dataScale(i):0,m=o>t[1]?this.dataScale(o)-this.dataScale(t[1]):0;return{top:this.isVertical()?0:e?-m:f,bottom:this.isVertical()?0:e?-f:m,left:this.isVertical()?f:0,right:this.isVertical()?m:0}}get dataScale(){return this.isVertical()?this.xScale:this.yScale}get valueScale(){return this.isVertical()?this.yScale:this.xScale}isVertical(){return this.config.orientation===Jt.Vertical}_render(e){const{config:t}=this,s=Mt(e)?e:t.duration,l=this.getAccessors(),r=Ce(this._barData,0,l,this._prevNegative);this._prevNegative=r.map(p=>!!p.isMostlyNegative);const n=this.g.selectAll(`.${Lt}`).data(this._barData,(p,b)=>{var c;return`${(c=Xt(p,t.id,b))!==null&&c!==void 0?c:b}`}),a=(p,b)=>{const c=this.dataScale(it(p,t.x,b)),x=this.isVertical()?c:0,$=this.isVertical()?0:c;return`translate(${x},${$})`},i=n.enter().append("g").attr("class",Lt).attr("transform",a).style("opacity",1).merge(n);q(i,s).attr("transform",a).style("opacity",1);const o=n.exit().attr("class",ce);q(o,s).style("opacity",0).remove(),q(o.selectAll(`.${yt}`),s).attr("transform",this.isVertical()?`translate(0,${this._height/3})`:`translate(${this._width/6},0)`);const f=i.selectAll(`.${yt}`).data((p,b)=>r.map((c,x)=>({datum:p,index:b,stacked:c[b],stackIndex:x,isEnding:x===r.length-1||x<=r.length-1&&r[x+1][b][0]!==c[b][1]})).filter(c=>c.stacked[0]!==c.stacked[1]),p=>p.stackIndex),g=f.enter().append("path").attr("class",yt).attr("d",p=>this._getBarPath(p,!0)).style("fill",p=>xt(p.datum,t.color,p.stackIndex)).merge(f);q(g,s).attr("d",p=>this._getBarPath(p)).style("fill",p=>xt(p.datum,t.color,p.stackIndex)).style("cursor",p=>Xt(p.datum,t.cursor,p.stackIndex)),q(f.exit(),s).style("opacity",0).remove()}_getBarWidth(){const{config:e,datamodel:{data:t}}=this;if(De(t))return 0;if(e.barWidth)return Tt([e.barWidth,e.barMaxWidth]);const s=this.dataScale.bandwidth,l=this.dataScale.domain?this.dataScale.domain():[];let n=1+(s?l.length:l[1]-l[0])/e.dataStep||!s&&t.filter((i,o)=>{const f=it(i,e.x,o);return f>=l[0]&&f<=l[1]}).length||t.length;!s&&n>=2&&(n+=1);const d=(n<2?1:1-e.barPadding)*(this.isVertical()?this._width:this._height)/n;return Tt([d,e.barMaxWidth])}_getVisibleData(){const{config:e,datamodel:{data:t}}=this,s=this._getBarWidth(),l=t.length<2?0:s/2,r=this.dataScale,n=Math.abs(r.invert(l)-r.invert(0));return t?.filter((d,i)=>{const o=it(d,e.x,i),f=r.domain(),m=+f[0],g=+f[1];return o>=m-n&&o<=g+n})}_getBarPath(e,t=!1){const{config:s}=this,l=this.getAccessors(),r=this._getBarWidth(),n=e.stacked[1]<0,a=e.isEnding,d=it(e.datum,l[e.stackIndex],e.index),i=t?0:Math.abs(this.valueScale(e.stacked[0])-this.valueScale(e.stacked[1])),o=!t&&s.barMinHeight1Px&&i<1&&isFinite(d)&&d!==s.barMinHeightZeroValue?1:i,f=t?this.valueScale(0):this.valueScale(n?e.stacked[0]:e.stacked[1])-(i<1&&s.barMinHeight1Px?1:0),m=-r/2,g=r,p=s.roundedCorners?Mt(s.roundedCorners)?+s.roundedCorners:g/2:0,b=te(p,0,Math.min(i,g)/2),c=this.yScale.range()[0]>this.yScale.range()[1];return $a({x:this.isVertical()?m:f-o,y:this.isVertical()?f+(c?0:-o):m,w:this.isVertical()?g:o,h:this.isVertical()?o:g,tl:a&&(this.isVertical()?!n&&c||n&&!c:n),tr:a&&(this.isVertical()?!n&&c||n&&!c:!n),br:a&&(this.isVertical()?n&&c||!n&&!c:!n),bl:a&&(this.isVertical()?n&&c||!n&&!c:n),r:b})}getValueScaleExtent(e){const{datamodel:t}=this,s=this.getAccessors(),l=e?this._getVisibleData():t.data;return we(l,...s)}getDataScaleExtent(){const{config:e,datamodel:t}=this;return Re(t.data,e.x)}getYDataExtent(e){return this.isVertical()?this.getValueScaleExtent(e):this.getDataScaleExtent()}getXDataExtent(){return this.isVertical()?this.getDataScaleExtent():this.getValueScaleExtent(!1)}}Wt.selectors=Da;const wa=Object.assign(Object.assign({},Me),{id:(h,e)=>{var t;return(t=h.id)!==null&&t!==void 0?t:e},value:void 0,angleRange:[0,2*Math.PI],padAngle:0,sortFunction:void 0,cornerRadius:0,color:void 0,radius:void 0,arcWidth:20,centralLabel:void 0,centralSubLabel:void 0,centralSubLabelWrap:!0,showEmptySegments:!1,emptySegmentAngle:.5*Math.PI/180,showBackground:!0,backgroundAngleRange:void 0,centralLabelOffsetX:void 0,centralLabelOffsetY:void 0});function Ra(h,e){h.style("fill",t=>xt(t.data,e.color,t.index)).style("opacity",0).each((t,s,l)=>{const r=l[s],n=(t.startAngle+t.endAngle)/2,a=(t.endAngle-t.startAngle)/2;r._animState={startAngle:n-a,endAngle:n+a,innerRadius:t.innerRadius,outerRadius:t.outerRadius,padAngle:t.padAngle}})}function Ma(h,e,t,s){h.style("transition",`fill ${s}ms`).style("fill",r=>xt(r.data,e.color,r.index));const l=r=>e.showEmptySegments||r.value?1:0;s?q(h,s).style("opacity",l).attrTween("d",(n,a,d)=>{const i=d[a],o={startAngle:n.startAngle,endAngle:n.endAngle,innerRadius:n.innerRadius,outerRadius:n.outerRadius,padAngle:n.padAngle},f=Le(i._animState,o);return m=>(i._animState=f(m),t(i._animState))}):h.attr("d",t).style("opacity",l)}function La(h,e){q(h,e).style("opacity",0).remove()}const ue=Array.from({length:4},(h,e)=>{const t=-Math.PI/2+e*Math.PI/2;return[t,t+Math.PI]}),[xn,kn,Sn,An]=ue,de=X`
35
+ label: donut-component;
36
+ `,Ea=Qt`
37
+ :root {
38
+ --vis-donut-central-label-font-size: 16px;
39
+ --vis-donut-central-label-text-color: #5b5f6d;
40
+ // Undefined by default to allow proper fallback to var(--vis-font-family)
41
+ /* --vis-donut-central-label-font-family: */
42
+ --vis-donut-central-label-font-weight: 600;
43
+
44
+ --vis-donut-central-sub-label-font-size: 12px;
45
+ --vis-donut-central-sub-label-text-color: #5b5f6d;
46
+ // Undefined by default to allow proper fallback to var(--vis-font-family)
47
+ /* --vis-donut-central-sub-label-font-family: */
48
+ --vis-donut-central-sub-label-font-weight: 500;
49
+
50
+ --vis-donut-background-color: #E7E9F3;
51
+ --vis-donut-segment-stroke-width: 0;
52
+ // The line segment color variable is not defined by default
53
+ // to allow it to fallback to the donut background color
54
+ /* --vis-donut-segment-stroke-color: none; */
55
+
56
+ --vis-dark-donut-central-label-text-color: #C2BECE;
57
+ --vis-dark-donut-central-sub-label-text-color: #C2BECE;
58
+ --vis-dark-donut-background-color: #18160C;
59
+ }
60
+
61
+ body.theme-dark ${`.${de}`} {
62
+ --vis-donut-central-label-text-color: var(--vis-dark-donut-central-label-text-color);
63
+ --vis-donut-central-sub-label-text-color: var(--vis-dark-donut-central-sub-label-text-color);
64
+ --vis-donut-background-color: var(--vis-dark-donut-background-color);
65
+ }
66
+ `,ge=X`
67
+ label: background;
68
+ fill: var(--vis-donut-background-color);
69
+ `,Et=X`
70
+ label: segment;
71
+ stroke-width: var(--vis-donut-segment-stroke-width);
72
+ stroke: var(--vis-donut-segment-stroke-color, var(--vis-donut-background-color));
73
+ `,he=X`
74
+ label: segment-exit;
75
+ `,pe=X`
76
+ label: central-label;
77
+ text-anchor: middle;
78
+ dominant-baseline: middle;
79
+ font-size: var(--vis-donut-central-label-font-size);
80
+ font-family: var(--vis-donut-central-label-font-family, var(--vis-font-family));
81
+ font-weight: var(--vis-donut-central-label-font-weight);
82
+ fill: var(--vis-donut-central-label-text-color);
83
+ `,fe=X`
84
+ label: central-label;
85
+ text-anchor: middle;
86
+ dominant-baseline: middle;
87
+ font-size: var(--vis-donut-central-sub-label-font-size);
88
+ font-family: var(--vis-donut-central-sub-label-font-family, var(--vis-font-family));
89
+ font-weight: var(--vis-donut-central-sub-label-font-weight);
90
+ fill: var(--vis-donut-central-sub-label-text-color);
91
+ `,Pa=Object.freeze(Object.defineProperty({__proto__:null,background:ge,centralLabel:pe,centralSubLabel:fe,root:de,segment:Et,segmentExit:he,variables:Ea},Symbol.toStringTag,{value:"Module"}));class Bt extends Ee{constructor(e){super(),this._defaultConfig=wa,this.config=this._defaultConfig,this.datamodel=new Pe,this.arcGen=xa(),this.events={},e&&this.setConfig(e),this.arcBackground=this.g.append("path"),this.arcGroup=this.g.append("g"),this.centralLabel=this.g.append("text").attr("class",pe),this.centralSubLabel=this.g.append("text").attr("class",fe)}get bleed(){return{top:0,bottom:0,left:0,right:0}}_render(e){var t,s,l,r,n,a,d,i,o,f,m,g,p,b;const{config:c,datamodel:x,bleed:$}=this,E=x.data.map((k,H)=>({index:H,datum:k})).filter(k=>c.showEmptySegments||it(k.datum,c.value,k.index)),_=Mt(e)?e:c.duration,[u,v,R,P]=ue.map(k=>c.angleRange&&c.angleRange[0]===k[0]&&c.angleRange[1]===k[1]),U=u||R,A=v||P,L=this._width*(A?2:1),B=this._height*(U?2:1),y=c.radius||Math.min(L-$.left-$.right,B-$.top-$.bottom)/2,C=c.arcWidth===0?0:te(y-c.arcWidth,0,y-1),F=this._height/2+(u?y/2:R?-y/2:0),et=this._width/2+(P?y/2:v?-y/2:0),K=`translate(${et},${F})`;this.arcGroup.attr("transform",K),this.arcGen.startAngle(k=>k.startAngle).endAngle(k=>k.endAngle).innerRadius(k=>k.innerRadius).outerRadius(k=>k.outerRadius).padAngle(k=>k.padAngle).cornerRadius(c.cornerRadius);const ct=Aa().startAngle((s=(t=c.angleRange)===null||t===void 0?void 0:t[0])!==null&&s!==void 0?s:0).endAngle((r=(l=c.angleRange)===null||l===void 0?void 0:l[1])!==null&&r!==void 0?r:2*Math.PI).padAngle(c.padAngle).value(k=>it(k.datum,c.value,k.index)||0).sort((k,H)=>{var st;return(st=c.sortFunction)===null||st===void 0?void 0:st.call(c,k.datum,H.datum)})(E).map(k=>{const H=Object.assign(Object.assign({},k),{data:k.data.datum,index:k.data.index,innerRadius:C,outerRadius:y});return c.showEmptySegments&&k.endAngle-k.startAngle-k.padAngle<=Number.EPSILON&&(H.endAngle=k.startAngle+Math.max(c.emptySegmentAngle,c.padAngle),H.padAngle=k.padAngle/2),H}),Q=this.arcGroup.selectAll(`.${Et}`).data(ct,k=>c.id(k.data,k.index)),ut=Q.enter().append("path").attr("class",Et).call(Ra,c),nt=Q.merge(ut);nt.call(Ma,c,this.arcGen,_),nt.sort((k,H)=>H.value-k.value),Q.exit().attr("class",he).call(La,_);const dt=v?"start":P?"end":"middle";this.centralLabel.attr("dy",c.centralSubLabel?"-0.55em":null).style("text-anchor",dt).text((n=c.centralLabel)!==null&&n!==void 0?n:null),this.centralSubLabel.attr("dy",c.centralLabel?"0.55em":null).style("text-anchor",dt).text((a=c.centralSubLabel)!==null&&a!==void 0?a:null),c.centralSubLabelWrap&&Ue(this.centralSubLabel,C*1.9);const mt=(c.centralLabelOffsetX||0)+et;let N=(c.centralLabelOffsetY||0)+F;U&&c.centralLabelOffsetX===void 0&&c.centralLabelOffsetY===void 0&&(N=(u?-this.centralSubLabel.node().getBoundingClientRect().height:R?this.centralLabel.node().getBoundingClientRect().height:0)+F);const gt=`translate(${mt},${N})`;this.centralLabel.attr("transform",gt),this.centralSubLabel.attr("transform",gt),this.arcBackground.attr("class",ge).attr("visibility",c.showBackground?null:"hidden").attr("transform",K),q(this.arcBackground,_).attr("d",this.arcGen({startAngle:(f=(i=(d=c.backgroundAngleRange)===null||d===void 0?void 0:d[0])!==null&&i!==void 0?i:(o=c.angleRange)===null||o===void 0?void 0:o[0])!==null&&f!==void 0?f:0,endAngle:(b=(g=(m=c.backgroundAngleRange)===null||m===void 0?void 0:m[1])!==null&&g!==void 0?g:(p=c.angleRange)===null||p===void 0?void 0:p[1])!==null&&b!==void 0?b:2*Math.PI,innerRadius:C,outerRadius:y}))}}Bt.selectors=Pa;const Ua=tt({__name:"index",props:{component:{},tooltip:{},annotations:{},duration:{},margin:{},padding:{},sizing:{},width:{},height:{},svgDefs:{},ariaLabel:{},data:{}},setup(h,{expose:e}){const t=h,{data:s}=sa(t),l=Pt(t);let r;const n=la({component:void 0,tooltip:void 0,annotations:void 0}),a=Vt(),d=()=>{r||a.value&&n.component&&(r=new pa(a.value,{...Ct(n)},s.value))};return oa(()=>{var i;d(),(i=n.component)==null||i.config,r?.updateContainer({...Ct(l.value),...Ct(n)})}),ft(s,()=>{r?r.setData(s.value,!0):d()}),jt(()=>r?.destroy()),Dt(Ut,{data:s,update:i=>n.component=i,destroy:()=>n.component=void 0}),Dt(Oe,{data:s,update:i=>n.tooltip=i,destroy:()=>{n.tooltip=void 0}}),Dt(je,{data:s,update:i=>n.annotations=i,destroy:()=>{n.annotations=void 0}}),e({component:r}),(i,o)=>(G(),Y("div",{"data-vis-single-container":"",ref_key:"elRef",ref:a,class:"unovis-single-container"},[ia(i.$slots,"default")],512))}}),Oa={"data-vis-component":""},ja=Wt.selectors,Va=tt({__name:"index",props:{color:{type:[Function,String,Array,null]},barWidth:{},barMaxWidth:{},dataStep:{},barPadding:{},roundedCorners:{type:[Number,Boolean]},cursor:{type:[Function,String,null]},barMinHeight1Px:{type:Boolean},barMinHeightZeroValue:{},orientation:{},x:{type:[Function,Number,null]},y:{type:[Function,Number,null,Array]},id:{type:Function},xScale:{type:[Object,Function]},yScale:{type:[Object,Function]},excludeFromDomainCalculation:{type:Boolean},duration:{},events:{},attributes:{},data:{}},setup(h,{expose:e}){const t=oe(Ut),s=h,l=T(()=>t.data.value??s.data),r=Pt(s),n=Vt();return ie(()=>{le(()=>{var a;n.value=new Wt(r.value),(a=n.value)==null||a.setData(l.value),t.update(n.value)})}),jt(()=>{var a;(a=n.value)==null||a.destroy(),t.destroy()}),ft(r,(a,d)=>{var i;ee(a,d)||(i=n.value)==null||i.setConfig(r.value)}),ft(l,()=>{var a;(a=n.value)==null||a.setData(l.value)}),e({component:n}),(a,d)=>(G(),Y("div",Oa))}}),Ga={"data-vis-component":""},Wa=Bt.selectors,Ba=tt({__name:"index",props:{id:{type:Function},value:{type:[Function,Number,null]},angleRange:{},padAngle:{},sortFunction:{type:Function},cornerRadius:{},color:{type:[Function,String,Array,null]},radius:{},arcWidth:{},centralLabel:{},centralSubLabel:{},centralSubLabelWrap:{type:Boolean},showEmptySegments:{type:Boolean},emptySegmentAngle:{},showBackground:{type:Boolean},backgroundAngleRange:{},centralLabelOffsetX:{},centralLabelOffsetY:{},duration:{},events:{},attributes:{},data:{}},setup(h,{expose:e}){const t=oe(Ut),s=h,l=T(()=>t.data.value??s.data),r=Pt(s),n=Vt();return ie(()=>{le(()=>{var a;n.value=new Bt(r.value),(a=n.value)==null||a.setData(l.value),t.update(n.value)})}),jt(()=>{var a;(a=n.value)==null||a.destroy(),t.destroy()}),ft(r,(a,d)=>{var i;ee(a,d)||(i=n.value)==null||i.setConfig(r.value)}),ft(l,()=>{var a;(a=n.value)==null||a.setData(l.value)}),e({component:n}),(a,d)=>(G(),Y("div",Ga))}}),za={class:"mb-4 grid grid-cols-2 gap-3"},Ha={class:"rounded-md border px-3 py-2"},Na={class:"mt-1 text-xl font-semibold tabular-nums"},Fa={class:"rounded-md border px-3 py-2"},Ia={class:"mt-1 text-xl font-semibold tabular-nums"},Ya={class:"mt-4 flex flex-wrap justify-center items-center gap-3 text-xs text-muted-foreground"},Xa=tt({name:"StatisticalAnalysisSessionAnalysisPanel",__name:"SessionAnalysisPanel",props:{items:{},totalSessions:{}},setup(h){const e=h,t=[{color:"#2563eb",key:"tokens",label:"Token Usage"},{color:"#b6d72f",key:"duration",label:"Duration"},{color:"#f97316",key:"cost",label:"Cost"}],s={cost:{color:t[2].color,label:t[2].label},duration:{color:t[1].color,label:t[1].label},tokens:{color:t[0].color,label:t[0].label}},l={bottom:32,left:120,right:12,top:8},r=T(()=>{const u=e.items.reduce((v,R)=>v+R.costUSD,0)/e.items.length;return lt(u)}),n=T(()=>{const u=new Map;for(const A of e.items){const L=u.get(A.project)??{costUSD:0,durationMinutes:0,sessionCount:0,tokenTotal:0};L.costUSD+=A.costUSD,L.durationMinutes+=i(A.duration),L.sessionCount+=1,L.tokenTotal+=A.tokenTotal,u.set(A.project,L)}const v=Array.from(u.entries()).map(([A,L])=>({project:A,...L})).sort((A,L)=>L.costUSD-A.costUSD),R=Math.max(...v.map(A=>A.tokenTotal),0),P=Math.max(...v.map(A=>A.durationMinutes),0),U=Math.max(...v.map(A=>A.costUSD),0);return v.map((A,L)=>({...A,costLabel:lt(A.costUSD),costScore:f(A.costUSD,U),durationLabel:o(A.durationMinutes),durationScore:f(A.durationMinutes,P),index:L,tokenLabel:J(A.tokenTotal),tokenScore:f(A.tokenTotal,R)}))}),a=T(()=>n.value.map(u=>u.index)),d=T(()=>({[ja.bar]:x}));function i(u){const v=u.match(/(\d+)h/)?.[1],R=u.match(/(\d+)m/)?.[1];return Number(v??0)*60+Number(R??0)}function o(u){const v=Math.floor(u/60),R=u%60;return v===0?`${R}m`:R===0?`${v}h`:`${v}h ${R}m`}function f(u,v){return v>0?u/v*100:0}function m(u){return u.index}function g(u){return u.tokenScore}function p(u){return u.durationScore}function b(u){return u.costScore}function c(u,v){return t[v]?.color??t[0].color}function x(u){const v=u.datum,R=t[u.stackIndex]??t[0],P=$(v,u.stackIndex);return`
92
+ <div class="grid min-w-44 gap-2 rounded-md border bg-background px-3 py-2 text-xs shadow-lg">
93
+ <div class="font-medium text-foreground">${se(v.project)}</div>
94
+ <div class="flex items-center justify-between gap-4">
95
+ <span class="flex items-center gap-2 text-muted-foreground">
96
+ <span class="size-2 rounded-sm" style="background-color: ${R.color}"></span>
97
+ ${R.label}
98
+ </span>
99
+ <span class="font-mono font-semibold text-foreground">${P}</span>
100
+ </div>
101
+ <div class="grid gap-1 border-t pt-2 text-muted-foreground">
102
+ <div class="flex justify-between gap-4"><span>Tokens</span><span>${v.tokenLabel}</span></div>
103
+ <div class="flex justify-between gap-4"><span>Duration</span><span>${v.durationLabel}</span></div>
104
+ <div class="flex justify-between gap-4"><span>Cost</span><span>${v.costLabel}</span></div>
105
+ <div class="flex justify-between gap-4"><span>Sessions</span><span>${v.sessionCount}</span></div>
106
+ </div>
107
+ </div>
108
+ `}function $(u,v){return v===0?`${u.tokenLabel} tokens`:v===1?u.durationLabel:u.costLabel}function E(u){return u instanceof Date?"":n.value.find(v=>v.index===u)?.project??""}function _(u){return u instanceof Date?"":`${Math.round(u)}%`}return(u,v)=>{const R=ne,P=Ot;return G(),pt(P,{description:"Token, duration, and cost grouped by project",icon:"lucide:messages-square",title:"Session Analysis"},{default:w(()=>[M("div",za,[M("div",Ha,[v[0]||(v[0]=M("p",{class:"text-xs text-muted-foreground"}," Total Sessions ",-1)),M("p",Na,O(h.totalSessions),1)]),M("div",Fa,[v[1]||(v[1]=M("p",{class:"text-xs text-muted-foreground"}," Top Session Avg ",-1)),M("p",Ia,O(r.value),1)])]),S(R,{class:"h-80 w-full",config:s},{default:w(()=>[S(D(Ve),{"auto-margin":!1,data:n.value,height:320,margin:l,"y-direction":"south"},{default:w(()=>[S(D(Va),{"bar-max-width":28,"bar-padding":.28,color:c,cursor:"pointer",orientation:"horizontal","rounded-corners":3,x:m,y:[g,p,b]},null,8,["y"]),S(D(Kt),{"grid-line":!1,"tick-format":E,"tick-text-width":100,"tick-text-fit-mode":"trim","tick-text-trim-type":"end","tick-values":a.value,type:"y"},null,8,["tick-values"]),S(D(Kt),{"num-ticks":4,"tick-format":_,type:"x"}),S(D(ae),{triggers:d.value},null,8,["triggers"])]),_:1},8,["data"])]),_:1}),M("div",Ya,[(G(),Y(St,null,kt(t,U=>M("div",{key:U.key,class:"flex items-center gap-2"},[M("span",{class:"size-2.5 rounded-sm",style:Gt({backgroundColor:U.color})},null,4),M("span",null,O(U.label),1)])),64))])]),_:1})}}}),Ka=Object.assign(Xa,{__name:"StatisticalAnalysisSessionAnalysisPanel"}),qa={class:"space-y-4"},Za={class:"flex items-start justify-between gap-3"},Ja={class:"min-w-0"},Qa={class:"truncate text-sm font-medium"},tn={class:"truncate text-xs text-muted-foreground"},en={class:"shrink-0 text-sm font-semibold tabular-nums"},an={class:"h-2 overflow-hidden rounded-full bg-secondary"},nn=tt({name:"StatisticalAnalysisUsageBarList",__name:"UsageBarList",props:{items:{}},setup(h){function e(s){switch(s){case"green":return"bg-emerald-500";case"amber":return"bg-amber-500";case"sky":return"bg-sky-500";case"rose":return"bg-rose-500";default:return"bg-primary"}}function t(s){return`${Math.max(s.percent,s.percent>0?3:0)}%`}return(s,l)=>(G(),Y("div",qa,[(G(!0),Y(St,null,kt(h.items,r=>(G(),Y("div",{key:r.label,class:"space-y-2"},[M("div",Za,[M("div",Ja,[M("p",Qa,O(r.label),1),M("p",tn,O(r.detail),1)]),M("span",en,O(r.value),1)]),M("div",an,[M("div",{class:ra(["h-full rounded-full transition-[width]",e(r.tone)]),style:Gt({width:t(r)})},null,6)])]))),128))]))}}),sn=Object.assign(nn,{__name:"StatisticalAnalysisUsageBarList"}),on={class:"grid gap-6 lg:grid-cols-[220px_1fr] lg:items-center"},ln={class:"flex items-center justify-center"},rn={class:"space-y-3"},cn={class:"flex min-w-0 items-center gap-2"},un={class:"truncate text-sm text-muted-foreground"},dn={class:"text-sm font-semibold tabular-nums"},gn={class:"w-12 text-right text-xs text-muted-foreground tabular-nums"},hn={class:"mt-5 border-t pt-4"},pn=tt({name:"StatisticalAnalysisEfficiencyCachePanel",__name:"EfficiencyCachePanel",props:{dailyItems:{},items:{}},setup(h){const e=h,t=T(()=>e.dailyItems.reduce((g,p)=>g+p.inputTokens,0)),s=T(()=>e.dailyItems.reduce((g,p)=>g+p.cachedInputTokens,0)),l=T(()=>Math.max(t.value-s.value,0)),r=T(()=>t.value>0?s.value/t.value:0),n=T(()=>rt(r.value)),a=T(()=>[{color:"#059669",key:"cached",label:"Cached Input",shareLabel:rt(r.value),value:s.value,valueLabel:J(s.value)},{color:"#0ea5e9",key:"fresh",label:"Fresh Input",shareLabel:rt(t.value>0?l.value/t.value:0),value:l.value,valueLabel:J(l.value)}]),d=T(()=>Object.fromEntries(a.value.map(g=>[g.key,{color:g.color,label:g.label}]))),i=T(()=>({[Wa.segment]:m}));function o(g){return g.value}function f(g){return g.color}function m(g){const p=g.data;return`
109
+ <div class="grid min-w-40 gap-2 rounded-md border bg-background px-3 py-2 text-xs shadow-lg">
110
+ <div class="flex items-center gap-2 font-medium text-foreground">
111
+ <span class="size-2 rounded-sm" style="background-color: ${p.color}"></span>
112
+ ${se(p.label)}
113
+ </div>
114
+ <div class="grid gap-1 text-muted-foreground">
115
+ <div class="flex justify-between gap-4"><span>Tokens</span><span class="font-mono font-medium text-foreground">${p.valueLabel}</span></div>
116
+ <div class="flex justify-between gap-4"><span>Share</span><span class="font-mono font-medium text-foreground">${p.shareLabel}</span></div>
117
+ </div>
118
+ </div>
119
+ `}return(g,p)=>{const b=ne,c=sn,x=Ot;return G(),pt(x,{description:"Cached input ratio across total input tokens",icon:"lucide:gauge",title:"Efficiency / Cache"},{default:w(()=>[M("div",on,[M("div",ln,[S(b,{class:"h-52 w-full max-w-56",config:D(d)},{default:w(()=>[S(D(Ua),{data:D(a),height:208},{default:w(()=>[S(D(Ba),{"arc-width":26,"central-label":D(n),"central-sub-label":"Hit Rate",color:f,"corner-radius":4,"pad-angle":.04,value:o},null,8,["central-label"]),S(D(ae),{triggers:D(i)},null,8,["triggers"])]),_:1},8,["data"])]),_:1},8,["config"])]),M("div",rn,[(G(!0),Y(St,null,kt(D(a),$=>(G(),Y("div",{key:$.key,class:"grid grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-3"},[M("div",cn,[M("span",{class:"size-2.5 shrink-0 rounded-full",style:Gt({backgroundColor:$.color})},null,4),M("span",un,O($.label),1)]),M("span",dn,O($.valueLabel),1),M("span",gn,O($.shareLabel),1)]))),128))])]),M("div",hn,[S(c,{items:h.items},null,8,["items"])])]),_:1})}}}),fn=Object.assign(pn,{__name:"StatisticalAnalysisEfficiencyCachePanel"});function me(){const{payload:h}=ca(),e=T(()=>h.value?wt.map(_=>h.value[_]??ta):[]),t=T(()=>e.value.flatMap((_,u)=>_.sessionUsage.map(v=>({...v,id:`${wt[u]}:${v.id}`,sessionId:`${wt[u]}:${v.sessionId}`}))).sort((_,u)=>Date.parse(u.startedAt)-Date.parse(_.startedAt))),s=T(()=>He(e.value.flatMap(_=>_.dailyTokenUsage))),l=T(()=>ze(e.value.flatMap(_=>_.monthlyModelUsage))),r=T(()=>Be(t.value)),n=T(()=>s.value.reduce((_,u)=>_+u.costUSD,0)),a=T(()=>s.value.reduce((_,u)=>_+u.totalTokens,0)),d=T(()=>s.value.reduce((_,u)=>_+u.inputTokens,0)),i=T(()=>s.value.reduce((_,u)=>_+u.cachedInputTokens,0)),o=T(()=>s.value.reduce((_,u)=>_+u.outputTokens,0)),f=T(()=>s.value.reduce((_,u)=>_+u.reasoningOutputTokens,0)),m=T(()=>t.value.length),g=Ge(new Date),p=We(g),b=T(()=>s.value.find(_=>Zt(_.date)===g)),c=T(()=>s.value.find(_=>Zt(_.date)===p)),x=T(()=>qt(b.value?.costUSD??0,c.value?.costUSD??0,lt)),$=T(()=>qt(b.value?.totalTokens??0,c.value?.totalTokens??0,J)),E=T(()=>{const _=Rt(i.value,d.value),u=Rt(f.value,a.value),v=Rt(o.value,a.value);return[{label:"Cache Hit Rate",value:rt(_),detail:`${J(i.value)} cached input tokens`,percent:_*100,tone:"green"},{label:"Reasoning Token Share",value:rt(u),detail:`${J(f.value)} reasoning output tokens`,percent:u*100,tone:"amber"},{label:"Output Token Share",value:rt(v),detail:`${J(o.value)} output tokens`,percent:v*100,tone:"sky"}]});return{cachedInputTokens:i,costGrowthTrend:x,dailyTokenUsage:s,efficiencyMetrics:E,inputTokens:d,monthlyModelUsage:l,projectUsage:r,sessionUsage:t,totalCost:n,totalSessions:m,totalTokens:a,tokenGrowthTrend:$}}function Rt(h,e){return e>0?h/e:0}const vt=10,mn=tt({name:"StatisticalAnalysisTokensUsagePanel",__name:"TokensUsagePanel",setup(h){const{dailyTokenUsage:e}=me(),t=ga(1),s=T(()=>Math.max(1,Math.ceil(e.value.length/vt))),l=T(()=>{const n=(Math.min(t.value,s.value)-1)*vt;return e.value.slice(n,n+vt)});return ft(e,()=>{t.value=1}),(r,n)=>{const a=Ie,d=Fe,i=Ne,o=qe,f=Ye,m=Xe,g=Ke,p=Ot;return G(),pt(p,{description:"Daily model activity by token type, cache reads, total usage, and cost",icon:"lucide:calendar-days",title:"Daily Token Usage"},{default:w(()=>[S(m,null,{default:w(()=>[S(i,null,{default:w(()=>[S(d,null,{default:w(()=>[S(a,null,{default:w(()=>[...n[1]||(n[1]=[V("Date",-1)])]),_:1}),S(a,null,{default:w(()=>[...n[2]||(n[2]=[V("Models",-1)])]),_:1}),S(a,{class:"text-right"},{default:w(()=>[...n[3]||(n[3]=[V(" Input ",-1)])]),_:1}),S(a,{class:"text-right"},{default:w(()=>[...n[4]||(n[4]=[V(" Output ",-1)])]),_:1}),S(a,{class:"text-right"},{default:w(()=>[...n[5]||(n[5]=[V(" Reasoning ",-1)])]),_:1}),S(a,{class:"text-right"},{default:w(()=>[...n[6]||(n[6]=[V(" Cache Read ",-1)])]),_:1}),S(a,{class:"text-right"},{default:w(()=>[...n[7]||(n[7]=[V(" Total Tokens ",-1)])]),_:1}),S(a,{class:"text-right"},{default:w(()=>[...n[8]||(n[8]=[V(" Cost (USD) ",-1)])]),_:1})]),_:1})]),_:1}),S(f,null,{default:w(()=>[(G(!0),Y(St,null,kt(D(l),b=>(G(),pt(d,{key:b.date},{default:w(()=>[S(o,{class:"font-medium"},{default:w(()=>[V(O(b.date),1)]),_:2},1024),S(o,null,{default:w(()=>[V(O(Object.keys(b.models).join(", ")),1)]),_:2},1024),S(o,{class:"text-right"},{default:w(()=>[V(O(D(Z)(b.inputTokens)),1)]),_:2},1024),S(o,{class:"text-right"},{default:w(()=>[V(O(D(Z)(b.outputTokens)),1)]),_:2},1024),S(o,{class:"text-right"},{default:w(()=>[V(O(D(Z)(b.reasoningOutputTokens)),1)]),_:2},1024),S(o,{class:"text-right"},{default:w(()=>[V(O(D(Z)(b.cachedInputTokens)),1)]),_:2},1024),S(o,{class:"text-right"},{default:w(()=>[V(O(D(Z)(b.totalTokens)),1)]),_:2},1024),S(o,{class:"text-right"},{default:w(()=>[V(O(b.costUSD.toFixed(2)),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1}),D(e).length>vt?(G(),pt(g,{key:0,page:D(t),"onUpdate:page":n[0]||(n[0]=b=>ua(t)?t.value=b:null),"page-count":D(s),"page-size":vt,total:D(e).length},null,8,["page","page-count","total"])):da("",!0)]),_:1})}}}),vn=Object.assign(mn,{__name:"StatisticalAnalysisTokensUsagePanel"}),$n=tt({__name:"index",setup(h){const{cachedInputTokens:e,costGrowthTrend:t,dailyTokenUsage:s,efficiencyMetrics:l,inputTokens:r,monthlyModelUsage:n,projectUsage:a,sessionUsage:d,totalCost:i,totalSessions:o,totalTokens:f,tokenGrowthTrend:m}=me(),g=T(()=>[{detail:`${lt(i.value)} total spend across all tools`,icon:"lucide:wallet",name:"Total Spend",trend:t.value.trend,trendTone:t.value.trendTone,value:lt(i.value)},{detail:`${Z(f.value)} total tokens across all tools`,icon:"solar:cpu-line-duotone",name:"Token Usage",trend:m.value.trend,trendTone:m.value.trendTone,value:J(f.value)},{detail:`${Z(e.value)} of ${Z(r.value)} input tokens were served from cache`,icon:"lucide:database-zap",name:"Cache Hit Rate",trend:`${J(e.value)} cached`,trendTone:"neutral",value:rt(r.value>0?e.value/r.value:0)},{detail:`${lt(i.value)} across ${Z(o.value)} sessions`,icon:"lucide:receipt-text",name:"Avg Session Cost",trend:"across all tools",trendTone:"neutral",value:lt(o.value>0?i.value/o.value:0)}]);return(p,b)=>{const c=Ze,x=ea,$=aa,E=na,_=Ka,u=fn,v=vn,R=Je,P=Qe;return G(),pt(P,null,{default:w(()=>[S(c,{cards:D(g)},null,8,["cards"]),S(R,null,{default:w(()=>[S(x,{"monthly-items":D(n),class:"md:col-span-8"},null,8,["monthly-items"]),S($,{items:D(a),class:"md:col-span-4"},null,8,["items"]),S(E,{items:D(s),class:"md:col-span-12","heat-metric":"cost",title:"Usage Trend"},null,8,["items"]),S(_,{items:D(d),"total-sessions":D(o),class:"md:col-span-6"},null,8,["items","total-sessions"]),S(u,{"daily-items":D(s),items:D(l),class:"md:col-span-6"},null,8,["daily-items","items"]),S(v,{class:"md:col-span-12"})]),_:1})]),_:1})}}});export{$n as default};