tokentracker-cli 0.24.0 → 0.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dashboard/dist/assets/{Card-C22jvaH-.js → Card-B3zit51o.js} +1 -1
  2. package/dashboard/dist/assets/{DashboardPage-Dv_4x35m.js → DashboardPage-p0PukR6H.js} +1 -1
  3. package/dashboard/dist/assets/{DevicePage-BjhiTjFW.js → DevicePage-cYRFC4jD.js} +1 -1
  4. package/dashboard/dist/assets/{FadeIn-CHxDANbJ.js → FadeIn-BeLgcj1F.js} +1 -1
  5. package/dashboard/dist/assets/{HeaderGithubStar-CIfUeDxZ.js → HeaderGithubStar-DJJ-z5Wo.js} +1 -1
  6. package/dashboard/dist/assets/{IpCheckPage-DIa0AzUn.js → IpCheckPage-CxswyJC6.js} +1 -1
  7. package/dashboard/dist/assets/{LandingPage-sh7tcPKd.js → LandingPage-Bc1ahbkE.js} +1 -1
  8. package/dashboard/dist/assets/{LeaderboardPage-Dg6zcGG1.js → LeaderboardPage-khmZdEvK.js} +1 -1
  9. package/dashboard/dist/assets/{LeaderboardProfilePage-BOJJ-T57.js → LeaderboardProfilePage-NdMct8UA.js} +1 -1
  10. package/dashboard/dist/assets/{LimitsPage-CdMhF5lF.js → LimitsPage-Dc-Rgfn2.js} +1 -1
  11. package/dashboard/dist/assets/{LoginPage-BbJO2VUw.js → LoginPage-nhgDDL4s.js} +1 -1
  12. package/dashboard/dist/assets/{PopoverPopup-Csxg6Urf.js → PopoverPopup-D7c8Tufb.js} +1 -1
  13. package/dashboard/dist/assets/{ProviderIcon-BdfV-wMB.js → ProviderIcon-B79ytQj1.js} +1 -1
  14. package/dashboard/dist/assets/{SettingsPage-B0UsE-Cz.js → SettingsPage-Dv5A3ADR.js} +1 -1
  15. package/dashboard/dist/assets/{SkillsPage-CpV5GRRc.js → SkillsPage-CJdMytgb.js} +1 -1
  16. package/dashboard/dist/assets/{WidgetsPage-DdQEZR9N.js → WidgetsPage-PteVAvZa.js} +1 -1
  17. package/dashboard/dist/assets/{WrappedPage-DKYCqqJa.js → WrappedPage-r7rchUJS.js} +1 -1
  18. package/dashboard/dist/assets/check-CQ9GtDMA.js +1 -0
  19. package/dashboard/dist/assets/{chevron-down-Dh0EAuAs.js → chevron-down-CNvz7vRS.js} +1 -1
  20. package/dashboard/dist/assets/{download-B-u2224w.js → download-HiydOOCL.js} +1 -1
  21. package/dashboard/dist/assets/{info-Bax52N3e.js → info-CWqFjI4Z.js} +1 -1
  22. package/dashboard/dist/assets/leaderboard-columns-BWyNquUf.js +1 -0
  23. package/dashboard/dist/assets/{main-uaLO1Ae7.js → main-C1bPtjN7.js} +15 -15
  24. package/dashboard/dist/assets/{use-limits-display-prefs-BVawA_Rp.js → use-limits-display-prefs-CTnU4ZMo.js} +1 -1
  25. package/dashboard/dist/assets/{use-native-settings-DHtj5DnD.js → use-native-settings-DkTJDNZG.js} +1 -1
  26. package/dashboard/dist/assets/{use-reduced-motion-8tbVQBYw.js → use-reduced-motion-DJE4Frme.js} +1 -1
  27. package/dashboard/dist/assets/{use-usage-limits-SwQjCSa8.js → use-usage-limits-OjbraegI.js} +1 -1
  28. package/dashboard/dist/assets/{useCurrency-Bc8I7sE1.js → useCurrency-DJA7tRVi.js} +1 -1
  29. package/dashboard/dist/index.html +1 -1
  30. package/dashboard/dist/share.html +1 -1
  31. package/package.json +1 -1
  32. package/src/cli.js +1 -2
  33. package/src/commands/serve.js +2 -57
  34. package/src/lib/local-api.js +4 -37
  35. package/src/lib/pricing/seed-snapshot.json +1 -1
  36. package/dashboard/dist/assets/check-CO0YnJo0.js +0 -1
  37. package/dashboard/dist/assets/leaderboard-columns-CmMWLqut.js +0 -1
