usage-board 3.2.0 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +1 -1
- package/dist/public/_nuxt/{DtbPvE6R.js → BL-DadsH.js} +1 -1
- package/dist/public/_nuxt/{DUoLvn3A.js → BO_d_Oyx.js} +1 -1
- package/dist/public/_nuxt/{CXLmM1yO.js → BtuXxixc.js} +1 -1
- package/dist/public/_nuxt/{COIbUy5w.js → CBu27bzx.js} +1 -1
- package/dist/public/_nuxt/{DFqWEFN4.js → CC4_0abj.js} +1 -1
- package/dist/public/_nuxt/{D_W11Quh.js → CGsjOcfM.js} +2 -2
- package/dist/public/_nuxt/{uHQwCIHg.js → CLHpvfq1.js} +1 -1
- package/dist/public/_nuxt/{CMWftE4h.js → COBlwcVj.js} +1 -1
- package/dist/public/_nuxt/{BvRyOET7.js → CjeAKHhp.js} +1 -1
- package/dist/public/_nuxt/{B6C9KBQ4.js → CvvesHM7.js} +1 -1
- package/dist/public/_nuxt/{DgKrPjze.js → IstswKJB.js} +2 -2
- package/dist/public/_nuxt/{Bv6agYS5.js → N8W_Dp-N.js} +1 -1
- package/dist/public/_nuxt/builds/latest.json +1 -1
- package/dist/public/_nuxt/builds/meta/be10c896-ee75-4f4f-911d-c3f0a8b4d417.json +1 -0
- package/dist/public/_nuxt/vkAmg0G5.js +1 -0
- package/dist/public/_nuxt/{DkxY2YMp.js → wUprbfrX.js} +1 -1
- package/dist/server/chunks/build/client.precomputed.mjs +1 -1
- package/dist/server/chunks/nitro/nitro.mjs +390 -161
- package/dist/server/package.json +1 -1
- package/package.json +1 -1
- package/dist/public/_nuxt/HiqUua3-.js +0 -1
- package/dist/public/_nuxt/builds/meta/ae3c6372-8821-43fb-aa55-bb47729a5660.json +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as vt,P as co,V as po,u as Ue,a as fo,D as mo,b as lt,c as vo,d as $t,h as go,T as yo,e as ho,S as _o,C as bo,f as gt,z as wo,A as So,_ as xo,g as he,j as yt,k as ht,l as J,m as pe,n as ko,o as _t,p as To,q as Co,r as Rt,s as Ot,t as Po,v as Lt,w as jt,x as Ut,y as Ft,B as Nt,E as Vt,F as zt,G as bt,H as Io,I as Eo,J as Do,K as Bo,L as qo}from"./DtbPvE6R.js";import{e as Mo,f as Ao,g as P,r as L,h as me,i as rt,j as $o,k as wt,l as Ro,n as Me,m as Ae,p as Oo,q as it,s as Ht,v as Lo,x as jo,y as j,z as _e,o as v,A as k,w as u,B as V,C as n,D as ut,E as dt,F as St,c as F,G as ee,H as ne,I as ie,J as Q,K as Xe,a as H,b as m,L as Ve,M as Uo,N as Ie,O as Fo,P as je,Q as ct,R as pt,T as No,d as B,S as Vo,t as O,U as We,V as ze,W as nt,X as zo,Y as Ho,Z as Wo,$ as Ko,a0 as Go,a1 as Yo,a2 as Ye,a3 as Pe,a4 as Xo,a5 as Jo,a6 as Zo}from"./DgKrPjze.js";import{i as Wt,g as ue,u as Fe,a as Qo,_ as Kt,b as en,c as tn,d as on,e as nn,f as an}from"./DkxY2YMp.js";import{i as sn,_ as Gt}from"./B6C9KBQ4.js";import{P as de,c as fe,_ as ln}from"./BvRyOET7.js";import{_ as rn}from"./DUoLvn3A.js";function xt(e,t=Number.NEGATIVE_INFINITY,o=Number.POSITIVE_INFINITY){return Math.min(o,Math.max(t,e))}const un=Ao(()=>{const e=L(new Map),t=L(),o=P(()=>{for(const s of e.value.values())if(s)return!0;return!1}),a=Wt({scrollBody:L(!0)});let l=null;const c=()=>{document.body.style.paddingRight="",document.body.style.marginRight="",document.body.style.pointerEvents="",document.documentElement.style.removeProperty("--scrollbar-width"),document.body.style.overflow=t.value??"",wt&&l?.(),t.value=void 0};return me(o,(s,r)=>{if(!rt)return;if(!s){r&&c();return}t.value===void 0&&(t.value=document.body.style.overflow);const d=window.innerWidth-document.documentElement.clientWidth,g={padding:d,margin:0},i=a.scrollBody?.value?typeof a.scrollBody.value=="object"?$o({padding:a.scrollBody.value.padding===!0?d:a.scrollBody.value.padding,margin:a.scrollBody.value.margin===!0?d:a.scrollBody.value.margin},g):g:{padding:0,margin:0};d>0&&(document.body.style.paddingRight=typeof i.padding=="number"?`${i.padding}px`:String(i.padding),document.body.style.marginRight=typeof i.margin=="number"?`${i.margin}px`:String(i.margin),document.documentElement.style.setProperty("--scrollbar-width",`${d}px`),document.body.style.overflow="hidden"),wt&&(l=Ro(document,"touchmove",p=>cn(p),{passive:!1})),Me(()=>{o.value&&(document.body.style.pointerEvents="none",document.body.style.overflow="hidden")})},{immediate:!0,flush:"sync"}),e});function dn(e){const t=Math.random().toString(36).substring(2,7),o=un();o.value.set(t,e??!1);const a=P({get:()=>o.value.get(t)??!1,set:l=>o.value.set(t,l)});return Mo(()=>{o.value.delete(t)}),a}function Yt(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth<e.scrollWidth||t.overflowY==="auto"&&e.clientHeight<e.scrollHeight)return!0;{const o=e.parentNode;return!(o instanceof Element)||o.tagName==="BODY"?!1:Yt(o)}}function cn(e){const t=e||window.event,o=t.target;return o instanceof Element&&Yt(o)?!1:t.touches.length>1?!0:(t.preventDefault&&t.cancelable&&t.preventDefault(),!1)}let Qe=0;function pn(){Ae(e=>{if(!rt)return;const t=document.querySelectorAll("[data-reka-focus-guard]");document.body.insertAdjacentElement("afterbegin",t[0]??kt()),document.body.insertAdjacentElement("beforeend",t[1]??kt()),Qe++,e(()=>{Qe===1&&document.querySelectorAll("[data-reka-focus-guard]").forEach(o=>o.remove()),Qe--})})}function kt(){const e=document.createElement("span");return e.setAttribute("data-reka-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}function fn(e){return P(()=>Oo(e)?!!it(e)?.closest("form"):!0)}var mn=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Le=new WeakMap,Ke=new WeakMap,Ge={},et=0,Xt=function(e){return e&&(e.host||Xt(e.parentNode))},vn=function(e,t){return t.map(function(o){if(e.contains(o))return o;var a=Xt(o);return a&&e.contains(a)?a:(console.error("aria-hidden",o,"in not contained inside",e,". Doing nothing"),null)}).filter(function(o){return!!o})},gn=function(e,t,o,a){var l=vn(t,Array.isArray(e)?e:[e]);Ge[o]||(Ge[o]=new WeakMap);var c=Ge[o],s=[],r=new Set,d=new Set(l),g=function(p){!p||r.has(p)||(r.add(p),g(p.parentNode))};l.forEach(g);var i=function(p){!p||d.has(p)||Array.prototype.forEach.call(p.children,function(y){if(r.has(y))i(y);else try{var w=y.getAttribute(a),x=w!==null&&w!=="false",S=(Le.get(y)||0)+1,T=(c.get(y)||0)+1;Le.set(y,S),c.set(y,T),s.push(y),S===1&&x&&Ke.set(y,!0),T===1&&y.setAttribute(o,"true"),x||y.setAttribute(a,"true")}catch(U){console.error("aria-hidden: cannot operate on ",y,U)}})};return i(t),r.clear(),et++,function(){s.forEach(function(p){var y=Le.get(p)-1,w=c.get(p)-1;Le.set(p,y),c.set(p,w),y||(Ke.has(p)||p.removeAttribute(a),Ke.delete(p)),w||p.removeAttribute(o)}),et--,et||(Le=new WeakMap,Le=new WeakMap,Ke=new WeakMap,Ge={})}},yn=function(e,t,o){o===void 0&&(o="data-aria-hidden");var a=Array.from(Array.isArray(e)?e:[e]),l=mn(e);return l?(a.push.apply(a,Array.from(l.querySelectorAll("[aria-live], script"))),gn(a,l,o,"aria-hidden")):function(){return null}};function hn(e){let t;me(()=>it(e),o=>{let a=!1;try{a=!!o?.closest("[popover]:not(:popover-open)")}catch{}o&&!a?t=yn(o):t&&t()}),Ht(()=>{t&&t()})}function Jt(e){const t=Lo("",1e3);return{search:t,handleTypeaheadSearch:(l,c)=>{t.value=t.value+l;{const s=ue(),r=c.map(y=>({...y,textValue:y.value?.textValue??y.ref.textContent?.trim()??""})),d=r.find(y=>y.ref===s),g=r.map(y=>y.textValue),i=bn(g,t.value,d?.textValue),p=r.find(y=>y.textValue===i);return p&&p.ref.focus(),p?.ref}},resetTypeahead:()=>{t.value=""}}}function _n(e,t){return e.map((o,a)=>e[(t+a)%e.length])}function bn(e,t,o){const l=t.length>1&&Array.from(t).every(g=>g===t[0])?t[0]:t,c=o?e.indexOf(o):-1;let s=_n(e,Math.max(c,0));l.length===1&&(s=s.filter(g=>g!==o));const d=s.find(g=>g.toLowerCase().startsWith(l.toLowerCase()));return d!==o?d:void 0}const wn=jo(()=>L([]));function Sn(){const e=wn();return{add(t){const o=e.value[0];t!==o&&o?.pause(),e.value=Tt(e.value,t),e.value.unshift(t)},remove(t){e.value=Tt(e.value,t),e.value[0]?.resume()}}}function Tt(e,t){const o=[...e],a=o.indexOf(t);return a!==-1&&o.splice(a,1),o}const tt="focusScope.autoFocusOnMount",ot="focusScope.autoFocusOnUnmount",Ct={bubbles:!1,cancelable:!0};function xn(e,{select:t=!1}={}){const o=ue();for(const a of e)if(Ce(a,{select:t}),ue()!==o)return!0}function kn(e){const t=Zt(e),o=Pt(t,e),a=Pt(t.reverse(),e);return[o,a]}function Zt(e){const t=[],o=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:a=>{const l=a.tagName==="INPUT"&&a.type==="hidden";return a.disabled||a.hidden||l?NodeFilter.FILTER_SKIP:a.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;o.nextNode();)t.push(o.currentNode);return t}function Pt(e,t){for(const o of e)if(!Tn(o,{upTo:t}))return o}function Tn(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function Cn(e){return e instanceof HTMLInputElement&&"select"in e}function Ce(e,{select:t=!1}={}){if(e&&e.focus){const o=ue();e.focus({preventScroll:!0}),e!==o&&Cn(e)&&t&&e.select()}}var Pn=j({__name:"FocusScope",props:{loop:{type:Boolean,required:!1,default:!1},trapped:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["mountAutoFocus","unmountAutoFocus"],setup(e,{emit:t}){const o=e,a=t,{currentRef:l,currentElement:c}=_e(),s=L(null),r=Sn(),d=ut({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}});Ae(i=>{if(!rt)return;const p=c.value;if(!o.trapped)return;function y(T){if(d.paused||!p)return;const U=T.target;p.contains(U)?s.value=U:Ce(s.value,{select:!0})}function w(T){if(d.paused||!p)return;const U=T.relatedTarget;U!==null&&(p.contains(U)||Ce(s.value,{select:!0}))}function x(T){const U=s.value;if(U===null||!T.some(_=>_.removedNodes.length>0))return;p.contains(U)||Ce(p)}document.addEventListener("focusin",y),document.addEventListener("focusout",w);const S=new MutationObserver(x);p&&S.observe(p,{childList:!0,subtree:!0}),i(()=>{document.removeEventListener("focusin",y),document.removeEventListener("focusout",w),S.disconnect()})}),Ae(async i=>{const p=c.value;if(await Me(),!p)return;r.add(d);const y=ue();if(!p.contains(y)){const x=new CustomEvent(tt,Ct);p.addEventListener(tt,S=>a("mountAutoFocus",S)),p.dispatchEvent(x),x.defaultPrevented||(xn(Zt(p),{select:!0}),ue()===y&&Ce(p))}i(()=>{p.removeEventListener(tt,T=>a("mountAutoFocus",T));const x=new CustomEvent(ot,Ct),S=T=>{a("unmountAutoFocus",T)};p.addEventListener(ot,S),p.dispatchEvent(x),setTimeout(()=>{x.defaultPrevented||Ce(y??document.body,{select:!0}),p.removeEventListener(ot,S),r.remove(d)},0)})});function g(i){if(!o.loop&&!o.trapped||d.paused)return;const p=i.key==="Tab"&&!i.altKey&&!i.ctrlKey&&!i.metaKey,y=ue();if(p&&y){const w=i.currentTarget,[x,S]=kn(w);x&&S?!i.shiftKey&&y===S?(i.preventDefault(),o.loop&&Ce(x,{select:!0})):i.shiftKey&&y===x&&(i.preventDefault(),o.loop&&Ce(S,{select:!0})):y===w&&i.preventDefault()}}return(i,p)=>(v(),k(n(de),{ref_key:"currentRef",ref:l,tabindex:"-1","as-child":i.asChild,as:i.as,onKeydown:g},{default:u(()=>[V(i.$slots,"default")]),_:3},8,["as-child","as"]))}}),In=Pn;function It(e){const t=ue();for(const o of e)if(o===t||(o.focus(),ue()!==t))return}function En(e){const t=Wt({nonce:L()});return P(()=>e?.value||t.nonce?.value)}const Dn=[" ","Enter","ArrowUp","ArrowDown"],Bn=[" ","Enter"],re=10;function He(e,t,o){return e===void 0?!1:Array.isArray(e)?e.some(a=>at(a,t,o)):at(e,t,o)}function at(e,t,o){return e===void 0||t===void 0?!1:typeof e=="string"?e===t:typeof o=="function"?o(e,t):typeof o=="string"?e?.[o]===t?.[o]:sn(e,t)}function qn(e){return e==null||e===""||Array.isArray(e)&&e.length===0}const Mn={key:0,value:""},[Ee,Qt]=Xe("SelectRoot");var An=j({inheritAttrs:!1,__name:"SelectRoot",props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},by:{type:[String,Function],required:!1},dir:{type:String,required:!1},multiple:{type:Boolean,required:!1},autocomplete:{type:String,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","update:open"],setup(e,{emit:t}){const o=e,a=t,{required:l,disabled:c,multiple:s,dir:r}=dt(o),d=St(o,"modelValue",a,{defaultValue:o.defaultValue??(s.value?[]:void 0),passive:o.modelValue===void 0,deep:!0}),g=St(o,"open",a,{defaultValue:o.defaultOpen,passive:o.open===void 0}),i=L(),p=L(),y=L({x:0,y:0}),w=P(()=>s.value&&Array.isArray(d.value)?d.value?.length===0:vt(d.value));Fe({isProvider:!0});const x=Qo(r),S=fn(i),T=L(new Set),U=P(()=>Array.from(T.value).map(_=>_.value).join(";"));function W(_){if(s.value){const q=Array.isArray(d.value)?[...d.value]:[],C=q.findIndex(M=>at(M,_,o.by));C===-1?q.push(_):q.splice(C,1),d.value=[...q]}else d.value=_}function A(_){return Array.from(T.value).find(q=>He(_,q.value,o.by))}return Qt({triggerElement:i,onTriggerChange:_=>{i.value=_},valueElement:p,onValueElementChange:_=>{p.value=_},contentId:"",modelValue:d,onValueChange:W,by:o.by,open:g,multiple:s,required:l,onOpenChange:_=>{g.value=_},dir:x,triggerPointerDownPosRef:y,disabled:c,isEmptyModelValue:w,optionsSet:T,onOptionAdd:_=>{const q=A(_.value);q&&T.value.delete(q),T.value.add(_)},onOptionRemove:_=>{const q=A(_.value);q&&T.value.delete(q)}}),(_,q)=>(v(),k(n(co),null,{default:u(()=>[V(_.$slots,"default",{modelValue:n(d),open:n(g)}),n(S)&&_.name?(v(),k(On,{key:U.value,"aria-hidden":"true",tabindex:"-1",multiple:n(s),required:n(l),name:_.name,autocomplete:_.autocomplete,disabled:n(c),value:n(d)},{default:u(()=>[n(vt)(n(d))?(v(),F("option",Mn)):ee("v-if",!0),(v(!0),F(ne,null,ie(Array.from(T.value),C=>(v(),F("option",Q({key:C.value??""},{ref_for:!0},C),null,16))),128))]),_:1},8,["multiple","required","name","autocomplete","disabled","value"])):ee("v-if",!0)]),_:3}))}}),$n=An,Rn=j({__name:"BubbleSelect",props:{autocomplete:{type:String,required:!1},autofocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},form:{type:String,required:!1},multiple:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},size:{type:Number,required:!1},value:{type:null,required:!1}},setup(e){const t=e,o=L(),a=Ee();me(()=>t.value,(c,s)=>{const r=window.HTMLSelectElement.prototype,g=Object.getOwnPropertyDescriptor(r,"value").set;if(c!==s&&g&&o.value){const i=new Event("change",{bubbles:!0});g.call(o.value,c),o.value.dispatchEvent(i)}});function l(c){a.onValueChange(c.target.value)}return(c,s)=>(v(),k(n(po),{"as-child":""},{default:u(()=>[H("select",Q({ref_key:"selectElement",ref:o},t,{onInput:l}),[V(c.$slots,"default")],16)]),_:3}))}}),On=Rn,Ln=j({__name:"SelectPopperPosition",props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:"start"},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1,default:re},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const o=Ue(e);return(a,l)=>(v(),k(n(fo),Q(n(o),{style:{boxSizing:"border-box","--reka-select-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-select-content-available-width":"var(--reka-popper-available-width)","--reka-select-content-available-height":"var(--reka-popper-available-height)","--reka-select-trigger-width":"var(--reka-popper-anchor-width)","--reka-select-trigger-height":"var(--reka-popper-anchor-height)"}}),{default:u(()=>[V(a.$slots,"default")]),_:3},16))}}),jn=Ln;const Un={onViewportChange:()=>{},itemTextRefCallback:()=>{},itemRefCallback:()=>{}},[$e,eo]=Xe("SelectContent");var Fn=j({__name:"SelectContentImpl",props:{position:{type:String,required:!1,default:"item-aligned"},bodyLock:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:"start"},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:!0}},emits:["closeAutoFocus","escapeKeyDown","pointerDownOutside"],setup(e,{emit:t}){const o=e,a=t,l=Ee();pn(),dn(o.bodyLock);const{CollectionSlot:c,getItems:s}=Fe(),r=L();hn(r);const{search:d,handleTypeaheadSearch:g}=Jt(),i=L(),p=L(),y=L(),w=L(!1),x=L(!1),S=L(!1);function T(){p.value&&r.value&&It([p.value,r.value])}me(w,()=>{T()});const{onOpenChange:U,triggerPointerDownPosRef:W}=l;Ae(C=>{if(!r.value)return;let M={x:0,y:0};const R=$=>{M={x:Math.abs(Math.round($.pageX)-(W.value?.x??0)),y:Math.abs(Math.round($.pageY)-(W.value?.y??0))}},N=$=>{$.pointerType!=="touch"&&(M.x<=10&&M.y<=10?$.preventDefault():r.value?.contains($.target)||U(!1),document.removeEventListener("pointermove",R),W.value=null)};W.value!==null&&(document.addEventListener("pointermove",R),document.addEventListener("pointerup",N,{capture:!0,once:!0})),C(()=>{document.removeEventListener("pointermove",R),document.removeEventListener("pointerup",N,{capture:!0})})});function A(C){const M=C.ctrlKey||C.altKey||C.metaKey;if(C.key==="Tab"&&C.preventDefault(),!M&&C.key.length===1&&g(C.key,s()),["ArrowUp","ArrowDown","Home","End"].includes(C.key)){let N=[...s().map($=>$.ref)];if(["ArrowUp","End"].includes(C.key)&&(N=N.slice().reverse()),["ArrowUp","ArrowDown"].includes(C.key)){const $=C.target,ae=N.indexOf($);N=N.slice(ae+1)}setTimeout(()=>It(N)),C.preventDefault()}}const _=P(()=>o.position==="popper"?o:{}),q=Ue(_.value);return eo({content:r,viewport:i,onViewportChange:C=>{i.value=C},itemRefCallback:(C,M,R)=>{const N=!x.value&&!R,$=He(l.modelValue.value,M,l.by);if(l.multiple.value){if(S.value)return;($||N)&&(p.value=C,$&&(S.value=!0))}else($||N)&&(p.value=C);N&&(x.value=!0)},selectedItem:p,selectedItemText:y,onItemLeave:()=>{r.value?.focus()},itemTextRefCallback:(C,M,R)=>{const N=!x.value&&!R;(He(l.modelValue.value,M,l.by)||N)&&(y.value=C)},focusSelectedItem:T,position:o.position,isPositioned:w,searchRef:d}),(C,M)=>(v(),k(n(c),null,{default:u(()=>[m(n(In),{"as-child":"",onMountAutoFocus:M[6]||(M[6]=Ve(()=>{},["prevent"])),onUnmountAutoFocus:M[7]||(M[7]=R=>{a("closeAutoFocus",R),!R.defaultPrevented&&(n(l).triggerElement.value?.focus({preventScroll:!0}),R.preventDefault())})},{default:u(()=>[m(n(mo),{"as-child":"","disable-outside-pointer-events":C.disableOutsidePointerEvents,onFocusOutside:M[2]||(M[2]=Ve(()=>{},["prevent"])),onDismiss:M[3]||(M[3]=R=>n(l).onOpenChange(!1)),onEscapeKeyDown:M[4]||(M[4]=R=>a("escapeKeyDown",R)),onPointerDownOutside:M[5]||(M[5]=R=>a("pointerDownOutside",R))},{default:u(()=>[(v(),k(Uo(C.position==="popper"?jn:Hn),Q({...C.$attrs,...n(q)},{id:n(l).contentId,ref:R=>{if(!R)return;const N=n(it)(R);N?.hasAttribute("data-reka-popper-content-wrapper")?r.value=N.firstElementChild:r.value=N},role:"listbox","data-state":n(l).open.value?"open":"closed",dir:n(l).dir.value,style:{display:"flex",flexDirection:"column",outline:"none"},onContextmenu:M[0]||(M[0]=Ve(()=>{},["prevent"])),onPlaced:M[1]||(M[1]=R=>w.value=!0),onKeydown:A}),{default:u(()=>[V(C.$slots,"default")]),_:3},16,["id","data-state","dir","onKeydown"]))]),_:3},8,["disable-outside-pointer-events"])]),_:3})]),_:3}))}}),Nn=Fn;const[ft,Vn]=Xe("SelectItemAlignedPosition");var zn=j({inheritAttrs:!1,__name:"SelectItemAlignedPosition",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["placed"],setup(e,{emit:t}){const o=e,a=t,{getItems:l}=Fe(),c=Ee(),s=$e(),r=L(!1),d=L(!0),g=L(),{forwardRef:i,currentElement:p}=_e(),{viewport:y,selectedItem:w,selectedItemText:x,focusSelectedItem:S}=s;function T(){if(c.triggerElement.value&&c.valueElement.value&&g.value&&p.value&&y?.value&&w?.value&&x?.value){const A=c.triggerElement.value.getBoundingClientRect(),_=p.value.getBoundingClientRect(),q=c.valueElement.value.getBoundingClientRect(),C=x.value.getBoundingClientRect();if(c.dir.value!=="rtl"){const I=C.left-_.left,D=q.left-I,h=A.left-D,z=A.width+h,te=Math.max(z,_.width),Y=window.innerWidth-re,oe=xt(D,re,Math.max(re,Y-te));g.value.style.minWidth=`${z}px`,g.value.style.left=`${oe}px`}else{const I=_.right-C.right,D=window.innerWidth-q.right-I,h=window.innerWidth-A.right-D,z=A.width+h,te=Math.max(z,_.width),Y=window.innerWidth-re,oe=xt(D,re,Math.max(re,Y-te));g.value.style.minWidth=`${z}px`,g.value.style.right=`${oe}px`}const M=l().map(I=>I.ref),R=window.innerHeight-re*2,N=y.value.scrollHeight,$=window.getComputedStyle(p.value),ae=Number.parseInt($.borderTopWidth,10),ve=Number.parseInt($.paddingTop,10),be=Number.parseInt($.borderBottomWidth,10),ge=Number.parseInt($.paddingBottom,10),G=ae+ve+N+ge+be,De=Math.min(w.value.offsetHeight*5,G),we=window.getComputedStyle(y.value),Be=Number.parseInt(we.paddingTop,10),ce=Number.parseInt(we.paddingBottom,10),Z=A.top+A.height/2-re,Se=R-Z,se=w.value.offsetHeight/2,xe=w.value.offsetTop+se,le=ae+ve+xe,ye=G-le;if(le<=Z){const I=w.value===M.at(-1);g.value.style.bottom="0px";const D=p.value.clientHeight-y.value.offsetTop-y.value.offsetHeight,h=Math.max(Se,se+(I?ce:0)+D+be),z=le+h;g.value.style.height=`${z}px`}else{const I=w.value===M[0];g.value.style.top="0px";const h=Math.max(Z,ae+y.value.offsetTop+(I?Be:0)+se)+ye;g.value.style.height=`${h}px`,y.value.scrollTop=le-Z+y.value.offsetTop}g.value.style.margin=`${re}px 0`,g.value.style.minHeight=`${De}px`,g.value.style.maxHeight=`${R}px`,a("placed"),requestAnimationFrame(()=>r.value=!0)}}const U=L("");Ie(async()=>{await Me(),T(),p.value&&(U.value=window.getComputedStyle(p.value).zIndex)});function W(A){A&&d.value===!0&&(T(),S?.(),d.value=!1)}return Fo(c.triggerElement,()=>{T()}),Vn({contentWrapper:g,shouldExpandOnScrollRef:r,onScrollButtonChange:W}),(A,_)=>(v(),F("div",{ref_key:"contentWrapperElement",ref:g,style:je({display:"flex",flexDirection:"column",position:"fixed",zIndex:U.value})},[m(n(de),Q({ref:n(i),style:{boxSizing:"border-box",maxHeight:"100%"}},{...A.$attrs,...o}),{default:u(()=>[V(A.$slots,"default")]),_:3},16)],4))}}),Hn=zn,Wn=j({inheritAttrs:!1,__name:"SelectProvider",props:{context:{type:Object,required:!0}},setup(e){return Qt(e.context),eo(Un),(o,a)=>V(o.$slots,"default")}}),Kn=Wn;const Gn={key:1};var Yn=j({inheritAttrs:!1,__name:"SelectContent",props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["closeAutoFocus","escapeKeyDown","pointerDownOutside"],setup(e,{emit:t}){const o=e,l=lt(o,t),c=Ee(),s=L();Ie(()=>{s.value=new DocumentFragment});const r=L(),d=P(()=>o.forceMount||c.open.value),g=L(d.value);return me(d,()=>{setTimeout(()=>g.value=d.value)}),(i,p)=>d.value||g.value||r.value?.present?(v(),k(n(vo),{key:0,ref_key:"presenceRef",ref:r,present:d.value},{default:u(()=>[m(Nn,ct(pt({...n(l),...i.$attrs})),{default:u(()=>[V(i.$slots,"default")]),_:3},16)]),_:3},8,["present"])):s.value?(v(),F("div",Gn,[(v(),k(No,{to:s.value},[m(Kn,{context:n(c)},{default:u(()=>[V(i.$slots,"default")]),_:3},8,["context"])],8,["to"]))])):ee("v-if",!0)}}),Xn=Yn,Jn=j({__name:"SelectIcon",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(e){return(t,o)=>(v(),k(n(de),{"aria-hidden":"true",as:t.as,"as-child":t.asChild},{default:u(()=>[V(t.$slots,"default",{},()=>[o[0]||(o[0]=B("▼"))])]),_:3},8,["as","as-child"]))}}),Zn=Jn;const[to,Qn]=Xe("SelectItem");var ea=j({__name:"SelectItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select"],setup(e,{emit:t}){const o=e,a=t,{disabled:l}=dt(o),c=Ee(),s=$e(),{forwardRef:r,currentElement:d}=_e(),{CollectionItem:g}=Fe(),i=P(()=>He(c.modelValue?.value,o.value,c.by)),p=L(!1),y=L(o.textValue??""),w=$t(void 0,"reka-select-item-text"),x="select.select";async function S(_){if(_.defaultPrevented)return;const q={originalEvent:_,value:o.value};go(x,T,q)}async function T(_){await Me(),a("select",_),!_.defaultPrevented&&(l.value||(c.onValueChange(o.value),c.multiple.value||c.onOpenChange(!1)))}async function U(_){await Me(),!_.defaultPrevented&&(l.value?s.onItemLeave?.():_.currentTarget?.focus({preventScroll:!0}))}async function W(_){await Me(),!_.defaultPrevented&&_.currentTarget===ue()&&s.onItemLeave?.()}async function A(_){await Me(),!(_.defaultPrevented||s.searchRef?.value!==""&&_.key===" ")&&(Bn.includes(_.key)&&S(_),_.key===" "&&_.preventDefault())}if(o.value==="")throw new Error("A <SelectItem /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return Ie(()=>{d.value&&s.itemRefCallback(d.value,o.value,o.disabled)}),Qn({value:o.value,disabled:l,textId:w,isSelected:i,onItemTextChange:_=>{y.value=((y.value||_?.textContent)??"").trim()}}),(_,q)=>(v(),k(n(g),{value:{textValue:y.value}},{default:u(()=>[m(n(de),{ref:n(r),role:"option","aria-labelledby":n(w),"data-highlighted":p.value?"":void 0,"aria-selected":i.value,"data-state":i.value?"checked":"unchecked","aria-disabled":n(l)||void 0,"data-disabled":n(l)?"":void 0,tabindex:n(l)?void 0:-1,as:_.as,"as-child":_.asChild,onFocus:q[0]||(q[0]=C=>p.value=!0),onBlur:q[1]||(q[1]=C=>p.value=!1),onPointerup:S,onPointerdown:q[2]||(q[2]=C=>{C.currentTarget.focus({preventScroll:!0})}),onTouchend:q[3]||(q[3]=Ve(()=>{},["prevent","stop"])),onPointermove:U,onPointerleave:W,onKeydown:A},{default:u(()=>[V(_.$slots,"default")]),_:3},8,["aria-labelledby","data-highlighted","aria-selected","data-state","aria-disabled","data-disabled","tabindex","as","as-child"])]),_:3},8,["value"]))}}),ta=ea,oa=j({__name:"SelectItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(e){const t=e,o=to();return(a,l)=>n(o).isSelected.value?(v(),k(n(de),Q({key:0,"aria-hidden":"true"},t),{default:u(()=>[V(a.$slots,"default")]),_:3},16)):ee("v-if",!0)}}),na=oa,aa=j({inheritAttrs:!1,__name:"SelectItemText",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(e){const t=e,o=Ee(),a=$e(),l=to(),{forwardRef:c,currentElement:s}=_e(),r=P(()=>({value:l.value,disabled:l.disabled.value,textContent:s.value?.textContent??l.value?.toString()??""}));return Ie(()=>{s.value&&(l.onItemTextChange(s.value),a.itemTextRefCallback(s.value,l.value,l.disabled.value),o.onOptionAdd(r.value))}),Ht(()=>{o.onOptionRemove(r.value)}),(d,g)=>(v(),k(n(de),Q({id:n(l).textId,ref:n(c)},{...t,...d.$attrs}),{default:u(()=>[V(d.$slots,"default")]),_:3},16,["id"]))}}),sa=aa,la=j({__name:"SelectPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){const t=e;return(o,a)=>(v(),k(n(yo),ct(pt(t)),{default:u(()=>[V(o.$slots,"default")]),_:3},16))}}),ra=la,ia=j({__name:"SelectScrollButtonImpl",emits:["autoScroll"],setup(e,{emit:t}){const o=t,{getItems:a}=Fe(),l=$e(),c=L(null);function s(){c.value!==null&&(window.clearInterval(c.value),c.value=null)}Ae(()=>{a().map(i=>i.ref).find(i=>i===ue())?.scrollIntoView({block:"nearest"})});function r(){c.value===null&&(c.value=window.setInterval(()=>{o("autoScroll")},50))}function d(){l.onItemLeave?.(),c.value===null&&(c.value=window.setInterval(()=>{o("autoScroll")},50))}return Vo(()=>s()),(g,i)=>(v(),k(n(de),Q({"aria-hidden":"true",style:{flexShrink:0}},g.$parent?.$props,{onPointerdown:r,onPointermove:d,onPointerleave:i[0]||(i[0]=()=>{s()})}),{default:u(()=>[V(g.$slots,"default")]),_:3},16))}}),oo=ia,ua=j({__name:"SelectScrollDownButton",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const t=$e(),o=t.position==="item-aligned"?ft():void 0,{forwardRef:a,currentElement:l}=_e(),c=L(!1);return Ae(s=>{if(t.viewport?.value&&t.isPositioned?.value){let d=function(){const g=r.scrollHeight-r.clientHeight;c.value=Math.ceil(r.scrollTop)<g};const r=t.viewport.value;d(),r.addEventListener("scroll",d),s(()=>r.removeEventListener("scroll",d))}}),me(l,()=>{l.value&&o?.onScrollButtonChange(l.value)}),(s,r)=>c.value?(v(),k(oo,{key:0,ref:n(a),onAutoScroll:r[0]||(r[0]=()=>{const{viewport:d,selectedItem:g}=n(t);d?.value&&g?.value&&(d.value.scrollTop=d.value.scrollTop+g.value.offsetHeight)})},{default:u(()=>[V(s.$slots,"default")]),_:3},512)):ee("v-if",!0)}}),da=ua,ca=j({__name:"SelectScrollUpButton",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const t=$e(),o=t.position==="item-aligned"?ft():void 0,{forwardRef:a,currentElement:l}=_e(),c=L(!1);return Ae(s=>{if(t.viewport?.value&&t.isPositioned?.value){let d=function(){c.value=r.scrollTop>0};const r=t.viewport.value;d(),r.addEventListener("scroll",d),s(()=>r.removeEventListener("scroll",d))}}),me(l,()=>{l.value&&o?.onScrollButtonChange(l.value)}),(s,r)=>c.value?(v(),k(oo,{key:0,ref:n(a),onAutoScroll:r[0]||(r[0]=()=>{const{viewport:d,selectedItem:g}=n(t);d?.value&&g?.value&&(d.value.scrollTop=d.value.scrollTop-g.value.offsetHeight)})},{default:u(()=>[V(s.$slots,"default")]),_:3},512)):ee("v-if",!0)}}),pa=ca,fa=j({__name:"SelectTrigger",props:{disabled:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,o=Ee(),{forwardRef:a,currentElement:l}=_e(),c=P(()=>o.disabled?.value||t.disabled);o.contentId||=$t(void 0,"reka-select-content"),Ie(()=>{o.onTriggerChange(l.value)});const{getItems:s}=Fe(),{search:r,handleTypeaheadSearch:d,resetTypeahead:g}=Jt();function i(){c.value||(o.onOpenChange(!0),g())}function p(y){i(),o.triggerPointerDownPosRef.value={x:Math.round(y.pageX),y:Math.round(y.pageY)}}return(y,w)=>(v(),k(n(ho),{"as-child":"",reference:y.reference},{default:u(()=>[m(n(de),{ref:n(a),role:"combobox",type:y.as==="button"?"button":void 0,"aria-controls":n(o).contentId,"aria-expanded":n(o).open.value||!1,"aria-required":n(o).required?.value,"aria-autocomplete":"none",disabled:c.value,dir:n(o)?.dir.value,"data-state":n(o)?.open.value?"open":"closed","data-disabled":c.value?"":void 0,"data-placeholder":n(qn)(n(o).modelValue?.value)?"":void 0,"as-child":y.asChild,as:y.as,onClick:w[0]||(w[0]=x=>{x?.currentTarget?.focus()}),onPointerdown:w[1]||(w[1]=x=>{if(x.pointerType==="touch")return x.preventDefault();const S=x.target;S.hasPointerCapture(x.pointerId)&&S.releasePointerCapture(x.pointerId),x.button===0&&x.ctrlKey===!1&&(p(x),x.preventDefault())}),onPointerup:w[2]||(w[2]=Ve(x=>{x.pointerType==="touch"&&p(x)},["prevent"])),onKeydown:w[3]||(w[3]=x=>{const S=n(r)!=="";!(x.ctrlKey||x.altKey||x.metaKey)&&x.key.length===1&&S&&x.key===" "||(n(d)(x.key,n(s)()),n(Dn).includes(x.key)&&(i(),x.preventDefault()))})},{default:u(()=>[V(y.$slots,"default")]),_:3},8,["type","aria-controls","aria-expanded","aria-required","disabled","dir","data-state","data-disabled","data-placeholder","as-child","as"])]),_:3},8,["reference"]))}}),ma=fa,va=j({__name:"SelectValue",props:{placeholder:{type:String,required:!1,default:""},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(e){const t=e,{forwardRef:o,currentElement:a}=_e(),l=Ee();Ie(()=>{l.valueElement=a});const c=P(()=>{let r=[];const d=Array.from(l.optionsSet.value),g=i=>d.find(p=>He(i,p.value,l.by));return Array.isArray(l.modelValue.value)?r=l.modelValue.value.map(i=>g(i)?.textContent??""):r=[g(l.modelValue.value)?.textContent??""],r.filter(Boolean)}),s=P(()=>c.value.length?c.value.join(", "):t.placeholder);return(r,d)=>(v(),k(n(de),{ref:n(o),as:r.as,"as-child":r.asChild,style:{pointerEvents:"none"},"data-placeholder":c.value.length?void 0:t.placeholder},{default:u(()=>[V(r.$slots,"default",{selectedLabel:c.value,modelValue:n(l).modelValue.value},()=>[B(O(s.value),1)])]),_:3},8,["as","as-child","data-placeholder"]))}}),ga=va,ya=j({__name:"SelectViewport",props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const t=e,{nonce:o}=dt(t),a=En(o),l=$e(),c=l.position==="item-aligned"?ft():void 0,{forwardRef:s,currentElement:r}=_e();Ie(()=>{l?.onViewportChange(r.value)});const d=L(0);function g(i){const p=i.currentTarget,{shouldExpandOnScrollRef:y,contentWrapper:w}=c??{};if(y?.value&&w?.value){const x=Math.abs(d.value-p.scrollTop);if(x>0){const S=window.innerHeight-re*2,T=Number.parseFloat(w.value.style.minHeight),U=Number.parseFloat(w.value.style.height),W=Math.max(T,U);if(W<S){const A=W+x,_=Math.min(S,A),q=A-_;w.value.style.height=`${_}px`,w.value.style.bottom==="0px"&&(p.scrollTop=q>0?q:0,w.value.style.justifyContent="flex-end")}}}d.value=p.scrollTop}return(i,p)=>(v(),F(ne,null,[m(n(de),Q({ref:n(s),"data-reka-select-viewport":"",role:"presentation"},{...i.$attrs,...t},{style:{position:"relative",flex:1,overflow:"hidden auto"},onScroll:g}),{default:u(()=>[V(i.$slots,"default")]),_:3},16),m(n(de),{as:"style",nonce:n(a)},{default:u(()=>p[0]||(p[0]=[B(" /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-select-viewport] { scrollbar-width:none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } [data-reka-select-viewport]::-webkit-scrollbar { display: none; } ")])),_:1,__:[0]},8,["nonce"])],64))}}),ha=ya;const _a=j({__name:"Select",props:{open:{type:Boolean},defaultOpen:{type:Boolean},defaultValue:{},modelValue:{},by:{type:[String,Function]},dir:{},multiple:{type:Boolean},autocomplete:{},disabled:{type:Boolean},name:{},required:{type:Boolean}},emits:["update:modelValue","update:open"],setup(e,{emit:t}){const l=lt(e,t);return(c,s)=>(v(),k(n($n),Q({"data-slot":"select"},n(l)),{default:u(r=>[V(c.$slots,"default",ct(pt(r)))]),_:3},16))}}),ba=j({inheritAttrs:!1,__name:"SelectContent",props:{forceMount:{type:Boolean},position:{default:"popper"},bodyLock:{type:Boolean},side:{},sideOffset:{},sideFlip:{type:Boolean},align:{},alignOffset:{},alignFlip:{type:Boolean},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},hideShiftedArrow:{type:Boolean},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},disableUpdateOnLayoutShift:{type:Boolean},prioritizePosition:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},disableOutsidePointerEvents:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]}},emits:["closeAutoFocus","escapeKeyDown","pointerDownOutside"],setup(e,{emit:t}){const o=e,a=t,l=We(o,"class"),c=lt(l,a);return(s,r)=>(v(),k(n(ra),null,{default:u(()=>[m(n(Xn),Q({"data-slot":"select-content"},{...s.$attrs,...n(c)},{class:n(fe)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--reka-select-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border shadow-md",e.position==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",o.class)}),{default:u(()=>[m(n(Ba)),m(n(ha),{class:ze(n(fe)("p-1",e.position==="popper"&&"h-[var(--reka-select-trigger-height)] w-full min-w-[var(--reka-select-trigger-width)] scroll-my-1"))},{default:u(()=>[V(s.$slots,"default")]),_:3},8,["class"]),m(n(Da))]),_:3},16,["class"])]),_:3}))}});const Et=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),wa=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,o,a)=>a?a.toUpperCase():o.toLowerCase()),Sa=e=>{const t=wa(e);return t.charAt(0).toUpperCase()+t.slice(1)},xa=(...e)=>e.filter((t,o,a)=>!!t&&t.trim()!==""&&a.indexOf(t)===o).join(" ").trim(),Dt=e=>e==="";var Ne={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};const ka=({name:e,iconNode:t,absoluteStrokeWidth:o,"absolute-stroke-width":a,strokeWidth:l,"stroke-width":c,size:s=Ne.width,color:r=Ne.stroke,...d},{slots:g})=>nt("svg",{...Ne,...d,width:s,height:s,stroke:r,"stroke-width":Dt(o)||Dt(a)||o===!0||a===!0?Number(l||c||Ne["stroke-width"])*24/Number(s):l||c||Ne["stroke-width"],class:xa("lucide",d.class,...e?[`lucide-${Et(Sa(e))}-icon`,`lucide-${Et(e)}`]:["lucide-icon"])},[...t.map(i=>nt(...i)),...g.default?[g.default()]:[]]);const Je=(e,t)=>(o,{slots:a,attrs:l})=>nt(ka,{...l,...o,iconNode:t,name:e},a);const Ta=Je("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);const no=Je("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);const Ca=Je("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);const Pa=Je("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]),Ia={class:"absolute right-2 flex size-3.5 items-center justify-center"},Ea=j({__name:"SelectItem",props:{value:{},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){const t=e,o=We(t,"class"),a=Ue(o);return(l,c)=>(v(),k(n(ta),Q({"data-slot":"select-item"},n(a),{class:n(fe)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t.class)}),{default:u(()=>[H("span",Ia,[m(n(na),null,{default:u(()=>[V(l.$slots,"indicator-icon",{},()=>[m(n(Ta),{class:"size-4"})])]),_:3})]),m(n(sa),null,{default:u(()=>[V(l.$slots,"default")]),_:3})]),_:3},16,["class"]))}}),Da=j({__name:"SelectScrollDownButton",props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){const t=e,o=We(t,"class"),a=Ue(o);return(l,c)=>(v(),k(n(da),Q({"data-slot":"select-scroll-down-button"},n(a),{class:n(fe)("flex cursor-default items-center justify-center py-1",t.class)}),{default:u(()=>[V(l.$slots,"default",{},()=>[m(n(no),{class:"size-4"})])]),_:3},16,["class"]))}}),Ba=j({__name:"SelectScrollUpButton",props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){const t=e,o=We(t,"class"),a=Ue(o);return(l,c)=>(v(),k(n(pa),Q({"data-slot":"select-scroll-up-button"},n(a),{class:n(fe)("flex cursor-default items-center justify-center py-1",t.class)}),{default:u(()=>[V(l.$slots,"default",{},()=>[m(n(Ca),{class:"size-4"})])]),_:3},16,["class"]))}}),qa=j({__name:"SelectTrigger",props:{disabled:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]},size:{default:"default"}},setup(e){const t=e,o=We(t,"class","size"),a=Ue(o);return(l,c)=>(v(),k(n(ma),Q({"data-slot":"select-trigger","data-size":e.size},n(a),{class:n(fe)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t.class)}),{default:u(()=>[V(l.$slots,"default"),m(n(Zn),{"as-child":""},{default:u(()=>[m(n(no),{class:"size-4 opacity-50"})]),_:1})]),_:3},16,["data-size","class"]))}}),Ma=j({__name:"SelectValue",props:{placeholder:{},asChild:{type:Boolean},as:{}},setup(e){const t=e;return(o,a)=>(v(),k(n(ga),Q({"data-slot":"select-value"},t),{default:u(()=>[V(o.$slots,"default")]),_:3},16))}}),Aa=j({__name:"Spinner",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){const t=e;return(o,a)=>(v(),k(n(Pa),{role:"status","aria-label":"Loading",class:ze(n(fe)("size-4 animate-spin",t.class))},null,8,["class"]))}}),$a={class:"space-y-4"},Ra={key:0,class:"pointer-events-none absolute inset-0 z-10"},Oa={class:"flex flex-wrap items-center justify-center gap-3 text-xs text-muted-foreground"},La={class:"max-w-40 truncate",translate:"no"},ja={class:"font-medium text-foreground tabular-nums"},Ua=.24,Fa="#94a3b8",Na=288,Va=j({__name:"ProjectLineChart",props:{series:{},tooltipLabels:{},tickIndexes:{},xLabels:{}},setup(e){const t=e,o={bottom:32,left:56,right:28,top:8},a={left:8,right:18},l=[0,void 0],c=zo({selector:"html",attribute:"class",storageKey:"app-color-mode"}),s=new Intl.DateTimeFormat("en-US",{day:"numeric",month:"short"}),r=new Intl.DateTimeFormat("en-US",{month:"short"}),d=Ho("chartRoot"),{width:g}=Wo(d),i=ut({datumIndex:null,pointerY:null}),p=P(()=>t.xLabels.map((b,I)=>({index:I,label:t.tooltipLabels?.[I]??b,values:Object.fromEntries(t.series.map(D=>[D.label,D.points[I]??0]))}))),y=P(()=>t.xLabels.map((b,I)=>Se(b,I,t.xLabels.length))),w=P(()=>t.series.map(b=>({...b,color:xe(b.color),total:b.points.reduce((I,D)=>I+D,0)})).sort((b,I)=>I.total-b.total)),x=P(()=>w.value.map(b=>I=>I.values[b.label]??0)),S=P(()=>Object.fromEntries(w.value.map(b=>[b.label,{color:b.color,label:b.label}]))),T=P(()=>w.value.map(b=>`
|
|
1
|
+
import{i as vt,P as co,V as po,u as Ue,a as fo,D as mo,b as lt,c as vo,d as $t,h as go,T as yo,e as ho,S as _o,C as bo,f as gt,z as wo,A as So,_ as xo,g as he,j as yt,k as ht,l as J,m as pe,n as ko,o as _t,p as To,q as Co,r as Rt,s as Ot,t as Po,v as Lt,w as jt,x as Ut,y as Ft,B as Nt,E as Vt,F as zt,G as bt,H as Io,I as Eo,J as Do,K as Bo,L as qo}from"./BL-DadsH.js";import{e as Mo,f as Ao,g as P,r as L,h as me,i as rt,j as $o,k as wt,l as Ro,n as Me,m as Ae,p as Oo,q as it,s as Ht,v as Lo,x as jo,y as j,z as _e,o as v,A as k,w as u,B as V,C as n,D as ut,E as dt,F as St,c as F,G as ee,H as ne,I as ie,J as Q,K as Xe,a as H,b as m,L as Ve,M as Uo,N as Ie,O as Fo,P as je,Q as ct,R as pt,T as No,d as B,S as Vo,t as O,U as We,V as ze,W as nt,X as zo,Y as Ho,Z as Wo,$ as Ko,a0 as Go,a1 as Yo,a2 as Ye,a3 as Pe,a4 as Xo,a5 as Jo,a6 as Zo}from"./IstswKJB.js";import{i as Wt,g as ue,u as Fe,a as Qo,_ as Kt,b as en,c as tn,d as on,e as nn,f as an}from"./wUprbfrX.js";import{i as sn,_ as Gt}from"./CvvesHM7.js";import{P as de,c as fe,_ as ln}from"./CjeAKHhp.js";import{_ as rn}from"./BO_d_Oyx.js";function xt(e,t=Number.NEGATIVE_INFINITY,o=Number.POSITIVE_INFINITY){return Math.min(o,Math.max(t,e))}const un=Ao(()=>{const e=L(new Map),t=L(),o=P(()=>{for(const s of e.value.values())if(s)return!0;return!1}),a=Wt({scrollBody:L(!0)});let l=null;const c=()=>{document.body.style.paddingRight="",document.body.style.marginRight="",document.body.style.pointerEvents="",document.documentElement.style.removeProperty("--scrollbar-width"),document.body.style.overflow=t.value??"",wt&&l?.(),t.value=void 0};return me(o,(s,r)=>{if(!rt)return;if(!s){r&&c();return}t.value===void 0&&(t.value=document.body.style.overflow);const d=window.innerWidth-document.documentElement.clientWidth,g={padding:d,margin:0},i=a.scrollBody?.value?typeof a.scrollBody.value=="object"?$o({padding:a.scrollBody.value.padding===!0?d:a.scrollBody.value.padding,margin:a.scrollBody.value.margin===!0?d:a.scrollBody.value.margin},g):g:{padding:0,margin:0};d>0&&(document.body.style.paddingRight=typeof i.padding=="number"?`${i.padding}px`:String(i.padding),document.body.style.marginRight=typeof i.margin=="number"?`${i.margin}px`:String(i.margin),document.documentElement.style.setProperty("--scrollbar-width",`${d}px`),document.body.style.overflow="hidden"),wt&&(l=Ro(document,"touchmove",p=>cn(p),{passive:!1})),Me(()=>{o.value&&(document.body.style.pointerEvents="none",document.body.style.overflow="hidden")})},{immediate:!0,flush:"sync"}),e});function dn(e){const t=Math.random().toString(36).substring(2,7),o=un();o.value.set(t,e??!1);const a=P({get:()=>o.value.get(t)??!1,set:l=>o.value.set(t,l)});return Mo(()=>{o.value.delete(t)}),a}function Yt(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth<e.scrollWidth||t.overflowY==="auto"&&e.clientHeight<e.scrollHeight)return!0;{const o=e.parentNode;return!(o instanceof Element)||o.tagName==="BODY"?!1:Yt(o)}}function cn(e){const t=e||window.event,o=t.target;return o instanceof Element&&Yt(o)?!1:t.touches.length>1?!0:(t.preventDefault&&t.cancelable&&t.preventDefault(),!1)}let Qe=0;function pn(){Ae(e=>{if(!rt)return;const t=document.querySelectorAll("[data-reka-focus-guard]");document.body.insertAdjacentElement("afterbegin",t[0]??kt()),document.body.insertAdjacentElement("beforeend",t[1]??kt()),Qe++,e(()=>{Qe===1&&document.querySelectorAll("[data-reka-focus-guard]").forEach(o=>o.remove()),Qe--})})}function kt(){const e=document.createElement("span");return e.setAttribute("data-reka-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}function fn(e){return P(()=>Oo(e)?!!it(e)?.closest("form"):!0)}var mn=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Le=new WeakMap,Ke=new WeakMap,Ge={},et=0,Xt=function(e){return e&&(e.host||Xt(e.parentNode))},vn=function(e,t){return t.map(function(o){if(e.contains(o))return o;var a=Xt(o);return a&&e.contains(a)?a:(console.error("aria-hidden",o,"in not contained inside",e,". Doing nothing"),null)}).filter(function(o){return!!o})},gn=function(e,t,o,a){var l=vn(t,Array.isArray(e)?e:[e]);Ge[o]||(Ge[o]=new WeakMap);var c=Ge[o],s=[],r=new Set,d=new Set(l),g=function(p){!p||r.has(p)||(r.add(p),g(p.parentNode))};l.forEach(g);var i=function(p){!p||d.has(p)||Array.prototype.forEach.call(p.children,function(y){if(r.has(y))i(y);else try{var w=y.getAttribute(a),x=w!==null&&w!=="false",S=(Le.get(y)||0)+1,T=(c.get(y)||0)+1;Le.set(y,S),c.set(y,T),s.push(y),S===1&&x&&Ke.set(y,!0),T===1&&y.setAttribute(o,"true"),x||y.setAttribute(a,"true")}catch(U){console.error("aria-hidden: cannot operate on ",y,U)}})};return i(t),r.clear(),et++,function(){s.forEach(function(p){var y=Le.get(p)-1,w=c.get(p)-1;Le.set(p,y),c.set(p,w),y||(Ke.has(p)||p.removeAttribute(a),Ke.delete(p)),w||p.removeAttribute(o)}),et--,et||(Le=new WeakMap,Le=new WeakMap,Ke=new WeakMap,Ge={})}},yn=function(e,t,o){o===void 0&&(o="data-aria-hidden");var a=Array.from(Array.isArray(e)?e:[e]),l=mn(e);return l?(a.push.apply(a,Array.from(l.querySelectorAll("[aria-live], script"))),gn(a,l,o,"aria-hidden")):function(){return null}};function hn(e){let t;me(()=>it(e),o=>{let a=!1;try{a=!!o?.closest("[popover]:not(:popover-open)")}catch{}o&&!a?t=yn(o):t&&t()}),Ht(()=>{t&&t()})}function Jt(e){const t=Lo("",1e3);return{search:t,handleTypeaheadSearch:(l,c)=>{t.value=t.value+l;{const s=ue(),r=c.map(y=>({...y,textValue:y.value?.textValue??y.ref.textContent?.trim()??""})),d=r.find(y=>y.ref===s),g=r.map(y=>y.textValue),i=bn(g,t.value,d?.textValue),p=r.find(y=>y.textValue===i);return p&&p.ref.focus(),p?.ref}},resetTypeahead:()=>{t.value=""}}}function _n(e,t){return e.map((o,a)=>e[(t+a)%e.length])}function bn(e,t,o){const l=t.length>1&&Array.from(t).every(g=>g===t[0])?t[0]:t,c=o?e.indexOf(o):-1;let s=_n(e,Math.max(c,0));l.length===1&&(s=s.filter(g=>g!==o));const d=s.find(g=>g.toLowerCase().startsWith(l.toLowerCase()));return d!==o?d:void 0}const wn=jo(()=>L([]));function Sn(){const e=wn();return{add(t){const o=e.value[0];t!==o&&o?.pause(),e.value=Tt(e.value,t),e.value.unshift(t)},remove(t){e.value=Tt(e.value,t),e.value[0]?.resume()}}}function Tt(e,t){const o=[...e],a=o.indexOf(t);return a!==-1&&o.splice(a,1),o}const tt="focusScope.autoFocusOnMount",ot="focusScope.autoFocusOnUnmount",Ct={bubbles:!1,cancelable:!0};function xn(e,{select:t=!1}={}){const o=ue();for(const a of e)if(Ce(a,{select:t}),ue()!==o)return!0}function kn(e){const t=Zt(e),o=Pt(t,e),a=Pt(t.reverse(),e);return[o,a]}function Zt(e){const t=[],o=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:a=>{const l=a.tagName==="INPUT"&&a.type==="hidden";return a.disabled||a.hidden||l?NodeFilter.FILTER_SKIP:a.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;o.nextNode();)t.push(o.currentNode);return t}function Pt(e,t){for(const o of e)if(!Tn(o,{upTo:t}))return o}function Tn(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function Cn(e){return e instanceof HTMLInputElement&&"select"in e}function Ce(e,{select:t=!1}={}){if(e&&e.focus){const o=ue();e.focus({preventScroll:!0}),e!==o&&Cn(e)&&t&&e.select()}}var Pn=j({__name:"FocusScope",props:{loop:{type:Boolean,required:!1,default:!1},trapped:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["mountAutoFocus","unmountAutoFocus"],setup(e,{emit:t}){const o=e,a=t,{currentRef:l,currentElement:c}=_e(),s=L(null),r=Sn(),d=ut({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}});Ae(i=>{if(!rt)return;const p=c.value;if(!o.trapped)return;function y(T){if(d.paused||!p)return;const U=T.target;p.contains(U)?s.value=U:Ce(s.value,{select:!0})}function w(T){if(d.paused||!p)return;const U=T.relatedTarget;U!==null&&(p.contains(U)||Ce(s.value,{select:!0}))}function x(T){const U=s.value;if(U===null||!T.some(_=>_.removedNodes.length>0))return;p.contains(U)||Ce(p)}document.addEventListener("focusin",y),document.addEventListener("focusout",w);const S=new MutationObserver(x);p&&S.observe(p,{childList:!0,subtree:!0}),i(()=>{document.removeEventListener("focusin",y),document.removeEventListener("focusout",w),S.disconnect()})}),Ae(async i=>{const p=c.value;if(await Me(),!p)return;r.add(d);const y=ue();if(!p.contains(y)){const x=new CustomEvent(tt,Ct);p.addEventListener(tt,S=>a("mountAutoFocus",S)),p.dispatchEvent(x),x.defaultPrevented||(xn(Zt(p),{select:!0}),ue()===y&&Ce(p))}i(()=>{p.removeEventListener(tt,T=>a("mountAutoFocus",T));const x=new CustomEvent(ot,Ct),S=T=>{a("unmountAutoFocus",T)};p.addEventListener(ot,S),p.dispatchEvent(x),setTimeout(()=>{x.defaultPrevented||Ce(y??document.body,{select:!0}),p.removeEventListener(ot,S),r.remove(d)},0)})});function g(i){if(!o.loop&&!o.trapped||d.paused)return;const p=i.key==="Tab"&&!i.altKey&&!i.ctrlKey&&!i.metaKey,y=ue();if(p&&y){const w=i.currentTarget,[x,S]=kn(w);x&&S?!i.shiftKey&&y===S?(i.preventDefault(),o.loop&&Ce(x,{select:!0})):i.shiftKey&&y===x&&(i.preventDefault(),o.loop&&Ce(S,{select:!0})):y===w&&i.preventDefault()}}return(i,p)=>(v(),k(n(de),{ref_key:"currentRef",ref:l,tabindex:"-1","as-child":i.asChild,as:i.as,onKeydown:g},{default:u(()=>[V(i.$slots,"default")]),_:3},8,["as-child","as"]))}}),In=Pn;function It(e){const t=ue();for(const o of e)if(o===t||(o.focus(),ue()!==t))return}function En(e){const t=Wt({nonce:L()});return P(()=>e?.value||t.nonce?.value)}const Dn=[" ","Enter","ArrowUp","ArrowDown"],Bn=[" ","Enter"],re=10;function He(e,t,o){return e===void 0?!1:Array.isArray(e)?e.some(a=>at(a,t,o)):at(e,t,o)}function at(e,t,o){return e===void 0||t===void 0?!1:typeof e=="string"?e===t:typeof o=="function"?o(e,t):typeof o=="string"?e?.[o]===t?.[o]:sn(e,t)}function qn(e){return e==null||e===""||Array.isArray(e)&&e.length===0}const Mn={key:0,value:""},[Ee,Qt]=Xe("SelectRoot");var An=j({inheritAttrs:!1,__name:"SelectRoot",props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},by:{type:[String,Function],required:!1},dir:{type:String,required:!1},multiple:{type:Boolean,required:!1},autocomplete:{type:String,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","update:open"],setup(e,{emit:t}){const o=e,a=t,{required:l,disabled:c,multiple:s,dir:r}=dt(o),d=St(o,"modelValue",a,{defaultValue:o.defaultValue??(s.value?[]:void 0),passive:o.modelValue===void 0,deep:!0}),g=St(o,"open",a,{defaultValue:o.defaultOpen,passive:o.open===void 0}),i=L(),p=L(),y=L({x:0,y:0}),w=P(()=>s.value&&Array.isArray(d.value)?d.value?.length===0:vt(d.value));Fe({isProvider:!0});const x=Qo(r),S=fn(i),T=L(new Set),U=P(()=>Array.from(T.value).map(_=>_.value).join(";"));function W(_){if(s.value){const q=Array.isArray(d.value)?[...d.value]:[],C=q.findIndex(M=>at(M,_,o.by));C===-1?q.push(_):q.splice(C,1),d.value=[...q]}else d.value=_}function A(_){return Array.from(T.value).find(q=>He(_,q.value,o.by))}return Qt({triggerElement:i,onTriggerChange:_=>{i.value=_},valueElement:p,onValueElementChange:_=>{p.value=_},contentId:"",modelValue:d,onValueChange:W,by:o.by,open:g,multiple:s,required:l,onOpenChange:_=>{g.value=_},dir:x,triggerPointerDownPosRef:y,disabled:c,isEmptyModelValue:w,optionsSet:T,onOptionAdd:_=>{const q=A(_.value);q&&T.value.delete(q),T.value.add(_)},onOptionRemove:_=>{const q=A(_.value);q&&T.value.delete(q)}}),(_,q)=>(v(),k(n(co),null,{default:u(()=>[V(_.$slots,"default",{modelValue:n(d),open:n(g)}),n(S)&&_.name?(v(),k(On,{key:U.value,"aria-hidden":"true",tabindex:"-1",multiple:n(s),required:n(l),name:_.name,autocomplete:_.autocomplete,disabled:n(c),value:n(d)},{default:u(()=>[n(vt)(n(d))?(v(),F("option",Mn)):ee("v-if",!0),(v(!0),F(ne,null,ie(Array.from(T.value),C=>(v(),F("option",Q({key:C.value??""},{ref_for:!0},C),null,16))),128))]),_:1},8,["multiple","required","name","autocomplete","disabled","value"])):ee("v-if",!0)]),_:3}))}}),$n=An,Rn=j({__name:"BubbleSelect",props:{autocomplete:{type:String,required:!1},autofocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},form:{type:String,required:!1},multiple:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},size:{type:Number,required:!1},value:{type:null,required:!1}},setup(e){const t=e,o=L(),a=Ee();me(()=>t.value,(c,s)=>{const r=window.HTMLSelectElement.prototype,g=Object.getOwnPropertyDescriptor(r,"value").set;if(c!==s&&g&&o.value){const i=new Event("change",{bubbles:!0});g.call(o.value,c),o.value.dispatchEvent(i)}});function l(c){a.onValueChange(c.target.value)}return(c,s)=>(v(),k(n(po),{"as-child":""},{default:u(()=>[H("select",Q({ref_key:"selectElement",ref:o},t,{onInput:l}),[V(c.$slots,"default")],16)]),_:3}))}}),On=Rn,Ln=j({__name:"SelectPopperPosition",props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:"start"},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1,default:re},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const o=Ue(e);return(a,l)=>(v(),k(n(fo),Q(n(o),{style:{boxSizing:"border-box","--reka-select-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-select-content-available-width":"var(--reka-popper-available-width)","--reka-select-content-available-height":"var(--reka-popper-available-height)","--reka-select-trigger-width":"var(--reka-popper-anchor-width)","--reka-select-trigger-height":"var(--reka-popper-anchor-height)"}}),{default:u(()=>[V(a.$slots,"default")]),_:3},16))}}),jn=Ln;const Un={onViewportChange:()=>{},itemTextRefCallback:()=>{},itemRefCallback:()=>{}},[$e,eo]=Xe("SelectContent");var Fn=j({__name:"SelectContentImpl",props:{position:{type:String,required:!1,default:"item-aligned"},bodyLock:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:"start"},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:!0}},emits:["closeAutoFocus","escapeKeyDown","pointerDownOutside"],setup(e,{emit:t}){const o=e,a=t,l=Ee();pn(),dn(o.bodyLock);const{CollectionSlot:c,getItems:s}=Fe(),r=L();hn(r);const{search:d,handleTypeaheadSearch:g}=Jt(),i=L(),p=L(),y=L(),w=L(!1),x=L(!1),S=L(!1);function T(){p.value&&r.value&&It([p.value,r.value])}me(w,()=>{T()});const{onOpenChange:U,triggerPointerDownPosRef:W}=l;Ae(C=>{if(!r.value)return;let M={x:0,y:0};const R=$=>{M={x:Math.abs(Math.round($.pageX)-(W.value?.x??0)),y:Math.abs(Math.round($.pageY)-(W.value?.y??0))}},N=$=>{$.pointerType!=="touch"&&(M.x<=10&&M.y<=10?$.preventDefault():r.value?.contains($.target)||U(!1),document.removeEventListener("pointermove",R),W.value=null)};W.value!==null&&(document.addEventListener("pointermove",R),document.addEventListener("pointerup",N,{capture:!0,once:!0})),C(()=>{document.removeEventListener("pointermove",R),document.removeEventListener("pointerup",N,{capture:!0})})});function A(C){const M=C.ctrlKey||C.altKey||C.metaKey;if(C.key==="Tab"&&C.preventDefault(),!M&&C.key.length===1&&g(C.key,s()),["ArrowUp","ArrowDown","Home","End"].includes(C.key)){let N=[...s().map($=>$.ref)];if(["ArrowUp","End"].includes(C.key)&&(N=N.slice().reverse()),["ArrowUp","ArrowDown"].includes(C.key)){const $=C.target,ae=N.indexOf($);N=N.slice(ae+1)}setTimeout(()=>It(N)),C.preventDefault()}}const _=P(()=>o.position==="popper"?o:{}),q=Ue(_.value);return eo({content:r,viewport:i,onViewportChange:C=>{i.value=C},itemRefCallback:(C,M,R)=>{const N=!x.value&&!R,$=He(l.modelValue.value,M,l.by);if(l.multiple.value){if(S.value)return;($||N)&&(p.value=C,$&&(S.value=!0))}else($||N)&&(p.value=C);N&&(x.value=!0)},selectedItem:p,selectedItemText:y,onItemLeave:()=>{r.value?.focus()},itemTextRefCallback:(C,M,R)=>{const N=!x.value&&!R;(He(l.modelValue.value,M,l.by)||N)&&(y.value=C)},focusSelectedItem:T,position:o.position,isPositioned:w,searchRef:d}),(C,M)=>(v(),k(n(c),null,{default:u(()=>[m(n(In),{"as-child":"",onMountAutoFocus:M[6]||(M[6]=Ve(()=>{},["prevent"])),onUnmountAutoFocus:M[7]||(M[7]=R=>{a("closeAutoFocus",R),!R.defaultPrevented&&(n(l).triggerElement.value?.focus({preventScroll:!0}),R.preventDefault())})},{default:u(()=>[m(n(mo),{"as-child":"","disable-outside-pointer-events":C.disableOutsidePointerEvents,onFocusOutside:M[2]||(M[2]=Ve(()=>{},["prevent"])),onDismiss:M[3]||(M[3]=R=>n(l).onOpenChange(!1)),onEscapeKeyDown:M[4]||(M[4]=R=>a("escapeKeyDown",R)),onPointerDownOutside:M[5]||(M[5]=R=>a("pointerDownOutside",R))},{default:u(()=>[(v(),k(Uo(C.position==="popper"?jn:Hn),Q({...C.$attrs,...n(q)},{id:n(l).contentId,ref:R=>{if(!R)return;const N=n(it)(R);N?.hasAttribute("data-reka-popper-content-wrapper")?r.value=N.firstElementChild:r.value=N},role:"listbox","data-state":n(l).open.value?"open":"closed",dir:n(l).dir.value,style:{display:"flex",flexDirection:"column",outline:"none"},onContextmenu:M[0]||(M[0]=Ve(()=>{},["prevent"])),onPlaced:M[1]||(M[1]=R=>w.value=!0),onKeydown:A}),{default:u(()=>[V(C.$slots,"default")]),_:3},16,["id","data-state","dir","onKeydown"]))]),_:3},8,["disable-outside-pointer-events"])]),_:3})]),_:3}))}}),Nn=Fn;const[ft,Vn]=Xe("SelectItemAlignedPosition");var zn=j({inheritAttrs:!1,__name:"SelectItemAlignedPosition",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["placed"],setup(e,{emit:t}){const o=e,a=t,{getItems:l}=Fe(),c=Ee(),s=$e(),r=L(!1),d=L(!0),g=L(),{forwardRef:i,currentElement:p}=_e(),{viewport:y,selectedItem:w,selectedItemText:x,focusSelectedItem:S}=s;function T(){if(c.triggerElement.value&&c.valueElement.value&&g.value&&p.value&&y?.value&&w?.value&&x?.value){const A=c.triggerElement.value.getBoundingClientRect(),_=p.value.getBoundingClientRect(),q=c.valueElement.value.getBoundingClientRect(),C=x.value.getBoundingClientRect();if(c.dir.value!=="rtl"){const I=C.left-_.left,D=q.left-I,h=A.left-D,z=A.width+h,te=Math.max(z,_.width),Y=window.innerWidth-re,oe=xt(D,re,Math.max(re,Y-te));g.value.style.minWidth=`${z}px`,g.value.style.left=`${oe}px`}else{const I=_.right-C.right,D=window.innerWidth-q.right-I,h=window.innerWidth-A.right-D,z=A.width+h,te=Math.max(z,_.width),Y=window.innerWidth-re,oe=xt(D,re,Math.max(re,Y-te));g.value.style.minWidth=`${z}px`,g.value.style.right=`${oe}px`}const M=l().map(I=>I.ref),R=window.innerHeight-re*2,N=y.value.scrollHeight,$=window.getComputedStyle(p.value),ae=Number.parseInt($.borderTopWidth,10),ve=Number.parseInt($.paddingTop,10),be=Number.parseInt($.borderBottomWidth,10),ge=Number.parseInt($.paddingBottom,10),G=ae+ve+N+ge+be,De=Math.min(w.value.offsetHeight*5,G),we=window.getComputedStyle(y.value),Be=Number.parseInt(we.paddingTop,10),ce=Number.parseInt(we.paddingBottom,10),Z=A.top+A.height/2-re,Se=R-Z,se=w.value.offsetHeight/2,xe=w.value.offsetTop+se,le=ae+ve+xe,ye=G-le;if(le<=Z){const I=w.value===M.at(-1);g.value.style.bottom="0px";const D=p.value.clientHeight-y.value.offsetTop-y.value.offsetHeight,h=Math.max(Se,se+(I?ce:0)+D+be),z=le+h;g.value.style.height=`${z}px`}else{const I=w.value===M[0];g.value.style.top="0px";const h=Math.max(Z,ae+y.value.offsetTop+(I?Be:0)+se)+ye;g.value.style.height=`${h}px`,y.value.scrollTop=le-Z+y.value.offsetTop}g.value.style.margin=`${re}px 0`,g.value.style.minHeight=`${De}px`,g.value.style.maxHeight=`${R}px`,a("placed"),requestAnimationFrame(()=>r.value=!0)}}const U=L("");Ie(async()=>{await Me(),T(),p.value&&(U.value=window.getComputedStyle(p.value).zIndex)});function W(A){A&&d.value===!0&&(T(),S?.(),d.value=!1)}return Fo(c.triggerElement,()=>{T()}),Vn({contentWrapper:g,shouldExpandOnScrollRef:r,onScrollButtonChange:W}),(A,_)=>(v(),F("div",{ref_key:"contentWrapperElement",ref:g,style:je({display:"flex",flexDirection:"column",position:"fixed",zIndex:U.value})},[m(n(de),Q({ref:n(i),style:{boxSizing:"border-box",maxHeight:"100%"}},{...A.$attrs,...o}),{default:u(()=>[V(A.$slots,"default")]),_:3},16)],4))}}),Hn=zn,Wn=j({inheritAttrs:!1,__name:"SelectProvider",props:{context:{type:Object,required:!0}},setup(e){return Qt(e.context),eo(Un),(o,a)=>V(o.$slots,"default")}}),Kn=Wn;const Gn={key:1};var Yn=j({inheritAttrs:!1,__name:"SelectContent",props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["closeAutoFocus","escapeKeyDown","pointerDownOutside"],setup(e,{emit:t}){const o=e,l=lt(o,t),c=Ee(),s=L();Ie(()=>{s.value=new DocumentFragment});const r=L(),d=P(()=>o.forceMount||c.open.value),g=L(d.value);return me(d,()=>{setTimeout(()=>g.value=d.value)}),(i,p)=>d.value||g.value||r.value?.present?(v(),k(n(vo),{key:0,ref_key:"presenceRef",ref:r,present:d.value},{default:u(()=>[m(Nn,ct(pt({...n(l),...i.$attrs})),{default:u(()=>[V(i.$slots,"default")]),_:3},16)]),_:3},8,["present"])):s.value?(v(),F("div",Gn,[(v(),k(No,{to:s.value},[m(Kn,{context:n(c)},{default:u(()=>[V(i.$slots,"default")]),_:3},8,["context"])],8,["to"]))])):ee("v-if",!0)}}),Xn=Yn,Jn=j({__name:"SelectIcon",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(e){return(t,o)=>(v(),k(n(de),{"aria-hidden":"true",as:t.as,"as-child":t.asChild},{default:u(()=>[V(t.$slots,"default",{},()=>[o[0]||(o[0]=B("▼"))])]),_:3},8,["as","as-child"]))}}),Zn=Jn;const[to,Qn]=Xe("SelectItem");var ea=j({__name:"SelectItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select"],setup(e,{emit:t}){const o=e,a=t,{disabled:l}=dt(o),c=Ee(),s=$e(),{forwardRef:r,currentElement:d}=_e(),{CollectionItem:g}=Fe(),i=P(()=>He(c.modelValue?.value,o.value,c.by)),p=L(!1),y=L(o.textValue??""),w=$t(void 0,"reka-select-item-text"),x="select.select";async function S(_){if(_.defaultPrevented)return;const q={originalEvent:_,value:o.value};go(x,T,q)}async function T(_){await Me(),a("select",_),!_.defaultPrevented&&(l.value||(c.onValueChange(o.value),c.multiple.value||c.onOpenChange(!1)))}async function U(_){await Me(),!_.defaultPrevented&&(l.value?s.onItemLeave?.():_.currentTarget?.focus({preventScroll:!0}))}async function W(_){await Me(),!_.defaultPrevented&&_.currentTarget===ue()&&s.onItemLeave?.()}async function A(_){await Me(),!(_.defaultPrevented||s.searchRef?.value!==""&&_.key===" ")&&(Bn.includes(_.key)&&S(_),_.key===" "&&_.preventDefault())}if(o.value==="")throw new Error("A <SelectItem /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return Ie(()=>{d.value&&s.itemRefCallback(d.value,o.value,o.disabled)}),Qn({value:o.value,disabled:l,textId:w,isSelected:i,onItemTextChange:_=>{y.value=((y.value||_?.textContent)??"").trim()}}),(_,q)=>(v(),k(n(g),{value:{textValue:y.value}},{default:u(()=>[m(n(de),{ref:n(r),role:"option","aria-labelledby":n(w),"data-highlighted":p.value?"":void 0,"aria-selected":i.value,"data-state":i.value?"checked":"unchecked","aria-disabled":n(l)||void 0,"data-disabled":n(l)?"":void 0,tabindex:n(l)?void 0:-1,as:_.as,"as-child":_.asChild,onFocus:q[0]||(q[0]=C=>p.value=!0),onBlur:q[1]||(q[1]=C=>p.value=!1),onPointerup:S,onPointerdown:q[2]||(q[2]=C=>{C.currentTarget.focus({preventScroll:!0})}),onTouchend:q[3]||(q[3]=Ve(()=>{},["prevent","stop"])),onPointermove:U,onPointerleave:W,onKeydown:A},{default:u(()=>[V(_.$slots,"default")]),_:3},8,["aria-labelledby","data-highlighted","aria-selected","data-state","aria-disabled","data-disabled","tabindex","as","as-child"])]),_:3},8,["value"]))}}),ta=ea,oa=j({__name:"SelectItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(e){const t=e,o=to();return(a,l)=>n(o).isSelected.value?(v(),k(n(de),Q({key:0,"aria-hidden":"true"},t),{default:u(()=>[V(a.$slots,"default")]),_:3},16)):ee("v-if",!0)}}),na=oa,aa=j({inheritAttrs:!1,__name:"SelectItemText",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(e){const t=e,o=Ee(),a=$e(),l=to(),{forwardRef:c,currentElement:s}=_e(),r=P(()=>({value:l.value,disabled:l.disabled.value,textContent:s.value?.textContent??l.value?.toString()??""}));return Ie(()=>{s.value&&(l.onItemTextChange(s.value),a.itemTextRefCallback(s.value,l.value,l.disabled.value),o.onOptionAdd(r.value))}),Ht(()=>{o.onOptionRemove(r.value)}),(d,g)=>(v(),k(n(de),Q({id:n(l).textId,ref:n(c)},{...t,...d.$attrs}),{default:u(()=>[V(d.$slots,"default")]),_:3},16,["id"]))}}),sa=aa,la=j({__name:"SelectPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){const t=e;return(o,a)=>(v(),k(n(yo),ct(pt(t)),{default:u(()=>[V(o.$slots,"default")]),_:3},16))}}),ra=la,ia=j({__name:"SelectScrollButtonImpl",emits:["autoScroll"],setup(e,{emit:t}){const o=t,{getItems:a}=Fe(),l=$e(),c=L(null);function s(){c.value!==null&&(window.clearInterval(c.value),c.value=null)}Ae(()=>{a().map(i=>i.ref).find(i=>i===ue())?.scrollIntoView({block:"nearest"})});function r(){c.value===null&&(c.value=window.setInterval(()=>{o("autoScroll")},50))}function d(){l.onItemLeave?.(),c.value===null&&(c.value=window.setInterval(()=>{o("autoScroll")},50))}return Vo(()=>s()),(g,i)=>(v(),k(n(de),Q({"aria-hidden":"true",style:{flexShrink:0}},g.$parent?.$props,{onPointerdown:r,onPointermove:d,onPointerleave:i[0]||(i[0]=()=>{s()})}),{default:u(()=>[V(g.$slots,"default")]),_:3},16))}}),oo=ia,ua=j({__name:"SelectScrollDownButton",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const t=$e(),o=t.position==="item-aligned"?ft():void 0,{forwardRef:a,currentElement:l}=_e(),c=L(!1);return Ae(s=>{if(t.viewport?.value&&t.isPositioned?.value){let d=function(){const g=r.scrollHeight-r.clientHeight;c.value=Math.ceil(r.scrollTop)<g};const r=t.viewport.value;d(),r.addEventListener("scroll",d),s(()=>r.removeEventListener("scroll",d))}}),me(l,()=>{l.value&&o?.onScrollButtonChange(l.value)}),(s,r)=>c.value?(v(),k(oo,{key:0,ref:n(a),onAutoScroll:r[0]||(r[0]=()=>{const{viewport:d,selectedItem:g}=n(t);d?.value&&g?.value&&(d.value.scrollTop=d.value.scrollTop+g.value.offsetHeight)})},{default:u(()=>[V(s.$slots,"default")]),_:3},512)):ee("v-if",!0)}}),da=ua,ca=j({__name:"SelectScrollUpButton",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const t=$e(),o=t.position==="item-aligned"?ft():void 0,{forwardRef:a,currentElement:l}=_e(),c=L(!1);return Ae(s=>{if(t.viewport?.value&&t.isPositioned?.value){let d=function(){c.value=r.scrollTop>0};const r=t.viewport.value;d(),r.addEventListener("scroll",d),s(()=>r.removeEventListener("scroll",d))}}),me(l,()=>{l.value&&o?.onScrollButtonChange(l.value)}),(s,r)=>c.value?(v(),k(oo,{key:0,ref:n(a),onAutoScroll:r[0]||(r[0]=()=>{const{viewport:d,selectedItem:g}=n(t);d?.value&&g?.value&&(d.value.scrollTop=d.value.scrollTop-g.value.offsetHeight)})},{default:u(()=>[V(s.$slots,"default")]),_:3},512)):ee("v-if",!0)}}),pa=ca,fa=j({__name:"SelectTrigger",props:{disabled:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,o=Ee(),{forwardRef:a,currentElement:l}=_e(),c=P(()=>o.disabled?.value||t.disabled);o.contentId||=$t(void 0,"reka-select-content"),Ie(()=>{o.onTriggerChange(l.value)});const{getItems:s}=Fe(),{search:r,handleTypeaheadSearch:d,resetTypeahead:g}=Jt();function i(){c.value||(o.onOpenChange(!0),g())}function p(y){i(),o.triggerPointerDownPosRef.value={x:Math.round(y.pageX),y:Math.round(y.pageY)}}return(y,w)=>(v(),k(n(ho),{"as-child":"",reference:y.reference},{default:u(()=>[m(n(de),{ref:n(a),role:"combobox",type:y.as==="button"?"button":void 0,"aria-controls":n(o).contentId,"aria-expanded":n(o).open.value||!1,"aria-required":n(o).required?.value,"aria-autocomplete":"none",disabled:c.value,dir:n(o)?.dir.value,"data-state":n(o)?.open.value?"open":"closed","data-disabled":c.value?"":void 0,"data-placeholder":n(qn)(n(o).modelValue?.value)?"":void 0,"as-child":y.asChild,as:y.as,onClick:w[0]||(w[0]=x=>{x?.currentTarget?.focus()}),onPointerdown:w[1]||(w[1]=x=>{if(x.pointerType==="touch")return x.preventDefault();const S=x.target;S.hasPointerCapture(x.pointerId)&&S.releasePointerCapture(x.pointerId),x.button===0&&x.ctrlKey===!1&&(p(x),x.preventDefault())}),onPointerup:w[2]||(w[2]=Ve(x=>{x.pointerType==="touch"&&p(x)},["prevent"])),onKeydown:w[3]||(w[3]=x=>{const S=n(r)!=="";!(x.ctrlKey||x.altKey||x.metaKey)&&x.key.length===1&&S&&x.key===" "||(n(d)(x.key,n(s)()),n(Dn).includes(x.key)&&(i(),x.preventDefault()))})},{default:u(()=>[V(y.$slots,"default")]),_:3},8,["type","aria-controls","aria-expanded","aria-required","disabled","dir","data-state","data-disabled","data-placeholder","as-child","as"])]),_:3},8,["reference"]))}}),ma=fa,va=j({__name:"SelectValue",props:{placeholder:{type:String,required:!1,default:""},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(e){const t=e,{forwardRef:o,currentElement:a}=_e(),l=Ee();Ie(()=>{l.valueElement=a});const c=P(()=>{let r=[];const d=Array.from(l.optionsSet.value),g=i=>d.find(p=>He(i,p.value,l.by));return Array.isArray(l.modelValue.value)?r=l.modelValue.value.map(i=>g(i)?.textContent??""):r=[g(l.modelValue.value)?.textContent??""],r.filter(Boolean)}),s=P(()=>c.value.length?c.value.join(", "):t.placeholder);return(r,d)=>(v(),k(n(de),{ref:n(o),as:r.as,"as-child":r.asChild,style:{pointerEvents:"none"},"data-placeholder":c.value.length?void 0:t.placeholder},{default:u(()=>[V(r.$slots,"default",{selectedLabel:c.value,modelValue:n(l).modelValue.value},()=>[B(O(s.value),1)])]),_:3},8,["as","as-child","data-placeholder"]))}}),ga=va,ya=j({__name:"SelectViewport",props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const t=e,{nonce:o}=dt(t),a=En(o),l=$e(),c=l.position==="item-aligned"?ft():void 0,{forwardRef:s,currentElement:r}=_e();Ie(()=>{l?.onViewportChange(r.value)});const d=L(0);function g(i){const p=i.currentTarget,{shouldExpandOnScrollRef:y,contentWrapper:w}=c??{};if(y?.value&&w?.value){const x=Math.abs(d.value-p.scrollTop);if(x>0){const S=window.innerHeight-re*2,T=Number.parseFloat(w.value.style.minHeight),U=Number.parseFloat(w.value.style.height),W=Math.max(T,U);if(W<S){const A=W+x,_=Math.min(S,A),q=A-_;w.value.style.height=`${_}px`,w.value.style.bottom==="0px"&&(p.scrollTop=q>0?q:0,w.value.style.justifyContent="flex-end")}}}d.value=p.scrollTop}return(i,p)=>(v(),F(ne,null,[m(n(de),Q({ref:n(s),"data-reka-select-viewport":"",role:"presentation"},{...i.$attrs,...t},{style:{position:"relative",flex:1,overflow:"hidden auto"},onScroll:g}),{default:u(()=>[V(i.$slots,"default")]),_:3},16),m(n(de),{as:"style",nonce:n(a)},{default:u(()=>p[0]||(p[0]=[B(" /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-select-viewport] { scrollbar-width:none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } [data-reka-select-viewport]::-webkit-scrollbar { display: none; } ")])),_:1,__:[0]},8,["nonce"])],64))}}),ha=ya;const _a=j({__name:"Select",props:{open:{type:Boolean},defaultOpen:{type:Boolean},defaultValue:{},modelValue:{},by:{type:[String,Function]},dir:{},multiple:{type:Boolean},autocomplete:{},disabled:{type:Boolean},name:{},required:{type:Boolean}},emits:["update:modelValue","update:open"],setup(e,{emit:t}){const l=lt(e,t);return(c,s)=>(v(),k(n($n),Q({"data-slot":"select"},n(l)),{default:u(r=>[V(c.$slots,"default",ct(pt(r)))]),_:3},16))}}),ba=j({inheritAttrs:!1,__name:"SelectContent",props:{forceMount:{type:Boolean},position:{default:"popper"},bodyLock:{type:Boolean},side:{},sideOffset:{},sideFlip:{type:Boolean},align:{},alignOffset:{},alignFlip:{type:Boolean},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},hideShiftedArrow:{type:Boolean},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},disableUpdateOnLayoutShift:{type:Boolean},prioritizePosition:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},disableOutsidePointerEvents:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]}},emits:["closeAutoFocus","escapeKeyDown","pointerDownOutside"],setup(e,{emit:t}){const o=e,a=t,l=We(o,"class"),c=lt(l,a);return(s,r)=>(v(),k(n(ra),null,{default:u(()=>[m(n(Xn),Q({"data-slot":"select-content"},{...s.$attrs,...n(c)},{class:n(fe)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--reka-select-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border shadow-md",e.position==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",o.class)}),{default:u(()=>[m(n(Ba)),m(n(ha),{class:ze(n(fe)("p-1",e.position==="popper"&&"h-[var(--reka-select-trigger-height)] w-full min-w-[var(--reka-select-trigger-width)] scroll-my-1"))},{default:u(()=>[V(s.$slots,"default")]),_:3},8,["class"]),m(n(Da))]),_:3},16,["class"])]),_:3}))}});const Et=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),wa=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,o,a)=>a?a.toUpperCase():o.toLowerCase()),Sa=e=>{const t=wa(e);return t.charAt(0).toUpperCase()+t.slice(1)},xa=(...e)=>e.filter((t,o,a)=>!!t&&t.trim()!==""&&a.indexOf(t)===o).join(" ").trim(),Dt=e=>e==="";var Ne={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};const ka=({name:e,iconNode:t,absoluteStrokeWidth:o,"absolute-stroke-width":a,strokeWidth:l,"stroke-width":c,size:s=Ne.width,color:r=Ne.stroke,...d},{slots:g})=>nt("svg",{...Ne,...d,width:s,height:s,stroke:r,"stroke-width":Dt(o)||Dt(a)||o===!0||a===!0?Number(l||c||Ne["stroke-width"])*24/Number(s):l||c||Ne["stroke-width"],class:xa("lucide",d.class,...e?[`lucide-${Et(Sa(e))}-icon`,`lucide-${Et(e)}`]:["lucide-icon"])},[...t.map(i=>nt(...i)),...g.default?[g.default()]:[]]);const Je=(e,t)=>(o,{slots:a,attrs:l})=>nt(ka,{...l,...o,iconNode:t,name:e},a);const Ta=Je("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);const no=Je("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);const Ca=Je("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);const Pa=Je("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]),Ia={class:"absolute right-2 flex size-3.5 items-center justify-center"},Ea=j({__name:"SelectItem",props:{value:{},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){const t=e,o=We(t,"class"),a=Ue(o);return(l,c)=>(v(),k(n(ta),Q({"data-slot":"select-item"},n(a),{class:n(fe)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t.class)}),{default:u(()=>[H("span",Ia,[m(n(na),null,{default:u(()=>[V(l.$slots,"indicator-icon",{},()=>[m(n(Ta),{class:"size-4"})])]),_:3})]),m(n(sa),null,{default:u(()=>[V(l.$slots,"default")]),_:3})]),_:3},16,["class"]))}}),Da=j({__name:"SelectScrollDownButton",props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){const t=e,o=We(t,"class"),a=Ue(o);return(l,c)=>(v(),k(n(da),Q({"data-slot":"select-scroll-down-button"},n(a),{class:n(fe)("flex cursor-default items-center justify-center py-1",t.class)}),{default:u(()=>[V(l.$slots,"default",{},()=>[m(n(no),{class:"size-4"})])]),_:3},16,["class"]))}}),Ba=j({__name:"SelectScrollUpButton",props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){const t=e,o=We(t,"class"),a=Ue(o);return(l,c)=>(v(),k(n(pa),Q({"data-slot":"select-scroll-up-button"},n(a),{class:n(fe)("flex cursor-default items-center justify-center py-1",t.class)}),{default:u(()=>[V(l.$slots,"default",{},()=>[m(n(Ca),{class:"size-4"})])]),_:3},16,["class"]))}}),qa=j({__name:"SelectTrigger",props:{disabled:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]},size:{default:"default"}},setup(e){const t=e,o=We(t,"class","size"),a=Ue(o);return(l,c)=>(v(),k(n(ma),Q({"data-slot":"select-trigger","data-size":e.size},n(a),{class:n(fe)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t.class)}),{default:u(()=>[V(l.$slots,"default"),m(n(Zn),{"as-child":""},{default:u(()=>[m(n(no),{class:"size-4 opacity-50"})]),_:1})]),_:3},16,["data-size","class"]))}}),Ma=j({__name:"SelectValue",props:{placeholder:{},asChild:{type:Boolean},as:{}},setup(e){const t=e;return(o,a)=>(v(),k(n(ga),Q({"data-slot":"select-value"},t),{default:u(()=>[V(o.$slots,"default")]),_:3},16))}}),Aa=j({__name:"Spinner",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){const t=e;return(o,a)=>(v(),k(n(Pa),{role:"status","aria-label":"Loading",class:ze(n(fe)("size-4 animate-spin",t.class))},null,8,["class"]))}}),$a={class:"space-y-4"},Ra={key:0,class:"pointer-events-none absolute inset-0 z-10"},Oa={class:"flex flex-wrap items-center justify-center gap-3 text-xs text-muted-foreground"},La={class:"max-w-40 truncate",translate:"no"},ja={class:"font-medium text-foreground tabular-nums"},Ua=.24,Fa="#94a3b8",Na=288,Va=j({__name:"ProjectLineChart",props:{series:{},tooltipLabels:{},tickIndexes:{},xLabels:{}},setup(e){const t=e,o={bottom:32,left:56,right:28,top:8},a={left:8,right:18},l=[0,void 0],c=zo({selector:"html",attribute:"class",storageKey:"app-color-mode"}),s=new Intl.DateTimeFormat("en-US",{day:"numeric",month:"short"}),r=new Intl.DateTimeFormat("en-US",{month:"short"}),d=Ho("chartRoot"),{width:g}=Wo(d),i=ut({datumIndex:null,pointerY:null}),p=P(()=>t.xLabels.map((b,I)=>({index:I,label:t.tooltipLabels?.[I]??b,values:Object.fromEntries(t.series.map(D=>[D.label,D.points[I]??0]))}))),y=P(()=>t.xLabels.map((b,I)=>Se(b,I,t.xLabels.length))),w=P(()=>t.series.map(b=>({...b,color:xe(b.color),total:b.points.reduce((I,D)=>I+D,0)})).sort((b,I)=>I.total-b.total)),x=P(()=>w.value.map(b=>I=>I.values[b.label]??0)),S=P(()=>Object.fromEntries(w.value.map(b=>[b.label,{color:b.color,label:b.label}]))),T=P(()=>w.value.map(b=>`
|
|
2
2
|
<linearGradient id="${se(b.label)}" x1="0" y1="0" x2="0" y2="1">
|
|
3
3
|
<stop offset="0%" stop-color="${b.color}" stop-opacity="0.42" />
|
|
4
4
|
<stop offset="100%" stop-color="${b.color}" stop-opacity="0.07" />
|
|
@@ -18,4 +18,4 @@ 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
|
|
|
18
18
|
`).join("")}
|
|
19
19
|
</div>
|
|
20
20
|
</div>
|
|
21
|
-
`}function ce(b){const I=d.value?.getBoundingClientRect();if(!I)return;const D=b.clientX-I.left,h=b.clientY-I.top,z=A.value+q.value,te=A.value+a.left,Y=z-a.right;if(D<A.value||D>z||h<_.value||h>M.value||R.value<=0||t.xLabels.length===0){Z();return}const oe=ht((D-te)/Math.max(Y-te,1),0,1),Re=t.xLabels.length<=1?0:Math.round(oe*(t.xLabels.length-1));i.datumIndex=Re,i.pointerY=h}function Z(){i.datumIndex=null,i.pointerY=null}function Se(b,I,D){const h=new Date(b);if(Number.isNaN(h.getTime()))return b;const z=I===0||I===D-1;return D>=90&&!z&&h.getDate()===1?r.format(h):s.format(h)}function se(b){return`project-line-${b.replace(/[^a-z0-9]+/gi,"-").toLowerCase()}`}function xe(b){if(c.value!=="dark")return b;const I=le(b);return I!==null&&I<Ua?Fa:b}function le(b){const I=b.trim().replace(/^#/,""),D=I.length===3?I.split("").map(f=>`${f}${f}`).join(""):I;if(!/^[\da-f]{6}$/i.test(D))return null;const h=Number.parseInt(D.slice(0,2),16)/255,z=Number.parseInt(D.slice(2,4),16)/255,te=Number.parseInt(D.slice(4,6),16)/255,Y=ye(h),oe=ye(z),Re=ye(te);return .2126*Y+.7152*oe+.0722*Re}function ye(b){return b<=.03928?b/12.92:((b+.055)/1.055)**2.4}return(b,I)=>{const D=xo;return v(),F("div",$a,[H("div",{ref_key:"chartRoot",ref:d,class:"relative",onPointerleave:Z,onPointermove:ce},[m(D,{class:"h-72 w-full",config:n(S)},{default:u(()=>[m(n(_o),{"auto-margin":!1,data:n(p),height:288,margin:o,padding:a,"svg-defs":n(T),"x-domain":n(W),"y-domain":l},{default:u(()=>[m(n(bo),{color:be,"curve-type":"monotoneX",line:!0,"line-color":ge,"line-width":2,opacity:.82,x:ve,y:n(x)},null,8,["y"]),m(n(gt),{"grid-line":!1,"tick-format":De,"tick-padding":10,"tick-text-hide-overlapping":!0,"tick-text-width":56,"tick-values":n(ae),type:"x"},null,8,["tick-values"]),m(n(gt),{"num-ticks":4,"tick-format":we,type:"y"}),n(U)?(v(),k(n(wo),{key:0})):ee("",!0),n(U)?(v(),k(n(So),{key:1,color:G,template:Be,x:ve,"y-stacked":n(x)},null,8,["y-stacked"])):ee("",!0)]),_:1},8,["data","svg-defs","x-domain"])]),_:1},8,["config"]),n($)?(v(),F("div",Ra,[H("div",{class:"absolute border-l border-dashed border-border/80",style:je({height:`${n(C)}px`,left:`${n($).x}px`,top:`${n(_)}px`})},null,4),H("div",{class:"absolute border-t border-dashed border-border/80",style:je({left:`${n(A)}px`,top:`${n($).y}px`,width:`${n(q)}px`})},null,4),H("div",{class:"absolute rounded-sm bg-foreground px-2 py-1 text-[11px] font-medium text-background shadow-sm",style:je({left:`${n($).x}px`,top:`${n(M)+6}px`,transform:"translateX(-50%)"})},O(n($).xLabel),5),H("div",{class:"absolute rounded-sm bg-foreground px-2 py-1 text-[11px] font-medium text-background shadow-sm",style:je({left:`${Math.max(n(A)-8,0)}px`,top:`${n($).y}px`,transform:"translate(-100%, -50%)"})},O(n($).yLabel),5)])):ee("",!0)],544),H("div",Oa,[(v(!0),F(ne,null,ie(n(w),h=>(v(),F("div",{key:h.label,class:"flex items-center gap-2"},[H("span",{class:"size-2.5 rounded-sm",style:je({backgroundColor:h.color})},null,4),H("span",La,O(h.label),1),H("span",ja,O(n(he)(h.total)),1)]))),128))])])}}}),za=Object.assign(Va,{__name:"DashboardProjectLineChart"}),Bt=["#2563eb","#f97316","#0891b2","#7c3aed","#16a34a","#dc2626","#64748b"],ao=Go,mt=Ko.map(e=>({...ao[e],value:e})),Ha=Yo.reduce((e,t)=>(e[t]={...ao[t],value:t},e),{}),Wa=mt.reduce((e,t)=>(e[t.value]=t,e),{}),Ka=[{label:"All",value:"all"},...mt];function qt(e){return Wa[e]??Ha[e]}function st(e){const t=new Date;return Array.from({length:e},(o,a)=>{const l=new Date(t);return l.setHours(0,0,0,0),l.setDate(t.getDate()-(e-1-a)),Rt(Ot(l))})}function Ga(e){return e.map((t,o)=>({date:new Date(t),index:o})).filter(({date:t,index:o})=>o===0||o===e.length-1?!0:Number.isFinite(t.getTime())&&t.getUTCDate()===1).map(({index:t})=>t)}function Ya(e){const t=lo(e);return[{detail:`${J(t.totalTokens)} total tokens in this project`,icon:"solar:cpu-line-duotone",name:"Total Tokens",trend:"project total",trendTone:"neutral",value:he(t.totalTokens)},...ro(t,{sessionDetail:`${J(t.sessions)} sessions across all tools`,sessionIcon:"lucide:messages-square",sessionTrend:"all tools",totalSpendIcon:"lucide:wallet"})]}function Xa(e,t){const o=lo(e),a=io(e),[l="",c=""]=st(2).slice().reverse(),s=t.find(w=>w.date===l),r=t.find(w=>w.date===c),d=a.get(l)??0,g=a.get(c)??0,i=_t(s?.totalTokens??0,r?.totalTokens??0,he),p=_t(s?.costUSD??0,r?.costUSD??0,pe),y=To(d,g);return[{detail:`${J(s?.totalTokens??0)} tokens used today`,icon:"solar:cpu-line-duotone",name:"Today Tokens",trend:i.trend,trendTone:i.trendTone,value:he(s?.totalTokens??0)},{detail:`${pe(s?.costUSD??0)} spent today`,icon:"lucide:wallet",name:"Today Spend",trend:p.trend,trendTone:p.trendTone,value:pe(s?.costUSD??0)},{detail:`${J(d)} sessions recorded today`,icon:"lucide:messages-square",name:"Today Sessions",trend:y.label,trendTone:y.tone,value:String(d)},...ro(o,{sessionDetail:`${J(o.sessions)} total sessions for this platform`,sessionIcon:"lucide:list-checks",sessionTrend:"project total",totalSpendIcon:"lucide:receipt-text"})]}function Mt(e,t){const o=new Set(t),a=e.filter(r=>o.has(r.date)),l=new Map(a.map(r=>[r.date,r.models])),s=ko(a.flatMap(r=>Object.keys(r.models))).map(r=>({model:r,totalTokens:a.reduce((d,g)=>d+(g.models[r]?.totalTokens??0),0)})).sort((r,d)=>d.totalTokens-r.totalTokens||r.model.localeCompare(d.model)).map(r=>r.model).map((r,d)=>({color:Bt[d%Bt.length],label:r,points:t.map(g=>l.get(g)?.[r]?.totalTokens??0)}));return{labels:t,series:s}}function Ja(e,t){const o=io(t);return e.map(a=>({cacheTokens:J(a.cachedInputTokens),cost:pe(a.costUSD),inputTokens:J(a.inputTokens),label:a.date,models:Object.keys(a.models).sort((l,c)=>l.localeCompare(c)).join(", ")||"-",outputTokens:J(a.outputTokens),reasoningTokens:J(a.reasoningOutputTokens),sessions:String(o.get(a.date)??0),tokens:J(a.totalTokens)}))}function so(e,t){return{cacheTokens:J(e.cachedInputTokens),cost:pe(e.costUSD),duration:e.duration||"-",id:`${t}:${e.sessionId}`,inputTokens:J(e.inputTokens),model:e.models?.join(", ")||e.model||"unknown",outputTokens:J(e.outputTokens),platform:t,reasoningTokens:J(e.reasoningOutputTokens),sessionId:e.sessionId,startedAt:uo(e.startedAt,Po),threadName:e.threadName,tokens:J(e.tokenTotal)}}function Za(e,t){return e.map(o=>so(o,t))}function lo(e){return e.reduce((t,o)=>({cachedInputTokens:t.cachedInputTokens+o.cachedInputTokens,costUSD:t.costUSD+o.costUSD,inputTokens:t.inputTokens+o.inputTokens,outputTokens:t.outputTokens+o.outputTokens,reasoningOutputTokens:t.reasoningOutputTokens+o.reasoningOutputTokens,sessions:t.sessions+1,totalTokens:t.totalTokens+o.tokenTotal}),{cachedInputTokens:0,costUSD:0,inputTokens:0,outputTokens:0,reasoningOutputTokens:0,sessions:0,totalTokens:0})}function ro(e,t){return[{detail:`${pe(e.costUSD)} total project spend`,icon:t.totalSpendIcon,name:"Total Spend",trend:"all time",trendTone:"neutral",value:pe(e.costUSD)},{detail:t.sessionDetail,icon:t.sessionIcon,name:"Sessions",trend:t.sessionTrend,trendTone:"neutral",value:String(e.sessions)},{detail:`${J(e.cachedInputTokens)} of ${J(e.inputTokens)} input tokens were served from cache`,icon:"lucide:database-zap",name:"Cache Hit Rate",trend:`${he(e.cachedInputTokens)} cached`,trendTone:"neutral",value:Co(e.inputTokens>0?e.cachedInputTokens/e.inputTokens:0)},{detail:`${pe(e.costUSD)} across ${J(e.sessions)} sessions`,icon:"lucide:circle-dollar-sign",name:"Avg Session Cost",trend:"per session",trendTone:"neutral",value:pe(e.sessions>0?e.costUSD/e.sessions:0)}]}function Qa(e){return e.reduce((t,o)=>({costUSD:t.costUSD+o.costUSD,sessions:t.sessions+1,totalTokens:t.totalTokens+o.tokenTotal}),{costUSD:0,sessions:0,totalTokens:0})}function io(e){return e.reduce((t,o)=>{const a=uo(o.startedAt,l=>Rt(Ot(l)),"");return a&&t.set(a,(t.get(a)??0)+1),t},new Map)}function uo(e,t,o="-"){if(!e)return o;const a=new Date(e);return Number.isFinite(a.getTime())?t(a):o}const es={class:"flex items-center gap-2"},ts=j({__name:"ProjectSessionTable",props:{items:{},pageSize:{default:10}},setup(e){const t=e,o=Pe(1),a=P(()=>Math.max(1,Math.ceil(t.items.length/t.pageSize))),l=P(()=>{const s=(Math.min(o.value,a.value)-1)*t.pageSize;return t.items.slice(s,s+t.pageSize)});return me(()=>t.items,()=>{o.value=1}),(c,s)=>{const r=Ut,d=jt,g=Lt,i=Nt,p=Gt,y=Kt,w=Ft,x=Vt,S=zt;return v(),F("div",null,[m(x,null,{default:u(()=>[m(g,null,{default:u(()=>[m(d,null,{default:u(()=>[m(r,null,{default:u(()=>[...s[1]||(s[1]=[B("Session ID",-1)])]),_:1}),m(r,null,{default:u(()=>[...s[2]||(s[2]=[B("Tool",-1)])]),_:1}),m(r,null,{default:u(()=>[...s[3]||(s[3]=[B("Model",-1)])]),_:1}),m(r,null,{default:u(()=>[...s[4]||(s[4]=[B("Started",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[5]||(s[5]=[B(" Duration ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[6]||(s[6]=[B(" Input ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[7]||(s[7]=[B(" Output ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[8]||(s[8]=[B(" Reasoning ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[9]||(s[9]=[B(" Cache Read ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[10]||(s[10]=[B(" Tokens ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[11]||(s[11]=[B(" Cost ",-1)])]),_:1})]),_:1})]),_:1}),m(w,null,{default:u(()=>[(v(!0),F(ne,null,ie(n(l),T=>(v(),k(d,{key:T.id},{default:u(()=>[m(i,{class:"max-w-72 truncate font-medium font-mono text-xs",title:T.threadName?`${T.sessionId} (${T.threadName})`:T.sessionId,translate:"no"},{default:u(()=>[B(O(T.sessionId),1)]),_:2},1032,["title"]),m(i,null,{default:u(()=>[H("div",es,[m(p,{name:n(qt)(T.platform).aiIcon},null,8,["name"]),H("span",null,O(n(qt)(T.platform).label),1)])]),_:2},1024),m(i,{class:"max-w-56 truncate",translate:"no"},{default:u(()=>[B(O(T.model),1)]),_:2},1024),m(i,{class:"whitespace-nowrap"},{default:u(()=>[B(O(T.startedAt),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.duration),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.inputTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.outputTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.reasoningTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.cacheTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.tokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.cost),1)]),_:2},1024)]),_:2},1024))),128)),e.items.length===0?(v(),k(y,{key:0,colspan:11},{default:u(()=>[...s[12]||(s[12]=[B(" No sessions found. ",-1)])]),_:1})):ee("",!0)]),_:1})]),_:1}),e.items.length>e.pageSize?(v(),k(S,{key:0,page:n(o),"onUpdate:page":s[0]||(s[0]=T=>Ye(o)?o.value=T:null),"page-count":n(a),"page-size":e.pageSize,total:e.items.length},null,8,["page","page-count","page-size","total"])):ee("",!0)])}}}),os=Object.assign(ts,{__name:"DashboardProjectSessionTable"}),ns=j({__name:"ProjectTokenUsageTable",props:{items:{},pageSize:{default:10}},setup(e){const t=e,o=Pe(1),a=P(()=>Math.max(1,Math.ceil(t.items.length/t.pageSize))),l=P(()=>{const s=(Math.min(o.value,a.value)-1)*t.pageSize;return t.items.slice(s,s+t.pageSize)});return me(()=>t.items,()=>{o.value=1}),(c,s)=>{const r=Ut,d=jt,g=Lt,i=Nt,p=Kt,y=Ft,w=Vt,x=zt;return v(),F("div",null,[m(w,null,{default:u(()=>[m(g,null,{default:u(()=>[m(d,null,{default:u(()=>[m(r,null,{default:u(()=>[...s[1]||(s[1]=[B("Period",-1)])]),_:1}),m(r,null,{default:u(()=>[...s[2]||(s[2]=[B("Models",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[3]||(s[3]=[B(" Sessions ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[4]||(s[4]=[B(" Input ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[5]||(s[5]=[B(" Output ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[6]||(s[6]=[B(" Reasoning ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[7]||(s[7]=[B(" Cache Read ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[8]||(s[8]=[B(" Total Tokens ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[9]||(s[9]=[B(" Cost ",-1)])]),_:1})]),_:1})]),_:1}),m(y,null,{default:u(()=>[(v(!0),F(ne,null,ie(n(l),S=>(v(),k(d,{key:S.label},{default:u(()=>[m(i,{class:"max-w-72 truncate font-medium"},{default:u(()=>[B(O(S.label),1)]),_:2},1024),m(i,{class:"max-w-56 truncate",translate:"no"},{default:u(()=>[B(O(S.models),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.sessions),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.inputTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.outputTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.reasoningTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.cacheTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.tokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.cost),1)]),_:2},1024)]),_:2},1024))),128)),e.items.length===0?(v(),k(p,{key:0,colspan:9},{default:u(()=>[...s[10]||(s[10]=[B(" No token usage found. ",-1)])]),_:1})):ee("",!0)]),_:1})]),_:1}),e.items.length>e.pageSize?(v(),k(x,{key:0,page:n(o),"onUpdate:page":s[0]||(s[0]=S=>Ye(o)?o.value=S:null),"page-count":n(a),"page-size":e.pageSize,total:e.items.length},null,8,["page","page-count","page-size","total"])):ee("",!0)])}}}),as=Object.assign(ns,{__name:"DashboardProjectTokenUsageTable"}),Te=["daily_trend","model_usage","session_list","token_usage"],ss=30,ls=365,rs=180,is=600,us=45e3,At=Ka,qe=mt,ds={dailyRows:[],dailyTokenUsage:[]},cs={dailyTokenUsage:[],monthlyModelUsage:[]},ps={dailyRows:[],monthlyRows:[],sessionRows:[],weeklyRows:[]},fs={sessionRows:[],sessionUsage:[],sessions:[]},ms={daily_trend:ds,model_usage:cs,session_list:fs,token_usage:ps};function vs(){const e=Pe(""),t=Pe("all"),o=Pe(!1),a=Pe([]),l=Pe(""),c=Object.fromEntries(Te.map(f=>[f,Pe(null)])),s=ut(Object.fromEntries(Te.map(f=>[f,!1])));let r=0,d=0;const g=new Map,i=P(()=>`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`),{open:p,send:y,status:w}=Xo(i,{immediate:!1,autoReconnect:{delay:1e3,retries:3},onConnected(){Z()},onDisconnected(){b(new Error("WebSocket connection closed."))},onError(){l.value="WebSocket connection error."},onMessage(f,E){xe(E.data)}}),x=P(()=>a.value.map(f=>({id:f.label,name:f.label,type:f.type}))),S=P(()=>Te.some(f=>s[f])),T=P(()=>o.value||S.value||x.value.length===0),U=P(()=>te("session_list")),W=P(()=>qe.flatMap(f=>Y("session_list",f.value).sessions).sort((f,E)=>Date.parse(E.startedAt)-Date.parse(f.startedAt))),A=P(()=>bt(qe.flatMap(f=>Y("daily_trend",f.value).dailyTokenUsage))),_=P(()=>bt(qe.flatMap(f=>Y("model_usage",f.value).dailyTokenUsage))),q=P(()=>Object.fromEntries(At.map(f=>{const E=Qa(f.value==="all"?W.value:Y("session_list",f.value).sessions);return[f.value,{cost:pe(E.costUSD),label:f.label,sessions:String(E.sessions),tokens:he(E.totalTokens)}]}))),C=P(()=>q.value[t.value]),M=P(()=>[{label:"Tokens",value:C.value.tokens},{label:"Spend",value:C.value.cost},{label:"Sessions",value:C.value.sessions}]),R=P(()=>st(ss)),N=P(()=>st(ls)),$=P(()=>Ga(N.value)),ae=P(()=>Ya(W.value)),ve=P(()=>Ja(A.value,W.value)),be=P(()=>qe.flatMap(f=>Y("session_list",f.value).sessions.map(E=>({platform:f.value,session:E}))).sort((f,E)=>Date.parse(E.session.startedAt)-Date.parse(f.session.startedAt)).map(({platform:f,session:E})=>so(E,f))),ge=P(()=>R.value),G=P(()=>ge.value),De=P(()=>qe.map(f=>({color:f.color,label:f.label,points:Re(f.value,ge.value)}))),we=P(()=>Mt(_.value,R.value)),Be=P(()=>Object.fromEntries(qe.map(f=>{const E=N.value,X=Y("daily_trend",f.value),K=Y("model_usage",f.value),ke=Y("token_usage",f.value),Ze=Y("session_list",f.value),Oe=Mt(K.dailyTokenUsage,E);return[f.value,{modelLabels:Oe.labels,modelSeries:Oe.series,modelTickIndexes:$.value,dayRows:ke.dailyRows,monthRows:ke.monthlyRows,overviewCards:Xa(Ze.sessions,X.dailyTokenUsage),sessionRows:ke.sessionRows,sessionTableRows:Za(Ze.sessions,f.value),trendLabels:E,trendSeries:[{color:f.color,label:f.label,points:Re(f.value,E)}],trendTickIndexes:$.value,trendTooltipLabels:E,weekRows:ke.weeklyRows}]})));Ie(()=>{p()}),Zo(()=>{b(new Error("Project dashboard disposed."))}),me(e,f=>{ce(),f||h()}),Jo(e,f=>{f&&Se(f)},{debounce:rs,maxWait:is});function ce(){r+=1,h(),l.value=""}async function Z(){o.value=!0,l.value="";try{const f=await se({type:"project"}),E=f.find(X=>X.label===e.value);a.value=f,e.value=E?.label??f[0]?.label??""}catch(f){l.value=f instanceof Error?f.message:"Failed to load project catalog."}finally{o.value=!1}}async function Se(f){const E=x.value.find(K=>K.id===f);if(!E){h();return}const X=r+1;r=X,h();for(const K of Te)s[K]=!0;try{const K=await se({modules:[...Te],project:E.id,type:"project_data"});if(X!==r||K.label!==E.id)return;z(K)}catch(K){if(X!==r)return;l.value=K instanceof Error?K.message:"Failed to load project module."}finally{if(X===r)for(const K of Te)s[K]=!1}}function se(f){if(w.value!=="OPEN")return Promise.reject(new Error("WebSocket is not connected."));const E=ye();return new Promise((X,K)=>{const ke=window.setTimeout(()=>{g.delete(E),K(new Error("WebSocket request timed out."))},us);g.set(E,{reject:Oe=>{window.clearTimeout(ke),K(Oe)},requestId:E,resolve:Oe=>{window.clearTimeout(ke),X(Oe)}}),y(JSON.stringify({...f,requestId:E}))||(window.clearTimeout(ke),g.delete(E),K(new Error("Failed to send WebSocket request.")))})}function xe(f){if(typeof f!="string")return;const E=le(f);if(!E)return;if(I(E)){b(new Error(E.message));return}if(!D(E))return;const X=g.get(E.requestId);X&&(g.delete(E.requestId),X.resolve(E.data))}function le(f){try{return JSON.parse(f)}catch{return null}}function ye(){return d+=1,`${Date.now()}-${d}`}function b(f){for(const E of g.values())E.reject(f);g.clear()}function I(f){if(!f||typeof f!="object")return!1;const E=f;return E.type==="error"&&typeof E.message=="string"}function D(f){if(!f||typeof f!="object")return!1;const E=f;return typeof E.requestId=="string"&&"data"in E}function h(){for(const f of Te)oe(f).value=null,s[f]=!1}function z(f){for(const E of Te){const X=f.modules[E];X&&(oe(E).value=X)}}function te(f){return oe(f).value!==null}function Y(f,E){return oe(f).value?.[E]??ms[f]}function oe(f){return c[f]}function Re(f,E){const X=new Map(Y("daily_trend",f).dailyTokenUsage.map(K=>[K.date,K.totalTokens]));return E.map(K=>X.get(K)??0)}return{activeScopeItems:M,activeTab:t,allDailyUsageRows:ve,allModelChart:we,allOverviewCards:ae,allSessionRows:be,dailySeries:De,dailyTooltipLabels:G,dailyTrendLabels:ge,isModuleLoaded:te,isProjectModuleLoading:S,isProjectSelectDisabled:T,isScopeReady:U,platformTabs:qe,platformViews:Be,projects:x,selectedProjectId:e,tabSummaries:q,tabs:At,websocketError:l}}const gs={class:"relative flex flex-col border-b z-10 pb-5 mb-5"},ys={class:"container mx-auto flex flex-col gap-3"},hs={class:"relative flex justify-between items-stretch"},_s={key:0,class:"flex items-center gap-2 text-xs text-muted-foreground"},bs={class:"flex justify-between items-center"},ws={class:"min-w-0 flex-1"},Ss={class:"flex flex-col items-start gap-1.5"},xs={class:"w-full flex justify-between items-center"},ks={class:"truncate text-sm font-medium"},Ts={key:1,class:"block truncate text-xs text-muted-foreground tabular-nums"},Cs={class:"grid grid-cols-3 gap-4"},Ps={key:1,class:"truncate text-sm font-semibold tabular-nums"},Is={class:"truncate text-xs font-medium uppercase tracking-wide text-muted-foreground"},Es={key:0,class:"text-xs text-destructive"},Ds={key:1,class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-5 md:col-span-12"},Bs={class:"md:col-span-12"},qs={key:0,class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-4 xl:grid-cols-7"},Ms={key:1,class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-4 xl:grid-cols-7"},Us=j({__name:"project",setup(e){const{activeScopeItems:t,activeTab:o,allDailyUsageRows:a,allModelChart:l,allOverviewCards:c,allSessionRows:s,dailySeries:r,dailyTooltipLabels:d,dailyTrendLabels:g,isModuleLoaded:i,isProjectModuleLoading:p,isProjectSelectDisabled:y,isScopeReady:w,platformTabs:x,platformViews:S,projects:T,selectedProjectId:U,tabSummaries:W,tabs:A,websocketError:_}=vs();return(q,C)=>{const M=Ma,R=qa,N=Ea,$=ba,ae=_a,ve=Aa,be=rn,ge=Gt,G=ln,De=on,we=tn,Be=Do,ce=za,Z=Bo,Se=os,se=as,xe=Eo,le=nn,ye=qo,b=an,I=Io,D=en;return v(),k(D,{modelValue:n(o),"onUpdate:modelValue":C[1]||(C[1]=h=>Ye(o)?o.value=h:null)},{default:u(()=>[H("div",gs,[H("div",ys,[H("div",hs,[H("div",{class:ze(n(fe)("flex items-center gap-4","before:content-[' '] before:absolute","before:w-1 before:h-full","before:rounded-full","before:bg-amber-500"))},[m(ae,{modelValue:n(U),"onUpdate:modelValue":C[0]||(C[0]=h=>Ye(U)?U.value=h:null),disabled:n(y)},{default:u(()=>[m(R,{"aria-label":"Select Project",class:ze(n(fe)("bg-transparent dark:bg-transparent! border-0 px-0 py-0 font-semibold","tracking-tight shadow-none focus-visible:ring-0","ml-4"))},{default:u(()=>[m(M,{placeholder:"Choose project"})]),_:1},8,["class"]),m($,null,{default:u(()=>[(v(!0),F(ne,null,ie(n(T),h=>(v(),k(N,{key:h.id,value:h.id},{default:u(()=>[B(O(h.name),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue","disabled"]),n(p)?(v(),F("div",_s,[m(ve,{class:"size-3.5"}),C[2]||(C[2]=H("span",null,"Switching project...",-1))])):ee("",!0)],2)]),H("div",bs,[m(we,{"aria-label":"Project platform scope",class:"flex h-auto justify-start bg-transparent gap-5"},{default:u(()=>[(v(!0),F(ne,null,ie(n(A),h=>(v(),k(De,{key:h.value,"aria-label":h.label,value:h.value,class:ze(["flex justify-start gap-3 shadow-none",n(fe)("data-[state=active]:border","data-[state=active]:border-dashed","data-[state=active]:border-amber-500","data-[state=active]:bg-transparent")])},{default:u(()=>[h.value==="all"?(v(),k(be,{key:0,"aria-hidden":"true",class:"size-4 text-muted-foreground",mode:"svg",name:"lucide:layout-dashboard"})):(v(),k(ge,{key:1,class:"flex items-center [&_svg]:size-5!",name:h.aiIcon},null,8,["name"])),H("div",ws,[H("div",Ss,[H("div",xs,[H("span",ks,O(h.label),1)]),n(w)?(v(),F("span",Ts,O(n(W)[h.value].tokens)+" tokens ",1)):(v(),k(G,{key:0,class:"h-3 w-20"}))])])]),_:2},1032,["aria-label","value","class"]))),128))]),_:1}),H("div",Cs,[(v(!0),F(ne,null,ie(n(t),h=>(v(),F("div",{key:h.label,class:"flex flex-col items-start gap-3 rounded-md border border-dotted px-3 py-2"},[n(w)?(v(),F("p",Ps,O(h.value),1)):(v(),k(G,{key:0,class:"h-5 w-16"})),H("p",Is,O(h.label),1)]))),128))])]),n(_)?(v(),F("p",Es,O(n(_)),1)):ee("",!0)])]),m(I,null,{default:u(()=>[m(le,{class:"m-0",value:"all"},{default:u(()=>[m(xe,null,{default:u(()=>[n(i)("session_list")?(v(),k(Be,{key:0,cards:n(c),class:"md:col-span-12 lg:grid-cols-5"},null,8,["cards"])):(v(),F("div",Ds,[(v(),F(ne,null,ie(5,h=>m(G,{key:h,class:"h-28 rounded-md"})),64))])),m(Z,{class:"md:col-span-12",description:"Recent usage by provider",icon:"lucide:activity",title:"Daily Token Trend"},{default:u(()=>[n(i)("model_usage")?(v(),k(ce,{key:0,series:n(r),"tooltip-labels":n(d),"x-labels":n(g)},null,8,["series","tooltip-labels","x-labels"])):(v(),k(G,{key:1,class:"h-80 w-full rounded-md"}))]),_:1}),m(Z,{class:"md:col-span-12",description:"Usage by model",icon:"solar:cpu-line-duotone",title:"Model Usage"},{default:u(()=>[n(i)("model_usage")?(v(),k(ce,{key:0,series:n(l).series,"tooltip-labels":n(l).labels,"x-labels":n(l).labels},null,8,["series","tooltip-labels","x-labels"])):(v(),k(G,{key:1,class:"h-80 w-full rounded-md"}))]),_:1}),m(Z,{class:"md:col-span-12",description:"Sessions in this project",icon:"lucide:messages-square",title:"Session Statistics"},{default:u(()=>[n(i)("session_list")?(v(),k(Se,{key:0,items:n(s)},null,8,["items"])):(v(),k(G,{key:1,class:"h-72 w-full rounded-md"}))]),_:1}),m(Z,{class:"md:col-span-12",description:"Daily model activity by token type, cache reads, total usage, and cost",icon:"lucide:calendar-days",title:"Daily Token Usage"},{default:u(()=>[n(i)("daily_trend")?(v(),k(se,{key:0,items:n(a)},null,8,["items"])):(v(),k(G,{key:1,class:"h-72 w-full rounded-md"}))]),_:1})]),_:1})]),_:1}),(v(!0),F(ne,null,ie(n(x),h=>(v(),k(le,{key:h.value,value:h.value,class:"m-0"},{default:u(()=>[m(xe,null,{default:u(()=>[H("div",Bs,[n(i)("daily_trend")&&n(i)("session_list")?(v(),F("div",qs,[(v(!0),F(ne,null,ie(n(S)[h.value].overviewCards,z=>(v(),k(ye,{key:z.name,detail:z.detail,icon:z.icon,name:z.name,trend:z.trend,"trend-tone":z.trendTone,value:z.value},null,8,["detail","icon","name","trend","trend-tone","value"]))),128))])):(v(),F("div",Ms,[(v(),F(ne,null,ie(7,z=>m(G,{key:z,class:"h-28 rounded-md"})),64))]))]),m(Z,{description:`${h.label} token usage within the current project`,class:"md:col-span-12",icon:"lucide:chart-area",title:"Token Trend"},{default:u(()=>[n(i)("daily_trend")?(v(),k(ce,{key:0,series:n(S)[h.value].trendSeries,"tick-indexes":n(S)[h.value].trendTickIndexes,"tooltip-labels":n(S)[h.value].trendTooltipLabels,"x-labels":n(S)[h.value].trendLabels},null,8,["series","tick-indexes","tooltip-labels","x-labels"])):(v(),k(G,{key:1,class:"h-80 w-full rounded-md"}))]),_:2},1032,["description"]),m(Z,{description:`${h.label} model trend within the current project`,class:"md:col-span-12",icon:"solar:cpu-line-duotone",title:"Model Usage Trend"},{default:u(()=>[n(i)("daily_trend")?(v(),k(ce,{key:0,series:n(S)[h.value].modelSeries,"tick-indexes":n(S)[h.value].modelTickIndexes,"tooltip-labels":n(S)[h.value].modelLabels,"x-labels":n(S)[h.value].modelLabels},null,8,["series","tick-indexes","tooltip-labels","x-labels"])):(v(),k(G,{key:1,class:"h-80 w-full rounded-md"}))]),_:2},1032,["description"]),n(i)("token_usage")&&n(i)("session_list")?(v(),k(b,{key:0,class:"md:col-span-12","daily-items":n(S)[h.value].dayRows,"monthly-items":n(S)[h.value].monthRows,"product-name":h.label,"session-items":n(S)[h.value].sessionRows,"weekly-items":n(S)[h.value].weekRows},null,8,["daily-items","monthly-items","product-name","session-items","weekly-items"])):(v(),k(G,{key:1,class:"h-72 rounded-md md:col-span-12"})),m(Z,{description:`${h.label} sessions in the current project`,class:"md:col-span-12",icon:"lucide:list-tree",title:"Session List"},{default:u(()=>[n(i)("session_list")?(v(),k(Se,{key:0,items:n(S)[h.value].sessionTableRows},null,8,["items"])):(v(),k(G,{key:1,class:"h-72 w-full rounded-md"}))]),_:2},1032,["description"])]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"])}}});export{Us as default};
|
|
21
|
+
`}function ce(b){const I=d.value?.getBoundingClientRect();if(!I)return;const D=b.clientX-I.left,h=b.clientY-I.top,z=A.value+q.value,te=A.value+a.left,Y=z-a.right;if(D<A.value||D>z||h<_.value||h>M.value||R.value<=0||t.xLabels.length===0){Z();return}const oe=ht((D-te)/Math.max(Y-te,1),0,1),Re=t.xLabels.length<=1?0:Math.round(oe*(t.xLabels.length-1));i.datumIndex=Re,i.pointerY=h}function Z(){i.datumIndex=null,i.pointerY=null}function Se(b,I,D){const h=new Date(b);if(Number.isNaN(h.getTime()))return b;const z=I===0||I===D-1;return D>=90&&!z&&h.getDate()===1?r.format(h):s.format(h)}function se(b){return`project-line-${b.replace(/[^a-z0-9]+/gi,"-").toLowerCase()}`}function xe(b){if(c.value!=="dark")return b;const I=le(b);return I!==null&&I<Ua?Fa:b}function le(b){const I=b.trim().replace(/^#/,""),D=I.length===3?I.split("").map(f=>`${f}${f}`).join(""):I;if(!/^[\da-f]{6}$/i.test(D))return null;const h=Number.parseInt(D.slice(0,2),16)/255,z=Number.parseInt(D.slice(2,4),16)/255,te=Number.parseInt(D.slice(4,6),16)/255,Y=ye(h),oe=ye(z),Re=ye(te);return .2126*Y+.7152*oe+.0722*Re}function ye(b){return b<=.03928?b/12.92:((b+.055)/1.055)**2.4}return(b,I)=>{const D=xo;return v(),F("div",$a,[H("div",{ref_key:"chartRoot",ref:d,class:"relative",onPointerleave:Z,onPointermove:ce},[m(D,{class:"h-72 w-full",config:n(S)},{default:u(()=>[m(n(_o),{"auto-margin":!1,data:n(p),height:288,margin:o,padding:a,"svg-defs":n(T),"x-domain":n(W),"y-domain":l},{default:u(()=>[m(n(bo),{color:be,"curve-type":"monotoneX",line:!0,"line-color":ge,"line-width":2,opacity:.82,x:ve,y:n(x)},null,8,["y"]),m(n(gt),{"grid-line":!1,"tick-format":De,"tick-padding":10,"tick-text-hide-overlapping":!0,"tick-text-width":56,"tick-values":n(ae),type:"x"},null,8,["tick-values"]),m(n(gt),{"num-ticks":4,"tick-format":we,type:"y"}),n(U)?(v(),k(n(wo),{key:0})):ee("",!0),n(U)?(v(),k(n(So),{key:1,color:G,template:Be,x:ve,"y-stacked":n(x)},null,8,["y-stacked"])):ee("",!0)]),_:1},8,["data","svg-defs","x-domain"])]),_:1},8,["config"]),n($)?(v(),F("div",Ra,[H("div",{class:"absolute border-l border-dashed border-border/80",style:je({height:`${n(C)}px`,left:`${n($).x}px`,top:`${n(_)}px`})},null,4),H("div",{class:"absolute border-t border-dashed border-border/80",style:je({left:`${n(A)}px`,top:`${n($).y}px`,width:`${n(q)}px`})},null,4),H("div",{class:"absolute rounded-sm bg-foreground px-2 py-1 text-[11px] font-medium text-background shadow-sm",style:je({left:`${n($).x}px`,top:`${n(M)+6}px`,transform:"translateX(-50%)"})},O(n($).xLabel),5),H("div",{class:"absolute rounded-sm bg-foreground px-2 py-1 text-[11px] font-medium text-background shadow-sm",style:je({left:`${Math.max(n(A)-8,0)}px`,top:`${n($).y}px`,transform:"translate(-100%, -50%)"})},O(n($).yLabel),5)])):ee("",!0)],544),H("div",Oa,[(v(!0),F(ne,null,ie(n(w),h=>(v(),F("div",{key:h.label,class:"flex items-center gap-2"},[H("span",{class:"size-2.5 rounded-sm",style:je({backgroundColor:h.color})},null,4),H("span",La,O(h.label),1),H("span",ja,O(n(he)(h.total)),1)]))),128))])])}}}),za=Object.assign(Va,{__name:"DashboardProjectLineChart"}),Bt=["#2563eb","#f97316","#0891b2","#7c3aed","#16a34a","#dc2626","#64748b"],ao=Go,mt=Ko.map(e=>({...ao[e],value:e})),Ha=Yo.reduce((e,t)=>(e[t]={...ao[t],value:t},e),{}),Wa=mt.reduce((e,t)=>(e[t.value]=t,e),{}),Ka=[{label:"All",value:"all"},...mt];function qt(e){return Wa[e]??Ha[e]}function st(e){const t=new Date;return Array.from({length:e},(o,a)=>{const l=new Date(t);return l.setHours(0,0,0,0),l.setDate(t.getDate()-(e-1-a)),Rt(Ot(l))})}function Ga(e){return e.map((t,o)=>({date:new Date(t),index:o})).filter(({date:t,index:o})=>o===0||o===e.length-1?!0:Number.isFinite(t.getTime())&&t.getUTCDate()===1).map(({index:t})=>t)}function Ya(e){const t=lo(e);return[{detail:`${J(t.totalTokens)} total tokens in this project`,icon:"solar:cpu-line-duotone",name:"Total Tokens",trend:"project total",trendTone:"neutral",value:he(t.totalTokens)},...ro(t,{sessionDetail:`${J(t.sessions)} sessions across all tools`,sessionIcon:"lucide:messages-square",sessionTrend:"all tools",totalSpendIcon:"lucide:wallet"})]}function Xa(e,t){const o=lo(e),a=io(e),[l="",c=""]=st(2).slice().reverse(),s=t.find(w=>w.date===l),r=t.find(w=>w.date===c),d=a.get(l)??0,g=a.get(c)??0,i=_t(s?.totalTokens??0,r?.totalTokens??0,he),p=_t(s?.costUSD??0,r?.costUSD??0,pe),y=To(d,g);return[{detail:`${J(s?.totalTokens??0)} tokens used today`,icon:"solar:cpu-line-duotone",name:"Today Tokens",trend:i.trend,trendTone:i.trendTone,value:he(s?.totalTokens??0)},{detail:`${pe(s?.costUSD??0)} spent today`,icon:"lucide:wallet",name:"Today Spend",trend:p.trend,trendTone:p.trendTone,value:pe(s?.costUSD??0)},{detail:`${J(d)} sessions recorded today`,icon:"lucide:messages-square",name:"Today Sessions",trend:y.label,trendTone:y.tone,value:String(d)},...ro(o,{sessionDetail:`${J(o.sessions)} total sessions for this platform`,sessionIcon:"lucide:list-checks",sessionTrend:"project total",totalSpendIcon:"lucide:receipt-text"})]}function Mt(e,t){const o=new Set(t),a=e.filter(r=>o.has(r.date)),l=new Map(a.map(r=>[r.date,r.models])),s=ko(a.flatMap(r=>Object.keys(r.models))).map(r=>({model:r,totalTokens:a.reduce((d,g)=>d+(g.models[r]?.totalTokens??0),0)})).sort((r,d)=>d.totalTokens-r.totalTokens||r.model.localeCompare(d.model)).map(r=>r.model).map((r,d)=>({color:Bt[d%Bt.length],label:r,points:t.map(g=>l.get(g)?.[r]?.totalTokens??0)}));return{labels:t,series:s}}function Ja(e,t){const o=io(t);return e.map(a=>({cacheTokens:J(a.cachedInputTokens),cost:pe(a.costUSD),inputTokens:J(a.inputTokens),label:a.date,models:Object.keys(a.models).sort((l,c)=>l.localeCompare(c)).join(", ")||"-",outputTokens:J(a.outputTokens),reasoningTokens:J(a.reasoningOutputTokens),sessions:String(o.get(a.date)??0),tokens:J(a.totalTokens)}))}function so(e,t){return{cacheTokens:J(e.cachedInputTokens),cost:pe(e.costUSD),duration:e.duration||"-",id:`${t}:${e.id}`,inputTokens:J(e.inputTokens),model:e.models?.join(", ")||e.model||"unknown",outputTokens:J(e.outputTokens),platform:t,reasoningTokens:J(e.reasoningOutputTokens),sessionId:e.sessionId,startedAt:uo(e.startedAt,Po),threadName:e.threadName,tokens:J(e.tokenTotal)}}function Za(e,t){return e.map(o=>so(o,t))}function lo(e){return e.reduce((t,o)=>({cachedInputTokens:t.cachedInputTokens+o.cachedInputTokens,costUSD:t.costUSD+o.costUSD,inputTokens:t.inputTokens+o.inputTokens,outputTokens:t.outputTokens+o.outputTokens,reasoningOutputTokens:t.reasoningOutputTokens+o.reasoningOutputTokens,sessions:t.sessions+1,totalTokens:t.totalTokens+o.tokenTotal}),{cachedInputTokens:0,costUSD:0,inputTokens:0,outputTokens:0,reasoningOutputTokens:0,sessions:0,totalTokens:0})}function ro(e,t){return[{detail:`${pe(e.costUSD)} total project spend`,icon:t.totalSpendIcon,name:"Total Spend",trend:"all time",trendTone:"neutral",value:pe(e.costUSD)},{detail:t.sessionDetail,icon:t.sessionIcon,name:"Sessions",trend:t.sessionTrend,trendTone:"neutral",value:String(e.sessions)},{detail:`${J(e.cachedInputTokens)} of ${J(e.inputTokens)} input tokens were served from cache`,icon:"lucide:database-zap",name:"Cache Hit Rate",trend:`${he(e.cachedInputTokens)} cached`,trendTone:"neutral",value:Co(e.inputTokens>0?e.cachedInputTokens/e.inputTokens:0)},{detail:`${pe(e.costUSD)} across ${J(e.sessions)} sessions`,icon:"lucide:circle-dollar-sign",name:"Avg Session Cost",trend:"per session",trendTone:"neutral",value:pe(e.sessions>0?e.costUSD/e.sessions:0)}]}function Qa(e){return e.reduce((t,o)=>({costUSD:t.costUSD+o.costUSD,sessions:t.sessions+1,totalTokens:t.totalTokens+o.tokenTotal}),{costUSD:0,sessions:0,totalTokens:0})}function io(e){return e.reduce((t,o)=>{const a=uo(o.startedAt,l=>Rt(Ot(l)),"");return a&&t.set(a,(t.get(a)??0)+1),t},new Map)}function uo(e,t,o="-"){if(!e)return o;const a=new Date(e);return Number.isFinite(a.getTime())?t(a):o}const es={class:"flex items-center gap-2"},ts=j({__name:"ProjectSessionTable",props:{items:{},pageSize:{default:10}},setup(e){const t=e,o=Pe(1),a=P(()=>Math.max(1,Math.ceil(t.items.length/t.pageSize))),l=P(()=>{const s=(Math.min(o.value,a.value)-1)*t.pageSize;return t.items.slice(s,s+t.pageSize)});return me(()=>t.items,()=>{o.value=1}),(c,s)=>{const r=Ut,d=jt,g=Lt,i=Nt,p=Gt,y=Kt,w=Ft,x=Vt,S=zt;return v(),F("div",null,[m(x,null,{default:u(()=>[m(g,null,{default:u(()=>[m(d,null,{default:u(()=>[m(r,null,{default:u(()=>[...s[1]||(s[1]=[B("Session ID",-1)])]),_:1}),m(r,null,{default:u(()=>[...s[2]||(s[2]=[B("Tool",-1)])]),_:1}),m(r,null,{default:u(()=>[...s[3]||(s[3]=[B("Model",-1)])]),_:1}),m(r,null,{default:u(()=>[...s[4]||(s[4]=[B("Started",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[5]||(s[5]=[B(" Duration ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[6]||(s[6]=[B(" Input ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[7]||(s[7]=[B(" Output ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[8]||(s[8]=[B(" Reasoning ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[9]||(s[9]=[B(" Cache Read ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[10]||(s[10]=[B(" Tokens ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[11]||(s[11]=[B(" Cost ",-1)])]),_:1})]),_:1})]),_:1}),m(w,null,{default:u(()=>[(v(!0),F(ne,null,ie(n(l),T=>(v(),k(d,{key:T.id},{default:u(()=>[m(i,{class:"max-w-72 truncate font-medium font-mono text-xs",title:T.threadName?`${T.sessionId} (${T.threadName})`:T.sessionId,translate:"no"},{default:u(()=>[B(O(T.sessionId),1)]),_:2},1032,["title"]),m(i,null,{default:u(()=>[H("div",es,[m(p,{name:n(qt)(T.platform).aiIcon},null,8,["name"]),H("span",null,O(n(qt)(T.platform).label),1)])]),_:2},1024),m(i,{class:"max-w-56 truncate",translate:"no"},{default:u(()=>[B(O(T.model),1)]),_:2},1024),m(i,{class:"whitespace-nowrap"},{default:u(()=>[B(O(T.startedAt),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.duration),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.inputTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.outputTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.reasoningTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.cacheTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.tokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(T.cost),1)]),_:2},1024)]),_:2},1024))),128)),e.items.length===0?(v(),k(y,{key:0,colspan:11},{default:u(()=>[...s[12]||(s[12]=[B(" No sessions found. ",-1)])]),_:1})):ee("",!0)]),_:1})]),_:1}),e.items.length>e.pageSize?(v(),k(S,{key:0,page:n(o),"onUpdate:page":s[0]||(s[0]=T=>Ye(o)?o.value=T:null),"page-count":n(a),"page-size":e.pageSize,total:e.items.length},null,8,["page","page-count","page-size","total"])):ee("",!0)])}}}),os=Object.assign(ts,{__name:"DashboardProjectSessionTable"}),ns=j({__name:"ProjectTokenUsageTable",props:{items:{},pageSize:{default:10}},setup(e){const t=e,o=Pe(1),a=P(()=>Math.max(1,Math.ceil(t.items.length/t.pageSize))),l=P(()=>{const s=(Math.min(o.value,a.value)-1)*t.pageSize;return t.items.slice(s,s+t.pageSize)});return me(()=>t.items,()=>{o.value=1}),(c,s)=>{const r=Ut,d=jt,g=Lt,i=Nt,p=Kt,y=Ft,w=Vt,x=zt;return v(),F("div",null,[m(w,null,{default:u(()=>[m(g,null,{default:u(()=>[m(d,null,{default:u(()=>[m(r,null,{default:u(()=>[...s[1]||(s[1]=[B("Period",-1)])]),_:1}),m(r,null,{default:u(()=>[...s[2]||(s[2]=[B("Models",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[3]||(s[3]=[B(" Sessions ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[4]||(s[4]=[B(" Input ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[5]||(s[5]=[B(" Output ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[6]||(s[6]=[B(" Reasoning ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[7]||(s[7]=[B(" Cache Read ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[8]||(s[8]=[B(" Total Tokens ",-1)])]),_:1}),m(r,{class:"text-right"},{default:u(()=>[...s[9]||(s[9]=[B(" Cost ",-1)])]),_:1})]),_:1})]),_:1}),m(y,null,{default:u(()=>[(v(!0),F(ne,null,ie(n(l),S=>(v(),k(d,{key:S.label},{default:u(()=>[m(i,{class:"max-w-72 truncate font-medium"},{default:u(()=>[B(O(S.label),1)]),_:2},1024),m(i,{class:"max-w-56 truncate",translate:"no"},{default:u(()=>[B(O(S.models),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.sessions),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.inputTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.outputTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.reasoningTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.cacheTokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.tokens),1)]),_:2},1024),m(i,{class:"text-right tabular-nums"},{default:u(()=>[B(O(S.cost),1)]),_:2},1024)]),_:2},1024))),128)),e.items.length===0?(v(),k(p,{key:0,colspan:9},{default:u(()=>[...s[10]||(s[10]=[B(" No token usage found. ",-1)])]),_:1})):ee("",!0)]),_:1})]),_:1}),e.items.length>e.pageSize?(v(),k(x,{key:0,page:n(o),"onUpdate:page":s[0]||(s[0]=S=>Ye(o)?o.value=S:null),"page-count":n(a),"page-size":e.pageSize,total:e.items.length},null,8,["page","page-count","page-size","total"])):ee("",!0)])}}}),as=Object.assign(ns,{__name:"DashboardProjectTokenUsageTable"}),Te=["daily_trend","model_usage","session_list","token_usage"],ss=30,ls=365,rs=180,is=600,us=45e3,At=Ka,qe=mt,ds={dailyRows:[],dailyTokenUsage:[]},cs={dailyTokenUsage:[],monthlyModelUsage:[]},ps={dailyRows:[],monthlyRows:[],sessionRows:[],weeklyRows:[]},fs={sessionRows:[],sessionUsage:[],sessions:[]},ms={daily_trend:ds,model_usage:cs,session_list:fs,token_usage:ps};function vs(){const e=Pe(""),t=Pe("all"),o=Pe(!1),a=Pe([]),l=Pe(""),c=Object.fromEntries(Te.map(f=>[f,Pe(null)])),s=ut(Object.fromEntries(Te.map(f=>[f,!1])));let r=0,d=0;const g=new Map,i=P(()=>`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`),{open:p,send:y,status:w}=Xo(i,{immediate:!1,autoReconnect:{delay:1e3,retries:3},onConnected(){Z()},onDisconnected(){b(new Error("WebSocket connection closed."))},onError(){l.value="WebSocket connection error."},onMessage(f,E){xe(E.data)}}),x=P(()=>a.value.map(f=>({id:f.label,name:f.label,type:f.type}))),S=P(()=>Te.some(f=>s[f])),T=P(()=>o.value||S.value||x.value.length===0),U=P(()=>te("session_list")),W=P(()=>qe.flatMap(f=>Y("session_list",f.value).sessions).sort((f,E)=>Date.parse(E.startedAt)-Date.parse(f.startedAt))),A=P(()=>bt(qe.flatMap(f=>Y("daily_trend",f.value).dailyTokenUsage))),_=P(()=>bt(qe.flatMap(f=>Y("model_usage",f.value).dailyTokenUsage))),q=P(()=>Object.fromEntries(At.map(f=>{const E=Qa(f.value==="all"?W.value:Y("session_list",f.value).sessions);return[f.value,{cost:pe(E.costUSD),label:f.label,sessions:String(E.sessions),tokens:he(E.totalTokens)}]}))),C=P(()=>q.value[t.value]),M=P(()=>[{label:"Tokens",value:C.value.tokens},{label:"Spend",value:C.value.cost},{label:"Sessions",value:C.value.sessions}]),R=P(()=>st(ss)),N=P(()=>st(ls)),$=P(()=>Ga(N.value)),ae=P(()=>Ya(W.value)),ve=P(()=>Ja(A.value,W.value)),be=P(()=>qe.flatMap(f=>Y("session_list",f.value).sessions.map(E=>({platform:f.value,session:E}))).sort((f,E)=>Date.parse(E.session.startedAt)-Date.parse(f.session.startedAt)).map(({platform:f,session:E})=>so(E,f))),ge=P(()=>R.value),G=P(()=>ge.value),De=P(()=>qe.map(f=>({color:f.color,label:f.label,points:Re(f.value,ge.value)}))),we=P(()=>Mt(_.value,R.value)),Be=P(()=>Object.fromEntries(qe.map(f=>{const E=N.value,X=Y("daily_trend",f.value),K=Y("model_usage",f.value),ke=Y("token_usage",f.value),Ze=Y("session_list",f.value),Oe=Mt(K.dailyTokenUsage,E);return[f.value,{modelLabels:Oe.labels,modelSeries:Oe.series,modelTickIndexes:$.value,dayRows:ke.dailyRows,monthRows:ke.monthlyRows,overviewCards:Xa(Ze.sessions,X.dailyTokenUsage),sessionRows:ke.sessionRows,sessionTableRows:Za(Ze.sessions,f.value),trendLabels:E,trendSeries:[{color:f.color,label:f.label,points:Re(f.value,E)}],trendTickIndexes:$.value,trendTooltipLabels:E,weekRows:ke.weeklyRows}]})));Ie(()=>{p()}),Zo(()=>{b(new Error("Project dashboard disposed."))}),me(e,f=>{ce(),f||h()}),Jo(e,f=>{f&&Se(f)},{debounce:rs,maxWait:is});function ce(){r+=1,h(),l.value=""}async function Z(){o.value=!0,l.value="";try{const f=await se({type:"project"}),E=f.find(X=>X.label===e.value);a.value=f,e.value=E?.label??f[0]?.label??""}catch(f){l.value=f instanceof Error?f.message:"Failed to load project catalog."}finally{o.value=!1}}async function Se(f){const E=x.value.find(K=>K.id===f);if(!E){h();return}const X=r+1;r=X,h();for(const K of Te)s[K]=!0;try{const K=await se({modules:[...Te],project:E.id,type:"project_data"});if(X!==r||K.label!==E.id)return;z(K)}catch(K){if(X!==r)return;l.value=K instanceof Error?K.message:"Failed to load project module."}finally{if(X===r)for(const K of Te)s[K]=!1}}function se(f){if(w.value!=="OPEN")return Promise.reject(new Error("WebSocket is not connected."));const E=ye();return new Promise((X,K)=>{const ke=window.setTimeout(()=>{g.delete(E),K(new Error("WebSocket request timed out."))},us);g.set(E,{reject:Oe=>{window.clearTimeout(ke),K(Oe)},requestId:E,resolve:Oe=>{window.clearTimeout(ke),X(Oe)}}),y(JSON.stringify({...f,requestId:E}))||(window.clearTimeout(ke),g.delete(E),K(new Error("Failed to send WebSocket request.")))})}function xe(f){if(typeof f!="string")return;const E=le(f);if(!E)return;if(I(E)){b(new Error(E.message));return}if(!D(E))return;const X=g.get(E.requestId);X&&(g.delete(E.requestId),X.resolve(E.data))}function le(f){try{return JSON.parse(f)}catch{return null}}function ye(){return d+=1,`${Date.now()}-${d}`}function b(f){for(const E of g.values())E.reject(f);g.clear()}function I(f){if(!f||typeof f!="object")return!1;const E=f;return E.type==="error"&&typeof E.message=="string"}function D(f){if(!f||typeof f!="object")return!1;const E=f;return typeof E.requestId=="string"&&"data"in E}function h(){for(const f of Te)oe(f).value=null,s[f]=!1}function z(f){for(const E of Te){const X=f.modules[E];X&&(oe(E).value=X)}}function te(f){return oe(f).value!==null}function Y(f,E){return oe(f).value?.[E]??ms[f]}function oe(f){return c[f]}function Re(f,E){const X=new Map(Y("daily_trend",f).dailyTokenUsage.map(K=>[K.date,K.totalTokens]));return E.map(K=>X.get(K)??0)}return{activeScopeItems:M,activeTab:t,allDailyUsageRows:ve,allModelChart:we,allOverviewCards:ae,allSessionRows:be,dailySeries:De,dailyTooltipLabels:G,dailyTrendLabels:ge,isModuleLoaded:te,isProjectModuleLoading:S,isProjectSelectDisabled:T,isScopeReady:U,platformTabs:qe,platformViews:Be,projects:x,selectedProjectId:e,tabSummaries:q,tabs:At,websocketError:l}}const gs={class:"relative flex flex-col border-b z-10 pb-5 mb-5"},ys={class:"container mx-auto flex flex-col gap-3"},hs={class:"relative flex justify-between items-stretch"},_s={key:0,class:"flex items-center gap-2 text-xs text-muted-foreground"},bs={class:"flex justify-between items-center"},ws={class:"min-w-0 flex-1"},Ss={class:"flex flex-col items-start gap-1.5"},xs={class:"w-full flex justify-between items-center"},ks={class:"truncate text-sm font-medium"},Ts={key:1,class:"block truncate text-xs text-muted-foreground tabular-nums"},Cs={class:"grid grid-cols-3 gap-4"},Ps={key:1,class:"truncate text-sm font-semibold tabular-nums"},Is={class:"truncate text-xs font-medium uppercase tracking-wide text-muted-foreground"},Es={key:0,class:"text-xs text-destructive"},Ds={key:1,class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-5 md:col-span-12"},Bs={class:"md:col-span-12"},qs={key:0,class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-4 xl:grid-cols-7"},Ms={key:1,class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-4 xl:grid-cols-7"},Us=j({__name:"project",setup(e){const{activeScopeItems:t,activeTab:o,allDailyUsageRows:a,allModelChart:l,allOverviewCards:c,allSessionRows:s,dailySeries:r,dailyTooltipLabels:d,dailyTrendLabels:g,isModuleLoaded:i,isProjectModuleLoading:p,isProjectSelectDisabled:y,isScopeReady:w,platformTabs:x,platformViews:S,projects:T,selectedProjectId:U,tabSummaries:W,tabs:A,websocketError:_}=vs();return(q,C)=>{const M=Ma,R=qa,N=Ea,$=ba,ae=_a,ve=Aa,be=rn,ge=Gt,G=ln,De=on,we=tn,Be=Do,ce=za,Z=Bo,Se=os,se=as,xe=Eo,le=nn,ye=qo,b=an,I=Io,D=en;return v(),k(D,{modelValue:n(o),"onUpdate:modelValue":C[1]||(C[1]=h=>Ye(o)?o.value=h:null)},{default:u(()=>[H("div",gs,[H("div",ys,[H("div",hs,[H("div",{class:ze(n(fe)("flex items-center gap-4","before:content-[' '] before:absolute","before:w-1 before:h-full","before:rounded-full","before:bg-amber-500"))},[m(ae,{modelValue:n(U),"onUpdate:modelValue":C[0]||(C[0]=h=>Ye(U)?U.value=h:null),disabled:n(y)},{default:u(()=>[m(R,{"aria-label":"Select Project",class:ze(n(fe)("bg-transparent dark:bg-transparent! border-0 px-0 py-0 font-semibold","tracking-tight shadow-none focus-visible:ring-0","ml-4"))},{default:u(()=>[m(M,{placeholder:"Choose project"})]),_:1},8,["class"]),m($,null,{default:u(()=>[(v(!0),F(ne,null,ie(n(T),h=>(v(),k(N,{key:h.id,value:h.id},{default:u(()=>[B(O(h.name),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue","disabled"]),n(p)?(v(),F("div",_s,[m(ve,{class:"size-3.5"}),C[2]||(C[2]=H("span",null,"Switching project...",-1))])):ee("",!0)],2)]),H("div",bs,[m(we,{"aria-label":"Project platform scope",class:"flex h-auto justify-start bg-transparent gap-5"},{default:u(()=>[(v(!0),F(ne,null,ie(n(A),h=>(v(),k(De,{key:h.value,"aria-label":h.label,value:h.value,class:ze(["flex justify-start gap-3 shadow-none",n(fe)("data-[state=active]:border","data-[state=active]:border-dashed","data-[state=active]:border-amber-500","data-[state=active]:bg-transparent")])},{default:u(()=>[h.value==="all"?(v(),k(be,{key:0,"aria-hidden":"true",class:"size-4 text-muted-foreground",mode:"svg",name:"lucide:layout-dashboard"})):(v(),k(ge,{key:1,class:"flex items-center [&_svg]:size-5!",name:h.aiIcon},null,8,["name"])),H("div",ws,[H("div",Ss,[H("div",xs,[H("span",ks,O(h.label),1)]),n(w)?(v(),F("span",Ts,O(n(W)[h.value].tokens)+" tokens ",1)):(v(),k(G,{key:0,class:"h-3 w-20"}))])])]),_:2},1032,["aria-label","value","class"]))),128))]),_:1}),H("div",Cs,[(v(!0),F(ne,null,ie(n(t),h=>(v(),F("div",{key:h.label,class:"flex flex-col items-start gap-3 rounded-md border border-dotted px-3 py-2"},[n(w)?(v(),F("p",Ps,O(h.value),1)):(v(),k(G,{key:0,class:"h-5 w-16"})),H("p",Is,O(h.label),1)]))),128))])]),n(_)?(v(),F("p",Es,O(n(_)),1)):ee("",!0)])]),m(I,null,{default:u(()=>[m(le,{class:"m-0",value:"all"},{default:u(()=>[m(xe,null,{default:u(()=>[n(i)("session_list")?(v(),k(Be,{key:0,cards:n(c),class:"md:col-span-12 lg:grid-cols-5"},null,8,["cards"])):(v(),F("div",Ds,[(v(),F(ne,null,ie(5,h=>m(G,{key:h,class:"h-28 rounded-md"})),64))])),m(Z,{class:"md:col-span-12",description:"Recent usage by provider",icon:"lucide:activity",title:"Daily Token Trend"},{default:u(()=>[n(i)("model_usage")?(v(),k(ce,{key:0,series:n(r),"tooltip-labels":n(d),"x-labels":n(g)},null,8,["series","tooltip-labels","x-labels"])):(v(),k(G,{key:1,class:"h-80 w-full rounded-md"}))]),_:1}),m(Z,{class:"md:col-span-12",description:"Usage by model",icon:"solar:cpu-line-duotone",title:"Model Usage"},{default:u(()=>[n(i)("model_usage")?(v(),k(ce,{key:0,series:n(l).series,"tooltip-labels":n(l).labels,"x-labels":n(l).labels},null,8,["series","tooltip-labels","x-labels"])):(v(),k(G,{key:1,class:"h-80 w-full rounded-md"}))]),_:1}),m(Z,{class:"md:col-span-12",description:"Sessions in this project",icon:"lucide:messages-square",title:"Session Statistics"},{default:u(()=>[n(i)("session_list")?(v(),k(Se,{key:0,items:n(s)},null,8,["items"])):(v(),k(G,{key:1,class:"h-72 w-full rounded-md"}))]),_:1}),m(Z,{class:"md:col-span-12",description:"Daily model activity by token type, cache reads, total usage, and cost",icon:"lucide:calendar-days",title:"Daily Token Usage"},{default:u(()=>[n(i)("daily_trend")?(v(),k(se,{key:0,items:n(a)},null,8,["items"])):(v(),k(G,{key:1,class:"h-72 w-full rounded-md"}))]),_:1})]),_:1})]),_:1}),(v(!0),F(ne,null,ie(n(x),h=>(v(),k(le,{key:h.value,value:h.value,class:"m-0"},{default:u(()=>[m(xe,null,{default:u(()=>[H("div",Bs,[n(i)("daily_trend")&&n(i)("session_list")?(v(),F("div",qs,[(v(!0),F(ne,null,ie(n(S)[h.value].overviewCards,z=>(v(),k(ye,{key:z.name,detail:z.detail,icon:z.icon,name:z.name,trend:z.trend,"trend-tone":z.trendTone,value:z.value},null,8,["detail","icon","name","trend","trend-tone","value"]))),128))])):(v(),F("div",Ms,[(v(),F(ne,null,ie(7,z=>m(G,{key:z,class:"h-28 rounded-md"})),64))]))]),m(Z,{description:`${h.label} token usage within the current project`,class:"md:col-span-12",icon:"lucide:chart-area",title:"Token Trend"},{default:u(()=>[n(i)("daily_trend")?(v(),k(ce,{key:0,series:n(S)[h.value].trendSeries,"tick-indexes":n(S)[h.value].trendTickIndexes,"tooltip-labels":n(S)[h.value].trendTooltipLabels,"x-labels":n(S)[h.value].trendLabels},null,8,["series","tick-indexes","tooltip-labels","x-labels"])):(v(),k(G,{key:1,class:"h-80 w-full rounded-md"}))]),_:2},1032,["description"]),m(Z,{description:`${h.label} model trend within the current project`,class:"md:col-span-12",icon:"solar:cpu-line-duotone",title:"Model Usage Trend"},{default:u(()=>[n(i)("daily_trend")?(v(),k(ce,{key:0,series:n(S)[h.value].modelSeries,"tick-indexes":n(S)[h.value].modelTickIndexes,"tooltip-labels":n(S)[h.value].modelLabels,"x-labels":n(S)[h.value].modelLabels},null,8,["series","tick-indexes","tooltip-labels","x-labels"])):(v(),k(G,{key:1,class:"h-80 w-full rounded-md"}))]),_:2},1032,["description"]),n(i)("token_usage")&&n(i)("session_list")?(v(),k(b,{key:0,class:"md:col-span-12","daily-items":n(S)[h.value].dayRows,"monthly-items":n(S)[h.value].monthRows,"product-name":h.label,"session-items":n(S)[h.value].sessionRows,"weekly-items":n(S)[h.value].weekRows},null,8,["daily-items","monthly-items","product-name","session-items","weekly-items"])):(v(),k(G,{key:1,class:"h-72 rounded-md md:col-span-12"})),m(Z,{description:`${h.label} sessions in the current project`,class:"md:col-span-12",icon:"lucide:list-tree",title:"Session List"},{default:u(()=>[n(i)("session_list")?(v(),k(Se,{key:0,items:n(S)[h.value].sessionTableRows},null,8,["items"])):(v(),k(G,{key:1,class:"h-72 w-full rounded-md"}))]),_:2},1032,["description"])]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"])}}});export{Us as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as s}from"./
|
|
1
|
+
import{_ as s}from"./CC4_0abj.js";import{_ as a,u as i,o as u,c,a as t,t as n,b as l,w as d,d as f}from"./IstswKJB.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 i({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,_)=>{const o=s;return u(),c("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,[l(o,{to:"/",class:"font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"},{default:d(()=>[f(n(e.backHome),1)]),_:1})])])])}}},N=a(y,[["__scopeId","data-v-6fc7f42d"]]);export{N as default};
|