PageSourceSearch

https://hf2607-sub2api.hf.space/assets/DashboardView-B_r6maAQ.js

js hf2607-sub2api.hf.space collected 2026-10-03 16:56:06 UTC 25,539 bytes, 1 lines download raw bytes

1import{_ as f,X as at,Y as lt,Z as st,f as it,u as ct}from"./index-DG7INg5y.js";import{u as Z}from"./usage-BBpgSXWS.js";import{_ as ut}from"./AppLayout.vue_vue_type_script_setup_true_lang-B94PZ8cE.js";import{L as tt}from"./LoadingSpinner-B3Nzek-N.js";import{d as P,c as J,y as u,F as S,A as t,D as z,C as e,u as a,k as c,V as W,B as i,z as ot,N as _t,G as dt,a0 as gt,I as nt,J as mt,Z as xt,r as w,o as ht}from"./vendor-vue-BRjbeJGJ.js";import{u as X}from"./vendor-i18n-BZoxDmZq.js";import{D as pt}from"./DateRangePicker-CumNIvL8.js";import{S as yt}from"./Select-BBgoSpkz.js";import{C as ft,a as bt,L as kt,P as vt,b as $t,A as wt,p as Dt,c as Ct,d as St,i as Rt,D as qt}from"./vendor-chart-DAx887Kz.js";import{_ as zt}from"./TokenUsageTrend.vue_vue_type_script_setup_true_lang-CjB5N4PR.js";import{_ as Ft}from"./EmptyState.vue_vue_type_script_setup_true_lang-Sw4UV7g8.js";import{g as At}from"./user-BYz3solL.js";import"./vendor-misc-T69nC9V6.js";/* empty css                                                                  */import"./LocaleSwitcher-DcUvo7xm.js";/* empty css                                                                       */const Ut={class:"grid grid-cols-2 gap-4 lg:grid-cols-4"},Mt={key:0,class:"card p-4"},Tt={class:"flex items-center gap-3"},jt={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Lt={class:"text-xl font-bold text-emerald-600 dark:text-emerald-400"},Bt={class:"text-xs text-gray-500 dark:text-gray-400"},Ot={class:"card p-4"},Nt={class:"flex items-center gap-3"},Pt={class:"rounded-lg bg-blue-100 p-2 dark:bg-blue-900/30"},Qt={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Vt={class:"text-xl font-bold text-gray-900 dark:text-white"},Et={class:"text-xs text-green-600 dark:text-green-400"},Ht={class:"card p-4"},It={class:"flex items-center gap-3"},Kt={class:"rounded-lg bg-green-100 p-2 dark:bg-green-900/30"},Gt={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Zt={class:"text-xl font-bold text-gray-900 dark:text-white"},Jt={class:"text-xs text-gray-500 dark:text-gray-400"},Wt={class:"card p-4"},Xt={class:"flex items-center gap-3"},Yt={class:"rounded-lg bg-purple-100 p-2 dark:bg-purple-900/30"},te={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},ee={class:"text-xl font-bold text-gray-900 dark:text-white"},ae=["title"],se=["title"],oe={class:"text-xs"},re={class:"text-gray-500 dark:text-gray-400"},de=["title"],ne=["title"],le={class:"grid grid-cols-2 gap-4 lg:grid-cols-4"},ie={class:"card p-4"},ce={class:"flex items-center gap-3"},ue={class:"rounded-lg bg-amber-100 p-2 dark:bg-amber-900/30"},_e={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},ge={class:"text-xl font-bold text-gray-900 dark:text-white"},me={class:"text-xs text-gray-500 dark:text-gray-400"},xe={class:"card p-4"},he={class:"flex items-center gap-3"},pe={class:"rounded-lg bg-indigo-100 p-2 dark:bg-indigo-900/30"},ye={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},fe={class:"text-xl font-bold text-gray-900 dark:text-white"},be={class:"text-xs text-gray-500 dark:text-gray-400"},ke={class:"card p-4"},ve={class:"flex items-center gap-3"},$e={class:"rounded-lg bg-violet-100 p-2 dark:bg-violet-900/30"},we={class:"flex-1"},De={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Ce={class:"flex items-baseline gap-2"},Se={class:"text-xl font-bold text-gray-900 dark:text-white"},Re={class:"flex items-baseline gap-2"},qe={class:"text-sm font-semibold text-violet-600 dark:text-violet-400"},ze={class:"card p-4"},Fe={class:"flex items-center gap-3"},Ae={class:"rounded-lg bg-rose-100 p-2 dark:bg-rose-900/30"},Ue={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Me={class:"text-xl font-bold text-gray-900 dark:text-white"},Te={class:"text-xs text-gray-500 dark:text-gray-400"},je={key:0,class:"card p-4"},Le={class:"mb-3 flex items-center justify-between"},Be={class:"text-sm font-semibold text-gray-900 dark:text-white"},Oe={class:"text-xs text-gray-500 dark:text-gray-400"},Ne={class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-4"},Pe={class:"flex items-center justify-between"}
1,Qe={class:"text-sm font-semibold text-gray-900 dark:text-white"},Ve=["title"],Ee={class:"mt-2 space-y-1 text-xs"},He={class:"flex items-center justify-between"},Ie={class:"text-gray-500 dark:text-gray-400"},Ke={class:"font-mono text-gray-900 dark:text-white"},Ge={class:"flex items-center justify-between"},Ze={class:"text-gray-500 dark:text-gray-400"},Je={class:"font-mono text-gray-700 dark:text-gray-300"},We={class:"flex items-center justify-between"},Xe={class:"text-gray-500 dark:text-gray-400"},Ye={class:"font-mono text-gray-700 dark:text-gray-300"},ta={key:0,class:"mt-3 space-y-1.5 border-t border-gray-200 pt-2 dark:border-dark-700"},ea={class:"text-[10px] uppercase tracking-wide text-gray-400"},aa={key:0,class:"space-y-0.5"},sa={class:"flex items-center justify-between text-xs"},oa={class:"text-gray-600 dark:text-gray-300"},ra={class:"font-mono text-red-500"},da={class:"flex items-center justify-between text-xs"},na={class:"text-gray-600 dark:text-gray-300"},la={class:"font-mono text-gray-700 dark:text-gray-200"},ia={class:"h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-700"},ca={key:0,class:"text-[10px] text-gray-400"},rt=1e-4,ua=P({__name:"UserDashboardStats",props:{stats:{},balance:{},isSimple:{type:Boolean},platformQuotas:{}},setup(d){const _=d,{t:s}=X(),v={anthropic:"Claude",openai:"OpenAI",gemini:"Gemini",antigravity:"Antigravity"},p=o=>v[o]??o,g=J(()=>{var r;return[...((r=_.stats)==null?void 0:r.by_platform)??[]].sort((b,C)=>C.total_actual_cost-b.total_actual_cost)}),n=J(()=>{var B,O,N;const o=new Map;for(const h of((B=_.stats)==null?void 0:B.by_platform)??[])o.set(h.platform,h);const r=new Map;for(const h of _.platformQuotas??[])r.set(h.platform,h);const b=new Set([...o.keys(),...r.keys()]),C=["anthropic","openai","gemini","antigravity"],y=[];for(const h of b){const m=o.get(h);y.push({platform:h,total_actual_cost:(m==null?void 0:m.total_actual_cost)??0,today_actual_cost:(m==null?void 0:m.today_actual_cost)??0,total_requests:(m==null?void 0:m.total_requests)??0,total_tokens:(m==null?void 0:m.total_tokens)??0,quota:r.get(h)})}y.sort((h,m)=>{const F=C.indexOf(h.platform),A=C.indexOf(m.platform);return F===-1&&A===-1?h.platform.localeCompare(m.platform):F===-1?1:A===-1?-1:F-A});const H=((O=_.stats)==null?void 0:O.total_actual_cost)??0,I=((N=_.stats)==null?void 0:N.today_actual_cost)??0,K=y.reduce((h,m)=>h+m.total_actual_cost,0),G=y.reduce((h,m)=>h+m.today_actual_cost,0),j=Math.max(0,H-K),L=Math.max(0,I-G);return(j>rt||L>rt)&&y.push({platform:"__other__",total_actual_cost:j,today_actual_cost:L,total_requests:0,total_tokens:0,isOther:!0}),y});function l(o,r){return o==null?void 0:o[r]}function Q(o){return o?o.daily_limit_usd!=null||o.weekly_limit_usd!=null||o.monthly_limit_usd!=null:!1}function U(o,r){return!r||r<=0?0:Math.min(100,Math.max(0,Math.round(o/r*100)))}function M(o){return o>=95?"bg-red-500":o>=75?"bg-amber-500":"bg-green-500"}const V=new Intl.NumberFormat("en-US",{minimumFractionDigits:2,maximumFractionDigits:2});function R(o){return Number.isFinite(o)?V.format(o):"0.00"}function q(o){if(!o)return"";const r=new Date(o);return Number.isNaN(r.getTime())?o:r.toLocaleString(void 0,{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1})}const T=o=>new Intl.NumberFormat("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}).format(o),E=o=>o.toLocaleString(),D=o=>o.toFixed(4),$=o=>o>=1e6?`${(o/1e6).toFixed(1)}M`:o>=1e3?`${(o/1e3).toFixed(1)}K`:o.toString(),Y=o=>o>=1e3?`${(o/1e3).toFixed(2)}s`:`${o.toFixed(0)}ms`;return(o,r)=>{var b,C,y,H,I,K,G,j,L,B,O,N,h,m,F,A,et;return i(),u(S,null,[t("div",Ut,[d.isSimple?z("",!0):(i(),u("div",Mt,[t("div",Tt,[r[0]||(r[0]=t("div",{class:"rounded-lg bg-emerald-100 p-2 dark:bg-emerald-900/30"},[t("svg",{class:"h-5 w-5 text-emerald-600 dark:text-emerald-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.25 18.75a60.07 60.07 0 0115.797 2.101c.727.198 1.453-.342 1.453-1.096V18.75M3.75 4.5v.75A.75.75 0 013 6h-.75m0 0v-.375c0-.621.504-1.125 1.125-1.125H20.25M2.25 6v9m18-10.5v.75c0 .414.336.75.75.75h.75m-1.5-1.5h.375c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-.375m1.5-1.5H21a.75.75 0 00-.75.75v.75m0 0H3.75m0 0h-.375a1.125 1.125 0 01-1.125-1.125V15m1.5 1.5v-.75A.75.75 0 003 15h-.75M15 10.5a3 3 0 11-6 0 3 3 0 016 0zm3 0h.008v.008H18V10.5zm-12 0h.008v.008H6V10.5z"})])],-1)),t("div",null,[t("p",jt,e(a(s)("dashboard.balance")),1),t("p",Lt,"$"+e(T(d.balance)),1),t("p",Bt,e
1(a(s)("common.available")),1)])])])),t("div",Ot,[t("div",Nt,[t("div",Pt,[c(f,{name:"key",size:"md",class:"text-blue-600 dark:text-blue-400","stroke-width":2})]),t("div",null,[t("p",Qt,e(a(s)("dashboard.apiKeys")),1),t("p",Vt,e(((b=d.stats)==null?void 0:b.total_api_keys)||0),1),t("p",Et,e(((C=d.stats)==null?void 0:C.active_api_keys)||0)+" "+e(a(s)("common.active")),1)])])]),t("div",Ht,[t("div",It,[t("div",Kt,[c(f,{name:"chart",size:"md",class:"text-green-600 dark:text-green-400","stroke-width":2})]),t("div",null,[t("p",Gt,e(a(s)("dashboard.todayRequests")),1),t("p",Zt,e(((y=d.stats)==null?void 0:y.today_requests)||0),1),t("p",Jt,e(a(s)("common.total"))+": "+e(E(((H=d.stats)==null?void 0:H.total_requests)||0)),1)])])]),t("div",Wt,[t("div",Xt,[t("div",Yt,[c(f,{name:"dollar",size:"md",class:"text-purple-600 dark:text-purple-400","stroke-width":2})]),t("div",null,[t("p",te,e(a(s)("dashboard.todayCost")),1),t("p",ee,[t("span",{class:"text-purple-600 dark:text-purple-400",title:a(s)("dashboard.actual")},"$"+e(D(((I=d.stats)==null?void 0:I.today_actual_cost)||0)),9,ae),t("span",{class:"text-sm font-normal text-gray-400 dark:text-gray-500",title:a(s)("dashboard.standard")}," / $"+e(D(((K=d.stats)==null?void 0:K.today_cost)||0)),9,se)]),t("p",oe,[t("span",re,e(a(s)("common.total"))+": ",1),t("span",{class:"text-purple-600 dark:text-purple-400",title:a(s)("dashboard.actual")},"$"+e(D(((G=d.stats)==null?void 0:G.total_actual_cost)||0)),9,de),t("span",{class:"text-gray-400 dark:text-gray-500",title:a(s)("dashboard.standard")}," / $"+e(D(((j=d.stats)==null?void 0:j.total_cost)||0)),9,ne)])])])])]),t("div",le,[t("div",ie,[t("div",ce,[t("div",ue,[c(f,{name:"cube",size:"md",class:"text-amber-600 dark:text-amber-400","stroke-width":2})]),t("div",null,[t("p",_e,e(a(s)("dashboard.todayTokens")),1),t("p",ge,e($(((L=d.stats)==null?void 0:L.today_tokens)||0)),1),t("p",me,e(a(s)("dashboard.input"))+": "+e($(((B=d.stats)==null?void 0:B.today_input_tokens)||0))+" / "+e(a(s)("dashboard.output"))+": "+e($(((O=d.stats)==null?void 0:O.today_output_tokens)||0)),1)])])]),t("div",xe,[t("div",he,[t("div",pe,[c(f,{name:"database",size:"md",class:"text-indigo-600 dark:text-indigo-400","stroke-width":2})]),t("div",null,[t("p",ye,e(a(s)("dashboard.totalTokens")),1),t("p",fe,e($(((N=d.stats)==null?void 0:N.total_tokens)||0)),1),t("p",be,e(a(s)("dashboard.input"))+": "+e($(((h=d.stats)==null?void 0:h.total_input_tokens)||0))+" / "+e(a(s)("dashboard.output"))+": "+e($(((m=d.stats)==null?void 0:m.total_output_tokens)||0)),1)])])]),t("div",ke,[t("div",ve,[t("div",$e,[c(f,{name:"bolt",size:"md",class:"text-violet-600 dark:text-violet-400","stroke-width":2})]),t("div",we,[t("p",De,e(a(s)("dashboard.performance")),1),t("div",Ce,[t("p",Se,e($(((F=d.stats)==null?void 0:F.rpm)||0)),1),r[1]||(r[1]=t("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"RPM",-1))]),t("div",Re,[t("p",qe,e($(((A=d.stats)==null?void 0:A.tpm)||0)),1),r[2]||(r[2]=t("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"TPM",-1))])])])]),t("div",ze,[t("div",Fe,[t("div",Ae,[c(f,{name:"clock",size:"md",class:"text-rose-600 dar
1k:text-rose-400","stroke-width":2})]),t("div",null,[t("p",Ue,e(a(s)("dashboard.avgResponse")),1),t("p",Me,e(Y(((et=d.stats)==null?void 0:et.average_duration_ms)||0)),1),t("p",Te,e(a(s)("dashboard.averageTime")),1)])])])]),!d.isSimple&&n.value.length>0?(i(),u("div",je,[t("div",Le,[t("h3",Be,e(a(s)("dashboard.platformBreakdown")),1),t("span",Oe,e(a(s)("dashboard.platformCount",{count:g.value.length})),1)]),t("div",Ne,[(i(!0),u(S,null,W(n.value,x=>(i(),u("div",{key:x.platform,class:ot(["rounded-lg border p-3",x.isOther?"border-dashed border-gray-300 bg-gray-50 dark:border-dark-500 dark:bg-dark-700/30":"border-gray-200 dark:border-dark-600"])},[t("div",Pe,[t("span",Qe,e(x.isOther?a(s)("dashboard.platformOther"):p(x.platform)),1),t("span",{class:"font-mono text-sm text-purple-600 dark:text-purple-400",title:a(s)("dashboard.actual")}," $"+e(D(x.total_actual_cost)),9,Ve)]),t("div",Ee,[t("div",He,[t("span",Ie,e(a(s)("dashboard.todayCost")),1),t("span",Ke,"$"+e(D(x.today_actual_cost)),1)]),t("div",Ge,[t("span",Ze,e(a(s)("dashboard.requests")),1),t("span",Je,e(x.total_requests>0?E(x.total_requests):"-"),1)]),t("div",We,[t("span",Xe,e(a(s)("dashboard.tokens")),1),t("span",Ye,e(x.total_tokens>0?$(x.total_tokens):"-"),1)])]),Q(x.quota)&&!x.isOther?(i(),u("div",ta,[t("p",ea,e(a(s)("dashboard.platformQuota.title")),1),(i(),u(S,null,W(["daily","weekly","monthly"],k=>(i(),u(S,{key:k},[l(x.quota,`${k}_limit_usd`)!=null?(i(),u("div",aa,[l(x.quota,`${k}_limit_usd`)===0?(i(),u(S,{key:0},[t("div",sa,[t("span",oa,e(a(s)(`dashboard.platformQuota.${k}`)),1),t("span",ra,e(a(s)("dashboard.platformQuota.disabled")),1)]),r[3]||(r[3]=t("div",{class:"h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-700"},[t("div",{class:"h-full w-full rounded-full bg-red-500"})],-1))],64)):(i(),u(S,{key:1},[t("div",da,[t("span",na,e(a(s)(`dashboard.platformQuota.${k}`)),1),t("span",la," $"+e(R(l(x.quota,`${k}_usage_usd`)??0))+" / $"+e(R(l(x.quota,`${k}_limit_usd`))),1)]),t("div",ia,[t("div",{class:ot(["h-full rounded-full transition-all",M(U(l(x.quota,`${k}_usage_usd`)??0,l(x.quota,`${k}_limit_usd`)))]),style:_t({width:U(l(x.quota,`${k}_usage_usd`)??0,l(x.quota,`${k}_limit_usd`))+"%"})},null,6)]),l(x.quota,`${k}_window_resets_at`)?(i(),u("p",ca,e(a(s)("dashboard.platformQuota.resetsAt",{time:q(l(x.quota,`${k}_window_resets_at`))})),1)):z("",!0)],64))])):z("",!0)],64))),64))])):z("",!0)],2))),128))])])):z("",!0)],64)}}}),_a={class:"space-y-6"},ga={class:"card p-4"},ma={class:"flex flex-wrap items-center gap-4"},xa={class:"flex items-center gap-2"},ha={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},pa=["disabled"],ya={class:"ml-auto flex items-center gap-2"},fa={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},ba={class:"w-28"},ka={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},va={class:"card relative overflow-hidden p-4"},$a={key:0,class:"absolute inset-0 z-10 flex items-center justify-center bg-white/50 backdrop-blur-sm dark:bg-dark-800/50"},wa={class:"mb-4 text-sm font-semibold text-gray-900 dark:text-white"},Da={class:"flex items-center gap-6"},Ca={class:"h-48 w-48"},Sa={key:1,class:"flex h-full items-center justify-center text-sm text-gray-500 dark:text-gray-400"},Ra={class:"max-h-48 flex-1 overflow-y-auto"},qa={class:"w-full text-xs"},za={class:"text-gray-500 dark:text-gray-400"},Fa={class:"pb-2 text-left"},Aa={class:"pb-2 text-right"},Ua={class:"pb-2 text-right"},Ma={class:"pb-2 text-right"},Ta={class:"pb-2 text-right"},ja=["title"],La={class:"py-1.5 text-right text-gray-600 dark:text-gray-400"},Ba={class:"py-1.5 text-right text-gray-600 dark:text-gray-400"},Oa={class:"py-1.5 text-right text-green-600 dark:text-green-400"},Na={class:"py-1.5 text-right text-gray-400 dark:text-gray-500"},Pa=P({__name:"UserDashboardCharts",props:{loading:{type:Boolean},startDate:{},endDate:{},granularity:{},trend:{},models:{}},emits:["update:startDate","update:endDate","update:granularity","dateRangeChange","granularityChange","refresh"],setup(d){ft.register(bt,kt,vt,$t,wt,Dt,Ct,St,Rt);const _=d,{t:s}=X(),v=J(()=>{var g;return(g=_.models)!=null&&g.length?{labels:_.models.map(n=>n.model),datasets:[{data:_.models.map(n=>n.total_tokens),backgroundColor:["#3b82f6","#10b981","#f59e0b","#ef4444","#8b5cf6","#ec4899","#06b6d4","#84cc16"]}]}:null}
1),p={responsive:!0,maintainAspectRatio:!1,plugins:{legend:{display:!1},tooltip:{callbacks:{label:g=>`${g.label}: ${at(g.parsed)} tokens`}}}};return(g,n)=>(i(),u("div",_a,[t("div",ga,[t("div",ma,[t("div",xa,[t("span",ha,e(a(s)("dashboard.timeRange"))+":",1),c(pt,{"start-date":d.startDate,"end-date":d.endDate,"onUpdate:startDate":n[0]||(n[0]=l=>g.$emit("update:startDate",l)),"onUpdate:endDate":n[1]||(n[1]=l=>g.$emit("update:endDate",l)),onChange:n[2]||(n[2]=l=>g.$emit("dateRangeChange",l))},null,8,["start-date","end-date"])]),t("button",{onClick:n[3]||(n[3]=l=>g.$emit("refresh")),disabled:d.loading,class:"btn btn-secondary"},e(a(s)("common.refresh")),9,pa),t("div",ya,[t("span",fa,e(a(s)("dashboard.granularity"))+":",1),t("div",ba,[c(yt,{"model-value":d.granularity,options:[{value:"day",label:a(s)("dashboard.day")},{value:"hour",label:a(s)("dashboard.hour")}],"onUpdate:modelValue":n[4]||(n[4]=l=>g.$emit("update:granularity",l)),onChange:n[5]||(n[5]=l=>g.$emit("granularityChange"))},null,8,["model-value","options"])])])])]),t("div",ka,[t("div",va,[d.loading?(i(),u("div",$a,[c(tt,{size:"md"})])):z("",!0),t("h3",wa,e(a(s)("dashboard.modelDistribution")),1),t("div",Da,[t("div",Ca,[v.value?(i(),dt(a(qt),{key:0,data:v.value,options:p},null,8,["data"])):(i(),u("div",Sa,e(a(s)("dashboard.noDataAvailable")),1))]),t("div",Ra,[t("table",qa,[t("thead",null,[t("tr",za,[t("th",Fa,e(a(s)("dashboard.model")),1),t("th",Aa,e(a(s)("dashboard.requests")),1),t("th",Ua,e(a(s)("dashboard.tokens")),1),t("th",Ma,e(a(s)("dashboard.actual")),1),t("th",Ta,e(a(s)("dashboard.standard")),1)])]),t("tbody",null,[(i(!0),u(S,null,W(d.models,l=>(i(),u("tr",{key:l.model,class:"border-t border-gray-100 dark:border-gray-700"},[t("td",{class:"max-w-[100px] truncate py-1.5 font-medium text-gray-900 dark:text-white",title:l.model},e(l.model),9,ja),t("td",La,e(a(lt)(l.requests)),1),t("td",Ba,e(a(at)(l.total_tokens)),1),t("td",Oa,"$"+e(a(st)(l.actual_cost)),1),t("td",Na,"$"+e(a(st)(l.cost)),1)]))),128))])])])])]),c(zt,{"trend-data":d.trend,loading:d.loading},null,8,["trend-data","loading"])])]))}}),Qa={class:"card"},Va={class:"flex items-center justify-between border-b border-gray-100 px-6 py-4 dark:border-dark-700"},Ea={class:"text-lg font-semibold text-gray-900 dark:text-white"},Ha={class:"badge badge-gray"},Ia={class:"p-6"},Ka={key:0,class:"flex items-center justify-center py-12"},Ga={key:1,class:"py-8"},Za={key:2,class:"space-y-3"},Ja={class:"flex items-center gap-4"},Wa={class:"flex h-10 w-10 items-center justify-center rounded-xl bg-primary-100 dark:bg-primary-900/30"},Xa={class:"text-sm font-medium text-gray-900 dark:text-white"},Ya={class:"text-xs text-gray-500 dark:text-dark-400"},ts={class:"text-right"},es={class:"text-sm font-semibold"},as=["title"],ss=["title"],os={class:"text-xs text-gray-500 dark:text-dark-400"},rs=P({__name:"UserDashboardRecentUsage",props:{data:{},loading:{type:Boolean}},setup(d){const{t:_}=X(),s=v=>v.toFixed(4);return(v,p)=>{const g=gt("router-link");return i(),u("div",Qa,[t("div",Va,[t("h2",Ea,e(a(_)("dashboard.recentUsage")),1),t("span",Ha,e(a(_)("dashboard.last7Days")),1)]),t("div",Ia,[d.loading?(i(),u("div",Ka,[c(tt,{size:"lg"})])):d.data.length===0?(i(),u("div",Ga,[c(Ft,{title:a(_)("dashboard.noUsageRecords"),description:a(_)("dashboard.startUsingApi")},null,8,["title","description"])])):(i(),u("div",Za,[(i(!0),u(S,null,W(d.data,n=>(i(),u("div",{key:n.id,class:"flex items-center justify-between rounded-xl bg-gray-50 p-4 transition-colors hover:bg-gray-100 dark:bg-dark-800/50 dark:hover:bg-dark-800"},[t("div",Ja,[t("div",Wa,[c(f,{name:"beaker",size:"md",class:"text-primary-600 dark:text-primary-400"})]),t("div",null,[t("p",Xa,e(n.model),1),t("p",Ya,e(a(it)(n.created_at)),1)])]),t("div",ts,[t("p",es,[t("span",{class:"text-green-600 dark:text-green-400",title:a(_)("dashboard.actual")},"$"+e(s(n.actual_cost)),9,as),t("span",{class:"font-normal text-gray-400 dark:text-gray-500",title:a(_)("dashboard.standard")}," / $"+e(s(n.total_cost)),9,ss)]),t("p",os,e((n.input_tokens+n.output_tokens).toLocaleString())+" tokens",1)])]))),128)),c(g,{to:"/usage",class:"flex items-center justify-center gap-2 py-3 text-sm font-medium text-primary-600 transition-colors hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300"},{default:nt(()=>[mt(e(a(_)("dashboard.viewAllUsage"))+" ",1),c(f,{name:"arrowRight",size:"sm"})]),_:1})]))])])}}}),ds={class:"card"},ns={class:"border-b border-gray-100 px-6 py-4 dark:border-dark-700"},ls={class:"text-lg font-semibold text-gray-900 dark:text-white"},is={class:"space-y-3 p-4"},cs={class:"flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-xl bg-primary-100 transition-transform group-hover:scale-105 dark:bg-primary-900/30"},us={class:"min-w-0 flex-1"},_s={class:"text-sm font-medium text-gray-900 dark:text-white"},gs={class:"text-xs text-gray-500 dark:text-dark-400"},ms={class:"flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-xl bg-emerald-100 transition-transform group-hover:scale-105 dark:bg-emerald-900/30"},xs={class:"min-w-0 flex-1"},hs={class:"text-sm font-medium text-gray-900 dark:text-white"},ps={class:"text-xs text-gray-500 dark:text-dark-400"},ys={class:"flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-xl bg-amber-100 transition-transform group-hover:scale-105 dark:bg-amber-900/30"},fs={class:"min-w-0 flex-1"},bs={class:"text-sm font-medium text-gray-900 dark:text-white"},ks={class:"text-xs text-gray-500 dark:text-dark-400"},vs=P({__name:"UserDashboardQuickActions",setup(d){const _=xt(),{t:s}=X();return(v,p)=>(i(),u("div",ds,[t("div",ns,[t("h2",ls,e(a(s)("dashboard.quickActions")),1)]),t("div",is,[t("button",{onClick:p[
10]||(p[0]=g=>a(_).push("/keys")),class:"group flex w-full items-center gap-4 rounded-xl bg-gray-50 p-4 text-left transition-all duration-200 hover:bg-gray-100 dark:bg-dark-800/50 dark:hover:bg-dark-800"},[t("div",cs,[c(f,{name:"key",size:"lg",class:"text-primary-600 dark:text-primary-400"})]),t("div",us,[t("p",_s,e(a(s)("dashboard.createApiKey")),1),t("p",gs,e(a(s)("dashboard.generateNewKey")),1)]),c(f,{name:"chevronRight",size:"md",class:"text-gray-400 transition-colors group-hover:text-primary-500 dark:text-dark-500"})]),t("button",{onClick:p[1]||(p[1]=g=>a(_).push("/usage")),class:"group flex w-full items-center gap-4 rounded-xl bg-gray-50 p-4 text-left transition-all duration-200 hover:bg-gray-100 dark:bg-dark-800/50 dark:hover:bg-dark-800"},[t("div",ms,[c(f,{name:"chart",size:"lg",class:"text-emerald-600 dark:text-emerald-400"})]),t("div",xs,[t("p",hs,e(a(s)("dashboard.viewUsage")),1),t("p",ps,e(a(s)("dashboard.checkDetailedLogs")),1)]),c(f,{name:"chevronRight",size:"md",class:"text-gray-400 transition-colors group-hover:text-emerald-500 dark:text-dark-500"})]),t("button",{onClick:p[2]||(p[2]=g=>a(_).push("/redeem")),class:"group flex w-full items-center gap-4 roun
1ded-xl bg-gray-50 p-4 text-left transition-all duration-200 hover:bg-gray-100 dark:bg-dark-800/50 dark:hover:bg-dark-800"},[t("div",ys,[c(f,{name:"gift",size:"lg",class:"text-amber-600 dark:text-amber-400"})]),t("div",fs,[t("p",bs,e(a(s)("dashboard.redeemCode")),1),t("p",ks,e(a(s)("dashboard.addBalanceWithCode")),1)]),c(f,{name:"chevronRight",size:"md",class:"text-gray-400 transition-colors group-hover:text-amber-500 dark:text-dark-500"})])])]))}}),$s={class:"space-y-6"},ws={key:0,class:"flex items-center justify-center py-12"},Ds={class:"grid grid-cols-1 gap-6 lg:grid-cols-3"},Cs={class:"lg:col-span-2"},Ss={class:"lg:col-span-1"},Es=P({__name:"DashboardView",setup(d){const _=ct(),s=J(()=>_.user),v=w(null),p=w(!1),g=w(!1),n=w(!1),l=w([]),Q=w([]),U=w([]),M=w(null),V=r=>r.toISOString().split("T")[0],R=w(V(new Date(Date.now()-6*864e5))),q=w(V(new Date)),T=w("day"),E=async()=>{p.value=!0;try{await _.refreshUser(),v.value=await Z.getDashboardStats()}catch(r){console.error("Failed to load dashboard stats:",r)}finally{p.value=!1}},D=async()=>{n.value=!0;try{const r=await Promise.all([Z.getDashboardTrend({start_date:R.value,end_date:q.value,granularity:T.value}),Z.getDashboardModels({start_date:R.value,end_date:q.value})]);l.value=r[0].trend||[],Q.value=r[1].models||[]}catch(r){console.error("Failed to load charts:",r)}finally{n.value=!1}},$=async()=>{g.value=!0;try{const r=await Z.getByDateRange(R.value,q.value);
1U.value=r.items.slice(0,5)}catch(r){console.error("Failed to load recent usage:",r)}finally{g.value=!1}},Y=async()=>{try{const r=await At();M.value=r.platform_quotas??[]}catch(r){console.warn("Failed to load platform quotas:",r),M.value=[]}},o=()=>{E(),D(),$(),Y()};return ht(()=>{o()}),(r,b)=>(i(),dt(ut,null,{default:nt(()=>{var C;return[t("div",$s,[p.value?(i(),u("div",ws,[c(tt)])):v.value?(i(),u(S,{key:1},[c(ua,{stats:v.value,balance:((C=s.value)==null?void 0:C.balance)||0,"is-simple":a(_).isSimpleMode,"platform-quotas":M.value},null,8,["stats","balance","is-simple","platform-quotas"]),c(Pa,{startDate:R.value,"onUpdate:startDate":b[0]||(b[0]=y=>R.value=y),endDate:q.value,"onUpdate:endDate":b[1]||(b[1]=y=>q.value=y),granularity:T.value,"onUpdate:granularity":b[2]||(b[2]=y=>T.value=y),loading:n.value,trend:l.value,models:Q.value,onDateRangeChange:D,onGranularityChange:D,onRefresh:o},null,8,["startDate","endDate","granularity","loading","trend","models"]),t("div",Ds,[t("div",Cs,[c(rs,{data:U.value,loading:g.value},null,8,["data","loading"])]),t("div",Ss,[c(vs)])])],64)):z("",!0)])]}),_:1}))}});export{Es as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.