@@ -1 +1 @@
1
- import{C as r}from"./main-uaLO1Ae7.js";function t({children:i,title:a,subtitle:o,className:s="",bodyClassName:d=""}){return r.jsxs("div",{className:`rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 transition-colors duration-200 ${s}`,children:[(a||o)&&r.jsxs("div",{className:"px-5 py-4 border-b border-oai-gray-200 dark:border-oai-gray-800 transition-colors duration-200",children:[a&&r.jsx("h3",{className:"text-sm font-medium text-oai-gray-500 dark:text-oai-gray-300 uppercase tracking-wide transition-colors duration-200",children:a}),o&&r.jsx("p",{className:"text-sm text-oai-gray-500 dark:text-oai-gray-300 mt-1 transition-colors duration-200",children:o})]}),r.jsx("div",{className:`p-5 ${d}`,children:i})]})}export{t as C};
1
+ import{C as r}from"./main-C1bPtjN7.js";function t({children:i,title:a,subtitle:o,className:s="",bodyClassName:d=""}){return r.jsxs("div",{className:`rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 transition-colors duration-200 ${s}`,children:[(a||o)&&r.jsxs("div",{className:"px-5 py-4 border-b border-oai-gray-200 dark:border-oai-gray-800 transition-colors duration-200",children:[a&&r.jsx("h3",{className:"text-sm font-medium text-oai-gray-500 dark:text-oai-gray-300 uppercase tracking-wide transition-colors duration-200",children:a}),o&&r.jsx("p",{className:"text-sm text-oai-gray-500 dark:text-oai-gray-300 mt-1 transition-colors duration-200",children:o})]}),r.jsx("div",{className:`p-5 ${d}`,children:i})]})}export{t as C};
@@ -1,4 +1,4 @@
1
- import{c as Kt,i as Oi,f as no,a as ao,J as Ei,u as ro,m as Fi,r as f,M as oo,b as Wi,d as Pi,e as Un,g as Ii,h as It,j as Xt,k as Pt,l as Li,n as ga,o as wn,p as va,q as Tn,s as $i,t as Ri,v as Bi,w as _a,x as qt,y as qn,z as Yi,A as He,B as h,C as o,D as so,E as dn,X as io,F as Ue,L as zi,G as Re,R,H as An,I as lo,K as Mn,N as Hi,O as co,P as uo,Q as Na,S as Ui,T as fo,_ as mo,U as ya,V as qi,W as Gi,Y as Vi,Z as Ki,$ as Xi,a0 as Qi,a1 as Ji,a2 as Zi,a3 as el,a4 as tl,a5 as ut,a6 as dr}from"./main-uaLO1Ae7.js";import{u as nl}from"./use-usage-limits-SwQjCSa8.js";import{u as un}from"./useCurrency-Bc8I7sE1.js";import{I as ja}from"./info-Bax52N3e.js";import{u as al,a as rl,b as ol,c as sl,d as il,D as ll,e as cl,f as dl,g as ul,h as fl,i as ml,C as hl,P as gl,j as yl,k as pl,l as xl,m as bl,L as kl}from"./PopoverPopup-Csxg6Urf.js";import{C as Sa}from"./Card-C22jvaH-.js";import{u as Ma}from"./use-reduced-motion-8tbVQBYw.js";import{P as ho}from"./ProviderIcon-BdfV-wMB.js";import{F as Yt}from"./FadeIn-CHxDANbJ.js";const wl=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]],vl=Kt("maximize-2",wl);const _l=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],Nl=Kt("pause",_l);const jl=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],Sl=Kt("play",jl);const Ml=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],Cl=Kt("rotate-ccw",Ml);const Dl=[["path",{d:"M21 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h6",key:"y09zxi"}],["path",{d:"m21 3-9 9",key:"mpx6sq"}],["path",{d:"M15 3h6v6",key:"1q9fwt"}]],Tl=Kt("square-arrow-out-up-right",Dl);const Al=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],Ol=Kt("terminal",Al);function El(...e){const t=!Array.isArray(e[0]),n=t?0:-1,a=e[0+n],r=e[1+n],s=e[2+n],l=e[3+n],i=Oi(r,s,l);return t?i(a):i}function Fl(e,t,n={}){const a=e.get();let r=null,s=a,l;const i=typeof a=="string"?a.replace(/[\d.-]/g,""):void 0,c=()=>{r&&(r.stop(),r=null),e.animation=void 0},u=()=>{const d=ur(e.get()),g=ur(s);if(d===g){c();return}const y=r?r.getGeneratorVelocity():e.getVelocity();c(),r=new Ei({keyframes:[d,g],velocity:y,type:"spring",restDelta:.001,restSpeed:.01,...n,onUpdate:l})},m=()=>{u(),e.animation=r??void 0,e.events.animationStart?.notify(),r?.then(()=>{e.animation=void 0,e.events.animationComplete?.notify()})};if(e.attach((d,g)=>{s=d,l=y=>g(Gn(y,i)),no.postRender(m)},c),ao(t)){let d=n.skipInitialAnimation===!0;const g=t.on("change",x=>{d?(d=!1,e.jump(Gn(x,i),!1)):e.set(Gn(x,i))}),y=e.on("destroy",g);return()=>{g(),y()}}return c}function Gn(e,t){return t?e+t:e}function ur(e){return typeof e=="number"?e:parseFloat(e)}function Ca(e){const t=ro(()=>Fi(e)),{isStatic:n}=f.useContext(oo);if(n){const[,a]=f.useState(e);f.useEffect(()=>t.on("change",a),[])}return t}function go(e,t){const n=Ca(t()),a=()=>n.set(t());return a(),Wi(()=>{const r=()=>no.preRender(a,!1,!0),s=e.map(l=>l.on("change",r));return()=>{s.forEach(l=>l()),Pi(a)}}),n}function Wl(e){Un.current=[],e();const t=go(Un.current,e);return Un.current=void 0,t}function yo(e,t,n,a){if(typeof e=="function")return Wl(e);const s=typeof t=="function"?t:El(t,n,a),l=Array.isArray(e)?fr(e,s):fr([e],([c])=>s(c)),i=Array.isArray(e)?void 0:e.accelerate;return i&&!i.isTransformed&&typeof t!="function"&&Array.isArray(n)&&a?.clamp!==!1&&(l.accelerate={...i,times:t,keyframes:n,isTransformed:!0}),l}function fr(e,t){const n=ro(()=>[]);return go(e,()=>{n.length=0;const a=e.length;for(let r=0;r<a;r++)n[r]=e[r].get();return t(n)})}function Pl(e,t={}){const{isStatic:n}=f.useContext(oo),a=()=>ao(e)?e.get():e;if(n)return yo(a);const r=Ca(a());return f.useInsertionEffect(()=>Fl(r,e,t),[r,JSON.stringify(t)]),r}function Il(e,t={}){return Pl(e,{type:"spring",...t})}function Ll({baseUrl:e,accessToken:t,guestAllowed:n=!1,weeks:a=52,weekStartsOn:r="sun",cacheKey:s,timeZone:l,tzOffsetMinutes:i,now:c}={}){const u=f.useMemo(()=>Ii({weeks:a,weekStartsOn:r,now:c}),[c,a,r]),[m,d]=f.useState([]),[g,y]=f.useState(null),[x,p]=f.useState("edge"),[b,k]=f.useState(!1),[w,v]=f.useState(null),S=It(),C=Xt(t),_=!n,O=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),N=f.useMemo(()=>{if(!s)return null;const B=Tn({timeZone:l,offsetMinutes:i});return`tokentracker.heatmap.${s}.${a}.${r}.${B}`},[s,l,i,a,r]),W=f.useCallback(()=>{if(!N||typeof window>"u")return null;try{const B=window.localStorage.getItem(N);if(!B)return null;const T=JSON.parse(B);return!T||!T.heatmap?null:T}catch{return null}},[N]),E=f.useCallback(B=>{if(!(!N||typeof window>"u"))try{window.localStorage.setItem(N,JSON.stringify(B))}catch{}},[N]),F=f.useCallback(()=>{if(!(!N||typeof window>"u"))try{window.localStorage.removeItem(N)}catch{}},[N]),ie=f.useCallback(async()=>{const B=await Pt(t);if(!(!B&&!S&&!O)){k(!0),v(null);try{try{const I=await Li({baseUrl:e,accessToken:B,weeks:a,to:u.to,weekStartsOn:r,timeZone:l,tzOffsetMinutes:i}),P=Array.isArray(I?.weeks)?I.weeks:[];if(!P.length&&_){const Q=W();if(Q?.heatmap){y(Q.heatmap),d(Q.daily||[]),p("cache");return}}if(!P.some(Q=>(Array.isArray(Q)?Q:[]).some(fe=>fe&&Number.isFinite(Number(fe.level))))&&P.length){const Q=[];for(const Y of P)for(const H of Array.isArray(Y)?Y:[])H?.day&&Q.push({day:H.day,total_tokens:H.total_tokens??H.value??0,billable_total_tokens:H.billable_total_tokens??H.value??H.total_tokens??0});const fe=ga({dailyRows:Q,weeks:a,to:I?.to||u.to,weekStartsOn:r});d(Q),y({...fe,week_starts_on:r,active_days:Q.filter(Y=>Number(Y?.billable_total_tokens??Y?.total_tokens)>0).length,streak_days:wn({dailyRows:Q,to:I?.to||u.to})}),p("client"),_?E({heatmap:{...fe,week_starts_on:r,active_days:Q.filter(Y=>Number(Y?.billable_total_tokens??Y?.total_tokens)>0).length,streak_days:wn({dailyRows:Q,to:I?.to||u.to})},daily:Q,fetchedAt:new Date().toISOString()}):F();return}y(I||null),d([]),p("edge"),I&&_?E({heatmap:I,daily:[],fetchedAt:new Date().toISOString()}):_||F();return}catch(I){const P=I,z=P?.status??P?.statusCode;if(z===401||z===403)throw I}const T=await va({baseUrl:e,accessToken:B,from:u.from,to:u.to,timeZone:l,tzOffsetMinutes:i}),M=Array.isArray(T?.data)?T.data:[];d(M);const U=ga({dailyRows:M,weeks:a,to:u.to,weekStartsOn:r});y({...U,week_starts_on:r,active_days:M.filter(I=>Number(I?.billable_total_tokens??I?.total_tokens)>0).length,streak_days:wn({dailyRows:M,to:u.to})}),p("client"),_?E({heatmap:{...U,week_starts_on:r,active_days:M.filter(I=>Number(I?.billable_total_tokens??I?.total_tokens)>0).length,streak_days:wn({dailyRows:M,to:u.to})},daily:M,fetchedAt:new Date().toISOString()}):F()}catch(T){if(_){const M=W();if(M?.heatmap)y(M.heatmap),d(M.daily||[]),p("cache"),v(null);else{const U=T;v(U?.message||String(U)),d([]),y(null),p("edge")}}else{const M=T;v(M?.message||String(M)),d([]),y(null),p("edge")}}finally{k(!1)}}},[t,e,S,n,_,u.from,u.to,W,C,l,i,r,a,F,E,O]);return f.useEffect(()=>{if(!C&&!n&&!S&&!O){d([]),k(!1),v(null),y(null),p("edge");return}if(!_)F(),d([]),v(null),y(null),p("edge");else{const B=W();B?.heatmap&&(y(B.heatmap),d(B.daily||[]),p("cache"))}ie()},[t,S,W,ie,C,n,_,F,O]),{range:u,daily:m,heatmap:g,source:S?"mock":x==="client"?"edge":x,loading:b,error:w,refresh:ie}}function $l({baseUrl:e,accessToken:t,limit:n=3,from:a,to:r,source:s,timeZone:l,tzOffsetMinutes:i}={}){const[c,u]=f.useState([]),[m,d]=f.useState(!1),[g,y]=f.useState(null),x=It(),p=Xt(t),b=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),k=f.useCallback(async()=>{const w=await Pt(t);if(!w&&!x&&!b){u([]),y(null),d(!1);return}d(!0),y(null);try{const v=await $i({baseUrl:e,accessToken:w,limit:n,from:a,to:r,source:s,timeZone:l,tzOffsetMinutes:i});u(Array.isArray(v?.entries)?v.entries:[])}catch(v){const S=v?.message||String(v);y(S),u([])}finally{d(!1)}},[t,e,a,n,x,s,l,r,i,b]);return f.useEffect(()=>{if(!p&&!x&&!b){u([]),y(null),d(!1);return}k()},[x,k,p,b]),{entries:c,loading:m,error:g,refresh:k}}const Rl=24;function Bl({baseUrl:e,accessToken:t,guestAllowed:n=!1,period:a,from:r,to:s,months:l=Rl,cacheKey:i,timeZone:c,tzOffsetMinutes:u,now:m,sharedRows:d,sharedRange:g}={}){const[y,x]=f.useState([]),[p,b]=f.useState(()=>({from:r,to:s})),[k,w]=f.useState("edge"),[v,S]=f.useState(null),[C,_]=f.useState(!1),[O,N]=f.useState(null),W=It(),E=Xt(t),F=!n,ie=Array.isArray(d),$=g?.from||r,B=g?.to||s,T=f.useMemo(()=>a==="day"?"hourly":a==="total"?"monthly":"daily",[a]),M=(()=>{if(!i)return null;const Y=Yl(e)||"default",H=Tn({timeZone:c,offsetMinutes:u});if(T==="hourly")return`tokentracker.trend.${i}.${Y}.hourly.${s||r||"day"}.${H}`;if(T==="monthly")return`tokentracker.trend.${i}.${Y}.monthly.${l}.${s||"today"}.${H}`;const te=`${r||""}.${s||""}`;return`tokentracker.trend.${i}.${Y}.daily.${te}.${H}`})(),U=f.useCallback(()=>{if(!M||typeof window>"u")return null;try{const Y=window.localStorage.getItem(M);if(!Y)return null;const H=JSON.parse(Y);return!H||!Array.isArray(H.rows)?null:H}catch{return null}},[M]),I=f.useCallback(Y=>{if(!(!M||typeof window>"u"))try{window.localStorage.setItem(M,JSON.stringify(Y))}catch{}},[M]),P=f.useCallback(()=>{if(!(!M||typeof window>"u"))try{window.localStorage.removeItem(M)}catch{}},[M]),z=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),Q=f.useCallback(async()=>{if(ie){x(Array.isArray(d)?d:[]),b({from:$,to:B}),w("shared"),S(null),_(!1),N(null);return}const Y=await Pt(t);if(!(!Y&&!W&&!z)){_(!0),N(null);try{let H;T==="hourly"?H=await Ri({baseUrl:e,accessToken:Y,day:s||r,timeZone:c,tzOffsetMinutes:u}):T==="monthly"?H=await Bi({baseUrl:e,accessToken:Y,months:l,to:s,timeZone:c,tzOffsetMinutes:u}):H=await va({baseUrl:e,accessToken:Y,from:r,to:s,timeZone:c,tzOffsetMinutes:u});const te=H?.from||r||H?.day||null,he=H?.to||s||H?.day||null;let ve=Array.isArray(H?.data)?H.data:[];T==="daily"?ve=Kn(ve,te||r,he||s,{timeZone:c,offsetMinutes:u,now:m}):T==="hourly"?ve=Xn(ve,{timeZone:c,offsetMinutes:u,now:m}):T==="monthly"&&(ve=Qn(ve,{timeZone:c,offsetMinutes:u,now:m}));const Be=new Date().toISOString();x(ve),b({from:te,to:he}),w("edge"),S(Be),F?I({rows:ve,from:te,to:he,mode:T,fetchedAt:Be}):P()}catch(H){if(F){const te=U();if(te?.rows){let he=T==="daily"?Kn(te.rows||[],te.from||r,te.to||s,{timeZone:c,offsetMinutes:u,now:m}):Array.isArray(te.rows)?te.rows:[];T==="hourly"?he=Xn(he,{timeZone:c,offsetMinutes:u,now:m}):T==="monthly"&&(he=Qn(he,{timeZone:c,offsetMinutes:u,now:m})),x(he),b({from:te.from||r,to:te.to||s}),w("cache"),S(te.fetchedAt||null),N(null)}else{x([]),b({from:r,to:s}),w("edge"),S(null);const he=H;N(he?.message||String(he))}}else{x([]),b({from:r,to:s}),w("edge"),S(null);const te=H;N(te?.message||String(te))}}finally{_(!1)}}},[t,e,r,W,n,F,T,l,U,E,ie,$,d,B,c,s,u,m,P,I,z]);f.useEffect(()=>{if(ie){x(Array.isArray(d)?d:[]),b({from:$,to:B}),w("shared"),S(null),_(!1),N(null);return}if(!E&&!n&&!W&&!z){x([]),b({from:r,to:s}),N(null),_(!1),w("edge"),S(null);return}if(!F)P(),x([]),b({from:r,to:s}),N(null),w("edge"),S(null);else{const Y=U();if(Y?.rows){let H=T==="daily"?Kn(Y.rows||[],Y.from||r,Y.to||s,{timeZone:c,offsetMinutes:u,now:m}):Array.isArray(Y.rows)?Y.rows:[];T==="hourly"?H=Xn(H,{timeZone:c,offsetMinutes:u,now:m}):T==="monthly"&&(H=Qn(H,{timeZone:c,offsetMinutes:u,now:m})),x(H),b({from:Y.from||r,to:Y.to||s}),w("cache"),S(Y.fetchedAt||null)}}Q()},[t,W,U,Q,ie,$,d,B,E,n,F,P,z]);const fe=W?"mock":k;return{rows:y,from:p.from||r,to:p.to||s,source:fe,fetchedAt:v,loading:C,error:O,refresh:Q}}function Yl(e){try{return new URL(e).host}catch{return null}}function Vn(e){if(!e)return null;const t=String(e).trim(),n=t.split("-");if(n.length!==3)return null;const a=Number(n[0]),r=Number(n[1])-1,s=Number(n[2]);if(!Number.isFinite(a)||!Number.isFinite(r)||!Number.isFinite(s))return null;const l=new Date(Date.UTC(a,r,s));return Number.isFinite(l.getTime())&&qt(l)===t?l:null}function zl(e,t){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+t))}function Kn(e,t,n,{timeZone:a,offsetMinutes:r,now:s}={}){const l=Vn(t),i=Vn(n);if(!l||!i||i<l)return Array.isArray(e)?e:[];const c=s instanceof Date&&Number.isFinite(s.getTime())?s:new Date,u=_a({timeZone:a,offsetMinutes:r,date:c}),m=Vn(u),d=m?m.getTime():c.getTime(),g=new Map;for(const x of e||[])x?.day&&g.set(x.day,x);const y=[];for(let x=l;x<=i;x=zl(x,1)){const p=qt(x),b=g.get(p),k=x.getTime()>d;if(b){y.push({...b,missing:!1,future:k});continue}y.push({day:p,total_tokens:null,billable_total_tokens:null,input_tokens:null,cached_input_tokens:null,output_tokens:null,reasoning_output_tokens:null,missing:!k,future:k})}return y}function Xn(e,{timeZone:t,offsetMinutes:n,now:a}={}){if(!Array.isArray(e))return[];const r=po({timeZone:t,offsetMinutes:n,now:a});return r?e.map(s=>{const l=s?.hour||s?.label||"",i=Hl(l);if(!i)return{...s,future:!1};const c=i.dayNum>r.dayNum||i.dayNum===r.dayNum&&i.slot>r.slot;return{...s,future:c}}):e}function Qn(e,{timeZone:t,offsetMinutes:n,now:a}={}){if(!Array.isArray(e))return[];const r=po({timeZone:t,offsetMinutes:n,now:a});return r?e.map(s=>{const l=s?.month||s?.label||"",i=Ul(l);if(!i)return{...s,future:!1};const c=i.year>r.year||i.year===r.year&&i.month>r.month;return{...s,future:c}}):e}function po({timeZone:e,offsetMinutes:t,now:n}={}){const a=n instanceof Date&&Number.isFinite(n.getTime())?n:new Date;if(e&&typeof Intl<"u"&&Intl.DateTimeFormat)try{const g=new Intl.DateTimeFormat("en-CA",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hourCycle:"h23"}).formatToParts(a).reduce((w,v)=>(v.type&&v.value&&(w[v.type]=v.value),w),{}),y=Number(g.year),x=Number(g.month),p=Number(g.day),b=Number(g.hour),k=Number(g.minute);if(Number.isFinite(y)&&Number.isFinite(x)&&Number.isFinite(p)&&Number.isFinite(b)&&Number.isFinite(k)){const w=b*2+(k>=30?1:0);return{year:y,month:x,day:p,hour:b,minute:k,dayNum:y*1e4+x*100+p,slot:w}}}catch{}if(Number.isFinite(t)){const m=new Date(a.getTime()+t*60*1e3),d=m.getUTCFullYear(),g=m.getUTCMonth()+1,y=m.getUTCDate(),x=m.getUTCHours(),p=m.getUTCMinutes(),b=x*2+(p>=30?1:0);return{year:d,month:g,day:y,hour:x,minute:p,dayNum:d*1e4+g*100+y,slot:b}}const r=a.getFullYear(),s=a.getMonth()+1,l=a.getDate(),i=a.getHours(),c=a.getMinutes(),u=i*2+(c>=30?1:0);return{year:r,month:s,day:l,hour:i,minute:c,dayNum:r*1e4+s*100+l,slot:u}}function Hl(e){if(!e)return null;const t=String(e).trim(),[n,a]=t.split("T");if(!n||!a)return null;const r=n.split("-");if(r.length!==3)return null;const s=Number(r[0]),l=Number(r[1]),i=Number(r[2]);if(!Number.isFinite(s)||!Number.isFinite(l)||!Number.isFinite(i))return null;const c=a.split(":"),u=Number(c[0]),m=Number(c[1]);if(!Number.isFinite(u)||u<0||u>23||!Number.isFinite(m)||m<0||m>59)return null;const d=u*2+(m>=30?1:0);return{dayNum:s*1e4+l*100+i,slot:d}}function Ul(e){if(!e)return null;const n=String(e).trim().split("-");if(n.length!==2)return null;const a=Number(n[0]),r=Number(n[1]);return!Number.isFinite(a)||!Number.isFinite(r)||r<1||r>12?null:{year:a,month:r}}function mr({baseUrl:e,accessToken:t,guestAllowed:n=!1,from:a,to:r,includeDaily:s=!0,cacheKey:l,timeZone:i,tzOffsetMinutes:c,now:u}={}){const[m,d]=f.useState([]),[g,y]=f.useState(null),[x,p]=f.useState(null),[b,k]=f.useState("edge"),[w,v]=f.useState(null),[S,C]=f.useState(!1),[_,O]=f.useState(null),N=It(),W=Xt(t),E=!n,F=(()=>{if(!l)return null;const I=ql(e)||"default",P=s?"daily":"summary",z=Tn({timeZone:i,offsetMinutes:c});return`tokentracker.usage.${l}.${I}.${a}.${r}.${P}.${z}`})(),ie=f.useCallback(()=>{if(!F||typeof window>"u")return null;try{const I=window.localStorage.getItem(F);if(!I)return null;const P=JSON.parse(I);return!P||!P.summary?null:P}catch{return null}},[F]),$=f.useCallback(I=>{if(!(!F||typeof window>"u"))try{window.localStorage.setItem(F,JSON.stringify(I))}catch{}},[F]),B=f.useCallback(()=>{if(!(!F||typeof window>"u"))try{window.localStorage.removeItem(F)}catch{}},[F]),T=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),M=f.useCallback(async()=>{const I=await Pt(t);if(!(!I&&!N&&!T)){C(!0),O(null);try{let P=null,z=null;if(s){const[te,he]=await Promise.allSettled([va({baseUrl:e,accessToken:I,from:a,to:r,timeZone:i,tzOffsetMinutes:c}),qn({baseUrl:e,accessToken:I,from:a,to:r,timeZone:i,tzOffsetMinutes:c,rolling:!0})]);if(te.status==="rejected")throw te.reason;P=te.value,z=he.status==="fulfilled"?he.value:null}else z=await qn({baseUrl:e,accessToken:I,from:a,to:r,timeZone:i,tzOffsetMinutes:c,rolling:!0});let Q=s&&Array.isArray(P?.data)?P.data:[];s&&(Q=Zn(Q,a,r,{timeZone:i,offsetMinutes:c,now:u}));let fe=z?.totals||P?.summary?.totals||null,Y=z?.rolling||P?.summary?.rolling||null;if(s&&!fe&&!z)try{const te=await qn({baseUrl:e,accessToken:I,from:a,to:r,timeZone:i,tzOffsetMinutes:c,rolling:!0});fe=te?.totals||null,Y=te?.rolling||Y}catch{}const H=new Date().toISOString();d(Q),y(fe),p(Y),k("edge"),v(H),fe&&E?$({summary:fe,rolling:Y,daily:Q,from:a,to:r,includeDaily:s,fetchedAt:H}):E||B()}catch(P){if(E){const z=ie();if(z?.summary){y(z.summary),p(z.rolling||null);const Q=Array.isArray(z.daily)?z.daily:[],fe=s?Zn(Q,z.from||a,z.to||r,{timeZone:i,offsetMinutes:c,now:u}):Q;d(fe),k("cache"),v(z.fetchedAt||null),O(null)}else{const Q=P;O(Q?.message||String(Q)),d([]),y(null),p(null),k("edge"),v(null)}}else{const z=P;O(z?.message||String(z)),d([]),y(null),p(null),k("edge"),v(null)}}finally{C(!1)}}},[t,e,a,s,N,n,E,u,ie,W,i,r,c,B,$,T]);return f.useEffect(()=>{const I=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1");if(!W&&!n&&!N&&!I){d([]),y(null),p(null),O(null),C(!1),k("edge"),v(null);return}if(!E)B(),d([]),y(null),p(null),O(null),k("edge"),v(null);else{const P=ie();if(P?.summary){y(P.summary),p(P.rolling||null);const z=Array.isArray(P.daily)?P.daily:[],Q=s?Zn(z,P.from||a,P.to||r,{timeZone:i,offsetMinutes:c,now:u}):z;d(Q),k("cache"),v(P.fetchedAt||null)}}M()},[t,N,ie,M,W,n,E,B,T]),{daily:m,summary:g,rolling:x,source:N?"mock":b,fetchedAt:w,loading:S,error:_,refresh:M}}function ql(e){try{return new URL(e).host}catch{return null}}function Jn(e){if(!e)return null;const t=String(e).trim(),n=t.split("-");if(n.length!==3)return null;const a=Number(n[0]),r=Number(n[1])-1,s=Number(n[2]);if(!Number.isFinite(a)||!Number.isFinite(r)||!Number.isFinite(s))return null;const l=new Date(Date.UTC(a,r,s));return Number.isFinite(l.getTime())&&qt(l)===t?l:null}function Gl(e,t){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+t))}function Zn(e,t,n,{timeZone:a,offsetMinutes:r,now:s}={}){const l=Jn(t),i=Jn(n);if(!l||!i||i<l)return Array.isArray(e)?e:[];const c=s instanceof Date&&Number.isFinite(s.getTime())?s:new Date,u=_a({timeZone:a,offsetMinutes:r,date:c}),m=Jn(u),d=m?m.getTime():c.getTime(),g=new Map;for(const x of e||[])x?.day&&g.set(x.day,x);const y=[];for(let x=l;x<=i;x=Gl(x,1)){const p=qt(x),b=g.get(p),k=x.getTime()>d;if(b){y.push({...b,missing:!1,future:k});continue}y.push({day:p,total_tokens:null,billable_total_tokens:null,input_tokens:null,cached_input_tokens:null,output_tokens:null,reasoning_output_tokens:null,missing:!k,future:k})}return y}function Vl({baseUrl:e,accessToken:t,guestAllowed:n=!1,from:a,to:r,cacheKey:s,timeZone:l,tzOffsetMinutes:i}={}){const[c,u]=f.useState(null),[m,d]=f.useState("edge"),[g,y]=f.useState(!1),[x,p]=f.useState(null),b=It(),k=Xt(t),w=!n,v=f.useMemo(()=>{if(!s)return null;const E=Kl(e)||"default",F=Tn({timeZone:l,offsetMinutes:i});return`tokentracker.modelBreakdown.${s}.${E}.${a}.${r}.${F}`},[e,s,a,l,r,i]),S=f.useCallback(()=>{if(!v||typeof window>"u")return null;try{const E=window.localStorage.getItem(v);if(!E)return null;const F=JSON.parse(E);return!F||!F.breakdown?null:F}catch{return null}},[v]),C=f.useCallback(E=>{if(!(!v||typeof window>"u"))try{window.localStorage.setItem(v,JSON.stringify(E))}catch{}},[v]),_=f.useCallback(()=>{if(!(!v||typeof window>"u"))try{window.localStorage.removeItem(v)}catch{}},[v]),O=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),N=f.useCallback(async()=>{const E=await Pt(t);if(!(!E&&!b&&!O)){y(!0),p(null);try{const F=await Yi({baseUrl:e,accessToken:E,from:a,to:r,timeZone:l,tzOffsetMinutes:i});u(F||null),d("edge"),F&&w?C({breakdown:F,fetchedAt:new Date().toISOString()}):w||_()}catch(F){if(w){const ie=S();if(ie?.breakdown)u(ie.breakdown),d("cache"),p(null);else{u(null),d("edge");const $=F;p($?.message||String($))}}else{u(null),d("edge");const ie=F;p(ie?.message||String(ie))}}finally{y(!1)}}},[t,e,a,b,n,w,S,l,r,k,i,_,C,O]);return f.useEffect(()=>{if(!k&&!n&&!b&&!O){u(null),d("edge"),p(null),y(!1);return}if(!w)_(),u(null),d("edge"),p(null);else{const E=S();E?.breakdown&&(u(E.breakdown),d("cache"))}N()},[t,b,S,N,k,n,w,_,O]),{breakdown:c,source:b?"mock":m,loading:g,error:x,refresh:N}}function Kl(e){try{return new URL(e).host}catch{return null}}const xo=new Set(["day","hour","month"]);function Xl(e){return xo.has(e)}function hr(e){if(e==null)return null;const t=String(e).trim();if(!/^[0-9]+$/.test(t))return null;const n=t.replace(/^0+/,"");return n.length===0?"0":n}function Ql(e,t){const n=hr(e),a=hr(t);if(n&&a)return n.length!==a.length?n.length<a.length?-1:1:n===a?0:n<a?-1:1;const r=He(e),s=He(t);return r==null&&s==null?0:r==null?1:s==null?-1:r===s?0:r<s?-1:1}function Jl(e,t){const n=typeof e=="string"?e:String(e||""),a=typeof t=="string"?t:String(t||"");return n===a?0:n<a?-1:1}function Zl(e){if(!e)return null;const n=String(e).trim().match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!n)return null;const a=Number(n[1]),r=Number(n[2]),s=Number(n[3]);if(!Number.isFinite(a)||!Number.isFinite(r)||!Number.isFinite(s))return null;const l=new Date(Date.UTC(a,r-1,s));return!Number.isFinite(l.getTime())||l.getUTCFullYear()!==a||l.getUTCMonth()+1!==r||l.getUTCDate()!==s?null:l.getTime()}function ec(e){if(!e)return null;const n=String(e).trim().match(/^(\d{4})-(\d{2})$/);if(!n)return null;const a=Number(n[1]),r=Number(n[2]);if(!Number.isFinite(a)||!Number.isFinite(r)||r<1||r>12)return null;const s=new Date(Date.UTC(a,r-1,1));return Number.isFinite(s.getTime())?s.getTime():null}function tc(e){if(!e)return null;const n=String(e).trim().match(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2}))?Z?$/);if(!n)return null;const a=Number(n[1]),r=Number(n[2]),s=Number(n[3]),l=Number(n[4]),i=Number(n[5]),c=Number(n[6]||0);if(!Number.isFinite(a)||!Number.isFinite(r)||!Number.isFinite(s)||!Number.isFinite(l)||!Number.isFinite(i)||!Number.isFinite(c)||r<1||r>12||s<1||s>31||l<0||l>23||i<0||i>59||c<0||c>59)return null;const u=new Date(Date.UTC(a,r-1,s,l,i,c));return Number.isFinite(u.getTime())?u.getTime():null}function nc(e,t,n){const a=n==="hour"?tc:n==="month"?ec:Zl,r=a(e),s=a(t);return r!=null&&s!=null?r===s?0:r<s?-1:1:Jl(e,t)}function bo(e,{key:t,dir:n}){const a=n==="asc"?1:-1,r=Array.isArray(e)?e:[],s=xo.has(t)?(i,c)=>nc(i,c,t):Ql,l=i=>t==="total_tokens"&&i?.billable_total_tokens!=null?i.billable_total_tokens:i?.[t];return r.map((i,c)=>({row:i,index:c})).sort((i,c)=>{const u=l(i.row),m=l(c.row),d=u==null,g=m==null;if(d&&g)return i.index-c.index;if(d)return 1;if(g)return-1;const y=s(u,m);return y!==0?y*a:i.index-c.index}).map(i=>i.row)}function ac(){return[{key:"day",label:h("daily.sort.date.label"),title:h("daily.sort.date.title")},{key:"total_tokens",label:h("daily.sort.total.label"),title:h("daily.sort.total.title")},{key:"input_tokens",label:h("daily.sort.input.label"),title:h("daily.sort.input.title")},{key:"output_tokens",label:h("daily.sort.output.label"),title:h("daily.sort.output.title")},{key:"cached_input_tokens",label:h("daily.sort.cached.label"),title:h("daily.sort.cached.title")},{key:"reasoning_output_tokens",label:h("daily.sort.reasoning.label"),title:h("daily.sort.reasoning.title")},{key:"conversation_count",label:h("daily.sort.conversations.label"),title:h("daily.sort.conversations.title")}]}function gr(e){const t=Xl(e)?e:"day";return ac().map((n,a)=>a===0?{...n,key:t}:n)}function yr(e,{key:t,dir:n}){return bo(e,{key:t,dir:n})}const Cn=12,rc=["total_tokens","billable_total_tokens","input_tokens","cached_input_tokens","cache_creation_input_tokens","output_tokens","reasoning_output_tokens"];function oc(e){if(typeof e=="bigint")return e!==0n;if(typeof e=="number")return Number.isFinite(e)&&e!==0;if(e==null)return!1;const t=String(e).trim();if(!t||!/^-?\d+$/.test(t))return!1;const n=t.startsWith("-")?t.slice(1):t;return/[1-9]/.test(n)}function sc(e){return rc.some(t=>oc(e?.[t]))}function ic(e){const t=Array.isArray(e)?e:[];if(!t.length)return[];const n=bo(t,{key:"month",dir:"asc"}),a=n.findIndex(r=>r?.month&&sc(r));return a===-1?t:n.slice(a)}function lc(e,t,n=Cn){const a=Array.isArray(e)?e:[],r=Number.isFinite(n)&&n>0?n:Cn,l=(Number.isFinite(t)&&t>=0?Math.floor(t):0)*r;return a.slice(l,l+r)}function cc({publicMode:e,screenshotMode:t,forceInstall:n,accessEnabled:a,heatmapLoading:r,activeDays:s,hasActiveDeviceToken:l}={}){return e||t?!1:n?!0:a&&!r&&s===0&&!l}function ko(e){if(typeof e!="string")return null;const t=e.trim();return t?t.toLowerCase():null}function dc(e){const t=ko(e?.model_id);return t||null}function wo(e,t){return e?.model?String(e.model):t}function Gt(e,t=0){const n=He(e?.billable_total_tokens),a=He(e?.total_tokens);return n!=null&&n>0?n:a!=null&&a>0?a:n??a??t}function uc(e,{copyFn:t}={}){const n=typeof t=="function"?t:l=>l,r=(Array.isArray(e?.sources)?e.sources:[]).map(l=>{const i=Gt(l?.totals),c=He(l?.totals?.total_cost_usd)??0;return{source:l?.source,totalTokens:Number.isFinite(i)?i:0,totalCost:Number.isFinite(c)?c:0,models:Array.isArray(l?.models)?l.models:[]}}).filter(l=>l.totalTokens>0);if(!r.length)return[];const s=r.reduce((l,i)=>l+i.totalTokens,0);return typeof e?.pricing?.pricing_mode=="string"&&e.pricing.pricing_mode.toUpperCase(),r.slice().sort((l,i)=>i.totalTokens-l.totalTokens).map(l=>{const i=l.source?String(l.source).toUpperCase():n("shared.placeholder.short"),c=s>0?l.totalTokens/s*100:0,u=Number.isFinite(c)?c.toFixed(1):"0.0",m=l.models.map(d=>{const g=Gt(d?.totals);if(!Number.isFinite(g)||g<=0)return null;const y=l.totalTokens>0?Math.round(g/l.totalTokens*1e3)/10:0,x=wo(d,n("shared.placeholder.short")),p=dc(d),b=He(d?.totals?.total_cost_usd),k=b??(l.totalCost>0&&l.totalTokens>0?g/l.totalTokens*l.totalCost:null);return{id:p,name:x,share:y,usage:g,cost:k}}).filter(Boolean);return{source:l.source,label:i,totalPercent:String(u),usd:l.totalCost,usage:l.totalTokens,models:m}})}function fc(e,{limit:t=3,copyFn:n}={}){const a=typeof n=="function"?n:g=>g,r=Array.isArray(e?.sources)?e.sources:[];if(!r.length)return[];const s=new Map,l=new Map,i=new Map;let c=0;for(const g of r){const y=Array.isArray(g?.models)?g.models:[];for(const x of y){const p=Gt(x?.totals);if(!Number.isFinite(p)||p<=0)continue;c+=p;const b=wo(x,a("shared.placeholder.short")),k=ko(b);if(!k)continue;s.set(k,(s.get(k)||0)+p);const w=i.get(k)||0;p>=w&&(i.set(k,p),l.set(k,b))}}if(!s.size)return[];const u=Array.from(s.values()).reduce((g,y)=>g+y,0),m=c>0?c:u,d=Number.isFinite(t)?Math.max(0,Math.floor(t)):3;return Array.from(s.entries()).map(([g,y])=>{const x=m>0?(y/m*100).toFixed(1):"0.0";return{id:g,name:l.get(g)||a("shared.placeholder.short"),tokens:y,percent:String(x)}}).sort((g,y)=>y.tokens!==g.tokens?y.tokens-g.tokens:String(g.name).localeCompare(String(y.name))).slice(0,d)}const mt={emerald:{light:["#ebedf0","#a7f3d0","#6ee7b7","#34d399","#10b981"],dark:["#2d333b","#065f46","#059669","#10b981","#34d399"],gridColor:{light:"rgba(16, 185, 129, 0.12)",dark:"rgba(52, 211, 153, 0.08)"}},ocean:{light:["#f1f5f9","#93c5fd","#60a5fa","#3b82f6","#1d4ed8"],dark:["#1e293b","#1e3a8a","#2563eb","#3b82f6","#60a5fa"],gridColor:{light:"rgba(59, 130, 246, 0.12)",dark:"rgba(96, 165, 250, 0.08)"}},neon:{light:["#faf5ff","#ebd5ff","#c084fc","#a855f7","#7e22ce"],dark:["#2e1065","#581c87","#8b5cf6","#a855f7","#c084fc"],gridColor:{light:"rgba(168, 85, 247, 0.12)",dark:"rgba(192, 132, 252, 0.08)"}},amber:{light:["#fffbeb","#fde68a","#f59e0b","#d97706","#b45309"],dark:["#451a03","#78350f","#b45309","#d97706","#f59e0b"],gridColor:{light:"rgba(245, 158, 11, 0.12)",dark:"rgba(245, 158, 11, 0.08)"}}};function mc(e,t){const n=/^#([0-9a-f]{6})$/i.exec(e);if(!n)return e;const a=parseInt(n[1],16),r=a>>16&255,s=a>>8&255,l=a&255,i=c=>Math.max(0,Math.min(255,Math.round(c*t)));return`rgb(${i(r)}, ${i(s)}, ${i(l)})`}function nt(e,t,n,a,r){const s=Math.cos(a),l=Math.sin(a),i=e*s-t*l,c=e*l+t*s,u=n,m=Math.cos(r),d=Math.sin(r),g=i,y=c*m-u*d,x=c*d+u*m;return{x:g,y,z:x}}function hc(e,t,n,a,r){return nt(e,t,n,a,r)}function vo(e,t){const n=Number(t).toLocaleString();if(e>=4){const a=Math.floor(Math.random()*3)+1;return h(`heatmap.3d.voxel.joke.${a}`,{value:n})}else return e===3?h("heatmap.3d.voxel.level3",{value:n}):e===2?h("heatmap.3d.voxel.level2",{value:n}):e===1?h("heatmap.3d.voxel.level1",{value:n}):h("heatmap.3d.voxel.level0")}function pr({weeks:e,palette:t="auto",isDark:n=!1,interactive:a=!1,autoRotateInit:r=!1,onResetViewRef:s=null}){const l=mt[t]||(t==="auto"?mt.emerald:null),i=l?n?l.dark:l.light:Array.isArray(t)?t:n?mt.emerald.dark:mt.emerald.light,c=l?n?l.gridColor.dark:l.gridColor.light:n?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)",u=-.2,m=.88,[d,g]=f.useState({yaw:u,pitch:m}),[y,x]=f.useState(r),[p,b]=f.useState(1),k=a?13:10.5,w=f.useMemo(()=>{const D=[],L=e.length;if(L===0||!a)return[];for(let K=0;K<=7;K++){const q=(K-3.5)*k,ne=nt(-L/2*k,q,0,d.yaw,d.pitch),X=nt(L/2*k,q,0,d.yaw,d.pitch);D.push({d:`M${ne.x},${ne.y} L${X.x},${X.y}`,key:`horiz-${K}`})}for(let K=0;K<=L;K+=4){const q=(K-L/2)*k,ne=nt(q,-3.5*k,0,d.yaw,d.pitch),X=nt(q,3.5*k,0,d.yaw,d.pitch);D.push({d:`M${ne.x},${ne.y} L${X.x},${X.y}`,key:`vert-${K}`})}if(L%4!==0){const K=(L-L/2)*k,q=nt(K,-3.5*k,0,d.yaw,d.pitch),ne=nt(K,3.5*k,0,d.yaw,d.pitch);D.push({d:`M${q.x},${q.y} L${ne.x},${ne.y}`,key:"vert-last"})}return D},[e.length,d,k,a]);f.useEffect(()=>{s&&(s.current={reset:()=>{g({yaw:u,pitch:m}),x(!1),b(1),T()},toggleAutoRotate:D=>{x(D)}})},[s]);const v=f.useRef(null),S=f.useRef(null),C=f.useRef(!1),_=f.useRef({x:0,y:0}),O=f.useRef({yaw:u,pitch:m}),N=f.useRef({x:0,y:0}),W=f.useRef({x:0,y:0,time:0}),E=f.useRef(null),[F,ie]=f.useState(0),$=f.useRef(null),B=f.useRef(!0);f.useEffect(()=>(B.current=!0,()=>{B.current=!1}),[]);const T=()=>{$.current&&cancelAnimationFrame($.current),ie(0);const D=performance.now(),L=1200,K=q=>{if(!B.current)return;const ne=q-D,X=Math.min(1,ne/L),pe=1-Math.pow(1-X,3);ie(pe),X<1?$.current=requestAnimationFrame(K):$.current=null};$.current=requestAnimationFrame(K)};f.useEffect(()=>(T(),()=>{$.current&&cancelAnimationFrame($.current)}),[a]),f.useEffect(()=>{if(!y||C.current||typeof window>"u"||typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let L;const K=()=>{if(typeof document<"u"&&document.visibilityState==="hidden"){L=requestAnimationFrame(K);return}g(q=>({yaw:q.yaw+.002,pitch:q.pitch})),L=requestAnimationFrame(K)};return L=requestAnimationFrame(K),()=>cancelAnimationFrame(L)},[y]);const M=(D,L)=>{a&&(C.current=!0,_.current={x:D,y:L},O.current={yaw:d.yaw,pitch:d.pitch},N.current={x:0,y:0},W.current={x:D,y:L,time:performance.now()},E.current&&cancelAnimationFrame(E.current))},U=(D,L)=>{if(!C.current)return;const K=D-_.current.x,q=L-_.current.y,ne=performance.now(),X=ne-W.current.time;X>0&&(N.current={x:(D-W.current.x)/X,y:(L-W.current.y)/X}),W.current={x:D,y:L,time:ne};const pe=.005,ge=O.current.yaw-K*pe,Se=Math.PI/2.3,Te=Math.max(-Se,Math.min(Se,O.current.pitch-q*pe));g({yaw:ge,pitch:Te})},I=()=>{if(!C.current)return;C.current=!1;let D=-N.current.x*12,L=-N.current.y*12;const K=.95,q=()=>{C.current||(D*=K,L*=K,!(Math.abs(D)<.01&&Math.abs(L)<.01)&&(g(ne=>{const X=ne.yaw+D*.005,pe=Math.PI/2.3,ge=Math.max(-pe,Math.min(pe,ne.pitch+L*.005));return{yaw:X,pitch:ge}}),E.current=requestAnimationFrame(q)))};E.current=requestAnimationFrame(q)},[P,z]=f.useState(null),[Q,fe]=f.useState({x:0,y:0,shiftX:0}),Y=f.useRef(null);f.useEffect(()=>()=>{Y.current&&clearTimeout(Y.current)},[]),f.useEffect(()=>{if(!a||!S.current)return;const D=K=>{K.preventDefault();const q=-K.deltaY*.0025;b(ne=>{const X=ne+q;return Math.max(.5,Math.min(3,X))})},L=S.current;return L.addEventListener("wheel",D,{passive:!1}),()=>{L.removeEventListener("wheel",D)}},[a]);const H=f.useMemo(()=>{const D=[];return e.forEach((L,K)=>{(Array.isArray(L)?L:[]).forEach((q,ne)=>{q&&D.push({key:q.day||`${K}-${ne}`,col:K,row:ne,level:q.level||0,value:q.value||0,day:q.day,models:q.models||null})})}),D},[e]),he=k-(a?1.8:1.5),ve=a?38:28,Be=D=>Math.max(1.8,Number(D)/4*ve),Me=f.useMemo(()=>{if(H.length===0)return[];const D=e.length;return H.map(L=>{const K=Be(L.level),q=Math.sqrt(Math.pow(L.col-D/2,2)+Math.pow(L.row-3.5,2)),ne=Math.sqrt(Math.pow(D/2,2)+Math.pow(3.5,2)),X=q/ne*.4,pe=Math.min(1,Math.max(0,(F-X)*(1/.6))),ge=K*pe,Se=(L.col-D/2)*k,Te=(L.row-3.5)*k,me=he/2,Ie=[{x:Se-me,y:Te-me,z:0},{x:Se+me,y:Te-me,z:0},{x:Se+me,y:Te+me,z:0},{x:Se-me,y:Te+me,z:0},{x:Se-me,y:Te-me,z:ge},{x:Se+me,y:Te-me,z:ge},{x:Se+me,y:Te+me,z:ge},{x:Se-me,y:Te+me,z:ge}].map(re=>nt(re.x,re.y,re.z,d.yaw,d.pitch)),Ce=nt(Se,Te,ge/2,d.yaw,d.pitch),Le=[{name:"top",indices:[4,5,6,7],scale:1,normal:[0,0,1]},{name:"bottom",indices:[3,2,1,0],scale:.4,normal:[0,0,-1]},{name:"left",indices:[3,0,4,7],scale:.55,normal:[-1,0,0]},{name:"right",indices:[1,2,6,5],scale:.75,normal:[1,0,0]},{name:"front",indices:[0,1,5,4],scale:.85,normal:[0,-1,0]},{name:"back",indices:[2,3,7,6],scale:.65,normal:[0,1,0]}],yt=i[Math.min(4,Math.max(0,Number(L.level)||0))],Je=[],pt=.35,_t=-.4,oe=.83;return Le.forEach(re=>{const G=hc(re.normal[0],re.normal[1],re.normal[2],d.yaw,d.pitch);if(G.z>.001){const de=Ie[re.indices[0]],be=Ie[re.indices[1]],ae=Ie[re.indices[2]],xt=Ie[re.indices[3]],lt=`M${de.x},${de.y} L${be.x},${be.y} L${ae.x},${ae.y} L${xt.x},${xt.y} Z`,Nt=G.x*pt+G.y*_t+G.z*oe,Ze=n?.18:0,et=re.scale*(.82+.28*Math.max(0,Nt))+Ze;Je.push({name:re.name,d:lt,fill:mc(yt,et)})}}),{...L,centerProj:Ce,renderedFaces:Je}})},[H,d,i,e.length,F,k,he,ve]),A=f.useMemo(()=>[...Me].sort((D,L)=>D.centerProj.z-L.centerProj.z),[Me]),J=f.useMemo(()=>{if(A.length===0)return{minX:-100,minY:-100,maxX:100,maxY:100};let D=1/0,L=1/0,K=-1/0,q=-1/0;return A.forEach(ne=>{const X=k*2,pe=ne.centerProj.x,ge=ne.centerProj.y;pe-X<D&&(D=pe-X),pe+X>K&&(K=pe+X),ge-X<L&&(L=ge-X),ge+X>q&&(q=ge+X)}),{minX:D,minY:L,maxX:K,maxY:q}},[A,k]),le=12,ue=J.maxX-J.minX+le*2,Oe=J.maxY-J.minY+le*2,_e=ue/p,We=Oe/p,Ne=J.minX-le+(ue-_e)/2,Pe=J.minY-le+(Oe-We)/2,ke=`${Ne} ${Pe} ${_e} ${We}`;return H.length===0?o.jsx("div",{className:"py-8 text-center text-sm text-oai-gray-500",children:h("heatmap.empty")}):o.jsxs("div",{ref:S,className:`relative select-none outline-none ${a?"cursor-grab active:cursor-grabbing w-full h-full flex items-center justify-center":"w-full overflow-hidden flex justify-center"}`,onMouseDown:D=>{if(!a)return;M(D.clientX,D.clientY);const L=q=>U(q.clientX,q.clientY),K=()=>{I(),window.removeEventListener("mousemove",L),window.removeEventListener("mouseup",K)};window.addEventListener("mousemove",L),window.addEventListener("mouseup",K)},onTouchStart:D=>{!a||D.touches.length===0||M(D.touches[0].clientX,D.touches[0].clientY)},onTouchMove:D=>{!a||D.touches.length===0||U(D.touches[0].clientX,D.touches[0].clientY)},onTouchEnd:()=>{a&&I()},children:[o.jsxs("svg",{ref:v,viewBox:ke,width:a?"95%":"100%",height:a?"95%":"auto",role:"img","aria-label":h("heatmap.iso.aria")||"3D interactive activity heatmap",style:{display:"block",width:"100%",height:"auto",maxWidth:a?"none":`${ue}px`,maxHeight:a?"78vh":"none"},className:"transition-transform duration-300 ease-out",children:[a&&w.map(D=>o.jsx("path",{d:D.d,fill:"none",stroke:c,strokeWidth:.25,strokeDasharray:"1.5 2.5",strokeLinecap:"round"},D.key)),A.map(D=>{const L=P&&P.key===D.key;return o.jsxs("g",{onMouseEnter:K=>{if(Y.current&&(clearTimeout(Y.current),Y.current=null),z(D),a&&v.current){const q=nt((D.col-e.length/2)*k,(D.row-3.5)*k,Be(D.level),d.yaw,d.pitch);let ne=0,X=0;const pe=v.current;if(S.current&&typeof pe.createSVGPoint=="function"&&typeof pe.getScreenCTM=="function")try{const me=pe.createSVGPoint();me.x=q.x,me.y=q.y;const ce=pe.getScreenCTM();if(ce){const Ie=me.matrixTransform(ce),Ce=S.current.getBoundingClientRect();ne=Ie.x-Ce.left,X=Ie.y-Ce.top}}catch{const ce=pe.getBoundingClientRect(),Ie=J.maxX-J.minX+le*2,Ce=J.maxY-J.minY+le*2;ne=(q.x-(J.minX-le))/Ie*ce.width,X=(q.y-(J.minY-le))/Ce*ce.height}else{const me=pe.getBoundingClientRect(),ce=J.maxX-J.minX+le*2,Ie=J.maxY-J.minY+le*2;ne=(q.x-(J.minX-le))/ce*me.width,X=(q.y-(J.minY-le))/Ie*me.height}const ge=140;let Se=0;const Te=S.current?S.current.getBoundingClientRect().width:pe.getBoundingClientRect().width;ne<ge?Se=ge-ne:ne>Te-ge&&(Se=Te-ge-ne),fe({x:ne,y:X,shiftX:Se})}},onMouseLeave:()=>{Y.current&&clearTimeout(Y.current),Y.current=setTimeout(()=>{z(null)},150)},className:"transition-all duration-200",style:{filter:L?"brightness(1.15) drop-shadow(0 4px 6px rgba(0,0,0,0.15))":"none",cursor:a?"pointer":"default"},children:[!a&&D.day&&o.jsx("title",{children:`${D.day}: ${Number(D.value).toLocaleString()} tokens`}),D.renderedFaces.map((K,q)=>o.jsx("path",{d:K.d,fill:K.fill,stroke:K.fill,strokeWidth:.25,strokeLinejoin:"round"},q))]},D.key)})]}),a&&P&&o.jsxs("div",{onMouseEnter:()=>{Y.current&&(clearTimeout(Y.current),Y.current=null)},onMouseLeave:()=>{Y.current&&clearTimeout(Y.current),Y.current=setTimeout(()=>{z(null)},150)},className:"absolute z-[9999] w-0 h-0 transition-all duration-100 ease-out",style:{left:`${Q.x}px`,top:`${Q.y}px`},children:[o.jsxs("div",{className:"absolute left-0 bottom-[10px] backdrop-blur-md bg-white/90 dark:bg-oai-gray-900/90 border border-oai-gray-200/50 dark:border-oai-gray-800/50 shadow-xl rounded-xl p-3.5 max-w-[280px] min-w-[200px] flex flex-col gap-2 animate-in fade-in zoom-in-95 duration-100",style:{transform:`translateX(calc(-50% + ${Q.shiftX}px))`},children:[o.jsxs("div",{className:"flex items-center justify-between border-b border-oai-gray-100 dark:border-oai-gray-800/80 pb-1.5",children:[o.jsx("span",{className:"text-[11px] font-semibold text-oai-gray-500 dark:text-oai-gray-400",children:P.day}),(()=>{const D=P.level===0?n?"#9ca3af":"#6b7280":i[P.level];return o.jsxs("span",{className:"text-[10px] px-2 py-0.5 rounded-full font-medium",style:{backgroundColor:D+"22",color:D,border:`1px solid ${D}44`},children:["Level ",P.level]})})()]}),o.jsxs("div",{className:"flex flex-col gap-2",children:[o.jsxs("div",{className:"flex items-baseline gap-1",children:[o.jsx("span",{className:"text-lg font-bold text-oai-gray-900 dark:text-white leading-none",children:Number(P.value).toLocaleString()}),o.jsx("span",{className:"text-[10px] text-oai-gray-400 uppercase tracking-wider font-semibold",children:"Tokens"})]}),P.models&&Object.keys(P.models).length>0?o.jsxs("div",{className:"mt-1.5 border-t border-oai-gray-100 dark:border-oai-gray-800/60 pt-2 flex flex-col gap-1.5",children:[o.jsx("div",{className:"text-[10px] font-semibold text-oai-gray-400 dark:text-oai-gray-500 uppercase tracking-wider",children:"Model Breakdown"}),o.jsx("div",{className:"flex flex-col gap-2 max-h-[150px] overflow-y-auto pr-1.5 scrollbar-thin",children:Object.entries(P.models).map(([D,L])=>({name:D,val:Number(L)})).sort((D,L)=>L.val-D.val).map(({name:D,val:L})=>{const K=Number(P.value)||1,q=Math.round(L/K*100);return o.jsxs("div",{className:"flex flex-col gap-1",children:[o.jsxs("div",{className:"flex items-center justify-between text-[11px] gap-3",children:[o.jsx("span",{className:"font-medium text-oai-gray-750 dark:text-oai-gray-200 truncate max-w-[120px]",title:D,children:D}),o.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[o.jsx("span",{className:"font-mono text-oai-gray-900 dark:text-oai-gray-100 font-semibold",children:L.toLocaleString()}),o.jsxs("span",{className:"text-[9px] text-oai-gray-450 dark:text-oai-gray-500 min-w-[28px] text-right font-medium",children:[q,"%"]})]})]}),o.jsx("div",{className:"w-full h-1 bg-oai-gray-100 dark:bg-oai-gray-800/85 rounded-full overflow-hidden",children:o.jsx("div",{className:"h-full rounded-full transition-all duration-300",style:{width:`${q}%`,backgroundColor:i[4],boxShadow:`0 0 4px ${i[4]}55`}})})]},D)})})]}):o.jsx("p",{className:"text-[11px] text-oai-gray-600 dark:text-oai-gray-300 leading-relaxed font-normal mt-1 border-t border-dashed border-oai-gray-100 dark:border-oai-gray-800/60 pt-1.5",children:vo(P.level,P.value)})]})]}),o.jsx("div",{className:"absolute bottom-[6px] left-0 -translate-x-1/2 w-2.5 h-2.5 rotate-45 bg-white dark:bg-oai-gray-900 border-r border-b border-oai-gray-200/50 dark:border-oai-gray-800/50 shadow-sm",style:{marginBottom:"1px"}})]})]})}const Ct=12,tn=3,ea=26,gc=["#ebedf0","#a7f3d0","#6ee7b7","#34d399","#10b981"],yc=["#30363d","#065f46","#059669","#10b981","#34d399"];function xr(e){const t=Number(e);return Number.isFinite(t)?t<1e3?t.toLocaleString():Ue(t,{decimals:2}):"0"}function pc(e){if(typeof e!="string")return null;const t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e.trim());if(!t)return null;const n=new Date(Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3])));return Number.isFinite(n.getTime())?n:null}function _o(e,t){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+t))}function xc(e,t){return Math.floor((Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())-Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()))/864e5)}function bc(e,t){const n=t==="mon"?1:0,a=e.getUTCDay();return _o(e,-((a-n+7)%7))}function kc(e,t,n,a){if(!e)return[];const r=pc(t)||new Date,s=[];for(let m=11;m>=0;m-=1)s.push(new Date(Date.UTC(r.getUTCFullYear(),r.getUTCMonth()-m,1)));const l=bc(r,n),i=_o(l,-(e-1)*7),c=[],u=new Set;for(const m of s){const d=Math.floor(xc(i,m)/7);d<0||d>=e||u.has(d)||(u.add(d),c.push({label:a[m.getUTCMonth()],index:d}))}return c}function wc({heatmap:e,timeZoneLabel:t,timeZoneShortLabel:n,hideLegend:a=!1}){const{resolvedTheme:r}=so(),{currency:s,rate:l}=un(),i=r==="dark",c=i?yc:gc,u=f.useRef(null),m=f.useRef(null),[d,g]=f.useState(null),[y,x]=f.useState({x:0,y:0,shiftX:0}),p=f.useRef(null);f.useEffect(()=>()=>{p.current&&clearTimeout(p.current)},[]);const[b,k]=f.useState(!1),[w,v]=f.useState(!1),[S,C]=f.useState(!1),_=f.useRef(null),[O,N]=f.useState("emerald"),W=[h("heatmap.month.jan"),h("heatmap.month.feb"),h("heatmap.month.mar"),h("heatmap.month.apr"),h("heatmap.month.may"),h("heatmap.month.jun"),h("heatmap.month.jul"),h("heatmap.month.aug"),h("heatmap.month.sep"),h("heatmap.month.oct"),h("heatmap.month.nov"),h("heatmap.month.dec")],E=(A,J)=>{if(!J||!J.day)return;p.current&&(clearTimeout(p.current),p.current=null),g(J);const le=A.currentTarget.getBoundingClientRect(),ue=m.current;if(!ue)return;const Oe=ue.getBoundingClientRect(),_e=le.left-Oe.left+le.width/2,We=le.top-Oe.top,Ne=140;let Pe=0;_e<Ne?Pe=Ne-_e:_e>Oe.width-Ne&&(Pe=Oe.width-Ne-_e),x({x:_e,y:We,shiftX:Pe})},F=()=>{p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{g(null)},150)},ie=()=>{p.current&&(clearTimeout(p.current),p.current=null)},$=()=>{p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{g(null)},150)},B=()=>{v(!1),k(!0)},T=()=>{v(!0)},M=A=>{A.target===A.currentTarget&&w&&(k(!1),v(!1))};f.useEffect(()=>{if(!b||w)return;const A=J=>{J.key==="Escape"&&T()};return window.addEventListener("keydown",A),()=>{window.removeEventListener("keydown",A)}},[b,w]);const U=f.useMemo(()=>({emerald:{accentText:"text-emerald-500 dark:text-emerald-400",accentBg:"bg-emerald-500/10 dark:bg-emerald-400/10",accentBorder:"border-emerald-500/20 dark:border-emerald-400/15",hoverBorder:"hover:border-emerald-500/30 dark:hover:border-emerald-400/30",hoverGlow:"hover:shadow-[0_0_20px_-3px_rgba(16,185,129,0.15)] hover:dark:shadow-[0_0_20px_-3px_rgba(52,211,153,0.25)]",rawColor:"#10b981"},ocean:{accentText:"text-blue-500 dark:text-blue-400",accentBg:"bg-blue-500/10 dark:bg-blue-400/10",accentBorder:"border-blue-500/20 dark:border-blue-400/15",hoverBorder:"hover:border-blue-500/30 dark:hover:border-blue-400/30",hoverGlow:"hover:shadow-[0_0_20px_-3px_rgba(59,130,246,0.15)] hover:dark:shadow-[0_0_20px_-3px_rgba(96,165,250,0.25)]",rawColor:"#3b82f6"},neon:{accentText:"text-purple-500 dark:text-purple-400",accentBg:"bg-purple-500/10 dark:bg-purple-400/10",accentBorder:"border-purple-500/20 dark:border-purple-400/15",hoverBorder:"hover:border-purple-500/30 dark:hover:border-purple-400/30",hoverGlow:"hover:shadow-[0_0_20px_-3px_rgba(168,85,247,0.15)] hover:dark:shadow-[0_0_20px_-3px_rgba(192,132,252,0.25)]",rawColor:"#a855f7"},amber:{accentText:"text-amber-500 dark:text-amber-400",accentBg:"bg-amber-500/10 dark:bg-amber-400/10",accentBorder:"border-amber-500/20 dark:border-amber-400/15",hoverBorder:"hover:border-amber-500/30 dark:hover:border-amber-400/30",hoverGlow:"hover:shadow-[0_0_20px_-3px_rgba(245,158,11,0.15)] hover:dark:shadow-[0_0_20px_-3px_rgba(245,158,11,0.25)]",rawColor:"#f59e0b"}}),[]),I=U[O]||U.emerald,P=mt[O]?i?mt[O].dark:mt[O].light:i?mt.emerald.dark:mt.emerald.light,[z,Q]=f.useState(()=>{try{return window.localStorage?.getItem("tt:heatmap-view")==="3d"?"3d":"2d"}catch{return"2d"}});f.useEffect(()=>{try{window.localStorage?.setItem("tt:heatmap-view",z)}catch{}},[z]),f.useEffect(()=>{const A=u.current;A&&(A.scrollLeft=A.scrollWidth)},[e?.weeks]),f.useEffect(()=>{const A=u.current;if(!A)return;const J=()=>{p.current&&(clearTimeout(p.current),p.current=null),g(null)};return A.addEventListener("scroll",J),()=>A.removeEventListener("scroll",J)},[]);const fe=e?.week_starts_on==="mon"?"mon":"sun",Y=f.useMemo(()=>{const A=Array.isArray(e?.weeks)?e.weeks:[];if(!A.length)return{weeks:[]};const J=[];for(const le of A)for(const ue of Array.isArray(le)?le:[])ue?.day&&J.push({day:ue.day,total_tokens:ue.total_tokens??ue.value??0,billable_total_tokens:ue.billable_total_tokens??ue.value??ue.total_tokens??0,models:ue.models??null});return ga({dailyRows:J,weeks:Math.max(52,A.length),to:e?.to,weekStartsOn:fe})},[e?.to,e?.weeks,fe]),H=Y?.weeks||[],te=f.useMemo(()=>{let A=0,J=0,le={day:"无数据",value:0},ue=0,Oe=0;const _e=[];H.forEach(ne=>{(Array.isArray(ne)?ne:[]).forEach(X=>{X&&X.day&&_e.push(X)})}),_e.sort((ne,X)=>ne.day.localeCompare(X.day)),_e.forEach(ne=>{const X=Number(ne.value)||0;A+=X,X>0?(J++,ue++,ue>Oe&&(Oe=ue)):ue=0,X>le.value&&(le={day:ne.day,value:X})});const We=_e.length||365,Ne=(J/We*100).toFixed(1);let Pe="heatmap.3d.modal.ai.eval.default",ke="heatmap.3d.modal.ai.title.default";A>=15e6?(ke="heatmap.3d.modal.ai.title.peak",Pe="heatmap.3d.modal.ai.eval.peak"):A>=5e6?(ke="heatmap.3d.modal.ai.title.heavy",Pe="heatmap.3d.modal.ai.eval.heavy"):A>=1e6?(ke="heatmap.3d.modal.ai.title.core",Pe="heatmap.3d.modal.ai.eval.core"):A>=2e4&&(ke="heatmap.3d.modal.ai.title.steady",Pe="heatmap.3d.modal.ai.eval.steady");const D=e?.total_cost_usd,L=Number(D),q=D!=null&&(typeof D!="string"||D.trim()!=="")&&Number.isFinite(L)?L:A/15e5;return{totalTokens:A,activeDays:J,activeRate:Ne,maxSingleDay:le,maxStreak:Oe,aiEvaluationTitleKey:ke,aiEvaluationKey:Pe,totalCostUsd:q}},[H,e?.total_cost_usd]),he=f.useMemo(()=>dn(te.totalCostUsd,{currency:s,rate:l}),[te.totalCostUsd,s,l]),ve=fe==="mon"?["Mon","Tue","Wed","Thu","Fri","Sat","Sun"].map(A=>h(`heatmap.day.${A.toLowerCase()}`)):["Sun","Mon","Tue","Wed","Thu","Fri","Sat"].map(A=>h(`heatmap.day.${A.toLowerCase()}`)),Be=f.useMemo(()=>kc(H.length,Y?.to,fe,W),[Y?.to,H.length,fe,W]);if(!H.length)return o.jsx("div",{className:"py-8 text-center text-sm text-oai-gray-500",children:h("heatmap.empty")});const Me=ea+H.length*Ct+Math.max(0,H.length-1)*tn;return o.jsxs("div",{ref:m,className:"relative rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 p-5",children:[o.jsxs("div",{className:"flex items-baseline justify-between mb-3",children:[o.jsx("h3",{className:"text-sm font-medium text-oai-gray-500 dark:text-oai-gray-300 uppercase tracking-wide",children:h("heatmap.title")}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs("div",{role:"tablist","aria-label":"Heatmap view",className:"flex rounded-md border border-oai-gray-200 dark:border-oai-gray-800 p-0.5 text-[10px]",children:[o.jsx("button",{type:"button",role:"tab","aria-selected":z==="2d",onClick:()=>Q("2d"),className:z==="2d"?"px-2 py-0.5 rounded bg-oai-gray-100 text-oai-black dark:bg-oai-gray-800 dark:text-oai-white font-medium":"px-2 py-0.5 rounded text-oai-gray-500 dark:text-oai-gray-400 hover:text-oai-gray-700 dark:hover:text-oai-gray-200",children:h("heatmap.view.2d")}),o.jsx("button",{type:"button",role:"tab","aria-selected":z==="3d",onClick:()=>Q("3d"),className:z==="3d"?"px-2 py-0.5 rounded bg-oai-gray-100 text-oai-black dark:bg-oai-gray-800 dark:text-oai-white font-medium":"px-2 py-0.5 rounded text-oai-gray-500 dark:text-oai-gray-400 hover:text-oai-gray-700 dark:hover:text-oai-gray-200",children:h("heatmap.view.3d")})]}),o.jsx("span",{className:"text-xs text-oai-gray-400 dark:text-oai-gray-450",children:n||h("heatmap.legend.utc")})]})]}),z==="3d"&&o.jsxs("div",{onClick:B,className:"cursor-pointer group relative overflow-hidden rounded-lg hover:border-oai-gray-350 dark:hover:border-oai-gray-700 border border-transparent transition-all",title:h("heatmap.3d.hover_tip"),children:[o.jsx(pr,{weeks:H,isDark:i,palette:O}),o.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-oai-gray-900/5 to-transparent pointer-events-none opacity-0 group-hover:opacity-100 transition-opacity flex items-end justify-center pb-2",children:o.jsxs("span",{className:"text-[10px] bg-white/95 dark:bg-oai-gray-900/95 shadow border border-oai-gray-200/60 dark:border-oai-gray-800/80 px-2.5 py-1 rounded-full font-medium text-oai-gray-500 dark:text-oai-gray-400 flex items-center gap-1 transform translate-y-2 group-hover:translate-y-0 transition-transform duration-200",children:[o.jsx(vl,{size:9}),h("heatmap.3d.hover_tip")]})})]}),z==="2d"&&o.jsx("div",{ref:u,className:"overflow-x-auto overflow-y-hidden heatmap-scroll-thin",children:o.jsxs("div",{style:{minWidth:Me},children:[o.jsxs("div",{className:"grid text-[10px] uppercase text-oai-gray-400 dark:text-oai-gray-400 mb-1",style:{gridTemplateColumns:`${ea}px repeat(${H.length}, ${Ct}px)`,columnGap:tn},children:[o.jsx("span",{}),Be.map(A=>o.jsx("span",{style:{gridColumnStart:A.index+2},className:"whitespace-nowrap",children:A.label},`${A.label}-${A.index}`))]}),o.jsxs("div",{className:"grid",style:{gridTemplateColumns:`${ea}px repeat(${H.length}, ${Ct}px)`,columnGap:tn},children:[o.jsx("div",{className:"grid text-[10px] text-oai-gray-400 dark:text-oai-gray-400 sticky left-0 bg-white dark:bg-oai-gray-900 pr-2",style:{gridTemplateRows:`repeat(7, ${Ct}px)`,rowGap:tn},children:ve.map(A=>o.jsx("span",{className:"leading-none",children:A},A))}),o.jsx("div",{className:"grid",style:{gridAutoFlow:"column",gridTemplateRows:`repeat(7, ${Ct}px)`,gap:tn},children:H.map((A,J)=>(Array.isArray(A)?A:[]).map((le,ue)=>{if(!le)return null;const Oe=le.day||`e-${J}-${ue}`,_e=Number(le.level)||0,We=c[_e]||c[0];return o.jsx("span",{onMouseEnter:Ne=>E(Ne,le),onMouseLeave:F,className:"rounded-[2px] transition-transform hover:scale-125 hover:z-10 cursor-pointer",style:{width:Ct,height:Ct,background:We}},Oe)}))})]})]})}),!a&&o.jsxs("div",{className:"flex items-center justify-center gap-2 mt-3",children:[o.jsx("span",{className:"text-[10px] text-oai-gray-400 dark:text-oai-gray-400",children:h("heatmap.legend.less")}),o.jsx("div",{className:"flex gap-0.5",children:c.map((A,J)=>o.jsx("span",{className:"rounded-[1px]",style:{width:10,height:10,background:A}},J))}),o.jsx("span",{className:"text-[10px] text-oai-gray-400 dark:text-oai-gray-400",children:h("heatmap.legend.more")})]}),b&&o.jsx("div",{onAnimationEnd:M,onClick:A=>{A.target===A.currentTarget&&T()},className:`fixed inset-0 z-50 flex items-center justify-center p-3 md:p-6 backdrop-blur-md bg-black/15 dark:bg-black/40 ${w?"animate-tt-fade-out":"animate-tt-fade-in"}`,children:o.jsxs("div",{className:`relative w-full max-w-6xl h-[88vh] backdrop-blur-2xl bg-white/90 dark:bg-oai-gray-900/90 border border-oai-gray-200/50 dark:border-white/10 shadow-2xl rounded-2xl flex flex-col md:flex-row overflow-hidden ${w?"animate-tt-modal-exit":"animate-tt-modal"}`,children:[o.jsx("button",{type:"button",onClick:T,className:"absolute top-4 right-4 z-50 p-2 rounded-full border border-oai-gray-200/60 dark:border-oai-gray-800/60 bg-white/50 dark:bg-oai-gray-900/50 text-oai-gray-500 dark:text-oai-gray-400 hover:text-oai-gray-900 dark:hover:text-white hover:rotate-90 hover:scale-105 active:scale-95 transition-all duration-300",children:o.jsx(io,{size:16})}),o.jsxs("div",{className:"w-full md:w-[340px] border-b md:border-b-0 md:border-r border-zinc-200/50 dark:border-zinc-800/40 p-5 md:p-6 flex flex-col gap-6 overflow-y-auto backdrop-blur-md bg-zinc-50/50 dark:bg-zinc-950/50",children:[o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center gap-1.5 select-none",children:[o.jsxs("span",{className:"relative flex h-1.5 w-1.5",children:[o.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full opacity-75",style:{backgroundColor:I.rawColor}}),o.jsx("span",{className:"relative inline-flex rounded-full h-1.5 w-1.5",style:{backgroundColor:I.rawColor}})]}),o.jsx("span",{className:"text-[9px] font-extrabold uppercase tracking-widest font-mono text-zinc-400 dark:text-zinc-500",children:"3D Insight"})]}),o.jsx("h4",{className:"text-xl font-black text-zinc-900 dark:text-zinc-50 tracking-tight leading-none mt-2 select-none",children:h("heatmap.3d.modal.title")}),o.jsx("p",{className:"text-[11px] leading-relaxed text-zinc-400 dark:text-zinc-500 mt-2 font-normal select-none",children:h("heatmap.3d.modal.desc")})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-x-5 gap-y-5 border-y border-zinc-200/50 dark:border-zinc-800/50 py-5 select-none",children:[o.jsxs("div",{className:"flex flex-col gap-1 relative group cursor-help",children:[o.jsx("div",{className:"absolute left-0 bottom-full mb-2 pointer-events-none opacity-0 translate-y-1 group-hover:opacity-100 group-hover:translate-y-0 transition-all duration-200 z-50",children:o.jsxs("div",{className:"bg-white dark:bg-zinc-950 text-zinc-900 dark:text-zinc-50 text-[10px] font-semibold font-mono rounded-lg px-2.5 py-1.5 shadow-xl border border-zinc-200 dark:border-zinc-800/80 whitespace-nowrap flex flex-col",children:[o.jsx("span",{className:"text-[9px] text-zinc-400 dark:text-zinc-500",children:h("heatmap.3d.modal.stats.precision_total_tokens")}),o.jsxs("span",{className:"mt-0.5 font-bold text-zinc-900 dark:text-zinc-50",children:[te.totalTokens.toLocaleString()," Tokens"]})]})}),o.jsx("span",{className:"text-[9px] font-bold text-zinc-400 dark:text-zinc-500 uppercase tracking-widest font-mono",children:h("heatmap.3d.modal.stats.total_tokens")}),o.jsxs("div",{className:"flex items-baseline gap-1.5",children:[o.jsx("span",{className:"text-xl font-black text-zinc-900 dark:text-zinc-50 tracking-tight font-mono transition-transform duration-200 group-hover:-translate-y-[1px]",children:xr(te.totalTokens)}),o.jsx("div",{className:"opacity-30 group-hover:opacity-60 transition-opacity",children:o.jsx("svg",{width:"24",height:"10",viewBox:"0 0 24 10",fill:"none",children:o.jsx("path",{d:"M1 9C3 7 5 7 7 4C9 1 11 0 13 2C15 4 17 0 23 0",stroke:I.rawColor,strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"})})})]})]}),o.jsxs("div",{className:"flex flex-col gap-1 group cursor-default",children:[o.jsx("span",{className:"text-[9px] font-bold text-zinc-400 dark:text-zinc-500 uppercase tracking-widest font-mono",children:h("heatmap.3d.modal.stats.estimated_cost")}),o.jsx("span",{className:"text-xl font-black text-zinc-900 dark:text-zinc-50 tracking-tight font-mono transition-transform duration-200 group-hover:-translate-y-[1px]",children:he})]}),o.jsxs("div",{className:"flex flex-col gap-1 group cursor-default",children:[o.jsx("span",{className:"text-[9px] font-bold text-zinc-400 dark:text-zinc-500 uppercase tracking-widest font-mono",children:h("heatmap.3d.modal.stats.active_rate_days")}),o.jsxs("span",{className:"text-xl font-black text-zinc-900 dark:text-zinc-50 tracking-tight font-mono transition-transform duration-200 group-hover:-translate-y-[1px]",children:[te.activeRate,"% ",o.jsxs("span",{className:"text-[10px] font-bold text-zinc-400 dark:text-zinc-500 font-mono",children:["(",te.activeDays,"D)"]})]})]}),o.jsxs("div",{className:"flex flex-col gap-1 group cursor-default",children:[o.jsx("span",{className:"text-[9px] font-bold text-zinc-400 dark:text-zinc-500 uppercase tracking-widest font-mono",children:h("heatmap.3d.modal.stats.max_streak")}),o.jsxs("span",{className:"text-xl font-black text-amber-500 tracking-tight font-mono transition-transform duration-200 group-hover:-translate-y-[1px]",children:[te.maxStreak," ",o.jsx("span",{className:"text-[10px] font-bold text-amber-500/80 font-mono",children:h("heatmap.3d.modal.stats.days_suffix")})]})]}),o.jsxs("div",{className:"flex flex-col gap-1 col-span-2 relative group cursor-help",children:[o.jsx("div",{className:"absolute left-0 bottom-full mb-2 pointer-events-none opacity-0 translate-y-1 group-hover:opacity-100 group-hover:translate-y-0 transition-all duration-200 z-50",children:o.jsxs("div",{className:"bg-white dark:bg-zinc-950 text-zinc-900 dark:text-zinc-50 text-[10px] font-semibold font-mono rounded-lg px-2.5 py-1.5 shadow-xl border border-zinc-200 dark:border-zinc-800/80 whitespace-nowrap flex flex-col",children:[o.jsx("span",{className:"text-[9px] text-zinc-400 dark:text-zinc-500",children:h("heatmap.3d.modal.stats.precision_peak_value")}),o.jsxs("span",{className:"mt-0.5 font-bold text-zinc-900 dark:text-zinc-50",children:[te.maxSingleDay.value>0?te.maxSingleDay.value.toLocaleString():h("heatmap.3d.modal.stats.no_data")," Tokens"]}),o.jsx("span",{className:"text-[8px] text-zinc-400 dark:text-zinc-500 mt-0.5",children:te.maxSingleDay.day!=="无数据"?te.maxSingleDay.day:h("heatmap.3d.modal.stats.no_data")})]})}),o.jsx("span",{className:"text-[9px] font-bold text-zinc-400 dark:text-zinc-500 uppercase tracking-widest font-mono",children:h("heatmap.3d.modal.stats.peak_day")}),o.jsxs("span",{className:"text-xl font-black text-zinc-900 dark:text-zinc-50 tracking-tight font-mono transition-transform duration-200 group-hover:-translate-y-[1px]",children:[te.maxSingleDay.value>0?xr(te.maxSingleDay.value):h("heatmap.3d.modal.stats.no_data")," ",o.jsxs("span",{className:"text-[10px] font-bold text-zinc-400 dark:text-zinc-500 font-mono",children:["(",te.maxSingleDay.day!=="无数据"?te.maxSingleDay.day:h("heatmap.3d.modal.stats.no_data"),")"]})]})]})]}),o.jsxs("div",{className:"flex flex-col gap-2.5 py-1",children:[o.jsxs("div",{className:"flex items-center gap-1.5 select-none",children:[o.jsx(Ol,{size:11,style:{color:I.rawColor}}),o.jsx("span",{className:"text-[9px] font-extrabold uppercase tracking-widest font-mono",style:{color:I.rawColor},children:h(te.aiEvaluationTitleKey)})]}),o.jsxs("div",{className:"pl-3.5 border-l-2 relative transition-all duration-300 group",style:{borderColor:I.rawColor},children:[o.jsx("div",{className:"absolute inset-y-0 left-0 w-[3px] blur-[2px] opacity-15 pointer-events-none rounded-full",style:{backgroundColor:I.rawColor}}),o.jsx("p",{className:"text-[11px] leading-relaxed text-zinc-600 dark:text-zinc-400 font-normal",children:h(te.aiEvaluationKey)})]})]}),o.jsx("div",{className:"mt-auto border-t border-zinc-200/50 dark:border-zinc-800/50 pt-4 select-none",children:o.jsxs("div",{className:"flex flex-col gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx("span",{className:"text-[9px] font-bold text-zinc-400 dark:text-zinc-500 uppercase tracking-widest font-mono",children:h("heatmap.3d.modal.legend.title")}),o.jsx("span",{className:"text-[10px] font-medium text-zinc-500 dark:text-zinc-400",children:h(`heatmap.3d.modal.palette.${O}`)})]}),o.jsx("div",{className:"flex gap-1",children:P.map((A,J)=>o.jsx("div",{className:"flex-1 h-1 rounded-[2px]",style:{backgroundColor:A},title:`Level ${J}`},J))})]})})]}),o.jsxs("div",{className:"flex-1 h-full relative flex items-center justify-center overflow-hidden p-4",children:[o.jsx("div",{className:"absolute top-1/4 left-1/3 w-96 h-96 rounded-full blur-[130px] pointer-events-none -translate-x-1/2 -translate-y-1/2 transition-all duration-500",style:{backgroundColor:I.rawColor+"15"}}),o.jsx("div",{className:"absolute bottom-1/4 right-1/3 w-80 h-80 rounded-full blur-[120px] pointer-events-none translate-x-1/2 translate-y-1/2 bg-purple-500/[0.04] dark:bg-purple-500/[0.08]"}),o.jsxs("div",{className:"absolute top-4 left-1/2 -translate-x-1/2 flex items-center gap-3 p-1.5 backdrop-blur-md bg-white/70 dark:bg-oai-gray-900/75 border border-oai-gray-200/60 dark:border-oai-gray-800/80 rounded-full shadow-lg z-30 select-none",children:[o.jsx("div",{className:"flex items-center gap-1.5 px-2",children:Object.keys(U).map(A=>{const J=O===A;return o.jsx("button",{type:"button",onClick:()=>N(A),title:h(`heatmap.3d.modal.palette.${A}`),className:`w-3.5 h-3.5 rounded-full transition-all duration-200 relative hover:scale-125 ${A==="emerald"?"bg-[#10b981]":A==="ocean"?"bg-[#3b82f6]":A==="neon"?"bg-[#a855f7]":"bg-[#f59e0b]"}`,children:J&&o.jsx("span",{className:"absolute inset-0 rounded-full ring-2 ring-offset-1 ring-offset-white dark:ring-offset-oai-gray-900 ring-oai-gray-900 dark:ring-white scale-110"})},A)})}),o.jsx("div",{className:"w-[1px] h-4 bg-oai-gray-200 dark:bg-oai-gray-800"}),o.jsxs("div",{className:"flex items-center gap-1 pr-1",children:[o.jsx("button",{type:"button",onClick:()=>{const A=!S;C(A),_.current&&_.current.toggleAutoRotate(A)},title:S?h("heatmap.3d.modal.control.pause"):h("heatmap.3d.modal.control.play"),className:`p-1.5 rounded-full transition-all duration-200 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 ${S?I.accentText:"text-oai-gray-400 hover:text-oai-gray-600 dark:hover:text-oai-gray-250"}`,children:S?o.jsx(Nl,{size:12}):o.jsx(Sl,{size:12})}),o.jsx("button",{type:"button",onClick:()=>{C(!1),_.current&&_.current.reset()},title:h("heatmap.3d.modal.control.reset"),className:"p-1.5 rounded-full text-oai-gray-400 hover:text-oai-gray-600 dark:hover:text-oai-gray-250 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 transition-all duration-200",children:o.jsx(Cl,{size:12})})]})]}),o.jsx(pr,{weeks:H,isDark:i,interactive:!0,palette:O,autoRotateInit:S,onResetViewRef:_}),o.jsxs("div",{className:"absolute bottom-4 right-4 flex items-center gap-1.5 text-[9px] font-bold text-oai-gray-400 bg-white/80 dark:bg-oai-gray-900/80 border border-oai-gray-200/50 dark:border-oai-gray-800/80 rounded-md px-2.5 py-1.5 select-none pointer-events-none backdrop-blur-md shadow-sm",children:[o.jsx(ja,{size:10,className:I.accentText}),o.jsx("span",{children:h("heatmap.3d.modal.footer.tip")})]})]})]})}),d&&!b&&o.jsxs("div",{onMouseEnter:ie,onMouseLeave:$,className:"absolute z-[9999] w-0 h-0 transition-all duration-100 ease-out",style:{left:`${y.x}px`,top:`${y.y}px`},children:[o.jsxs("div",{className:"absolute left-0 bottom-[10px] backdrop-blur-md bg-white/95 dark:bg-oai-gray-900/95 border border-oai-gray-200/50 dark:border-oai-gray-800/50 shadow-xl rounded-xl p-3.5 max-w-[280px] min-w-[200px] flex flex-col gap-2 animate-in fade-in zoom-in-95 duration-100",style:{transform:`translateX(calc(-50% + ${y.shiftX}px))`},children:[o.jsxs("div",{className:"flex items-center justify-between border-b border-oai-gray-100 dark:border-oai-gray-800/80 pb-1.5",children:[o.jsx("span",{className:"text-[11px] font-semibold text-oai-gray-500 dark:text-oai-gray-400",children:d.day}),(()=>{const A=d.level===0?i?"#9ca3af":"#6b7280":c[d.level];return o.jsxs("span",{className:"text-[10px] px-2 py-0.5 rounded-full font-medium",style:{backgroundColor:A+"22",color:A,border:`1px solid ${A}44`},children:["Level ",d.level]})})()]}),o.jsxs("div",{className:"flex flex-col gap-2",children:[o.jsxs("div",{className:"flex items-baseline gap-1",children:[o.jsx("span",{className:"text-lg font-bold text-oai-gray-900 dark:text-white leading-none",children:Number(d.total_tokens??d.value).toLocaleString()}),o.jsx("span",{className:"text-[10px] text-oai-gray-400 uppercase tracking-wider font-semibold",children:"Tokens"})]}),d.models&&Object.keys(d.models).length>0?o.jsxs("div",{className:"mt-1.5 border-t border-oai-gray-100 dark:border-oai-gray-800/60 pt-2 flex flex-col gap-1.5",children:[o.jsx("div",{className:"text-[10px] font-semibold text-oai-gray-400 dark:text-oai-gray-500 uppercase tracking-wider",children:"Model Breakdown"}),o.jsx("div",{className:"flex flex-col gap-2 max-h-[150px] overflow-y-auto pr-1.5 oai-scrollbar",children:Object.entries(d.models).map(([A,J])=>({name:A,val:Number(J)})).sort((A,J)=>J.val-A.val).map(({name:A,val:J})=>{const le=Number(d.total_tokens??d.value)||1,ue=Math.round(J/le*100);return o.jsxs("div",{className:"flex flex-col gap-1",children:[o.jsxs("div",{className:"flex items-center justify-between text-[11px] gap-3",children:[o.jsx("span",{className:"font-medium text-oai-gray-750 dark:text-oai-gray-200 truncate max-w-[120px]",title:A,children:A}),o.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[o.jsx("span",{className:"font-mono text-oai-gray-900 dark:text-oai-gray-100 font-semibold",children:J.toLocaleString()}),o.jsxs("span",{className:"text-[9px] text-oai-gray-450 dark:text-oai-gray-500 min-w-[28px] text-right font-medium",children:[ue,"%"]})]})]}),o.jsx("div",{className:"w-full h-1 bg-oai-gray-100 dark:bg-oai-gray-800/85 rounded-full overflow-hidden",children:o.jsx("div",{className:"h-full rounded-full transition-all duration-300",style:{width:`${ue}%`,backgroundColor:c[4],boxShadow:`0 0 4px ${c[4]}55`}})})]},A)})})]}):o.jsx("p",{className:"text-[11px] text-oai-gray-600 dark:text-oai-gray-300 leading-relaxed font-normal mt-1 border-t border-dashed border-oai-gray-100 dark:border-oai-gray-800/60 pt-1.5",children:vo(d.level,d.total_tokens??d.value)})]})]}),o.jsx("div",{className:"absolute bottom-[6px] left-0 -translate-x-1/2 w-2.5 h-2.5 rotate-45 bg-white dark:bg-oai-gray-900 border-r border-b border-oai-gray-200/50 dark:border-oai-gray-800/50 shadow-sm",style:{marginBottom:"1px"}})]}),o.jsx("style",{children:`
1
+ import{c as Kt,i as Oi,f as no,a as ao,J as Ei,u as ro,m as Fi,r as f,M as oo,b as Wi,d as Pi,e as Un,g as Ii,h as It,j as Xt,k as Pt,l as Li,n as ga,o as wn,p as va,q as Tn,s as $i,t as Ri,v as Bi,w as _a,x as qt,y as qn,z as Yi,A as He,B as h,C as o,D as so,E as dn,X as io,F as Ue,L as zi,G as Re,R,H as An,I as lo,K as Mn,N as Hi,O as co,P as uo,Q as Na,S as Ui,T as fo,_ as mo,U as ya,V as qi,W as Gi,Y as Vi,Z as Ki,$ as Xi,a0 as Qi,a1 as Ji,a2 as Zi,a3 as el,a4 as tl,a5 as ut,a6 as dr}from"./main-C1bPtjN7.js";import{u as nl}from"./use-usage-limits-OjbraegI.js";import{u as un}from"./useCurrency-DJA7tRVi.js";import{I as ja}from"./info-CWqFjI4Z.js";import{u as al,a as rl,b as ol,c as sl,d as il,D as ll,e as cl,f as dl,g as ul,h as fl,i as ml,C as hl,P as gl,j as yl,k as pl,l as xl,m as bl,L as kl}from"./PopoverPopup-D7c8Tufb.js";import{C as Sa}from"./Card-B3zit51o.js";import{u as Ma}from"./use-reduced-motion-DJE4Frme.js";import{P as ho}from"./ProviderIcon-B79ytQj1.js";import{F as Yt}from"./FadeIn-BeLgcj1F.js";const wl=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]],vl=Kt("maximize-2",wl);const _l=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],Nl=Kt("pause",_l);const jl=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],Sl=Kt("play",jl);const Ml=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],Cl=Kt("rotate-ccw",Ml);const Dl=[["path",{d:"M21 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h6",key:"y09zxi"}],["path",{d:"m21 3-9 9",key:"mpx6sq"}],["path",{d:"M15 3h6v6",key:"1q9fwt"}]],Tl=Kt("square-arrow-out-up-right",Dl);const Al=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],Ol=Kt("terminal",Al);function El(...e){const t=!Array.isArray(e[0]),n=t?0:-1,a=e[0+n],r=e[1+n],s=e[2+n],l=e[3+n],i=Oi(r,s,l);return t?i(a):i}function Fl(e,t,n={}){const a=e.get();let r=null,s=a,l;const i=typeof a=="string"?a.replace(/[\d.-]/g,""):void 0,c=()=>{r&&(r.stop(),r=null),e.animation=void 0},u=()=>{const d=ur(e.get()),g=ur(s);if(d===g){c();return}const y=r?r.getGeneratorVelocity():e.getVelocity();c(),r=new Ei({keyframes:[d,g],velocity:y,type:"spring",restDelta:.001,restSpeed:.01,...n,onUpdate:l})},m=()=>{u(),e.animation=r??void 0,e.events.animationStart?.notify(),r?.then(()=>{e.animation=void 0,e.events.animationComplete?.notify()})};if(e.attach((d,g)=>{s=d,l=y=>g(Gn(y,i)),no.postRender(m)},c),ao(t)){let d=n.skipInitialAnimation===!0;const g=t.on("change",x=>{d?(d=!1,e.jump(Gn(x,i),!1)):e.set(Gn(x,i))}),y=e.on("destroy",g);return()=>{g(),y()}}return c}function Gn(e,t){return t?e+t:e}function ur(e){return typeof e=="number"?e:parseFloat(e)}function Ca(e){const t=ro(()=>Fi(e)),{isStatic:n}=f.useContext(oo);if(n){const[,a]=f.useState(e);f.useEffect(()=>t.on("change",a),[])}return t}function go(e,t){const n=Ca(t()),a=()=>n.set(t());return a(),Wi(()=>{const r=()=>no.preRender(a,!1,!0),s=e.map(l=>l.on("change",r));return()=>{s.forEach(l=>l()),Pi(a)}}),n}function Wl(e){Un.current=[],e();const t=go(Un.current,e);return Un.current=void 0,t}function yo(e,t,n,a){if(typeof e=="function")return Wl(e);const s=typeof t=="function"?t:El(t,n,a),l=Array.isArray(e)?fr(e,s):fr([e],([c])=>s(c)),i=Array.isArray(e)?void 0:e.accelerate;return i&&!i.isTransformed&&typeof t!="function"&&Array.isArray(n)&&a?.clamp!==!1&&(l.accelerate={...i,times:t,keyframes:n,isTransformed:!0}),l}function fr(e,t){const n=ro(()=>[]);return go(e,()=>{n.length=0;const a=e.length;for(let r=0;r<a;r++)n[r]=e[r].get();return t(n)})}function Pl(e,t={}){const{isStatic:n}=f.useContext(oo),a=()=>ao(e)?e.get():e;if(n)return yo(a);const r=Ca(a());return f.useInsertionEffect(()=>Fl(r,e,t),[r,JSON.stringify(t)]),r}function Il(e,t={}){return Pl(e,{type:"spring",...t})}function Ll({baseUrl:e,accessToken:t,guestAllowed:n=!1,weeks:a=52,weekStartsOn:r="sun",cacheKey:s,timeZone:l,tzOffsetMinutes:i,now:c}={}){const u=f.useMemo(()=>Ii({weeks:a,weekStartsOn:r,now:c}),[c,a,r]),[m,d]=f.useState([]),[g,y]=f.useState(null),[x,p]=f.useState("edge"),[b,k]=f.useState(!1),[w,v]=f.useState(null),S=It(),C=Xt(t),_=!n,O=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),N=f.useMemo(()=>{if(!s)return null;const B=Tn({timeZone:l,offsetMinutes:i});return`tokentracker.heatmap.${s}.${a}.${r}.${B}`},[s,l,i,a,r]),W=f.useCallback(()=>{if(!N||typeof window>"u")return null;try{const B=window.localStorage.getItem(N);if(!B)return null;const T=JSON.parse(B);return!T||!T.heatmap?null:T}catch{return null}},[N]),E=f.useCallback(B=>{if(!(!N||typeof window>"u"))try{window.localStorage.setItem(N,JSON.stringify(B))}catch{}},[N]),F=f.useCallback(()=>{if(!(!N||typeof window>"u"))try{window.localStorage.removeItem(N)}catch{}},[N]),ie=f.useCallback(async()=>{const B=await Pt(t);if(!(!B&&!S&&!O)){k(!0),v(null);try{try{const I=await Li({baseUrl:e,accessToken:B,weeks:a,to:u.to,weekStartsOn:r,timeZone:l,tzOffsetMinutes:i}),P=Array.isArray(I?.weeks)?I.weeks:[];if(!P.length&&_){const Q=W();if(Q?.heatmap){y(Q.heatmap),d(Q.daily||[]),p("cache");return}}if(!P.some(Q=>(Array.isArray(Q)?Q:[]).some(fe=>fe&&Number.isFinite(Number(fe.level))))&&P.length){const Q=[];for(const Y of P)for(const H of Array.isArray(Y)?Y:[])H?.day&&Q.push({day:H.day,total_tokens:H.total_tokens??H.value??0,billable_total_tokens:H.billable_total_tokens??H.value??H.total_tokens??0});const fe=ga({dailyRows:Q,weeks:a,to:I?.to||u.to,weekStartsOn:r});d(Q),y({...fe,week_starts_on:r,active_days:Q.filter(Y=>Number(Y?.billable_total_tokens??Y?.total_tokens)>0).length,streak_days:wn({dailyRows:Q,to:I?.to||u.to})}),p("client"),_?E({heatmap:{...fe,week_starts_on:r,active_days:Q.filter(Y=>Number(Y?.billable_total_tokens??Y?.total_tokens)>0).length,streak_days:wn({dailyRows:Q,to:I?.to||u.to})},daily:Q,fetchedAt:new Date().toISOString()}):F();return}y(I||null),d([]),p("edge"),I&&_?E({heatmap:I,daily:[],fetchedAt:new Date().toISOString()}):_||F();return}catch(I){const P=I,z=P?.status??P?.statusCode;if(z===401||z===403)throw I}const T=await va({baseUrl:e,accessToken:B,from:u.from,to:u.to,timeZone:l,tzOffsetMinutes:i}),M=Array.isArray(T?.data)?T.data:[];d(M);const U=ga({dailyRows:M,weeks:a,to:u.to,weekStartsOn:r});y({...U,week_starts_on:r,active_days:M.filter(I=>Number(I?.billable_total_tokens??I?.total_tokens)>0).length,streak_days:wn({dailyRows:M,to:u.to})}),p("client"),_?E({heatmap:{...U,week_starts_on:r,active_days:M.filter(I=>Number(I?.billable_total_tokens??I?.total_tokens)>0).length,streak_days:wn({dailyRows:M,to:u.to})},daily:M,fetchedAt:new Date().toISOString()}):F()}catch(T){if(_){const M=W();if(M?.heatmap)y(M.heatmap),d(M.daily||[]),p("cache"),v(null);else{const U=T;v(U?.message||String(U)),d([]),y(null),p("edge")}}else{const M=T;v(M?.message||String(M)),d([]),y(null),p("edge")}}finally{k(!1)}}},[t,e,S,n,_,u.from,u.to,W,C,l,i,r,a,F,E,O]);return f.useEffect(()=>{if(!C&&!n&&!S&&!O){d([]),k(!1),v(null),y(null),p("edge");return}if(!_)F(),d([]),v(null),y(null),p("edge");else{const B=W();B?.heatmap&&(y(B.heatmap),d(B.daily||[]),p("cache"))}ie()},[t,S,W,ie,C,n,_,F,O]),{range:u,daily:m,heatmap:g,source:S?"mock":x==="client"?"edge":x,loading:b,error:w,refresh:ie}}function $l({baseUrl:e,accessToken:t,limit:n=3,from:a,to:r,source:s,timeZone:l,tzOffsetMinutes:i}={}){const[c,u]=f.useState([]),[m,d]=f.useState(!1),[g,y]=f.useState(null),x=It(),p=Xt(t),b=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),k=f.useCallback(async()=>{const w=await Pt(t);if(!w&&!x&&!b){u([]),y(null),d(!1);return}d(!0),y(null);try{const v=await $i({baseUrl:e,accessToken:w,limit:n,from:a,to:r,source:s,timeZone:l,tzOffsetMinutes:i});u(Array.isArray(v?.entries)?v.entries:[])}catch(v){const S=v?.message||String(v);y(S),u([])}finally{d(!1)}},[t,e,a,n,x,s,l,r,i,b]);return f.useEffect(()=>{if(!p&&!x&&!b){u([]),y(null),d(!1);return}k()},[x,k,p,b]),{entries:c,loading:m,error:g,refresh:k}}const Rl=24;function Bl({baseUrl:e,accessToken:t,guestAllowed:n=!1,period:a,from:r,to:s,months:l=Rl,cacheKey:i,timeZone:c,tzOffsetMinutes:u,now:m,sharedRows:d,sharedRange:g}={}){const[y,x]=f.useState([]),[p,b]=f.useState(()=>({from:r,to:s})),[k,w]=f.useState("edge"),[v,S]=f.useState(null),[C,_]=f.useState(!1),[O,N]=f.useState(null),W=It(),E=Xt(t),F=!n,ie=Array.isArray(d),$=g?.from||r,B=g?.to||s,T=f.useMemo(()=>a==="day"?"hourly":a==="total"?"monthly":"daily",[a]),M=(()=>{if(!i)return null;const Y=Yl(e)||"default",H=Tn({timeZone:c,offsetMinutes:u});if(T==="hourly")return`tokentracker.trend.${i}.${Y}.hourly.${s||r||"day"}.${H}`;if(T==="monthly")return`tokentracker.trend.${i}.${Y}.monthly.${l}.${s||"today"}.${H}`;const te=`${r||""}.${s||""}`;return`tokentracker.trend.${i}.${Y}.daily.${te}.${H}`})(),U=f.useCallback(()=>{if(!M||typeof window>"u")return null;try{const Y=window.localStorage.getItem(M);if(!Y)return null;const H=JSON.parse(Y);return!H||!Array.isArray(H.rows)?null:H}catch{return null}},[M]),I=f.useCallback(Y=>{if(!(!M||typeof window>"u"))try{window.localStorage.setItem(M,JSON.stringify(Y))}catch{}},[M]),P=f.useCallback(()=>{if(!(!M||typeof window>"u"))try{window.localStorage.removeItem(M)}catch{}},[M]),z=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),Q=f.useCallback(async()=>{if(ie){x(Array.isArray(d)?d:[]),b({from:$,to:B}),w("shared"),S(null),_(!1),N(null);return}const Y=await Pt(t);if(!(!Y&&!W&&!z)){_(!0),N(null);try{let H;T==="hourly"?H=await Ri({baseUrl:e,accessToken:Y,day:s||r,timeZone:c,tzOffsetMinutes:u}):T==="monthly"?H=await Bi({baseUrl:e,accessToken:Y,months:l,to:s,timeZone:c,tzOffsetMinutes:u}):H=await va({baseUrl:e,accessToken:Y,from:r,to:s,timeZone:c,tzOffsetMinutes:u});const te=H?.from||r||H?.day||null,he=H?.to||s||H?.day||null;let ve=Array.isArray(H?.data)?H.data:[];T==="daily"?ve=Kn(ve,te||r,he||s,{timeZone:c,offsetMinutes:u,now:m}):T==="hourly"?ve=Xn(ve,{timeZone:c,offsetMinutes:u,now:m}):T==="monthly"&&(ve=Qn(ve,{timeZone:c,offsetMinutes:u,now:m}));const Be=new Date().toISOString();x(ve),b({from:te,to:he}),w("edge"),S(Be),F?I({rows:ve,from:te,to:he,mode:T,fetchedAt:Be}):P()}catch(H){if(F){const te=U();if(te?.rows){let he=T==="daily"?Kn(te.rows||[],te.from||r,te.to||s,{timeZone:c,offsetMinutes:u,now:m}):Array.isArray(te.rows)?te.rows:[];T==="hourly"?he=Xn(he,{timeZone:c,offsetMinutes:u,now:m}):T==="monthly"&&(he=Qn(he,{timeZone:c,offsetMinutes:u,now:m})),x(he),b({from:te.from||r,to:te.to||s}),w("cache"),S(te.fetchedAt||null),N(null)}else{x([]),b({from:r,to:s}),w("edge"),S(null);const he=H;N(he?.message||String(he))}}else{x([]),b({from:r,to:s}),w("edge"),S(null);const te=H;N(te?.message||String(te))}}finally{_(!1)}}},[t,e,r,W,n,F,T,l,U,E,ie,$,d,B,c,s,u,m,P,I,z]);f.useEffect(()=>{if(ie){x(Array.isArray(d)?d:[]),b({from:$,to:B}),w("shared"),S(null),_(!1),N(null);return}if(!E&&!n&&!W&&!z){x([]),b({from:r,to:s}),N(null),_(!1),w("edge"),S(null);return}if(!F)P(),x([]),b({from:r,to:s}),N(null),w("edge"),S(null);else{const Y=U();if(Y?.rows){let H=T==="daily"?Kn(Y.rows||[],Y.from||r,Y.to||s,{timeZone:c,offsetMinutes:u,now:m}):Array.isArray(Y.rows)?Y.rows:[];T==="hourly"?H=Xn(H,{timeZone:c,offsetMinutes:u,now:m}):T==="monthly"&&(H=Qn(H,{timeZone:c,offsetMinutes:u,now:m})),x(H),b({from:Y.from||r,to:Y.to||s}),w("cache"),S(Y.fetchedAt||null)}}Q()},[t,W,U,Q,ie,$,d,B,E,n,F,P,z]);const fe=W?"mock":k;return{rows:y,from:p.from||r,to:p.to||s,source:fe,fetchedAt:v,loading:C,error:O,refresh:Q}}function Yl(e){try{return new URL(e).host}catch{return null}}function Vn(e){if(!e)return null;const t=String(e).trim(),n=t.split("-");if(n.length!==3)return null;const a=Number(n[0]),r=Number(n[1])-1,s=Number(n[2]);if(!Number.isFinite(a)||!Number.isFinite(r)||!Number.isFinite(s))return null;const l=new Date(Date.UTC(a,r,s));return Number.isFinite(l.getTime())&&qt(l)===t?l:null}function zl(e,t){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+t))}function Kn(e,t,n,{timeZone:a,offsetMinutes:r,now:s}={}){const l=Vn(t),i=Vn(n);if(!l||!i||i<l)return Array.isArray(e)?e:[];const c=s instanceof Date&&Number.isFinite(s.getTime())?s:new Date,u=_a({timeZone:a,offsetMinutes:r,date:c}),m=Vn(u),d=m?m.getTime():c.getTime(),g=new Map;for(const x of e||[])x?.day&&g.set(x.day,x);const y=[];for(let x=l;x<=i;x=zl(x,1)){const p=qt(x),b=g.get(p),k=x.getTime()>d;if(b){y.push({...b,missing:!1,future:k});continue}y.push({day:p,total_tokens:null,billable_total_tokens:null,input_tokens:null,cached_input_tokens:null,output_tokens:null,reasoning_output_tokens:null,missing:!k,future:k})}return y}function Xn(e,{timeZone:t,offsetMinutes:n,now:a}={}){if(!Array.isArray(e))return[];const r=po({timeZone:t,offsetMinutes:n,now:a});return r?e.map(s=>{const l=s?.hour||s?.label||"",i=Hl(l);if(!i)return{...s,future:!1};const c=i.dayNum>r.dayNum||i.dayNum===r.dayNum&&i.slot>r.slot;return{...s,future:c}}):e}function Qn(e,{timeZone:t,offsetMinutes:n,now:a}={}){if(!Array.isArray(e))return[];const r=po({timeZone:t,offsetMinutes:n,now:a});return r?e.map(s=>{const l=s?.month||s?.label||"",i=Ul(l);if(!i)return{...s,future:!1};const c=i.year>r.year||i.year===r.year&&i.month>r.month;return{...s,future:c}}):e}function po({timeZone:e,offsetMinutes:t,now:n}={}){const a=n instanceof Date&&Number.isFinite(n.getTime())?n:new Date;if(e&&typeof Intl<"u"&&Intl.DateTimeFormat)try{const g=new Intl.DateTimeFormat("en-CA",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hourCycle:"h23"}).formatToParts(a).reduce((w,v)=>(v.type&&v.value&&(w[v.type]=v.value),w),{}),y=Number(g.year),x=Number(g.month),p=Number(g.day),b=Number(g.hour),k=Number(g.minute);if(Number.isFinite(y)&&Number.isFinite(x)&&Number.isFinite(p)&&Number.isFinite(b)&&Number.isFinite(k)){const w=b*2+(k>=30?1:0);return{year:y,month:x,day:p,hour:b,minute:k,dayNum:y*1e4+x*100+p,slot:w}}}catch{}if(Number.isFinite(t)){const m=new Date(a.getTime()+t*60*1e3),d=m.getUTCFullYear(),g=m.getUTCMonth()+1,y=m.getUTCDate(),x=m.getUTCHours(),p=m.getUTCMinutes(),b=x*2+(p>=30?1:0);return{year:d,month:g,day:y,hour:x,minute:p,dayNum:d*1e4+g*100+y,slot:b}}const r=a.getFullYear(),s=a.getMonth()+1,l=a.getDate(),i=a.getHours(),c=a.getMinutes(),u=i*2+(c>=30?1:0);return{year:r,month:s,day:l,hour:i,minute:c,dayNum:r*1e4+s*100+l,slot:u}}function Hl(e){if(!e)return null;const t=String(e).trim(),[n,a]=t.split("T");if(!n||!a)return null;const r=n.split("-");if(r.length!==3)return null;const s=Number(r[0]),l=Number(r[1]),i=Number(r[2]);if(!Number.isFinite(s)||!Number.isFinite(l)||!Number.isFinite(i))return null;const c=a.split(":"),u=Number(c[0]),m=Number(c[1]);if(!Number.isFinite(u)||u<0||u>23||!Number.isFinite(m)||m<0||m>59)return null;const d=u*2+(m>=30?1:0);return{dayNum:s*1e4+l*100+i,slot:d}}function Ul(e){if(!e)return null;const n=String(e).trim().split("-");if(n.length!==2)return null;const a=Number(n[0]),r=Number(n[1]);return!Number.isFinite(a)||!Number.isFinite(r)||r<1||r>12?null:{year:a,month:r}}function mr({baseUrl:e,accessToken:t,guestAllowed:n=!1,from:a,to:r,includeDaily:s=!0,cacheKey:l,timeZone:i,tzOffsetMinutes:c,now:u}={}){const[m,d]=f.useState([]),[g,y]=f.useState(null),[x,p]=f.useState(null),[b,k]=f.useState("edge"),[w,v]=f.useState(null),[S,C]=f.useState(!1),[_,O]=f.useState(null),N=It(),W=Xt(t),E=!n,F=(()=>{if(!l)return null;const I=ql(e)||"default",P=s?"daily":"summary",z=Tn({timeZone:i,offsetMinutes:c});return`tokentracker.usage.${l}.${I}.${a}.${r}.${P}.${z}`})(),ie=f.useCallback(()=>{if(!F||typeof window>"u")return null;try{const I=window.localStorage.getItem(F);if(!I)return null;const P=JSON.parse(I);return!P||!P.summary?null:P}catch{return null}},[F]),$=f.useCallback(I=>{if(!(!F||typeof window>"u"))try{window.localStorage.setItem(F,JSON.stringify(I))}catch{}},[F]),B=f.useCallback(()=>{if(!(!F||typeof window>"u"))try{window.localStorage.removeItem(F)}catch{}},[F]),T=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),M=f.useCallback(async()=>{const I=await Pt(t);if(!(!I&&!N&&!T)){C(!0),O(null);try{let P=null,z=null;if(s){const[te,he]=await Promise.allSettled([va({baseUrl:e,accessToken:I,from:a,to:r,timeZone:i,tzOffsetMinutes:c}),qn({baseUrl:e,accessToken:I,from:a,to:r,timeZone:i,tzOffsetMinutes:c,rolling:!0})]);if(te.status==="rejected")throw te.reason;P=te.value,z=he.status==="fulfilled"?he.value:null}else z=await qn({baseUrl:e,accessToken:I,from:a,to:r,timeZone:i,tzOffsetMinutes:c,rolling:!0});let Q=s&&Array.isArray(P?.data)?P.data:[];s&&(Q=Zn(Q,a,r,{timeZone:i,offsetMinutes:c,now:u}));let fe=z?.totals||P?.summary?.totals||null,Y=z?.rolling||P?.summary?.rolling||null;if(s&&!fe&&!z)try{const te=await qn({baseUrl:e,accessToken:I,from:a,to:r,timeZone:i,tzOffsetMinutes:c,rolling:!0});fe=te?.totals||null,Y=te?.rolling||Y}catch{}const H=new Date().toISOString();d(Q),y(fe),p(Y),k("edge"),v(H),fe&&E?$({summary:fe,rolling:Y,daily:Q,from:a,to:r,includeDaily:s,fetchedAt:H}):E||B()}catch(P){if(E){const z=ie();if(z?.summary){y(z.summary),p(z.rolling||null);const Q=Array.isArray(z.daily)?z.daily:[],fe=s?Zn(Q,z.from||a,z.to||r,{timeZone:i,offsetMinutes:c,now:u}):Q;d(fe),k("cache"),v(z.fetchedAt||null),O(null)}else{const Q=P;O(Q?.message||String(Q)),d([]),y(null),p(null),k("edge"),v(null)}}else{const z=P;O(z?.message||String(z)),d([]),y(null),p(null),k("edge"),v(null)}}finally{C(!1)}}},[t,e,a,s,N,n,E,u,ie,W,i,r,c,B,$,T]);return f.useEffect(()=>{const I=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1");if(!W&&!n&&!N&&!I){d([]),y(null),p(null),O(null),C(!1),k("edge"),v(null);return}if(!E)B(),d([]),y(null),p(null),O(null),k("edge"),v(null);else{const P=ie();if(P?.summary){y(P.summary),p(P.rolling||null);const z=Array.isArray(P.daily)?P.daily:[],Q=s?Zn(z,P.from||a,P.to||r,{timeZone:i,offsetMinutes:c,now:u}):z;d(Q),k("cache"),v(P.fetchedAt||null)}}M()},[t,N,ie,M,W,n,E,B,T]),{daily:m,summary:g,rolling:x,source:N?"mock":b,fetchedAt:w,loading:S,error:_,refresh:M}}function ql(e){try{return new URL(e).host}catch{return null}}function Jn(e){if(!e)return null;const t=String(e).trim(),n=t.split("-");if(n.length!==3)return null;const a=Number(n[0]),r=Number(n[1])-1,s=Number(n[2]);if(!Number.isFinite(a)||!Number.isFinite(r)||!Number.isFinite(s))return null;const l=new Date(Date.UTC(a,r,s));return Number.isFinite(l.getTime())&&qt(l)===t?l:null}function Gl(e,t){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+t))}function Zn(e,t,n,{timeZone:a,offsetMinutes:r,now:s}={}){const l=Jn(t),i=Jn(n);if(!l||!i||i<l)return Array.isArray(e)?e:[];const c=s instanceof Date&&Number.isFinite(s.getTime())?s:new Date,u=_a({timeZone:a,offsetMinutes:r,date:c}),m=Jn(u),d=m?m.getTime():c.getTime(),g=new Map;for(const x of e||[])x?.day&&g.set(x.day,x);const y=[];for(let x=l;x<=i;x=Gl(x,1)){const p=qt(x),b=g.get(p),k=x.getTime()>d;if(b){y.push({...b,missing:!1,future:k});continue}y.push({day:p,total_tokens:null,billable_total_tokens:null,input_tokens:null,cached_input_tokens:null,output_tokens:null,reasoning_output_tokens:null,missing:!k,future:k})}return y}function Vl({baseUrl:e,accessToken:t,guestAllowed:n=!1,from:a,to:r,cacheKey:s,timeZone:l,tzOffsetMinutes:i}={}){const[c,u]=f.useState(null),[m,d]=f.useState("edge"),[g,y]=f.useState(!1),[x,p]=f.useState(null),b=It(),k=Xt(t),w=!n,v=f.useMemo(()=>{if(!s)return null;const E=Kl(e)||"default",F=Tn({timeZone:l,offsetMinutes:i});return`tokentracker.modelBreakdown.${s}.${E}.${a}.${r}.${F}`},[e,s,a,l,r,i]),S=f.useCallback(()=>{if(!v||typeof window>"u")return null;try{const E=window.localStorage.getItem(v);if(!E)return null;const F=JSON.parse(E);return!F||!F.breakdown?null:F}catch{return null}},[v]),C=f.useCallback(E=>{if(!(!v||typeof window>"u"))try{window.localStorage.setItem(v,JSON.stringify(E))}catch{}},[v]),_=f.useCallback(()=>{if(!(!v||typeof window>"u"))try{window.localStorage.removeItem(v)}catch{}},[v]),O=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),N=f.useCallback(async()=>{const E=await Pt(t);if(!(!E&&!b&&!O)){y(!0),p(null);try{const F=await Yi({baseUrl:e,accessToken:E,from:a,to:r,timeZone:l,tzOffsetMinutes:i});u(F||null),d("edge"),F&&w?C({breakdown:F,fetchedAt:new Date().toISOString()}):w||_()}catch(F){if(w){const ie=S();if(ie?.breakdown)u(ie.breakdown),d("cache"),p(null);else{u(null),d("edge");const $=F;p($?.message||String($))}}else{u(null),d("edge");const ie=F;p(ie?.message||String(ie))}}finally{y(!1)}}},[t,e,a,b,n,w,S,l,r,k,i,_,C,O]);return f.useEffect(()=>{if(!k&&!n&&!b&&!O){u(null),d("edge"),p(null),y(!1);return}if(!w)_(),u(null),d("edge"),p(null);else{const E=S();E?.breakdown&&(u(E.breakdown),d("cache"))}N()},[t,b,S,N,k,n,w,_,O]),{breakdown:c,source:b?"mock":m,loading:g,error:x,refresh:N}}function Kl(e){try{return new URL(e).host}catch{return null}}const xo=new Set(["day","hour","month"]);function Xl(e){return xo.has(e)}function hr(e){if(e==null)return null;const t=String(e).trim();if(!/^[0-9]+$/.test(t))return null;const n=t.replace(/^0+/,"");return n.length===0?"0":n}function Ql(e,t){const n=hr(e),a=hr(t);if(n&&a)return n.length!==a.length?n.length<a.length?-1:1:n===a?0:n<a?-1:1;const r=He(e),s=He(t);return r==null&&s==null?0:r==null?1:s==null?-1:r===s?0:r<s?-1:1}function Jl(e,t){const n=typeof e=="string"?e:String(e||""),a=typeof t=="string"?t:String(t||"");return n===a?0:n<a?-1:1}function Zl(e){if(!e)return null;const n=String(e).trim().match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!n)return null;const a=Number(n[1]),r=Number(n[2]),s=Number(n[3]);if(!Number.isFinite(a)||!Number.isFinite(r)||!Number.isFinite(s))return null;const l=new Date(Date.UTC(a,r-1,s));return!Number.isFinite(l.getTime())||l.getUTCFullYear()!==a||l.getUTCMonth()+1!==r||l.getUTCDate()!==s?null:l.getTime()}function ec(e){if(!e)return null;const n=String(e).trim().match(/^(\d{4})-(\d{2})$/);if(!n)return null;const a=Number(n[1]),r=Number(n[2]);if(!Number.isFinite(a)||!Number.isFinite(r)||r<1||r>12)return null;const s=new Date(Date.UTC(a,r-1,1));return Number.isFinite(s.getTime())?s.getTime():null}function tc(e){if(!e)return null;const n=String(e).trim().match(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2}))?Z?$/);if(!n)return null;const a=Number(n[1]),r=Number(n[2]),s=Number(n[3]),l=Number(n[4]),i=Number(n[5]),c=Number(n[6]||0);if(!Number.isFinite(a)||!Number.isFinite(r)||!Number.isFinite(s)||!Number.isFinite(l)||!Number.isFinite(i)||!Number.isFinite(c)||r<1||r>12||s<1||s>31||l<0||l>23||i<0||i>59||c<0||c>59)return null;const u=new Date(Date.UTC(a,r-1,s,l,i,c));return Number.isFinite(u.getTime())?u.getTime():null}function nc(e,t,n){const a=n==="hour"?tc:n==="month"?ec:Zl,r=a(e),s=a(t);return r!=null&&s!=null?r===s?0:r<s?-1:1:Jl(e,t)}function bo(e,{key:t,dir:n}){const a=n==="asc"?1:-1,r=Array.isArray(e)?e:[],s=xo.has(t)?(i,c)=>nc(i,c,t):Ql,l=i=>t==="total_tokens"&&i?.billable_total_tokens!=null?i.billable_total_tokens:i?.[t];return r.map((i,c)=>({row:i,index:c})).sort((i,c)=>{const u=l(i.row),m=l(c.row),d=u==null,g=m==null;if(d&&g)return i.index-c.index;if(d)return 1;if(g)return-1;const y=s(u,m);return y!==0?y*a:i.index-c.index}).map(i=>i.row)}function ac(){return[{key:"day",label:h("daily.sort.date.label"),title:h("daily.sort.date.title")},{key:"total_tokens",label:h("daily.sort.total.label"),title:h("daily.sort.total.title")},{key:"input_tokens",label:h("daily.sort.input.label"),title:h("daily.sort.input.title")},{key:"output_tokens",label:h("daily.sort.output.label"),title:h("daily.sort.output.title")},{key:"cached_input_tokens",label:h("daily.sort.cached.label"),title:h("daily.sort.cached.title")},{key:"reasoning_output_tokens",label:h("daily.sort.reasoning.label"),title:h("daily.sort.reasoning.title")},{key:"conversation_count",label:h("daily.sort.conversations.label"),title:h("daily.sort.conversations.title")}]}function gr(e){const t=Xl(e)?e:"day";return ac().map((n,a)=>a===0?{...n,key:t}:n)}function yr(e,{key:t,dir:n}){return bo(e,{key:t,dir:n})}const Cn=12,rc=["total_tokens","billable_total_tokens","input_tokens","cached_input_tokens","cache_creation_input_tokens","output_tokens","reasoning_output_tokens"];function oc(e){if(typeof e=="bigint")return e!==0n;if(typeof e=="number")return Number.isFinite(e)&&e!==0;if(e==null)return!1;const t=String(e).trim();if(!t||!/^-?\d+$/.test(t))return!1;const n=t.startsWith("-")?t.slice(1):t;return/[1-9]/.test(n)}function sc(e){return rc.some(t=>oc(e?.[t]))}function ic(e){const t=Array.isArray(e)?e:[];if(!t.length)return[];const n=bo(t,{key:"month",dir:"asc"}),a=n.findIndex(r=>r?.month&&sc(r));return a===-1?t:n.slice(a)}function lc(e,t,n=Cn){const a=Array.isArray(e)?e:[],r=Number.isFinite(n)&&n>0?n:Cn,l=(Number.isFinite(t)&&t>=0?Math.floor(t):0)*r;return a.slice(l,l+r)}function cc({publicMode:e,screenshotMode:t,forceInstall:n,accessEnabled:a,heatmapLoading:r,activeDays:s,hasActiveDeviceToken:l}={}){return e||t?!1:n?!0:a&&!r&&s===0&&!l}function ko(e){if(typeof e!="string")return null;const t=e.trim();return t?t.toLowerCase():null}function dc(e){const t=ko(e?.model_id);return t||null}function wo(e,t){return e?.model?String(e.model):t}function Gt(e,t=0){const n=He(e?.billable_total_tokens),a=He(e?.total_tokens);return n!=null&&n>0?n:a!=null&&a>0?a:n??a??t}function uc(e,{copyFn:t}={}){const n=typeof t=="function"?t:l=>l,r=(Array.isArray(e?.sources)?e.sources:[]).map(l=>{const i=Gt(l?.totals),c=He(l?.totals?.total_cost_usd)??0;return{source:l?.source,totalTokens:Number.isFinite(i)?i:0,totalCost:Number.isFinite(c)?c:0,models:Array.isArray(l?.models)?l.models:[]}}).filter(l=>l.totalTokens>0);if(!r.length)return[];const s=r.reduce((l,i)=>l+i.totalTokens,0);return typeof e?.pricing?.pricing_mode=="string"&&e.pricing.pricing_mode.toUpperCase(),r.slice().sort((l,i)=>i.totalTokens-l.totalTokens).map(l=>{const i=l.source?String(l.source).toUpperCase():n("shared.placeholder.short"),c=s>0?l.totalTokens/s*100:0,u=Number.isFinite(c)?c.toFixed(1):"0.0",m=l.models.map(d=>{const g=Gt(d?.totals);if(!Number.isFinite(g)||g<=0)return null;const y=l.totalTokens>0?Math.round(g/l.totalTokens*1e3)/10:0,x=wo(d,n("shared.placeholder.short")),p=dc(d),b=He(d?.totals?.total_cost_usd),k=b??(l.totalCost>0&&l.totalTokens>0?g/l.totalTokens*l.totalCost:null);return{id:p,name:x,share:y,usage:g,cost:k}}).filter(Boolean);return{source:l.source,label:i,totalPercent:String(u),usd:l.totalCost,usage:l.totalTokens,models:m}})}function fc(e,{limit:t=3,copyFn:n}={}){const a=typeof n=="function"?n:g=>g,r=Array.isArray(e?.sources)?e.sources:[];if(!r.length)return[];const s=new Map,l=new Map,i=new Map;let c=0;for(const g of r){const y=Array.isArray(g?.models)?g.models:[];for(const x of y){const p=Gt(x?.totals);if(!Number.isFinite(p)||p<=0)continue;c+=p;const b=wo(x,a("shared.placeholder.short")),k=ko(b);if(!k)continue;s.set(k,(s.get(k)||0)+p);const w=i.get(k)||0;p>=w&&(i.set(k,p),l.set(k,b))}}if(!s.size)return[];const u=Array.from(s.values()).reduce((g,y)=>g+y,0),m=c>0?c:u,d=Number.isFinite(t)?Math.max(0,Math.floor(t)):3;return Array.from(s.entries()).map(([g,y])=>{const x=m>0?(y/m*100).toFixed(1):"0.0";return{id:g,name:l.get(g)||a("shared.placeholder.short"),tokens:y,percent:String(x)}}).sort((g,y)=>y.tokens!==g.tokens?y.tokens-g.tokens:String(g.name).localeCompare(String(y.name))).slice(0,d)}const mt={emerald:{light:["#ebedf0","#a7f3d0","#6ee7b7","#34d399","#10b981"],dark:["#2d333b","#065f46","#059669","#10b981","#34d399"],gridColor:{light:"rgba(16, 185, 129, 0.12)",dark:"rgba(52, 211, 153, 0.08)"}},ocean:{light:["#f1f5f9","#93c5fd","#60a5fa","#3b82f6","#1d4ed8"],dark:["#1e293b","#1e3a8a","#2563eb","#3b82f6","#60a5fa"],gridColor:{light:"rgba(59, 130, 246, 0.12)",dark:"rgba(96, 165, 250, 0.08)"}},neon:{light:["#faf5ff","#ebd5ff","#c084fc","#a855f7","#7e22ce"],dark:["#2e1065","#581c87","#8b5cf6","#a855f7","#c084fc"],gridColor:{light:"rgba(168, 85, 247, 0.12)",dark:"rgba(192, 132, 252, 0.08)"}},amber:{light:["#fffbeb","#fde68a","#f59e0b","#d97706","#b45309"],dark:["#451a03","#78350f","#b45309","#d97706","#f59e0b"],gridColor:{light:"rgba(245, 158, 11, 0.12)",dark:"rgba(245, 158, 11, 0.08)"}}};function mc(e,t){const n=/^#([0-9a-f]{6})$/i.exec(e);if(!n)return e;const a=parseInt(n[1],16),r=a>>16&255,s=a>>8&255,l=a&255,i=c=>Math.max(0,Math.min(255,Math.round(c*t)));return`rgb(${i(r)}, ${i(s)}, ${i(l)})`}function nt(e,t,n,a,r){const s=Math.cos(a),l=Math.sin(a),i=e*s-t*l,c=e*l+t*s,u=n,m=Math.cos(r),d=Math.sin(r),g=i,y=c*m-u*d,x=c*d+u*m;return{x:g,y,z:x}}function hc(e,t,n,a,r){return nt(e,t,n,a,r)}function vo(e,t){const n=Number(t).toLocaleString();if(e>=4){const a=Math.floor(Math.random()*3)+1;return h(`heatmap.3d.voxel.joke.${a}`,{value:n})}else return e===3?h("heatmap.3d.voxel.level3",{value:n}):e===2?h("heatmap.3d.voxel.level2",{value:n}):e===1?h("heatmap.3d.voxel.level1",{value:n}):h("heatmap.3d.voxel.level0")}function pr({weeks:e,palette:t="auto",isDark:n=!1,interactive:a=!1,autoRotateInit:r=!1,onResetViewRef:s=null}){const l=mt[t]||(t==="auto"?mt.emerald:null),i=l?n?l.dark:l.light:Array.isArray(t)?t:n?mt.emerald.dark:mt.emerald.light,c=l?n?l.gridColor.dark:l.gridColor.light:n?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)",u=-.2,m=.88,[d,g]=f.useState({yaw:u,pitch:m}),[y,x]=f.useState(r),[p,b]=f.useState(1),k=a?13:10.5,w=f.useMemo(()=>{const D=[],L=e.length;if(L===0||!a)return[];for(let K=0;K<=7;K++){const q=(K-3.5)*k,ne=nt(-L/2*k,q,0,d.yaw,d.pitch),X=nt(L/2*k,q,0,d.yaw,d.pitch);D.push({d:`M${ne.x},${ne.y} L${X.x},${X.y}`,key:`horiz-${K}`})}for(let K=0;K<=L;K+=4){const q=(K-L/2)*k,ne=nt(q,-3.5*k,0,d.yaw,d.pitch),X=nt(q,3.5*k,0,d.yaw,d.pitch);D.push({d:`M${ne.x},${ne.y} L${X.x},${X.y}`,key:`vert-${K}`})}if(L%4!==0){const K=(L-L/2)*k,q=nt(K,-3.5*k,0,d.yaw,d.pitch),ne=nt(K,3.5*k,0,d.yaw,d.pitch);D.push({d:`M${q.x},${q.y} L${ne.x},${ne.y}`,key:"vert-last"})}return D},[e.length,d,k,a]);f.useEffect(()=>{s&&(s.current={reset:()=>{g({yaw:u,pitch:m}),x(!1),b(1),T()},toggleAutoRotate:D=>{x(D)}})},[s]);const v=f.useRef(null),S=f.useRef(null),C=f.useRef(!1),_=f.useRef({x:0,y:0}),O=f.useRef({yaw:u,pitch:m}),N=f.useRef({x:0,y:0}),W=f.useRef({x:0,y:0,time:0}),E=f.useRef(null),[F,ie]=f.useState(0),$=f.useRef(null),B=f.useRef(!0);f.useEffect(()=>(B.current=!0,()=>{B.current=!1}),[]);const T=()=>{$.current&&cancelAnimationFrame($.current),ie(0);const D=performance.now(),L=1200,K=q=>{if(!B.current)return;const ne=q-D,X=Math.min(1,ne/L),pe=1-Math.pow(1-X,3);ie(pe),X<1?$.current=requestAnimationFrame(K):$.current=null};$.current=requestAnimationFrame(K)};f.useEffect(()=>(T(),()=>{$.current&&cancelAnimationFrame($.current)}),[a]),f.useEffect(()=>{if(!y||C.current||typeof window>"u"||typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let L;const K=()=>{if(typeof document<"u"&&document.visibilityState==="hidden"){L=requestAnimationFrame(K);return}g(q=>({yaw:q.yaw+.002,pitch:q.pitch})),L=requestAnimationFrame(K)};return L=requestAnimationFrame(K),()=>cancelAnimationFrame(L)},[y]);const M=(D,L)=>{a&&(C.current=!0,_.current={x:D,y:L},O.current={yaw:d.yaw,pitch:d.pitch},N.current={x:0,y:0},W.current={x:D,y:L,time:performance.now()},E.current&&cancelAnimationFrame(E.current))},U=(D,L)=>{if(!C.current)return;const K=D-_.current.x,q=L-_.current.y,ne=performance.now(),X=ne-W.current.time;X>0&&(N.current={x:(D-W.current.x)/X,y:(L-W.current.y)/X}),W.current={x:D,y:L,time:ne};const pe=.005,ge=O.current.yaw-K*pe,Se=Math.PI/2.3,Te=Math.max(-Se,Math.min(Se,O.current.pitch-q*pe));g({yaw:ge,pitch:Te})},I=()=>{if(!C.current)return;C.current=!1;let D=-N.current.x*12,L=-N.current.y*12;const K=.95,q=()=>{C.current||(D*=K,L*=K,!(Math.abs(D)<.01&&Math.abs(L)<.01)&&(g(ne=>{const X=ne.yaw+D*.005,pe=Math.PI/2.3,ge=Math.max(-pe,Math.min(pe,ne.pitch+L*.005));return{yaw:X,pitch:ge}}),E.current=requestAnimationFrame(q)))};E.current=requestAnimationFrame(q)},[P,z]=f.useState(null),[Q,fe]=f.useState({x:0,y:0,shiftX:0}),Y=f.useRef(null);f.useEffect(()=>()=>{Y.current&&clearTimeout(Y.current)},[]),f.useEffect(()=>{if(!a||!S.current)return;const D=K=>{K.preventDefault();const q=-K.deltaY*.0025;b(ne=>{const X=ne+q;return Math.max(.5,Math.min(3,X))})},L=S.current;return L.addEventListener("wheel",D,{passive:!1}),()=>{L.removeEventListener("wheel",D)}},[a]);const H=f.useMemo(()=>{const D=[];return e.forEach((L,K)=>{(Array.isArray(L)?L:[]).forEach((q,ne)=>{q&&D.push({key:q.day||`${K}-${ne}`,col:K,row:ne,level:q.level||0,value:q.value||0,day:q.day,models:q.models||null})})}),D},[e]),he=k-(a?1.8:1.5),ve=a?38:28,Be=D=>Math.max(1.8,Number(D)/4*ve),Me=f.useMemo(()=>{if(H.length===0)return[];const D=e.length;return H.map(L=>{const K=Be(L.level),q=Math.sqrt(Math.pow(L.col-D/2,2)+Math.pow(L.row-3.5,2)),ne=Math.sqrt(Math.pow(D/2,2)+Math.pow(3.5,2)),X=q/ne*.4,pe=Math.min(1,Math.max(0,(F-X)*(1/.6))),ge=K*pe,Se=(L.col-D/2)*k,Te=(L.row-3.5)*k,me=he/2,Ie=[{x:Se-me,y:Te-me,z:0},{x:Se+me,y:Te-me,z:0},{x:Se+me,y:Te+me,z:0},{x:Se-me,y:Te+me,z:0},{x:Se-me,y:Te-me,z:ge},{x:Se+me,y:Te-me,z:ge},{x:Se+me,y:Te+me,z:ge},{x:Se-me,y:Te+me,z:ge}].map(re=>nt(re.x,re.y,re.z,d.yaw,d.pitch)),Ce=nt(Se,Te,ge/2,d.yaw,d.pitch),Le=[{name:"top",indices:[4,5,6,7],scale:1,normal:[0,0,1]},{name:"bottom",indices:[3,2,1,0],scale:.4,normal:[0,0,-1]},{name:"left",indices:[3,0,4,7],scale:.55,normal:[-1,0,0]},{name:"right",indices:[1,2,6,5],scale:.75,normal:[1,0,0]},{name:"front",indices:[0,1,5,4],scale:.85,normal:[0,-1,0]},{name:"back",indices:[2,3,7,6],scale:.65,normal:[0,1,0]}],yt=i[Math.min(4,Math.max(0,Number(L.level)||0))],Je=[],pt=.35,_t=-.4,oe=.83;return Le.forEach(re=>{const G=hc(re.normal[0],re.normal[1],re.normal[2],d.yaw,d.pitch);if(G.z>.001){const de=Ie[re.indices[0]],be=Ie[re.indices[1]],ae=Ie[re.indices[2]],xt=Ie[re.indices[3]],lt=`M${de.x},${de.y} L${be.x},${be.y} L${ae.x},${ae.y} L${xt.x},${xt.y} Z`,Nt=G.x*pt+G.y*_t+G.z*oe,Ze=n?.18:0,et=re.scale*(.82+.28*Math.max(0,Nt))+Ze;Je.push({name:re.name,d:lt,fill:mc(yt,et)})}}),{...L,centerProj:Ce,renderedFaces:Je}})},[H,d,i,e.length,F,k,he,ve]),A=f.useMemo(()=>[...Me].sort((D,L)=>D.centerProj.z-L.centerProj.z),[Me]),J=f.useMemo(()=>{if(A.length===0)return{minX:-100,minY:-100,maxX:100,maxY:100};let D=1/0,L=1/0,K=-1/0,q=-1/0;return A.forEach(ne=>{const X=k*2,pe=ne.centerProj.x,ge=ne.centerProj.y;pe-X<D&&(D=pe-X),pe+X>K&&(K=pe+X),ge-X<L&&(L=ge-X),ge+X>q&&(q=ge+X)}),{minX:D,minY:L,maxX:K,maxY:q}},[A,k]),le=12,ue=J.maxX-J.minX+le*2,Oe=J.maxY-J.minY+le*2,_e=ue/p,We=Oe/p,Ne=J.minX-le+(ue-_e)/2,Pe=J.minY-le+(Oe-We)/2,ke=`${Ne} ${Pe} ${_e} ${We}`;return H.length===0?o.jsx("div",{className:"py-8 text-center text-sm text-oai-gray-500",children:h("heatmap.empty")}):o.jsxs("div",{ref:S,className:`relative select-none outline-none ${a?"cursor-grab active:cursor-grabbing w-full h-full flex items-center justify-center":"w-full overflow-hidden flex justify-center"}`,onMouseDown:D=>{if(!a)return;M(D.clientX,D.clientY);const L=q=>U(q.clientX,q.clientY),K=()=>{I(),window.removeEventListener("mousemove",L),window.removeEventListener("mouseup",K)};window.addEventListener("mousemove",L),window.addEventListener("mouseup",K)},onTouchStart:D=>{!a||D.touches.length===0||M(D.touches[0].clientX,D.touches[0].clientY)},onTouchMove:D=>{!a||D.touches.length===0||U(D.touches[0].clientX,D.touches[0].clientY)},onTouchEnd:()=>{a&&I()},children:[o.jsxs("svg",{ref:v,viewBox:ke,width:a?"95%":"100%",height:a?"95%":"auto",role:"img","aria-label":h("heatmap.iso.aria")||"3D interactive activity heatmap",style:{display:"block",width:"100%",height:"auto",maxWidth:a?"none":`${ue}px`,maxHeight:a?"78vh":"none"},className:"transition-transform duration-300 ease-out",children:[a&&w.map(D=>o.jsx("path",{d:D.d,fill:"none",stroke:c,strokeWidth:.25,strokeDasharray:"1.5 2.5",strokeLinecap:"round"},D.key)),A.map(D=>{const L=P&&P.key===D.key;return o.jsxs("g",{onMouseEnter:K=>{if(Y.current&&(clearTimeout(Y.current),Y.current=null),z(D),a&&v.current){const q=nt((D.col-e.length/2)*k,(D.row-3.5)*k,Be(D.level),d.yaw,d.pitch);let ne=0,X=0;const pe=v.current;if(S.current&&typeof pe.createSVGPoint=="function"&&typeof pe.getScreenCTM=="function")try{const me=pe.createSVGPoint();me.x=q.x,me.y=q.y;const ce=pe.getScreenCTM();if(ce){const Ie=me.matrixTransform(ce),Ce=S.current.getBoundingClientRect();ne=Ie.x-Ce.left,X=Ie.y-Ce.top}}catch{const ce=pe.getBoundingClientRect(),Ie=J.maxX-J.minX+le*2,Ce=J.maxY-J.minY+le*2;ne=(q.x-(J.minX-le))/Ie*ce.width,X=(q.y-(J.minY-le))/Ce*ce.height}else{const me=pe.getBoundingClientRect(),ce=J.maxX-J.minX+le*2,Ie=J.maxY-J.minY+le*2;ne=(q.x-(J.minX-le))/ce*me.width,X=(q.y-(J.minY-le))/Ie*me.height}const ge=140;let Se=0;const Te=S.current?S.current.getBoundingClientRect().width:pe.getBoundingClientRect().width;ne<ge?Se=ge-ne:ne>Te-ge&&(Se=Te-ge-ne),fe({x:ne,y:X,shiftX:Se})}},onMouseLeave:()=>{Y.current&&clearTimeout(Y.current),Y.current=setTimeout(()=>{z(null)},150)},className:"transition-all duration-200",style:{filter:L?"brightness(1.15) drop-shadow(0 4px 6px rgba(0,0,0,0.15))":"none",cursor:a?"pointer":"default"},children:[!a&&D.day&&o.jsx("title",{children:`${D.day}: ${Number(D.value).toLocaleString()} tokens`}),D.renderedFaces.map((K,q)=>o.jsx("path",{d:K.d,fill:K.fill,stroke:K.fill,strokeWidth:.25,strokeLinejoin:"round"},q))]},D.key)})]}),a&&P&&o.jsxs("div",{onMouseEnter:()=>{Y.current&&(clearTimeout(Y.current),Y.current=null)},onMouseLeave:()=>{Y.current&&clearTimeout(Y.current),Y.current=setTimeout(()=>{z(null)},150)},className:"absolute z-[9999] w-0 h-0 transition-all duration-100 ease-out",style:{left:`${Q.x}px`,top:`${Q.y}px`},children:[o.jsxs("div",{className:"absolute left-0 bottom-[10px] backdrop-blur-md bg-white/90 dark:bg-oai-gray-900/90 border border-oai-gray-200/50 dark:border-oai-gray-800/50 shadow-xl rounded-xl p-3.5 max-w-[280px] min-w-[200px] flex flex-col gap-2 animate-in fade-in zoom-in-95 duration-100",style:{transform:`translateX(calc(-50% + ${Q.shiftX}px))`},children:[o.jsxs("div",{className:"flex items-center justify-between border-b border-oai-gray-100 dark:border-oai-gray-800/80 pb-1.5",children:[o.jsx("span",{className:"text-[11px] font-semibold text-oai-gray-500 dark:text-oai-gray-400",children:P.day}),(()=>{const D=P.level===0?n?"#9ca3af":"#6b7280":i[P.level];return o.jsxs("span",{className:"text-[10px] px-2 py-0.5 rounded-full font-medium",style:{backgroundColor:D+"22",color:D,border:`1px solid ${D}44`},children:["Level ",P.level]})})()]}),o.jsxs("div",{className:"flex flex-col gap-2",children:[o.jsxs("div",{className:"flex items-baseline gap-1",children:[o.jsx("span",{className:"text-lg font-bold text-oai-gray-900 dark:text-white leading-none",children:Number(P.value).toLocaleString()}),o.jsx("span",{className:"text-[10px] text-oai-gray-400 uppercase tracking-wider font-semibold",children:"Tokens"})]}),P.models&&Object.keys(P.models).length>0?o.jsxs("div",{className:"mt-1.5 border-t border-oai-gray-100 dark:border-oai-gray-800/60 pt-2 flex flex-col gap-1.5",children:[o.jsx("div",{className:"text-[10px] font-semibold text-oai-gray-400 dark:text-oai-gray-500 uppercase tracking-wider",children:"Model Breakdown"}),o.jsx("div",{className:"flex flex-col gap-2 max-h-[150px] overflow-y-auto pr-1.5 scrollbar-thin",children:Object.entries(P.models).map(([D,L])=>({name:D,val:Number(L)})).sort((D,L)=>L.val-D.val).map(({name:D,val:L})=>{const K=Number(P.value)||1,q=Math.round(L/K*100);return o.jsxs("div",{className:"flex flex-col gap-1",children:[o.jsxs("div",{className:"flex items-center justify-between text-[11px] gap-3",children:[o.jsx("span",{className:"font-medium text-oai-gray-750 dark:text-oai-gray-200 truncate max-w-[120px]",title:D,children:D}),o.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[o.jsx("span",{className:"font-mono text-oai-gray-900 dark:text-oai-gray-100 font-semibold",children:L.toLocaleString()}),o.jsxs("span",{className:"text-[9px] text-oai-gray-450 dark:text-oai-gray-500 min-w-[28px] text-right font-medium",children:[q,"%"]})]})]}),o.jsx("div",{className:"w-full h-1 bg-oai-gray-100 dark:bg-oai-gray-800/85 rounded-full overflow-hidden",children:o.jsx("div",{className:"h-full rounded-full transition-all duration-300",style:{width:`${q}%`,backgroundColor:i[4],boxShadow:`0 0 4px ${i[4]}55`}})})]},D)})})]}):o.jsx("p",{className:"text-[11px] text-oai-gray-600 dark:text-oai-gray-300 leading-relaxed font-normal mt-1 border-t border-dashed border-oai-gray-100 dark:border-oai-gray-800/60 pt-1.5",children:vo(P.level,P.value)})]})]}),o.jsx("div",{className:"absolute bottom-[6px] left-0 -translate-x-1/2 w-2.5 h-2.5 rotate-45 bg-white dark:bg-oai-gray-900 border-r border-b border-oai-gray-200/50 dark:border-oai-gray-800/50 shadow-sm",style:{marginBottom:"1px"}})]})]})}const Ct=12,tn=3,ea=26,gc=["#ebedf0","#a7f3d0","#6ee7b7","#34d399","#10b981"],yc=["#30363d","#065f46","#059669","#10b981","#34d399"];function xr(e){const t=Number(e);return Number.isFinite(t)?t<1e3?t.toLocaleString():Ue(t,{decimals:2}):"0"}function pc(e){if(typeof e!="string")return null;const t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e.trim());if(!t)return null;const n=new Date(Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3])));return Number.isFinite(n.getTime())?n:null}function _o(e,t){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+t))}function xc(e,t){return Math.floor((Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())-Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()))/864e5)}function bc(e,t){const n=t==="mon"?1:0,a=e.getUTCDay();return _o(e,-((a-n+7)%7))}function kc(e,t,n,a){if(!e)return[];const r=pc(t)||new Date,s=[];for(let m=11;m>=0;m-=1)s.push(new Date(Date.UTC(r.getUTCFullYear(),r.getUTCMonth()-m,1)));const l=bc(r,n),i=_o(l,-(e-1)*7),c=[],u=new Set;for(const m of s){const d=Math.floor(xc(i,m)/7);d<0||d>=e||u.has(d)||(u.add(d),c.push({label:a[m.getUTCMonth()],index:d}))}return c}function wc({heatmap:e,timeZoneLabel:t,timeZoneShortLabel:n,hideLegend:a=!1}){const{resolvedTheme:r}=so(),{currency:s,rate:l}=un(),i=r==="dark",c=i?yc:gc,u=f.useRef(null),m=f.useRef(null),[d,g]=f.useState(null),[y,x]=f.useState({x:0,y:0,shiftX:0}),p=f.useRef(null);f.useEffect(()=>()=>{p.current&&clearTimeout(p.current)},[]);const[b,k]=f.useState(!1),[w,v]=f.useState(!1),[S,C]=f.useState(!1),_=f.useRef(null),[O,N]=f.useState("emerald"),W=[h("heatmap.month.jan"),h("heatmap.month.feb"),h("heatmap.month.mar"),h("heatmap.month.apr"),h("heatmap.month.may"),h("heatmap.month.jun"),h("heatmap.month.jul"),h("heatmap.month.aug"),h("heatmap.month.sep"),h("heatmap.month.oct"),h("heatmap.month.nov"),h("heatmap.month.dec")],E=(A,J)=>{if(!J||!J.day)return;p.current&&(clearTimeout(p.current),p.current=null),g(J);const le=A.currentTarget.getBoundingClientRect(),ue=m.current;if(!ue)return;const Oe=ue.getBoundingClientRect(),_e=le.left-Oe.left+le.width/2,We=le.top-Oe.top,Ne=140;let Pe=0;_e<Ne?Pe=Ne-_e:_e>Oe.width-Ne&&(Pe=Oe.width-Ne-_e),x({x:_e,y:We,shiftX:Pe})},F=()=>{p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{g(null)},150)},ie=()=>{p.current&&(clearTimeout(p.current),p.current=null)},$=()=>{p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{g(null)},150)},B=()=>{v(!1),k(!0)},T=()=>{v(!0)},M=A=>{A.target===A.currentTarget&&w&&(k(!1),v(!1))};f.useEffect(()=>{if(!b||w)return;const A=J=>{J.key==="Escape"&&T()};return window.addEventListener("keydown",A),()=>{window.removeEventListener("keydown",A)}},[b,w]);const U=f.useMemo(()=>({emerald:{accentText:"text-emerald-500 dark:text-emerald-400",accentBg:"bg-emerald-500/10 dark:bg-emerald-400/10",accentBorder:"border-emerald-500/20 dark:border-emerald-400/15",hoverBorder:"hover:border-emerald-500/30 dark:hover:border-emerald-400/30",hoverGlow:"hover:shadow-[0_0_20px_-3px_rgba(16,185,129,0.15)] hover:dark:shadow-[0_0_20px_-3px_rgba(52,211,153,0.25)]",rawColor:"#10b981"},ocean:{accentText:"text-blue-500 dark:text-blue-400",accentBg:"bg-blue-500/10 dark:bg-blue-400/10",accentBorder:"border-blue-500/20 dark:border-blue-400/15",hoverBorder:"hover:border-blue-500/30 dark:hover:border-blue-400/30",hoverGlow:"hover:shadow-[0_0_20px_-3px_rgba(59,130,246,0.15)] hover:dark:shadow-[0_0_20px_-3px_rgba(96,165,250,0.25)]",rawColor:"#3b82f6"},neon:{accentText:"text-purple-500 dark:text-purple-400",accentBg:"bg-purple-500/10 dark:bg-purple-400/10",accentBorder:"border-purple-500/20 dark:border-purple-400/15",hoverBorder:"hover:border-purple-500/30 dark:hover:border-purple-400/30",hoverGlow:"hover:shadow-[0_0_20px_-3px_rgba(168,85,247,0.15)] hover:dark:shadow-[0_0_20px_-3px_rgba(192,132,252,0.25)]",rawColor:"#a855f7"},amber:{accentText:"text-amber-500 dark:text-amber-400",accentBg:"bg-amber-500/10 dark:bg-amber-400/10",accentBorder:"border-amber-500/20 dark:border-amber-400/15",hoverBorder:"hover:border-amber-500/30 dark:hover:border-amber-400/30",hoverGlow:"hover:shadow-[0_0_20px_-3px_rgba(245,158,11,0.15)] hover:dark:shadow-[0_0_20px_-3px_rgba(245,158,11,0.25)]",rawColor:"#f59e0b"}}),[]),I=U[O]||U.emerald,P=mt[O]?i?mt[O].dark:mt[O].light:i?mt.emerald.dark:mt.emerald.light,[z,Q]=f.useState(()=>{try{return window.localStorage?.getItem("tt:heatmap-view")==="3d"?"3d":"2d"}catch{return"2d"}});f.useEffect(()=>{try{window.localStorage?.setItem("tt:heatmap-view",z)}catch{}},[z]),f.useEffect(()=>{const A=u.current;A&&(A.scrollLeft=A.scrollWidth)},[e?.weeks]),f.useEffect(()=>{const A=u.current;if(!A)return;const J=()=>{p.current&&(clearTimeout(p.current),p.current=null),g(null)};return A.addEventListener("scroll",J),()=>A.removeEventListener("scroll",J)},[]);const fe=e?.week_starts_on==="mon"?"mon":"sun",Y=f.useMemo(()=>{const A=Array.isArray(e?.weeks)?e.weeks:[];if(!A.length)return{weeks:[]};const J=[];for(const le of A)for(const ue of Array.isArray(le)?le:[])ue?.day&&J.push({day:ue.day,total_tokens:ue.total_tokens??ue.value??0,billable_total_tokens:ue.billable_total_tokens??ue.value??ue.total_tokens??0,models:ue.models??null});return ga({dailyRows:J,weeks:Math.max(52,A.length),to:e?.to,weekStartsOn:fe})},[e?.to,e?.weeks,fe]),H=Y?.weeks||[],te=f.useMemo(()=>{let A=0,J=0,le={day:"无数据",value:0},ue=0,Oe=0;const _e=[];H.forEach(ne=>{(Array.isArray(ne)?ne:[]).forEach(X=>{X&&X.day&&_e.push(X)})}),_e.sort((ne,X)=>ne.day.localeCompare(X.day)),_e.forEach(ne=>{const X=Number(ne.value)||0;A+=X,X>0?(J++,ue++,ue>Oe&&(Oe=ue)):ue=0,X>le.value&&(le={day:ne.day,value:X})});const We=_e.length||365,Ne=(J/We*100).toFixed(1);let Pe="heatmap.3d.modal.ai.eval.default",ke="heatmap.3d.modal.ai.title.default";A>=15e6?(ke="heatmap.3d.modal.ai.title.peak",Pe="heatmap.3d.modal.ai.eval.peak"):A>=5e6?(ke="heatmap.3d.modal.ai.title.heavy",Pe="heatmap.3d.modal.ai.eval.heavy"):A>=1e6?(ke="heatmap.3d.modal.ai.title.core",Pe="heatmap.3d.modal.ai.eval.core"):A>=2e4&&(ke="heatmap.3d.modal.ai.title.steady",Pe="heatmap.3d.modal.ai.eval.steady");const D=e?.total_cost_usd,L=Number(D),q=D!=null&&(typeof D!="string"||D.trim()!=="")&&Number.isFinite(L)?L:A/15e5;return{totalTokens:A,activeDays:J,activeRate:Ne,maxSingleDay:le,maxStreak:Oe,aiEvaluationTitleKey:ke,aiEvaluationKey:Pe,totalCostUsd:q}},[H,e?.total_cost_usd]),he=f.useMemo(()=>dn(te.totalCostUsd,{currency:s,rate:l}),[te.totalCostUsd,s,l]),ve=fe==="mon"?["Mon","Tue","Wed","Thu","Fri","Sat","Sun"].map(A=>h(`heatmap.day.${A.toLowerCase()}`)):["Sun","Mon","Tue","Wed","Thu","Fri","Sat"].map(A=>h(`heatmap.day.${A.toLowerCase()}`)),Be=f.useMemo(()=>kc(H.length,Y?.to,fe,W),[Y?.to,H.length,fe,W]);if(!H.length)return o.jsx("div",{className:"py-8 text-center text-sm text-oai-gray-500",children:h("heatmap.empty")});const Me=ea+H.length*Ct+Math.max(0,H.length-1)*tn;return o.jsxs("div",{ref:m,className:"relative rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 p-5",children:[o.jsxs("div",{className:"flex items-baseline justify-between mb-3",children:[o.jsx("h3",{className:"text-sm font-medium text-oai-gray-500 dark:text-oai-gray-300 uppercase tracking-wide",children:h("heatmap.title")}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs("div",{role:"tablist","aria-label":"Heatmap view",className:"flex rounded-md border border-oai-gray-200 dark:border-oai-gray-800 p-0.5 text-[10px]",children:[o.jsx("button",{type:"button",role:"tab","aria-selected":z==="2d",onClick:()=>Q("2d"),className:z==="2d"?"px-2 py-0.5 rounded bg-oai-gray-100 text-oai-black dark:bg-oai-gray-800 dark:text-oai-white font-medium":"px-2 py-0.5 rounded text-oai-gray-500 dark:text-oai-gray-400 hover:text-oai-gray-700 dark:hover:text-oai-gray-200",children:h("heatmap.view.2d")}),o.jsx("button",{type:"button",role:"tab","aria-selected":z==="3d",onClick:()=>Q("3d"),className:z==="3d"?"px-2 py-0.5 rounded bg-oai-gray-100 text-oai-black dark:bg-oai-gray-800 dark:text-oai-white font-medium":"px-2 py-0.5 rounded text-oai-gray-500 dark:text-oai-gray-400 hover:text-oai-gray-700 dark:hover:text-oai-gray-200",children:h("heatmap.view.3d")})]}),o.jsx("span",{className:"text-xs text-oai-gray-400 dark:text-oai-gray-450",children:n||h("heatmap.legend.utc")})]})]}),z==="3d"&&o.jsxs("div",{onClick:B,className:"cursor-pointer group relative overflow-hidden rounded-lg hover:border-oai-gray-350 dark:hover:border-oai-gray-700 border border-transparent transition-all",title:h("heatmap.3d.hover_tip"),children:[o.jsx(pr,{weeks:H,isDark:i,palette:O}),o.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-oai-gray-900/5 to-transparent pointer-events-none opacity-0 group-hover:opacity-100 transition-opacity flex items-end justify-center pb-2",children:o.jsxs("span",{className:"text-[10px] bg-white/95 dark:bg-oai-gray-900/95 shadow border border-oai-gray-200/60 dark:border-oai-gray-800/80 px-2.5 py-1 rounded-full font-medium text-oai-gray-500 dark:text-oai-gray-400 flex items-center gap-1 transform translate-y-2 group-hover:translate-y-0 transition-transform duration-200",children:[o.jsx(vl,{size:9}),h("heatmap.3d.hover_tip")]})})]}),z==="2d"&&o.jsx("div",{ref:u,className:"overflow-x-auto overflow-y-hidden heatmap-scroll-thin",children:o.jsxs("div",{style:{minWidth:Me},children:[o.jsxs("div",{className:"grid text-[10px] uppercase text-oai-gray-400 dark:text-oai-gray-400 mb-1",style:{gridTemplateColumns:`${ea}px repeat(${H.length}, ${Ct}px)`,columnGap:tn},children:[o.jsx("span",{}),Be.map(A=>o.jsx("span",{style:{gridColumnStart:A.index+2},className:"whitespace-nowrap",children:A.label},`${A.label}-${A.index}`))]}),o.jsxs("div",{className:"grid",style:{gridTemplateColumns:`${ea}px repeat(${H.length}, ${Ct}px)`,columnGap:tn},children:[o.jsx("div",{className:"grid text-[10px] text-oai-gray-400 dark:text-oai-gray-400 sticky left-0 bg-white dark:bg-oai-gray-900 pr-2",style:{gridTemplateRows:`repeat(7, ${Ct}px)`,rowGap:tn},children:ve.map(A=>o.jsx("span",{className:"leading-none",children:A},A))}),o.jsx("div",{className:"grid",style:{gridAutoFlow:"column",gridTemplateRows:`repeat(7, ${Ct}px)`,gap:tn},children:H.map((A,J)=>(Array.isArray(A)?A:[]).map((le,ue)=>{if(!le)return null;const Oe=le.day||`e-${J}-${ue}`,_e=Number(le.level)||0,We=c[_e]||c[0];return o.jsx("span",{onMouseEnter:Ne=>E(Ne,le),onMouseLeave:F,className:"rounded-[2px] transition-transform hover:scale-125 hover:z-10 cursor-pointer",style:{width:Ct,height:Ct,background:We}},Oe)}))})]})]})}),!a&&o.jsxs("div",{className:"flex items-center justify-center gap-2 mt-3",children:[o.jsx("span",{className:"text-[10px] text-oai-gray-400 dark:text-oai-gray-400",children:h("heatmap.legend.less")}),o.jsx("div",{className:"flex gap-0.5",children:c.map((A,J)=>o.jsx("span",{className:"rounded-[1px]",style:{width:10,height:10,background:A}},J))}),o.jsx("span",{className:"text-[10px] text-oai-gray-400 dark:text-oai-gray-400",children:h("heatmap.legend.more")})]}),b&&o.jsx("div",{onAnimationEnd:M,onClick:A=>{A.target===A.currentTarget&&T()},className:`fixed inset-0 z-50 flex items-center justify-center p-3 md:p-6 backdrop-blur-md bg-black/15 dark:bg-black/40 ${w?"animate-tt-fade-out":"animate-tt-fade-in"}`,children:o.jsxs("div",{className:`relative w-full max-w-6xl h-[88vh] backdrop-blur-2xl bg-white/90 dark:bg-oai-gray-900/90 border border-oai-gray-200/50 dark:border-white/10 shadow-2xl rounded-2xl flex flex-col md:flex-row overflow-hidden ${w?"animate-tt-modal-exit":"animate-tt-modal"}`,children:[o.jsx("button",{type:"button",onClick:T,className:"absolute top-4 right-4 z-50 p-2 rounded-full border border-oai-gray-200/60 dark:border-oai-gray-800/60 bg-white/50 dark:bg-oai-gray-900/50 text-oai-gray-500 dark:text-oai-gray-400 hover:text-oai-gray-900 dark:hover:text-white hover:rotate-90 hover:scale-105 active:scale-95 transition-all duration-300",children:o.jsx(io,{size:16})}),o.jsxs("div",{className:"w-full md:w-[340px] border-b md:border-b-0 md:border-r border-zinc-200/50 dark:border-zinc-800/40 p-5 md:p-6 flex flex-col gap-6 overflow-y-auto backdrop-blur-md bg-zinc-50/50 dark:bg-zinc-950/50",children:[o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center gap-1.5 select-none",children:[o.jsxs("span",{className:"relative flex h-1.5 w-1.5",children:[o.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full opacity-75",style:{backgroundColor:I.rawColor}}),o.jsx("span",{className:"relative inline-flex rounded-full h-1.5 w-1.5",style:{backgroundColor:I.rawColor}})]}),o.jsx("span",{className:"text-[9px] font-extrabold uppercase tracking-widest font-mono text-zinc-400 dark:text-zinc-500",children:"3D Insight"})]}),o.jsx("h4",{className:"text-xl font-black text-zinc-900 dark:text-zinc-50 tracking-tight leading-none mt-2 select-none",children:h("heatmap.3d.modal.title")}),o.jsx("p",{className:"text-[11px] leading-relaxed text-zinc-400 dark:text-zinc-500 mt-2 font-normal select-none",children:h("heatmap.3d.modal.desc")})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-x-5 gap-y-5 border-y border-zinc-200/50 dark:border-zinc-800/50 py-5 select-none",children:[o.jsxs("div",{className:"flex flex-col gap-1 relative group cursor-help",children:[o.jsx("div",{className:"absolute left-0 bottom-full mb-2 pointer-events-none opacity-0 translate-y-1 group-hover:opacity-100 group-hover:translate-y-0 transition-all duration-200 z-50",children:o.jsxs("div",{className:"bg-white dark:bg-zinc-950 text-zinc-900 dark:text-zinc-50 text-[10px] font-semibold font-mono rounded-lg px-2.5 py-1.5 shadow-xl border border-zinc-200 dark:border-zinc-800/80 whitespace-nowrap flex flex-col",children:[o.jsx("span",{className:"text-[9px] text-zinc-400 dark:text-zinc-500",children:h("heatmap.3d.modal.stats.precision_total_tokens")}),o.jsxs("span",{className:"mt-0.5 font-bold text-zinc-900 dark:text-zinc-50",children:[te.totalTokens.toLocaleString()," Tokens"]})]})}),o.jsx("span",{className:"text-[9px] font-bold text-zinc-400 dark:text-zinc-500 uppercase tracking-widest font-mono",children:h("heatmap.3d.modal.stats.total_tokens")}),o.jsxs("div",{className:"flex items-baseline gap-1.5",children:[o.jsx("span",{className:"text-xl font-black text-zinc-900 dark:text-zinc-50 tracking-tight font-mono transition-transform duration-200 group-hover:-translate-y-[1px]",children:xr(te.totalTokens)}),o.jsx("div",{className:"opacity-30 group-hover:opacity-60 transition-opacity",children:o.jsx("svg",{width:"24",height:"10",viewBox:"0 0 24 10",fill:"none",children:o.jsx("path",{d:"M1 9C3 7 5 7 7 4C9 1 11 0 13 2C15 4 17 0 23 0",stroke:I.rawColor,strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"})})})]})]}),o.jsxs("div",{className:"flex flex-col gap-1 group cursor-default",children:[o.jsx("span",{className:"text-[9px] font-bold text-zinc-400 dark:text-zinc-500 uppercase tracking-widest font-mono",children:h("heatmap.3d.modal.stats.estimated_cost")}),o.jsx("span",{className:"text-xl font-black text-zinc-900 dark:text-zinc-50 tracking-tight font-mono transition-transform duration-200 group-hover:-translate-y-[1px]",children:he})]}),o.jsxs("div",{className:"flex flex-col gap-1 group cursor-default",children:[o.jsx("span",{className:"text-[9px] font-bold text-zinc-400 dark:text-zinc-500 uppercase tracking-widest font-mono",children:h("heatmap.3d.modal.stats.active_rate_days")}),o.jsxs("span",{className:"text-xl font-black text-zinc-900 dark:text-zinc-50 tracking-tight font-mono transition-transform duration-200 group-hover:-translate-y-[1px]",children:[te.activeRate,"% ",o.jsxs("span",{className:"text-[10px] font-bold text-zinc-400 dark:text-zinc-500 font-mono",children:["(",te.activeDays,"D)"]})]})]}),o.jsxs("div",{className:"flex flex-col gap-1 group cursor-default",children:[o.jsx("span",{className:"text-[9px] font-bold text-zinc-400 dark:text-zinc-500 uppercase tracking-widest font-mono",children:h("heatmap.3d.modal.stats.max_streak")}),o.jsxs("span",{className:"text-xl font-black text-amber-500 tracking-tight font-mono transition-transform duration-200 group-hover:-translate-y-[1px]",children:[te.maxStreak," ",o.jsx("span",{className:"text-[10px] font-bold text-amber-500/80 font-mono",children:h("heatmap.3d.modal.stats.days_suffix")})]})]}),o.jsxs("div",{className:"flex flex-col gap-1 col-span-2 relative group cursor-help",children:[o.jsx("div",{className:"absolute left-0 bottom-full mb-2 pointer-events-none opacity-0 translate-y-1 group-hover:opacity-100 group-hover:translate-y-0 transition-all duration-200 z-50",children:o.jsxs("div",{className:"bg-white dark:bg-zinc-950 text-zinc-900 dark:text-zinc-50 text-[10px] font-semibold font-mono rounded-lg px-2.5 py-1.5 shadow-xl border border-zinc-200 dark:border-zinc-800/80 whitespace-nowrap flex flex-col",children:[o.jsx("span",{className:"text-[9px] text-zinc-400 dark:text-zinc-500",children:h("heatmap.3d.modal.stats.precision_peak_value")}),o.jsxs("span",{className:"mt-0.5 font-bold text-zinc-900 dark:text-zinc-50",children:[te.maxSingleDay.value>0?te.maxSingleDay.value.toLocaleString():h("heatmap.3d.modal.stats.no_data")," Tokens"]}),o.jsx("span",{className:"text-[8px] text-zinc-400 dark:text-zinc-500 mt-0.5",children:te.maxSingleDay.day!=="无数据"?te.maxSingleDay.day:h("heatmap.3d.modal.stats.no_data")})]})}),o.jsx("span",{className:"text-[9px] font-bold text-zinc-400 dark:text-zinc-500 uppercase tracking-widest font-mono",children:h("heatmap.3d.modal.stats.peak_day")}),o.jsxs("span",{className:"text-xl font-black text-zinc-900 dark:text-zinc-50 tracking-tight font-mono transition-transform duration-200 group-hover:-translate-y-[1px]",children:[te.maxSingleDay.value>0?xr(te.maxSingleDay.value):h("heatmap.3d.modal.stats.no_data")," ",o.jsxs("span",{className:"text-[10px] font-bold text-zinc-400 dark:text-zinc-500 font-mono",children:["(",te.maxSingleDay.day!=="无数据"?te.maxSingleDay.day:h("heatmap.3d.modal.stats.no_data"),")"]})]})]})]}),o.jsxs("div",{className:"flex flex-col gap-2.5 py-1",children:[o.jsxs("div",{className:"flex items-center gap-1.5 select-none",children:[o.jsx(Ol,{size:11,style:{color:I.rawColor}}),o.jsx("span",{className:"text-[9px] font-extrabold uppercase tracking-widest font-mono",style:{color:I.rawColor},children:h(te.aiEvaluationTitleKey)})]}),o.jsxs("div",{className:"pl-3.5 border-l-2 relative transition-all duration-300 group",style:{borderColor:I.rawColor},children:[o.jsx("div",{className:"absolute inset-y-0 left-0 w-[3px] blur-[2px] opacity-15 pointer-events-none rounded-full",style:{backgroundColor:I.rawColor}}),o.jsx("p",{className:"text-[11px] leading-relaxed text-zinc-600 dark:text-zinc-400 font-normal",children:h(te.aiEvaluationKey)})]})]}),o.jsx("div",{className:"mt-auto border-t border-zinc-200/50 dark:border-zinc-800/50 pt-4 select-none",children:o.jsxs("div",{className:"flex flex-col gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx("span",{className:"text-[9px] font-bold text-zinc-400 dark:text-zinc-500 uppercase tracking-widest font-mono",children:h("heatmap.3d.modal.legend.title")}),o.jsx("span",{className:"text-[10px] font-medium text-zinc-500 dark:text-zinc-400",children:h(`heatmap.3d.modal.palette.${O}`)})]}),o.jsx("div",{className:"flex gap-1",children:P.map((A,J)=>o.jsx("div",{className:"flex-1 h-1 rounded-[2px]",style:{backgroundColor:A},title:`Level ${J}`},J))})]})})]}),o.jsxs("div",{className:"flex-1 h-full relative flex items-center justify-center overflow-hidden p-4",children:[o.jsx("div",{className:"absolute top-1/4 left-1/3 w-96 h-96 rounded-full blur-[130px] pointer-events-none -translate-x-1/2 -translate-y-1/2 transition-all duration-500",style:{backgroundColor:I.rawColor+"15"}}),o.jsx("div",{className:"absolute bottom-1/4 right-1/3 w-80 h-80 rounded-full blur-[120px] pointer-events-none translate-x-1/2 translate-y-1/2 bg-purple-500/[0.04] dark:bg-purple-500/[0.08]"}),o.jsxs("div",{className:"absolute top-4 left-1/2 -translate-x-1/2 flex items-center gap-3 p-1.5 backdrop-blur-md bg-white/70 dark:bg-oai-gray-900/75 border border-oai-gray-200/60 dark:border-oai-gray-800/80 rounded-full shadow-lg z-30 select-none",children:[o.jsx("div",{className:"flex items-center gap-1.5 px-2",children:Object.keys(U).map(A=>{const J=O===A;return o.jsx("button",{type:"button",onClick:()=>N(A),title:h(`heatmap.3d.modal.palette.${A}`),className:`w-3.5 h-3.5 rounded-full transition-all duration-200 relative hover:scale-125 ${A==="emerald"?"bg-[#10b981]":A==="ocean"?"bg-[#3b82f6]":A==="neon"?"bg-[#a855f7]":"bg-[#f59e0b]"}`,children:J&&o.jsx("span",{className:"absolute inset-0 rounded-full ring-2 ring-offset-1 ring-offset-white dark:ring-offset-oai-gray-900 ring-oai-gray-900 dark:ring-white scale-110"})},A)})}),o.jsx("div",{className:"w-[1px] h-4 bg-oai-gray-200 dark:bg-oai-gray-800"}),o.jsxs("div",{className:"flex items-center gap-1 pr-1",children:[o.jsx("button",{type:"button",onClick:()=>{const A=!S;C(A),_.current&&_.current.toggleAutoRotate(A)},title:S?h("heatmap.3d.modal.control.pause"):h("heatmap.3d.modal.control.play"),className:`p-1.5 rounded-full transition-all duration-200 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 ${S?I.accentText:"text-oai-gray-400 hover:text-oai-gray-600 dark:hover:text-oai-gray-250"}`,children:S?o.jsx(Nl,{size:12}):o.jsx(Sl,{size:12})}),o.jsx("button",{type:"button",onClick:()=>{C(!1),_.current&&_.current.reset()},title:h("heatmap.3d.modal.control.reset"),className:"p-1.5 rounded-full text-oai-gray-400 hover:text-oai-gray-600 dark:hover:text-oai-gray-250 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 transition-all duration-200",children:o.jsx(Cl,{size:12})})]})]}),o.jsx(pr,{weeks:H,isDark:i,interactive:!0,palette:O,autoRotateInit:S,onResetViewRef:_}),o.jsxs("div",{className:"absolute bottom-4 right-4 flex items-center gap-1.5 text-[9px] font-bold text-oai-gray-400 bg-white/80 dark:bg-oai-gray-900/80 border border-oai-gray-200/50 dark:border-oai-gray-800/80 rounded-md px-2.5 py-1.5 select-none pointer-events-none backdrop-blur-md shadow-sm",children:[o.jsx(ja,{size:10,className:I.accentText}),o.jsx("span",{children:h("heatmap.3d.modal.footer.tip")})]})]})]})}),d&&!b&&o.jsxs("div",{onMouseEnter:ie,onMouseLeave:$,className:"absolute z-[9999] w-0 h-0 transition-all duration-100 ease-out",style:{left:`${y.x}px`,top:`${y.y}px`},children:[o.jsxs("div",{className:"absolute left-0 bottom-[10px] backdrop-blur-md bg-white/95 dark:bg-oai-gray-900/95 border border-oai-gray-200/50 dark:border-oai-gray-800/50 shadow-xl rounded-xl p-3.5 max-w-[280px] min-w-[200px] flex flex-col gap-2 animate-in fade-in zoom-in-95 duration-100",style:{transform:`translateX(calc(-50% + ${y.shiftX}px))`},children:[o.jsxs("div",{className:"flex items-center justify-between border-b border-oai-gray-100 dark:border-oai-gray-800/80 pb-1.5",children:[o.jsx("span",{className:"text-[11px] font-semibold text-oai-gray-500 dark:text-oai-gray-400",children:d.day}),(()=>{const A=d.level===0?i?"#9ca3af":"#6b7280":c[d.level];return o.jsxs("span",{className:"text-[10px] px-2 py-0.5 rounded-full font-medium",style:{backgroundColor:A+"22",color:A,border:`1px solid ${A}44`},children:["Level ",d.level]})})()]}),o.jsxs("div",{className:"flex flex-col gap-2",children:[o.jsxs("div",{className:"flex items-baseline gap-1",children:[o.jsx("span",{className:"text-lg font-bold text-oai-gray-900 dark:text-white leading-none",children:Number(d.total_tokens??d.value).toLocaleString()}),o.jsx("span",{className:"text-[10px] text-oai-gray-400 uppercase tracking-wider font-semibold",children:"Tokens"})]}),d.models&&Object.keys(d.models).length>0?o.jsxs("div",{className:"mt-1.5 border-t border-oai-gray-100 dark:border-oai-gray-800/60 pt-2 flex flex-col gap-1.5",children:[o.jsx("div",{className:"text-[10px] font-semibold text-oai-gray-400 dark:text-oai-gray-500 uppercase tracking-wider",children:"Model Breakdown"}),o.jsx("div",{className:"flex flex-col gap-2 max-h-[150px] overflow-y-auto pr-1.5 oai-scrollbar",children:Object.entries(d.models).map(([A,J])=>({name:A,val:Number(J)})).sort((A,J)=>J.val-A.val).map(({name:A,val:J})=>{const le=Number(d.total_tokens??d.value)||1,ue=Math.round(J/le*100);return o.jsxs("div",{className:"flex flex-col gap-1",children:[o.jsxs("div",{className:"flex items-center justify-between text-[11px] gap-3",children:[o.jsx("span",{className:"font-medium text-oai-gray-750 dark:text-oai-gray-200 truncate max-w-[120px]",title:A,children:A}),o.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[o.jsx("span",{className:"font-mono text-oai-gray-900 dark:text-oai-gray-100 font-semibold",children:J.toLocaleString()}),o.jsxs("span",{className:"text-[9px] text-oai-gray-450 dark:text-oai-gray-500 min-w-[28px] text-right font-medium",children:[ue,"%"]})]})]}),o.jsx("div",{className:"w-full h-1 bg-oai-gray-100 dark:bg-oai-gray-800/85 rounded-full overflow-hidden",children:o.jsx("div",{className:"h-full rounded-full transition-all duration-300",style:{width:`${ue}%`,backgroundColor:c[4],boxShadow:`0 0 4px ${c[4]}55`}})})]},A)})})]}):o.jsx("p",{className:"text-[11px] text-oai-gray-600 dark:text-oai-gray-300 leading-relaxed font-normal mt-1 border-t border-dashed border-oai-gray-100 dark:border-oai-gray-800/60 pt-1.5",children:vo(d.level,d.total_tokens??d.value)})]})]}),o.jsx("div",{className:"absolute bottom-[6px] left-0 -translate-x-1/2 w-2.5 h-2.5 rotate-45 bg-white dark:bg-oai-gray-900 border-r border-b border-oai-gray-200/50 dark:border-oai-gray-800/50 shadow-sm",style:{marginBottom:"1px"}})]}),o.jsx("style",{children:`
2
2
  @keyframes tt-fade-in {
3
3
  from { opacity: 0; }
4
4
  to { opacity: 1; }
@@ -1 +1 @@
1
- import{T as p,r as c,C as e,an as f}from"./main-uaLO1Ae7.js";const b={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1,VITE_APP_VERSION:"0.24.0",VITE_INSFORGE_ANON_KEY:"ik_9f35735991b684f7cf57fa00bb4d0487",VITE_INSFORGE_BASE_URL:"https://srctyff5.us-east.insforge.app"};function x(){return f(),`${(b&&"https://srctyff5.us-east.insforge.app"||"https://srctyff5.us-east.insforge.app").replace(/\/$/,"")}/functions/tokentracker-device-flow-grant`}function l(a){return(a||"").toUpperCase().replace(/\s+/g,"").replace(/[^A-Z0-9-]/g,"")}function h(){const a=p(),[m,g]=c.useState(""),[t,r]=c.useState({kind:"idle",message:""});c.useEffect(()=>{try{const n=new URLSearchParams(window.location.search).get("user_code");n&&g(l(n))}catch{}},[]);async function u(d){if(d?.preventDefault?.(),!a?.signedIn){r({kind:"error",message:"Please sign in first."});return}const n=l(m);if(!/^[A-HJKMNP-Z2-9]{4}-[A-HJKMNP-Z2-9]{4}$/.test(n)){r({kind:"error",message:"Invalid code format. Expected XXXX-XXXX."});return}r({kind:"working",message:"Approving…"});try{const i=await a.getAccessToken?.();if(!i){r({kind:"error",message:"No access token — please sign in again."});return}const s=await fetch(x(),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:JSON.stringify({user_code:n})}),o=await s.json().catch(()=>({}));s.ok?r({kind:"success",message:o.status==="already_approved"?`Already approved earlier${o.client_info?" ("+o.client_info+")":""}.`:`Approved${o.client_info?" for "+o.client_info:""}. You can close this tab — your CLI will pick it up within a few seconds.`}):s.status===404?r({kind:"error",message:"Code not found. Double-check what your CLI printed."}):s.status===410?r({kind:"error",message:"Code expired. Re-run `tracker device-login` and try again."}):s.status===401?r({kind:"error",message:"Session expired. Sign out, sign in, and try again."}):r({kind:"error",message:o?.error||`Server error (HTTP ${s.status}).`})}catch(i){r({kind:"error",message:`Network error: ${i?.message||i}`})}}return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-white dark:bg-oai-gray-950 px-6 py-12",children:e.jsxs("div",{className:"w-full max-w-md rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 p-8",children:[e.jsx("h1",{className:"text-2xl font-semibold text-oai-gray-900 dark:text-white mb-2",children:"Approve your CLI"}),e.jsx("p",{className:"text-sm text-oai-gray-500 dark:text-oai-gray-400 mb-6",children:"Type the code your CLI showed you. We'll link it to your account so token usage from that machine flows into your leaderboard profile."}),a?.signedIn?null:e.jsx("div",{className:"rounded-md border border-amber-200 bg-amber-50 dark:bg-amber-900/20 dark:border-amber-800 p-4 mb-4",children:e.jsx("p",{className:"text-sm text-amber-700 dark:text-amber-300",children:"Sign in first, then return to this page."})}),e.jsxs("form",{onSubmit:u,className:"space-y-4",children:[e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"block text-xs font-medium uppercase tracking-wide text-oai-gray-500 dark:text-oai-gray-400 mb-1",children:"CLI code"}),e.jsx("input",{type:"text",value:m,onChange:d=>g(l(d.target.value)),placeholder:"XXXX-XXXX",spellCheck:!1,autoCapitalize:"characters",maxLength:9,className:"w-full font-mono text-xl tracking-widest text-center rounded-md border border-oai-gray-300 dark:border-oai-gray-700 bg-white dark:bg-oai-gray-900 text-oai-gray-900 dark:text-white px-4 py-3 focus:outline-none focus:ring-inset focus:ring-2 focus:ring-emerald-600"})]}),e.jsx("button",{type:"submit",disabled:t.kind==="working"||!a?.signedIn,className:"w-full rounded-md bg-emerald-600 hover:bg-emerald-500 disabled:bg-oai-gray-300 disabled:cursor-not-allowed text-white font-medium py-3 transition-colors",children:t.kind==="working"?"Approving…":"Approve"})]}),t.kind==="success"&&e.jsx("div",{className:"mt-4 rounded-md border border-emerald-200 bg-emerald-50 dark:bg-emerald-900/20 dark:border-emerald-800 p-4",children:e.jsx("p",{className:"text-sm text-emerald-700 dark:text-emerald-300",children:t.message})}),t.kind==="error"&&e.jsx("div",{className:"mt-4 rounded-md border border-red-200 bg-red-50 dark:bg-red-900/20 dark:border-red-800 p-4",children:e.jsx("p",{className:"text-sm text-red-700 dark:text-red-300",children:t.message})})]})})}export{h as default};
1
+ import{T as p,r as c,C as e,an as f}from"./main-C1bPtjN7.js";const b={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1,VITE_APP_VERSION:"0.24.1",VITE_INSFORGE_ANON_KEY:"ik_9f35735991b684f7cf57fa00bb4d0487",VITE_INSFORGE_BASE_URL:"https://srctyff5.us-east.insforge.app"};function x(){return f(),`${(b&&"https://srctyff5.us-east.insforge.app"||"https://srctyff5.us-east.insforge.app").replace(/\/$/,"")}/functions/tokentracker-device-flow-grant`}function l(a){return(a||"").toUpperCase().replace(/\s+/g,"").replace(/[^A-Z0-9-]/g,"")}function h(){const a=p(),[m,g]=c.useState(""),[t,r]=c.useState({kind:"idle",message:""});c.useEffect(()=>{try{const n=new URLSearchParams(window.location.search).get("user_code");n&&g(l(n))}catch{}},[]);async function u(d){if(d?.preventDefault?.(),!a?.signedIn){r({kind:"error",message:"Please sign in first."});return}const n=l(m);if(!/^[A-HJKMNP-Z2-9]{4}-[A-HJKMNP-Z2-9]{4}$/.test(n)){r({kind:"error",message:"Invalid code format. Expected XXXX-XXXX."});return}r({kind:"working",message:"Approving…"});try{const i=await a.getAccessToken?.();if(!i){r({kind:"error",message:"No access token — please sign in again."});return}const s=await fetch(x(),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:JSON.stringify({user_code:n})}),o=await s.json().catch(()=>({}));s.ok?r({kind:"success",message:o.status==="already_approved"?`Already approved earlier${o.client_info?" ("+o.client_info+")":""}.`:`Approved${o.client_info?" for "+o.client_info:""}. You can close this tab — your CLI will pick it up within a few seconds.`}):s.status===404?r({kind:"error",message:"Code not found. Double-check what your CLI printed."}):s.status===410?r({kind:"error",message:"Code expired. Re-run `tracker device-login` and try again."}):s.status===401?r({kind:"error",message:"Session expired. Sign out, sign in, and try again."}):r({kind:"error",message:o?.error||`Server error (HTTP ${s.status}).`})}catch(i){r({kind:"error",message:`Network error: ${i?.message||i}`})}}return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-white dark:bg-oai-gray-950 px-6 py-12",children:e.jsxs("div",{className:"w-full max-w-md rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 p-8",children:[e.jsx("h1",{className:"text-2xl font-semibold text-oai-gray-900 dark:text-white mb-2",children:"Approve your CLI"}),e.jsx("p",{className:"text-sm text-oai-gray-500 dark:text-oai-gray-400 mb-6",children:"Type the code your CLI showed you. We'll link it to your account so token usage from that machine flows into your leaderboard profile."}),a?.signedIn?null:e.jsx("div",{className:"rounded-md border border-amber-200 bg-amber-50 dark:bg-amber-900/20 dark:border-amber-800 p-4 mb-4",children:e.jsx("p",{className:"text-sm text-amber-700 dark:text-amber-300",children:"Sign in first, then return to this page."})}),e.jsxs("form",{onSubmit:u,className:"space-y-4",children:[e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"block text-xs font-medium uppercase tracking-wide text-oai-gray-500 dark:text-oai-gray-400 mb-1",children:"CLI code"}),e.jsx("input",{type:"text",value:m,onChange:d=>g(l(d.target.value)),placeholder:"XXXX-XXXX",spellCheck:!1,autoCapitalize:"characters",maxLength:9,className:"w-full font-mono text-xl tracking-widest text-center rounded-md border border-oai-gray-300 dark:border-oai-gray-700 bg-white dark:bg-oai-gray-900 text-oai-gray-900 dark:text-white px-4 py-3 focus:outline-none focus:ring-inset focus:ring-2 focus:ring-emerald-600"})]}),e.jsx("button",{type:"submit",disabled:t.kind==="working"||!a?.signedIn,className:"w-full rounded-md bg-emerald-600 hover:bg-emerald-500 disabled:bg-oai-gray-300 disabled:cursor-not-allowed text-white font-medium py-3 transition-colors",children:t.kind==="working"?"Approving…":"Approve"})]}),t.kind==="success"&&e.jsx("div",{className:"mt-4 rounded-md border border-emerald-200 bg-emerald-50 dark:bg-emerald-900/20 dark:border-emerald-800 p-4",children:e.jsx("p",{className:"text-sm text-emerald-700 dark:text-emerald-300",children:t.message})}),t.kind==="error"&&e.jsx("div",{className:"mt-4 rounded-md border border-red-200 bg-red-50 dark:bg-red-900/20 dark:border-red-800 p-4",children:e.jsx("p",{className:"text-sm text-red-700 dark:text-red-300",children:t.message})})]})})}export{h as default};
@@ -1 +1 @@
1
- import{C as o,G as d}from"./main-uaLO1Ae7.js";import{u as r}from"./use-reduced-motion-8tbVQBYw.js";function x({children:i,delay:t=0,duration:n=.35,y:e=12,className:s="",once:a=!0}){return r()?o.jsx("div",{className:s,children:i}):o.jsx(d.div,{initial:{opacity:0,y:e},animate:{opacity:1,y:0},transition:{duration:n,delay:t,ease:[.16,1,.3,1]},className:s,children:i})}function f({children:i,staggerDelay:t=.1,initialDelay:n=0,className:e=""}){return r()?o.jsx("div",{className:e,children:i}):o.jsx(d.div,{initial:"hidden",animate:"visible",variants:{hidden:{},visible:{transition:{staggerChildren:t,delayChildren:n}}},className:e,children:i})}function h({children:i,className:t="",y:n=12}){return r()?o.jsx("div",{className:t,children:i}):o.jsx(d.div,{variants:{hidden:{opacity:0,y:n},visible:{opacity:1,y:0,transition:{duration:.35,ease:[.16,1,.3,1]}}},className:t,children:i})}export{x as F,f as S,h as a};
1
+ import{C as o,G as d}from"./main-C1bPtjN7.js";import{u as r}from"./use-reduced-motion-DJE4Frme.js";function x({children:i,delay:t=0,duration:n=.35,y:e=12,className:s="",once:a=!0}){return r()?o.jsx("div",{className:s,children:i}):o.jsx(d.div,{initial:{opacity:0,y:e},animate:{opacity:1,y:0},transition:{duration:n,delay:t,ease:[.16,1,.3,1]},className:s,children:i})}function f({children:i,staggerDelay:t=.1,initialDelay:n=0,className:e=""}){return r()?o.jsx("div",{className:e,children:i}):o.jsx(d.div,{initial:"hidden",animate:"visible",variants:{hidden:{},visible:{transition:{staggerChildren:t,delayChildren:n}}},className:e,children:i})}function h({children:i,className:t="",y:n=12}){return r()?o.jsx("div",{className:t,children:i}):o.jsx(d.div,{variants:{hidden:{opacity:0,y:n},visible:{opacity:1,y:0,transition:{duration:.35,ease:[.16,1,.3,1]}}},className:t,children:i})}export{x as F,f as S,h as a};
@@ -1 +1 @@
1
- import{r as s,aj as c,C as t}from"./main-uaLO1Ae7.js";function u({repo:r="mm7894215/TokenTracker"}){const[a,o]=s.useState(null);return s.useEffect(()=>{if(typeof window>"u")return;const n=typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,i=typeof document<"u"&&(document.documentElement?.classList.contains("screenshot-capture")||document.body?.classList.contains("screenshot-capture"));c({prefersReducedMotion:n,screenshotCapture:i})&&fetch(`https://api.github.com/repos/${r}`).then(e=>e.json()).then(e=>{e&&typeof e.stargazers_count=="number"&&o(e.stargazers_count)}).catch(()=>{})},[r]),t.jsxs("a",{href:`https://github.com/${r}`,target:"_blank",rel:"noopener noreferrer",className:"inline-flex shrink-0 items-center gap-2 px-3 py-1.5 rounded-md border border-oai-gray-200 dark:border-oai-gray-700 bg-oai-gray-50 dark:bg-oai-gray-800 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-700 transition-colors no-underline",children:[t.jsx("svg",{height:"16",viewBox:"0 0 16 16",width:"16",className:"shrink-0 fill-oai-gray-700 dark:fill-oai-gray-300",children:t.jsx("path",{d:"M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"})}),t.jsx("span",{className:"text-xs font-medium text-oai-gray-700 dark:text-oai-gray-300 whitespace-nowrap",children:"Star"}),a!==null&&t.jsx("span",{className:"text-xs font-semibold text-oai-gray-900 dark:text-oai-white tabular-nums whitespace-nowrap",children:a})]})}export{u as H};
1
+ import{r as s,aj as c,C as t}from"./main-C1bPtjN7.js";function u({repo:r="mm7894215/TokenTracker"}){const[a,o]=s.useState(null);return s.useEffect(()=>{if(typeof window>"u")return;const n=typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,i=typeof document<"u"&&(document.documentElement?.classList.contains("screenshot-capture")||document.body?.classList.contains("screenshot-capture"));c({prefersReducedMotion:n,screenshotCapture:i})&&fetch(`https://api.github.com/repos/${r}`).then(e=>e.json()).then(e=>{e&&typeof e.stargazers_count=="number"&&o(e.stargazers_count)}).catch(()=>{})},[r]),t.jsxs("a",{href:`https://github.com/${r}`,target:"_blank",rel:"noopener noreferrer",className:"inline-flex shrink-0 items-center gap-2 px-3 py-1.5 rounded-md border border-oai-gray-200 dark:border-oai-gray-700 bg-oai-gray-50 dark:bg-oai-gray-800 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-700 transition-colors no-underline",children:[t.jsx("svg",{height:"16",viewBox:"0 0 16 16",width:"16",className:"shrink-0 fill-oai-gray-700 dark:fill-oai-gray-300",children:t.jsx("path",{d:"M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"})}),t.jsx("span",{className:"text-xs font-medium text-oai-gray-700 dark:text-oai-gray-300 whitespace-nowrap",children:"Star"}),a!==null&&t.jsx("span",{className:"text-xs font-semibold text-oai-gray-900 dark:text-oai-white tabular-nums whitespace-nowrap",children:a})]})}export{u as H};
@@ -1,4 +1,4 @@
1
- import{r as ce,B as t,C as n}from"./main-uaLO1Ae7.js";const L="/proxy/ipcheck",le="claude_ip_history",be=6,Ge=["CN","HK","MO","RU","KP","IR","SY","CU","BY","VE"],Ue={CN:"Asia/Shanghai",TW:"Asia/Taipei",HK:"Asia/Hong_Kong",MO:"Asia/Macau",JP:"Asia/Tokyo",KR:"Asia/Seoul",SG:"Asia/Singapore",MY:"Asia/Kuala_Lumpur",TH:"Asia/Bangkok",VN:"Asia/Ho_Chi_Minh",ID:"Asia/Jakarta",PH:"Asia/Manila",IN:"Asia/Kolkata",PK:"Asia/Karachi",BD:"Asia/Dhaka",IR:"Asia/Tehran",IL:"Asia/Jerusalem",AE:"Asia/Dubai",SA:"Asia/Riyadh",TR:"Europe/Istanbul",RU:"Europe/Moscow",UA:"Europe/Kyiv",GB:"Europe/London",IE:"Europe/Dublin",FR:"Europe/Paris",DE:"Europe/Berlin",IT:"Europe/Rome",ES:"Europe/Madrid",PT:"Europe/Lisbon",NL:"Europe/Amsterdam",BE:"Europe/Brussels",CH:"Europe/Zurich",AT:"Europe/Vienna",SE:"Europe/Stockholm",NO:"Europe/Oslo",DK:"Europe/Copenhagen",FI:"Europe/Helsinki",PL:"Europe/Warsaw",CZ:"Europe/Prague",GR:"Europe/Athens",RO:"Europe/Bucharest",US:"America/Los_Angeles",CA:"America/Toronto",MX:"America/Mexico_City",BR:"America/Sao_Paulo",AR:"America/Argentina/Buenos_Aires",CL:"America/Santiago",AU:"Australia/Sydney",NZ:"Pacific/Auckland",ZA:"Africa/Johannesburg",EG:"Africa/Cairo",NG:"Africa/Lagos",KE:"Africa/Nairobi"},ze={CN:["zh"],TW:["zh"],HK:["zh","en"],MO:["zh","en"],JP:["ja"],KR:["ko"],TH:["th"],VN:["vi"],SG:["en","zh","ms","ta"],MY:["ms","en","zh","ta"],ID:["id","en"],PH:["en","tl","fil"],IN:["en","hi"],PK:["ur","en"],BD:["bn","en"],LK:["si","ta","en"],NP:["ne","en"],US:["en"],GB:["en"],IE:["en","ga"],AU:["en"],NZ:["en","mi"],CA:["en","fr"],DE:["de"],AT:["de"],CH:["de","fr","it","rm"],BE:["nl","fr","de"],FR:["fr"],IT:["it"],ES:["es","ca","gl","eu"],PT:["pt"],NL:["nl","fy"],LU:["lb","fr","de"],SE:["sv"],NO:["no","nb","nn"],DK:["da"],FI:["fi","sv"],IS:["is","en"],PL:["pl"],CZ:["cs"],SK:["sk"],HU:["hu"],RO:["ro"],BG:["bg"],GR:["el"],RU:["ru"],UA:["uk","ru"],BY:["be","ru"],TR:["tr"],IL:["he","ar","en"],SA:["ar"],AE:["ar","en"],EG:["ar"],IR:["fa"],IQ:["ar","ku"],ZA:["en","af","zu","xh"],KE:["en","sw"],NG:["en"],ET:["am","en"],BR:["pt"],AR:["es"],MX:["es"],CL:["es"],CO:["es"],PE:["es"],VE:["es"]},We={jp:"Japan",tw:"Taiwan",hk:"Hong Kong",sg:"Singapore",us:"United States",de:"Germany",kr:"South Korea",fr:"France",nl:"Netherlands",gb:"United Kingdom",au:"Australia",ca:"Canada",br:"Brazil",in:"India"};function Z(d){return!!d&&d.includes(":")}function Be(d){return!Z(d)||d.length<=20?d:d.substring(0,18)+"..."}function v(d){return d==null?"":String(d).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function W(d){if(!d||!/^[a-zA-Z]{2}$/.test(d))return"";const k=d.toLowerCase();return`<img src="${k==="cn"?`${L}/favicons/cn.png`:k==="tw"?`${L}/favicons/flags/tw.png`:`${L}/favicons/flags/${k}.png`}" alt="${k}" class="inline-block h-4 w-auto rounded-sm align-[-2px]" onerror="this.onerror=null;this.style.display='none'">`}function Ke(d){if(!d)return"";const k=String(d).trim();if(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(k)){const T=k.split(".");return T[0]+"."+T[1]+".*.*"}if(k.includes("…")){const T=k.lastIndexOf("…");return k.substring(0,T+1)+"*"}if(k.includes(":")){const T=k.split(":");if(T.length>=2)return T[0]+":"+T[1]+":*"}return k}function Fe(d){if(!d)return null;try{const T=new Intl.DateTimeFormat("en-US",{timeZone:d,timeZoneName:"longOffset"}).formatToParts(new Date).find(J=>J.type==="timeZoneName");if(!T)return null;if(T.value==="GMT"||T.value==="UTC")return 0;const N=T.value.match(/GMT([+-])(\d{1,2}):?(\d{0,2})/);return N?(N[1]==="+"?1:-1)*(parseInt(N[2],10)*60+parseInt(N[3]||"0",10)):null}catch{return null}}function Ve(d){if(d==null)return"";const k=d>=0?"+":"-",T=Math.abs(d),N=Math.floor(T/60),O=T%60;return"UTC"+k+N+(O?":"+String(O).padStart(2,"0"):"")}const we={safe:"bg-emerald-50 text-emerald-700 dark:bg-emerald-500/15 dark:text-emerald-300",warn:"bg-amber-50 text-amber-800 dark:bg-amber-500/15 dark:text-amber-300",danger:"bg-red-50 text-red-700 dark:bg-red-500/15 dark:text-red-300",info:"bg-blue-50 text-blue-700 dark:bg-blue-500/15 dark:text-blue-300",neutral:"bg-oai-gray-100 text-oai-gray-600 dark:bg-oai-gray-800 dark:text-oai-gray-400"};function Je(){const d=ce.useRef(null),[k,T]=ce.useState(!1);ce.useEffect(()=>{const $=d.current;if(!$)return;const b=a=>$.querySelector(`#${a}`);let ae=!1;const e={unknown:t("ipcheck.common.unknown"),failed:t("ipcheck.ip.failed"),regionAccessible:t("ipcheck.trust.region.accessible"),regionWarnTitle:a=>t("ipcheck.trust.region_warn.title",{region:a}),regionWarnBody:t("ipcheck.trust.region_warn.body"),regionRestrictedText:t("ipcheck.trust.text.restricted"),noData:t("ipcheck.trust.no_data"),noIp:t("ipcheck.trust.no_ip"),noScore:t("ipcheck.trust.no_score"),score:{pristine:t("ipcheck.trust.label.pristine"),clean:t("ipcheck.trust.label.clean"),good:t("ipcheck.trust.label.good"),neutral:t("ipcheck.trust.label.neutral"),suspicious:t("ipcheck.trust.label.suspicious"),unreachable:t("ipcheck.trust.label.unreachable")},scoreText:{excellent:t("ipcheck.trust.text.excellent"),great:t("ipcheck.trust.text.great"),minor:t("ipcheck.trust.text.minor"),moderate:t("ipcheck.trust.text.moderate"),severe:t("ipcheck.trust.text.severe")},propsRegion:t("ipcheck.props.region"),propsCity:t("ipcheck.props.city"),propsType:t("ipcheck.props.type"),propsAsn:t("ipcheck.props.asn"),propsOrg:t("ipcheck.props.org"),propsResidential:t("ipcheck.props.residential"),propsDatacenter:t("ipcheck.props.datacenter"),secVpn:t("ipcheck.security.vpn"),secProxy:t("ipcheck.security.proxy"),secTor:t("ipcheck.security.tor"),secCrawler:t("ipcheck.security.crawler"),secAbuser:t("ipcheck.security.abuser"),secProxyFlag:t("ipcheck.security.proxy_flag"),secCrawlerYes:t("ipcheck.security.crawler_yes"),secCrawlerNo:t("ipcheck.security.crawler_no"),secAbuserYes:t("ipcheck.security.abuser_yes"),secAbuserNo:t("ipcheck.security.abuser_no"),secClean:t("ipcheck.security.clean"),availSvc:t("ipcheck.avail.svc_row"),availLat:{normal:t("ipcheck.avail.latency.normal"),good:t("ipcheck.avail.latency.good"),slow:t("ipcheck.avail.latency.slow"),unreachable:t("ipcheck.avail.latency.unreachable")},availSvcStatus:{none:t("ipcheck.avail.svc.none"),minor:t("ipcheck.avail.svc.minor"),major:t("ipcheck.avail.svc.major"),critical:t("ipcheck.avail.svc.critical"),maintenance:t("ipcheck.avail.svc.maintenance"),other:t("ipcheck.avail.svc.other")},dnsStatus:t("ipcheck.dns.status"),dnsOutlet:t("ipcheck.dns.outlet"),dnsOutletIp:t("ipcheck.dns.outlet_ip"),dnsIsp:t("ipcheck.dns.isp"),dnsLeaked:t("ipcheck.dns.leaked"),dnsNoLeak:t("ipcheck.dns.no_leak"),dnsEncrypted:t("ipcheck.dns.encrypted"),dnsCnTag:t("ipcheck.dns.cn_tag"),udpStatus:t("ipcheck.udp.status"),udpOutlet:t("ipcheck.udp.outlet"),udpOutletIp:t("ipcheck.udp.outlet_ip"),udpOrigin:t("ipcheck.udp.origin"),udpDisabled:t("ipcheck.udp.disabled"),udpNoLeak:t("ipcheck.udp.no_leak"),udpLeaked:t("ipcheck.udp.leaked"),udpAnomaly:t("ipcheck.udp.anomaly"),devTz:t("ipcheck.device.tz"),devLang:t("ipcheck.device.lang"),devOs:t("ipcheck.device.os"),devTouch:t("ipcheck.device.touch"),devNet:t("ipcheck.device.net"),devDnt:t("ipcheck.device.dnt"),devWebglRender:t("ipcheck.device.webgl_render"),devCanvasFp:t("ipcheck.device.canvas_fp"),devWebglFp:t("ipcheck.device.webgl_fp"),devMatch:t("ipcheck.device.match"),devMismatch:t("ipcheck.device.mismatch"),devLocal:t("ipcheck.device.local"),devEstSuffix:t("ipcheck.device.estimate_suffix"),devDiffEqual:t("ipcheck.device.diff_equal"),devDiffAhead:a=>t("ipcheck.device.diff_ahead",{h:a}),devDiffBehind:a=>t("ipcheck.device.diff_behind",{h:a}),devLangExpected:t("ipcheck.device.lang_expected"),devTouchYes:t("ipcheck.device.touch_yes"),devTouchNo:t("ipcheck.device.touch_no"),devDntOn:t("ipcheck.device.dnt_on"),devDntOff:t("ipcheck.device.dnt_off"),devDntUnset:t("ipcheck.device.dnt_unset"),devNetUnsupported:t("ipcheck.device.net_unsupported"),devUnsupported:t("ipcheck.device.unsupported"),histEmpty:t("ipcheck.history.empty"),histCurrent:t("ipcheck.history.current"),histLoading:t("ipcheck.ip.loading")};function g(a,i="neutral"){return`<span class="inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${we[i]||we.neutral}">${a}</span>`}function q(a,i,s){return a===!0?g(i,"danger"):a===!1?g(s,"safe"):g(e.unknown,"neutral")}function ue(a){if(!a)return`<span class="text-oai-gray-400 dark:text-oai-gray-500">${v(e.failed)}</span>`;const i=v(a);return Z(a)?`<span class="ip-mask-target truncate" title="${i}">${v(Be(a))}</span>`:`<span class="ip-mask-target">${i}</span>`}function B(a){return a?`<a class="ip-link no-underline hover:underline underline-offset-4 decoration-1" href="${L}/ip/${encodeURIComponent(a)}" target="_blank" rel="noopener">${ue(a)}</a>`:`<span class="text-oai-gray-400 dark:text-oai-gray-500">${v(e.failed)}</span>`}function f(a,i){return`<div class="flex items-center justify-between py-3 gap-3">
1
+ import{r as ce,B as t,C as n}from"./main-C1bPtjN7.js";const L="/proxy/ipcheck",le="claude_ip_history",be=6,Ge=["CN","HK","MO","RU","KP","IR","SY","CU","BY","VE"],Ue={CN:"Asia/Shanghai",TW:"Asia/Taipei",HK:"Asia/Hong_Kong",MO:"Asia/Macau",JP:"Asia/Tokyo",KR:"Asia/Seoul",SG:"Asia/Singapore",MY:"Asia/Kuala_Lumpur",TH:"Asia/Bangkok",VN:"Asia/Ho_Chi_Minh",ID:"Asia/Jakarta",PH:"Asia/Manila",IN:"Asia/Kolkata",PK:"Asia/Karachi",BD:"Asia/Dhaka",IR:"Asia/Tehran",IL:"Asia/Jerusalem",AE:"Asia/Dubai",SA:"Asia/Riyadh",TR:"Europe/Istanbul",RU:"Europe/Moscow",UA:"Europe/Kyiv",GB:"Europe/London",IE:"Europe/Dublin",FR:"Europe/Paris",DE:"Europe/Berlin",IT:"Europe/Rome",ES:"Europe/Madrid",PT:"Europe/Lisbon",NL:"Europe/Amsterdam",BE:"Europe/Brussels",CH:"Europe/Zurich",AT:"Europe/Vienna",SE:"Europe/Stockholm",NO:"Europe/Oslo",DK:"Europe/Copenhagen",FI:"Europe/Helsinki",PL:"Europe/Warsaw",CZ:"Europe/Prague",GR:"Europe/Athens",RO:"Europe/Bucharest",US:"America/Los_Angeles",CA:"America/Toronto",MX:"America/Mexico_City",BR:"America/Sao_Paulo",AR:"America/Argentina/Buenos_Aires",CL:"America/Santiago",AU:"Australia/Sydney",NZ:"Pacific/Auckland",ZA:"Africa/Johannesburg",EG:"Africa/Cairo",NG:"Africa/Lagos",KE:"Africa/Nairobi"},ze={CN:["zh"],TW:["zh"],HK:["zh","en"],MO:["zh","en"],JP:["ja"],KR:["ko"],TH:["th"],VN:["vi"],SG:["en","zh","ms","ta"],MY:["ms","en","zh","ta"],ID:["id","en"],PH:["en","tl","fil"],IN:["en","hi"],PK:["ur","en"],BD:["bn","en"],LK:["si","ta","en"],NP:["ne","en"],US:["en"],GB:["en"],IE:["en","ga"],AU:["en"],NZ:["en","mi"],CA:["en","fr"],DE:["de"],AT:["de"],CH:["de","fr","it","rm"],BE:["nl","fr","de"],FR:["fr"],IT:["it"],ES:["es","ca","gl","eu"],PT:["pt"],NL:["nl","fy"],LU:["lb","fr","de"],SE:["sv"],NO:["no","nb","nn"],DK:["da"],FI:["fi","sv"],IS:["is","en"],PL:["pl"],CZ:["cs"],SK:["sk"],HU:["hu"],RO:["ro"],BG:["bg"],GR:["el"],RU:["ru"],UA:["uk","ru"],BY:["be","ru"],TR:["tr"],IL:["he","ar","en"],SA:["ar"],AE:["ar","en"],EG:["ar"],IR:["fa"],IQ:["ar","ku"],ZA:["en","af","zu","xh"],KE:["en","sw"],NG:["en"],ET:["am","en"],BR:["pt"],AR:["es"],MX:["es"],CL:["es"],CO:["es"],PE:["es"],VE:["es"]},We={jp:"Japan",tw:"Taiwan",hk:"Hong Kong",sg:"Singapore",us:"United States",de:"Germany",kr:"South Korea",fr:"France",nl:"Netherlands",gb:"United Kingdom",au:"Australia",ca:"Canada",br:"Brazil",in:"India"};function Z(d){return!!d&&d.includes(":")}function Be(d){return!Z(d)||d.length<=20?d:d.substring(0,18)+"..."}function v(d){return d==null?"":String(d).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function W(d){if(!d||!/^[a-zA-Z]{2}$/.test(d))return"";const k=d.toLowerCase();return`<img src="${k==="cn"?`${L}/favicons/cn.png`:k==="tw"?`${L}/favicons/flags/tw.png`:`${L}/favicons/flags/${k}.png`}" alt="${k}" class="inline-block h-4 w-auto rounded-sm align-[-2px]" onerror="this.onerror=null;this.style.display='none'">`}function Ke(d){if(!d)return"";const k=String(d).trim();if(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(k)){const T=k.split(".");return T[0]+"."+T[1]+".*.*"}if(k.includes("…")){const T=k.lastIndexOf("…");return k.substring(0,T+1)+"*"}if(k.includes(":")){const T=k.split(":");if(T.length>=2)return T[0]+":"+T[1]+":*"}return k}function Fe(d){if(!d)return null;try{const T=new Intl.DateTimeFormat("en-US",{timeZone:d,timeZoneName:"longOffset"}).formatToParts(new Date).find(J=>J.type==="timeZoneName");if(!T)return null;if(T.value==="GMT"||T.value==="UTC")return 0;const N=T.value.match(/GMT([+-])(\d{1,2}):?(\d{0,2})/);return N?(N[1]==="+"?1:-1)*(parseInt(N[2],10)*60+parseInt(N[3]||"0",10)):null}catch{return null}}function Ve(d){if(d==null)return"";const k=d>=0?"+":"-",T=Math.abs(d),N=Math.floor(T/60),O=T%60;return"UTC"+k+N+(O?":"+String(O).padStart(2,"0"):"")}const we={safe:"bg-emerald-50 text-emerald-700 dark:bg-emerald-500/15 dark:text-emerald-300",warn:"bg-amber-50 text-amber-800 dark:bg-amber-500/15 dark:text-amber-300",danger:"bg-red-50 text-red-700 dark:bg-red-500/15 dark:text-red-300",info:"bg-blue-50 text-blue-700 dark:bg-blue-500/15 dark:text-blue-300",neutral:"bg-oai-gray-100 text-oai-gray-600 dark:bg-oai-gray-800 dark:text-oai-gray-400"};function Je(){const d=ce.useRef(null),[k,T]=ce.useState(!1);ce.useEffect(()=>{const $=d.current;if(!$)return;const b=a=>$.querySelector(`#${a}`);let ae=!1;const e={unknown:t("ipcheck.common.unknown"),failed:t("ipcheck.ip.failed"),regionAccessible:t("ipcheck.trust.region.accessible"),regionWarnTitle:a=>t("ipcheck.trust.region_warn.title",{region:a}),regionWarnBody:t("ipcheck.trust.region_warn.body"),regionRestrictedText:t("ipcheck.trust.text.restricted"),noData:t("ipcheck.trust.no_data"),noIp:t("ipcheck.trust.no_ip"),noScore:t("ipcheck.trust.no_score"),score:{pristine:t("ipcheck.trust.label.pristine"),clean:t("ipcheck.trust.label.clean"),good:t("ipcheck.trust.label.good"),neutral:t("ipcheck.trust.label.neutral"),suspicious:t("ipcheck.trust.label.suspicious"),unreachable:t("ipcheck.trust.label.unreachable")},scoreText:{excellent:t("ipcheck.trust.text.excellent"),great:t("ipcheck.trust.text.great"),minor:t("ipcheck.trust.text.minor"),moderate:t("ipcheck.trust.text.moderate"),severe:t("ipcheck.trust.text.severe")},propsRegion:t("ipcheck.props.region"),propsCity:t("ipcheck.props.city"),propsType:t("ipcheck.props.type"),propsAsn:t("ipcheck.props.asn"),propsOrg:t("ipcheck.props.org"),propsResidential:t("ipcheck.props.residential"),propsDatacenter:t("ipcheck.props.datacenter"),secVpn:t("ipcheck.security.vpn"),secProxy:t("ipcheck.security.proxy"),secTor:t("ipcheck.security.tor"),secCrawler:t("ipcheck.security.crawler"),secAbuser:t("ipcheck.security.abuser"),secProxyFlag:t("ipcheck.security.proxy_flag"),secCrawlerYes:t("ipcheck.security.crawler_yes"),secCrawlerNo:t("ipcheck.security.crawler_no"),secAbuserYes:t("ipcheck.security.abuser_yes"),secAbuserNo:t("ipcheck.security.abuser_no"),secClean:t("ipcheck.security.clean"),availSvc:t("ipcheck.avail.svc_row"),availLat:{normal:t("ipcheck.avail.latency.normal"),good:t("ipcheck.avail.latency.good"),slow:t("ipcheck.avail.latency.slow"),unreachable:t("ipcheck.avail.latency.unreachable")},availSvcStatus:{none:t("ipcheck.avail.svc.none"),minor:t("ipcheck.avail.svc.minor"),major:t("ipcheck.avail.svc.major"),critical:t("ipcheck.avail.svc.critical"),maintenance:t("ipcheck.avail.svc.maintenance"),other:t("ipcheck.avail.svc.other")},dnsStatus:t("ipcheck.dns.status"),dnsOutlet:t("ipcheck.dns.outlet"),dnsOutletIp:t("ipcheck.dns.outlet_ip"),dnsIsp:t("ipcheck.dns.isp"),dnsLeaked:t("ipcheck.dns.leaked"),dnsNoLeak:t("ipcheck.dns.no_leak"),dnsEncrypted:t("ipcheck.dns.encrypted"),dnsCnTag:t("ipcheck.dns.cn_tag"),udpStatus:t("ipcheck.udp.status"),udpOutlet:t("ipcheck.udp.outlet"),udpOutletIp:t("ipcheck.udp.outlet_ip"),udpOrigin:t("ipcheck.udp.origin"),udpDisabled:t("ipcheck.udp.disabled"),udpNoLeak:t("ipcheck.udp.no_leak"),udpLeaked:t("ipcheck.udp.leaked"),udpAnomaly:t("ipcheck.udp.anomaly"),devTz:t("ipcheck.device.tz"),devLang:t("ipcheck.device.lang"),devOs:t("ipcheck.device.os"),devTouch:t("ipcheck.device.touch"),devNet:t("ipcheck.device.net"),devDnt:t("ipcheck.device.dnt"),devWebglRender:t("ipcheck.device.webgl_render"),devCanvasFp:t("ipcheck.device.canvas_fp"),devWebglFp:t("ipcheck.device.webgl_fp"),devMatch:t("ipcheck.device.match"),devMismatch:t("ipcheck.device.mismatch"),devLocal:t("ipcheck.device.local"),devEstSuffix:t("ipcheck.device.estimate_suffix"),devDiffEqual:t("ipcheck.device.diff_equal"),devDiffAhead:a=>t("ipcheck.device.diff_ahead",{h:a}),devDiffBehind:a=>t("ipcheck.device.diff_behind",{h:a}),devLangExpected:t("ipcheck.device.lang_expected"),devTouchYes:t("ipcheck.device.touch_yes"),devTouchNo:t("ipcheck.device.touch_no"),devDntOn:t("ipcheck.device.dnt_on"),devDntOff:t("ipcheck.device.dnt_off"),devDntUnset:t("ipcheck.device.dnt_unset"),devNetUnsupported:t("ipcheck.device.net_unsupported"),devUnsupported:t("ipcheck.device.unsupported"),histEmpty:t("ipcheck.history.empty"),histCurrent:t("ipcheck.history.current"),histLoading:t("ipcheck.ip.loading")};function g(a,i="neutral"){return`<span class="inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${we[i]||we.neutral}">${a}</span>`}function q(a,i,s){return a===!0?g(i,"danger"):a===!1?g(s,"safe"):g(e.unknown,"neutral")}function ue(a){if(!a)return`<span class="text-oai-gray-400 dark:text-oai-gray-500">${v(e.failed)}</span>`;const i=v(a);return Z(a)?`<span class="ip-mask-target truncate" title="${i}">${v(Be(a))}</span>`:`<span class="ip-mask-target">${i}</span>`}function B(a){return a?`<a class="ip-link no-underline hover:underline underline-offset-4 decoration-1" href="${L}/ip/${encodeURIComponent(a)}" target="_blank" rel="noopener">${ue(a)}</a>`:`<span class="text-oai-gray-400 dark:text-oai-gray-500">${v(e.failed)}</span>`}function f(a,i){return`<div class="flex items-center justify-between py-3 gap-3">
2
2
  <span class="text-sm text-oai-gray-500 dark:text-oai-gray-400 shrink-0">${a}</span>
3
3
  <span class="text-sm font-medium text-oai-black dark:text-white text-right min-w-0">${i===void 0?'<span class="block h-3 w-20 rounded bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse"></span>':i}</span>
4
4
  </div>`}function Y(a){return a.map(i=>f(i,void 0)).join("")}function ne(){return'<div class="h-7 w-44 rounded bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse"></div>'}function ie(){return'<div class="h-3 w-52 mt-2 rounded bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse"></div>'}function Te(a){return a>=95?{text:e.score.pristine,variant:"safe"}:a>=80?{text:e.score.clean,variant:"safe"}:a>=50?{text:e.score.good,variant:"info"}:a>=25?{text:e.score.neutral,variant:"warn"}:{text:e.score.suspicious,variant:"danger"}}const w={ip:null,ippure:null,ipapis:null,claudeGeo:null,claudeRisk:null,cfGeo:""};function pe(){const a=(w.claudeRisk?.countryCode||"").toUpperCase();return!a||!Ge.includes(a)?null:t(`ipcheck.region.${a}`)}function se(){const a=b("ipv6Warn");a&&a.classList.remove("hidden")}function Q(a,i){const s=b(a);s&&(s.textContent=i||"",s.classList.remove("animate-pulse","bg-oai-gray-200","dark:bg-oai-gray-800","w-52","h-3","mt-2","rounded"))}const _e={ipAddrCN:ne(),ipGeoCN:ie(),ipAddr:ne(),ipGeo:ie(),ipAddrClaude:ne(),ipGeoClaude:ie(),propsContent:Y([e.propsRegion,e.propsCity,e.propsType,e.propsAsn,e.propsOrg]),securityContent:Y([e.secVpn,e.secProxy,e.secTor,e.secCrawler,e.secAbuser]),claudeAvailContent:Y(["claude.ai","anthropic.com"]),dnsLeakContent:Y([e.dnsStatus,e.dnsOutletIp]),udpLeakContent:Y([e.udpStatus,e.udpOutletIp]),deviceContent:Y([e.devTz,e.devLang,e.devOs,e.devTouch,e.devNet,e.devDnt,e.devWebglRender,e.devCanvasFp]),ipHistoryContent:`<span class="text-sm text-oai-gray-400 dark:text-oai-gray-500">${e.histLoading}</span>`};Object.entries(_e).forEach(([a,i])=>{const s=b(a);s&&(s.innerHTML=i)});let ge=!1;function Se(a){if(!a)return;a.dataset.realText||(a.dataset.realText=(a.textContent||"").trim());const i=a.dataset.realText,s=ge?Ke(i):i;a.textContent!==s&&(a.textContent=s)}function fe(){$.querySelectorAll(".ip-link, .ip-mask-target").forEach(Se)}const he=new MutationObserver(()=>requestAnimationFrame(fe));["ipHeroCN","ipHero","ipHeroClaude","ipHistoryContent","dnsLeakContent","udpLeakContent"].forEach(a=>{const i=b(a);i&&he.observe(i,{childList:!0,subtree:!0})}),$.__setMaskOn=a=>{ge=!!a,fe()};async function $e(){try{const s=(await(await fetch("https://1.1.1.1/cdn-cgi/trace",{signal:AbortSignal.timeout(5e3)})).text()).match(/ip=([^\n]+)/);s&&(w.ip=s[1].trim())}catch{}}async function Ae(){try{const i=await(await fetch("https://claude.ai/cdn-cgi/trace",{cache:"no-store",signal:AbortSignal.timeout(8e3)})).text(),s=Object.fromEntries(i.trim().split(`